@volcengine/veplayer 1.11.1-rc.1 → 1.11.1-rc.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.
@@ -0,0 +1,2 @@
1
+ // Built @Fri, 14 Jun 2024 02:50:23 GMT
2
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("core-js/modules/es.array.concat.js"),require("core-js/modules/es.array.filter.js"),require("core-js/modules/es.object.to-string.js"),require("core-js/modules/es.promise.js"),require("core-js/modules/es.array.iterator.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("core-js/modules/web.dom-collections.for-each.js"),require("core-js/modules/es.regexp.to-string.js"),require("core-js/modules/es.array.slice.js"),require("core-js/modules/es.object.assign.js"),require("core-js/modules/es.string.iterator.js"),require("core-js/modules/es.regexp.exec.js"),require("core-js/modules/es.array.map.js"),require("core-js/modules/es.promise.finally.js"),require("core-js/modules/es.number.constructor.js"),require("core-js/modules/es.array.find.js"),require("core-js/modules/es.object.keys.js"),require("core-js/modules/es.function.name.js"),require("core-js/modules/es.array.join.js"),require("core-js/modules/es.array.find-index.js"),require("core-js/modules/es.array.sort.js"),require("core-js/modules/es.array.splice.js"),require("xgplayer"),require("core-js/modules/es.map.js"),require("core-js/modules/esnext.map.delete-all.js"),require("core-js/modules/esnext.map.every.js"),require("core-js/modules/esnext.map.filter.js"),require("core-js/modules/esnext.map.find.js"),require("core-js/modules/esnext.map.find-key.js"),require("core-js/modules/esnext.map.includes.js"),require("core-js/modules/esnext.map.key-of.js"),require("core-js/modules/esnext.map.map-keys.js"),require("core-js/modules/esnext.map.map-values.js"),require("core-js/modules/esnext.map.merge.js"),require("core-js/modules/esnext.map.reduce.js"),require("core-js/modules/esnext.map.some.js"),require("core-js/modules/esnext.map.update.js"),require("core-js/modules/es.typed-array.int32-array.js"),require("core-js/modules/es.typed-array.copy-within.js"),require("core-js/modules/es.typed-array.every.js"),require("core-js/modules/es.typed-array.fill.js"),require("core-js/modules/es.typed-array.filter.js"),require("core-js/modules/es.typed-array.find.js"),require("core-js/modules/es.typed-array.find-index.js"),require("core-js/modules/es.typed-array.for-each.js"),require("core-js/modules/es.typed-array.includes.js"),require("core-js/modules/es.typed-array.index-of.js"),require("core-js/modules/es.typed-array.iterator.js"),require("core-js/modules/es.typed-array.join.js"),require("core-js/modules/es.typed-array.last-index-of.js"),require("core-js/modules/es.typed-array.map.js"),require("core-js/modules/es.typed-array.reduce.js"),require("core-js/modules/es.typed-array.reduce-right.js"),require("core-js/modules/es.typed-array.reverse.js"),require("core-js/modules/es.typed-array.set.js"),require("core-js/modules/es.typed-array.slice.js"),require("core-js/modules/es.typed-array.some.js"),require("core-js/modules/es.typed-array.sort.js"),require("core-js/modules/es.typed-array.subarray.js"),require("core-js/modules/es.typed-array.to-locale-string.js"),require("core-js/modules/es.typed-array.to-string.js"),require("core-js/modules/es.number.to-fixed.js"),require("core-js/modules/web.url.js"),require("core-js/modules/web.url-search-params.js"),require("core-js/modules/es.typed-array.uint8-array.js"),require("core-js/modules/es.array-buffer.constructor.js"),require("core-js/modules/es.string.replace.js"),require("core-js/modules/es.string.match.js"),require("core-js/modules/es.regexp.constructor.js"),require("core-js/modules/es.string.starts-with.js"),require("core-js/modules/es.typed-array.int8-array.js"),require("core-js/modules/es.typed-array.uint8-clamped-array.js"),require("core-js/modules/es.typed-array.int16-array.js"),require("core-js/modules/es.typed-array.uint16-array.js"),require("core-js/modules/es.typed-array.uint32-array.js"),require("core-js/modules/es.typed-array.float32-array.js"),require("core-js/modules/es.typed-array.float64-array.js"),require("core-js/modules/es.symbol.js"),require("core-js/modules/es.symbol.description.js"),require("core-js/modules/es.typed-array.of.js"),require("core-js/modules/es.string.split.js"),require("core-js/modules/es.object.values.js"),require("core-js/modules/es.array.includes.js"),require("core-js/modules/es.string.includes.js")):"function"==typeof define&&define.amd?define(["core-js/modules/es.array.concat.js","core-js/modules/es.array.filter.js","core-js/modules/es.object.to-string.js","core-js/modules/es.promise.js","core-js/modules/es.array.iterator.js","core-js/modules/web.dom-collections.iterator.js","core-js/modules/web.dom-collections.for-each.js","core-js/modules/es.regexp.to-string.js","core-js/modules/es.array.slice.js","core-js/modules/es.object.assign.js","core-js/modules/es.string.iterator.js","core-js/modules/es.regexp.exec.js","core-js/modules/es.array.map.js","core-js/modules/es.promise.finally.js","core-js/modules/es.number.constructor.js","core-js/modules/es.array.find.js","core-js/modules/es.object.keys.js","core-js/modules/es.function.name.js","core-js/modules/es.array.join.js","core-js/modules/es.array.find-index.js","core-js/modules/es.array.sort.js","core-js/modules/es.array.splice.js","xgplayer","core-js/modules/es.map.js","core-js/modules/esnext.map.delete-all.js","core-js/modules/esnext.map.every.js","core-js/modules/esnext.map.filter.js","core-js/modules/esnext.map.find.js","core-js/modules/esnext.map.find-key.js","core-js/modules/esnext.map.includes.js","core-js/modules/esnext.map.key-of.js","core-js/modules/esnext.map.map-keys.js","core-js/modules/esnext.map.map-values.js","core-js/modules/esnext.map.merge.js","core-js/modules/esnext.map.reduce.js","core-js/modules/esnext.map.some.js","core-js/modules/esnext.map.update.js","core-js/modules/es.typed-array.int32-array.js","core-js/modules/es.typed-array.copy-within.js","core-js/modules/es.typed-array.every.js","core-js/modules/es.typed-array.fill.js","core-js/modules/es.typed-array.filter.js","core-js/modules/es.typed-array.find.js","core-js/modules/es.typed-array.find-index.js","core-js/modules/es.typed-array.for-each.js","core-js/modules/es.typed-array.includes.js","core-js/modules/es.typed-array.index-of.js","core-js/modules/es.typed-array.iterator.js","core-js/modules/es.typed-array.join.js","core-js/modules/es.typed-array.last-index-of.js","core-js/modules/es.typed-array.map.js","core-js/modules/es.typed-array.reduce.js","core-js/modules/es.typed-array.reduce-right.js","core-js/modules/es.typed-array.reverse.js","core-js/modules/es.typed-array.set.js","core-js/modules/es.typed-array.slice.js","core-js/modules/es.typed-array.some.js","core-js/modules/es.typed-array.sort.js","core-js/modules/es.typed-array.subarray.js","core-js/modules/es.typed-array.to-locale-string.js","core-js/modules/es.typed-array.to-string.js","core-js/modules/es.number.to-fixed.js","core-js/modules/web.url.js","core-js/modules/web.url-search-params.js","core-js/modules/es.typed-array.uint8-array.js","core-js/modules/es.array-buffer.constructor.js","core-js/modules/es.string.replace.js","core-js/modules/es.string.match.js","core-js/modules/es.regexp.constructor.js","core-js/modules/es.string.starts-with.js","core-js/modules/es.typed-array.int8-array.js","core-js/modules/es.typed-array.uint8-clamped-array.js","core-js/modules/es.typed-array.int16-array.js","core-js/modules/es.typed-array.uint16-array.js","core-js/modules/es.typed-array.uint32-array.js","core-js/modules/es.typed-array.float32-array.js","core-js/modules/es.typed-array.float64-array.js","core-js/modules/es.symbol.js","core-js/modules/es.symbol.description.js","core-js/modules/es.typed-array.of.js","core-js/modules/es.string.split.js","core-js/modules/es.object.values.js","core-js/modules/es.array.includes.js","core-js/modules/es.string.includes.js"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).Mp4EncryptPlayer=t(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,e.Player)}(this,(function(e,t,n,U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z,p,S,m){"use strict";function J(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function W(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?J(Object(n),!0).forEach((function(t){T(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function k(){k=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",F=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(b){l=function(e,t,n){return e[t]=n}}function Q(e,t,n,i){var r=t&&t.prototype instanceof s?t:s,a=Object.create(r.prototype),F=new E(i||[]);return U(a,"_invoke",{value:S(e,n,F)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(b){return{type:"throw",arg:b}}}e.wrap=Q;var o={};function s(){}function c(){}function B(){}var R={};l(R,r,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(y([])));h&&h!==t&&n.call(h,r)&&(R=h);var V=B.prototype=s.prototype=Object.create(R);function Z(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function p(e,t){function i(U,r,a,F){var l=d(e[U],e,r);if("throw"!==l.type){var Q=l.arg,o=Q.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,a,F)}),(function(e){i("throw",e,a,F)})):t.resolve(o).then((function(e){Q.value=e,a(Q)}),(function(e){return i("throw",e,a,F)}))}F(l.arg)}var r;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return r=r?r.then(U,U):U()}})}function S(e,t,n){var U="suspendedStart";return function(i,r){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw r;return{value:void 0,done:!0}}for(n.method=i,n.arg=r;;){var a=n.delegate;if(a){var F=m(a,n);if(F){if(F===o)continue;return F}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var l=d(e,t,n);if("normal"===l.type){if(U=n.done?"completed":"suspendedYield",l.arg===o)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(U="completed",n.method="throw",n.arg=l.arg)}}}function m(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,m(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=d(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var r=i.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function y(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:f}}function f(){return{value:void 0,done:!0}}return c.prototype=B,U(V,"constructor",{value:B,configurable:!0}),U(B,"constructor",{value:c,configurable:!0}),c.displayName=l(B,F,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,B):(e.__proto__=B,l(e,F,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(p.prototype),l(p.prototype,a,(function(){return this})),e.AsyncIterator=p,e.async=function(t,n,U,i,r){void 0===r&&(r=Promise);var a=new p(Q(t,n,U,i),r);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},Z(V),l(V,F,"Generator"),l(V,r,(function(){return this})),l(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=y,E.prototype={constructor:E,reset:function(e){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(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return a.type="throw",a.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],a=r.completion;if("root"===r.tryLoc)return U("end");if(r.tryLoc<=this.prev){var F=n.call(r,"catchLoc"),l=n.call(r,"finallyLoc");if(F&&l){if(this.prev<r.catchLoc)return U(r.catchLoc,!0);if(this.prev<r.finallyLoc)return U(r.finallyLoc)}else if(F){if(this.prev<r.catchLoc)return U(r.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return U(r.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var a=r?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,o):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:y(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function E(e){return(E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function y(e,t,n,U,i,r,a){try{var F=e[r](a),l=F.value}catch(Q){return void n(Q)}F.done?t(l):Promise.resolve(l).then(U,i)}function f(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var r=e.apply(t,n);function a(e){y(r,U,i,a,F,"next",e)}function F(e){y(r,U,i,a,F,"throw",e)}a(void 0)}))}}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,P(U.key),U)}}function N(e,t,n){return t&&v(e.prototype,t),n&&v(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function T(e,t,n){return(t=P(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&L(e,t)}function C(e){return(C=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function L(e,t){return(L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function X(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function x(e,t,n){return(x=X()?Reflect.construct.bind():function(e,t,n){var U=[null];U.push.apply(U,t);var i=new(Function.bind.apply(e,U));return n&&L(i,n.prototype),i}).apply(null,arguments)}function D(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function G(e){var t=X();return function(){var n,U=C(e);if(t){var i=C(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return D(e)}(this,n)}}function I(){return I="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var U=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=C(e)););return e}(e,t);if(U){var i=Object.getOwnPropertyDescriptor(U,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},I.apply(this,arguments)}function M(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var U,i,r,a,F=[],l=!0,Q=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(U=r.call(n)).done)&&(F.push(U.value),F.length!==t);l=!0);}catch(d){Q=!0,i=d}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(Q)throw i}}return F}}(e,t)||K(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Y(e){return function(e){if(Array.isArray(e))return w(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||K(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(e,t){if(e){if("string"==typeof e)return w(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function H(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=K(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var U=0,i=function(){};return{s:i,n:function(){return U>=e.length?{done:!0}:{done:!1,value:e[U++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,F=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){F=!0,r=e},f:function(){try{a||null==n.return||n.return()}finally{if(F)throw r}}}}function P(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var j="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function _(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var z={exports:{}};(function(e){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==j?j:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var U=function(e){return e&&e.Math==Math&&e},i=U("object"==typeof globalThis&&globalThis)||U("object"==typeof window&&window)||U("object"==typeof self&&self)||U("object"==typeof t&&t)||function(){return this}()||Function("return this")(),r={},a=function(e){try{return!!e()}catch(fh){return!0}},F=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),l={},Q={}.propertyIsEnumerable,d=Object.getOwnPropertyDescriptor,o=d&&!Q.call({1:2},1);l.f=o?function(e){var t=d(this,e);return!!t&&t.enumerable}:Q;var s=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},c={}.toString,B=function(e){return c.call(e).slice(8,-1)},R=B,u="".split,h=a((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==R(e)?u.call(e,""):Object(e)}:Object,V=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Z=h,p=V,S=function(e){return Z(p(e))},m=function(e){return"object"==typeof e?null!==e:"function"==typeof e},J=m,W=function(e,t){if(!J(e))return e;var n,U;if(t&&"function"==typeof(n=e.toString)&&!J(U=n.call(e)))return U;if("function"==typeof(n=e.valueOf)&&!J(U=n.call(e)))return U;if(!t&&"function"==typeof(n=e.toString)&&!J(U=n.call(e)))return U;throw TypeError("Can't convert object to primitive value")},k=V,E=function(e){return Object(k(e))},y=E,f={}.hasOwnProperty,b=function(e,t){return f.call(y(e),t)},v=m,N=i.document,T=v(N)&&v(N.createElement),g=function(e){return T?N.createElement(e):{}},C=g,L=!F&&!a((function(){return 7!=Object.defineProperty(C("div"),"a",{get:function(){return 7}}).a})),X=F,x=l,D=s,G=S,I=W,M=b,Y=L,K=Object.getOwnPropertyDescriptor;r.f=X?K:function(e,t){if(e=G(e),t=I(t,!0),Y)try{return K(e,t)}catch(n){}if(M(e,t))return D(!x.f.call(e,t),e[t])};var w={},H=m,P=function(e){if(!H(e))throw TypeError(String(e)+" is not an object");return e},_=F,z=L,O=P,A=W,q=Object.defineProperty;w.f=_?q:function(e,t,n){if(O(e),t=A(t,!0),O(n),z)try{return q(e,t,n)}catch(U){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var $=w,ee=s,te=F?function(e,t,n){return $.f(e,t,ee(1,n))}:function(e,t,n){return e[t]=n,e},ne={exports:{}},Ue=i,ie=te,re=function(e,t){try{ie(Ue,e,t)}catch(n){Ue[e]=t}return t},ae=re,Fe="__core-js_shared__",le=i[Fe]||ae(Fe,{}),Qe=le,de=Function.toString;"function"!=typeof Qe.inspectSource&&(Qe.inspectSource=function(e){return de.call(e)});var oe=Qe.inspectSource,se=oe,ce=i.WeakMap,Be="function"==typeof ce&&/native code/.test(se(ce)),Re={exports:{}},ue=le;(Re.exports=function(e,t){return ue[e]||(ue[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var he,Ve,Ze,pe=Re.exports,Se=0,me=Math.random(),Je=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Se+me).toString(36)},We=Je,ke=pe("keys"),Ee=function(e){return ke[e]||(ke[e]=We(e))},ye={},fe=Be,be=m,ve=te,Ne=b,Te=le,ge=Ee,Ce=ye,Le="Object already initialized",Xe=i.WeakMap;if(fe||Te.state){var xe=Te.state||(Te.state=new Xe),De=xe.get,Ge=xe.has,Ie=xe.set;he=function(e,t){if(Ge.call(xe,e))throw new TypeError(Le);return t.facade=e,Ie.call(xe,e,t),t},Ve=function(e){return De.call(xe,e)||{}},Ze=function(e){return Ge.call(xe,e)}}else{var Me=ge("state");Ce[Me]=!0,he=function(e,t){if(Ne(e,Me))throw new TypeError(Le);return t.facade=e,ve(e,Me,t),t},Ve=function(e){return Ne(e,Me)?e[Me]:{}},Ze=function(e){return Ne(e,Me)}}var Ye={set:he,get:Ve,has:Ze,enforce:function(e){return Ze(e)?Ve(e):he(e,{})},getterFor:function(e){return function(t){var n;if(!be(t)||(n=Ve(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Ke=i,we=te,He=b,Pe=re,je=oe,_e=Ye.get,ze=Ye.enforce,Oe=String(String).split("String");(ne.exports=function(e,t,n,U){var i,r=!!U&&!!U.unsafe,a=!!U&&!!U.enumerable,F=!!U&&!!U.noTargetGet;"function"==typeof n&&("string"!=typeof t||He(n,"name")||we(n,"name",t),(i=ze(n)).source||(i.source=Oe.join("string"==typeof t?t:""))),e!==Ke?(r?!F&&e[t]&&(a=!0):delete e[t],a?e[t]=n:we(e,t,n)):a?e[t]=n:Pe(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&_e(this).source||je(this)}));var Ae=ne.exports,qe=i,$e=i,et=function(e){return"function"==typeof e?e:void 0},tt=function(e,t){return arguments.length<2?et(qe[e])||et($e[e]):qe[e]&&qe[e][t]||$e[e]&&$e[e][t]},nt={},Ut=Math.ceil,it=Math.floor,rt=function(e){return isNaN(e=+e)?0:(e>0?it:Ut)(e)},at=rt,Ft=Math.min,lt=function(e){return e>0?Ft(at(e),9007199254740991):0},Qt=rt,dt=Math.max,ot=Math.min,st=function(e,t){var n=Qt(e);return n<0?dt(n+t,0):ot(n,t)},ct=S,Bt=lt,Rt=st,ut=function(e){return function(t,n,U){var i,r=ct(t),a=Bt(r.length),F=Rt(U,a);if(e&&n!=n){for(;a>F;)if((i=r[F++])!=i)return!0}else for(;a>F;F++)if((e||F in r)&&r[F]===n)return e||F||0;return!e&&-1}},ht={includes:ut(!0),indexOf:ut(!1)},Vt=b,Zt=S,pt=ht.indexOf,St=ye,mt=function(e,t){var n,U=Zt(e),i=0,r=[];for(n in U)!Vt(St,n)&&Vt(U,n)&&r.push(n);for(;t.length>i;)Vt(U,n=t[i++])&&(~pt(r,n)||r.push(n));return r},Jt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Wt=mt,kt=Jt.concat("length","prototype");nt.f=Object.getOwnPropertyNames||function(e){return Wt(e,kt)};var Et={};Et.f=Object.getOwnPropertySymbols;var yt=nt,ft=Et,bt=P,vt=tt("Reflect","ownKeys")||function(e){var t=yt.f(bt(e)),n=ft.f;return n?t.concat(n(e)):t},Nt=b,Tt=vt,gt=r,Ct=w,Lt=a,Xt=/#|\.prototype\./,xt=function(e,t){var n=Gt[Dt(e)];return n==Mt||n!=It&&("function"==typeof t?Lt(t):!!t)},Dt=xt.normalize=function(e){return String(e).replace(Xt,".").toLowerCase()},Gt=xt.data={},It=xt.NATIVE="N",Mt=xt.POLYFILL="P",Yt=xt,Kt=i,wt=r.f,Ht=te,Pt=Ae,jt=re,_t=function(e,t){for(var n=Tt(t),U=Ct.f,i=gt.f,r=0;r<n.length;r++){var a=n[r];Nt(e,a)||U(e,a,i(t,a))}},zt=Yt,Ot=function(e,t){var n,U,i,r,a,F=e.target,l=e.global,Q=e.stat;if(n=l?Kt:Q?Kt[F]||jt(F,{}):(Kt[F]||{}).prototype)for(U in t){if(r=t[U],i=e.noTargetGet?(a=wt(n,U))&&a.value:n[U],!zt(l?U:F+(Q?".":"#")+U,e.forced)&&void 0!==i){if(typeof r==typeof i)continue;_t(r,i)}(e.sham||i&&i.sham)&&Ht(r,"sham",!0),Pt(n,U,r,e)}};function At(){At=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",F=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(f){l=function(e,t,n){return e[t]=n}}function Q(e,t,n,i){var r=t&&t.prototype instanceof s?t:s,a=Object.create(r.prototype),F=new k(i||[]);return U(a,"_invoke",{value:S(e,n,F)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(f){return{type:"throw",arg:f}}}e.wrap=Q;var o={};function s(){}function c(){}function B(){}var R={};l(R,r,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(E([])));h&&h!==t&&n.call(h,r)&&(R=h);var V=B.prototype=s.prototype=Object.create(R);function Z(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function p(e,t){function i(U,r,a,F){var l=d(e[U],e,r);if("throw"!==l.type){var Q=l.arg,o=Q.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,a,F)}),(function(e){i("throw",e,a,F)})):t.resolve(o).then((function(e){Q.value=e,a(Q)}),(function(e){return i("throw",e,a,F)}))}F(l.arg)}var r;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return r=r?r.then(U,U):U()}})}function S(e,t,n){var U="suspendedStart";return function(i,r){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw r;return{value:void 0,done:!0}}for(n.method=i,n.arg=r;;){var a=n.delegate;if(a){var F=m(a,n);if(F){if(F===o)continue;return F}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var l=d(e,t,n);if("normal"===l.type){if(U=n.done?"completed":"suspendedYield",l.arg===o)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(U="completed",n.method="throw",n.arg=l.arg)}}}function m(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,m(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=d(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var r=i.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function E(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:y}}function y(){return{value:void 0,done:!0}}return c.prototype=B,U(V,"constructor",{value:B,configurable:!0}),U(B,"constructor",{value:c,configurable:!0}),c.displayName=l(B,F,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,B):(e.__proto__=B,l(e,F,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(p.prototype),l(p.prototype,a,(function(){return this})),e.AsyncIterator=p,e.async=function(t,n,U,i,r){void 0===r&&(r=Promise);var a=new p(Q(t,n,U,i),r);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},Z(V),l(V,F,"Generator"),l(V,r,(function(){return this})),l(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=E,k.prototype={constructor:k,reset:function(e){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(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return a.type="throw",a.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],a=r.completion;if("root"===r.tryLoc)return U("end");if(r.tryLoc<=this.prev){var F=n.call(r,"catchLoc"),l=n.call(r,"finallyLoc");if(F&&l){if(this.prev<r.catchLoc)return U(r.catchLoc,!0);if(this.prev<r.finallyLoc)return U(r.finallyLoc)}else if(F){if(this.prev<r.catchLoc)return U(r.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return U(r.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var a=r?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,o):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function qt(e){return(qt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function $t(e,t,n,U,i,r,a){try{var F=e[r](a),l=F.value}catch(Q){return void n(Q)}F.done?t(l):Promise.resolve(l).then(U,i)}function en(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var r=e.apply(t,n);function a(e){$t(r,U,i,a,F,"next",e)}function F(e){$t(r,U,i,a,F,"throw",e)}a(void 0)}))}}function tn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nn(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,on(U.key),U)}}function Un(e,t,n){return t&&nn(e.prototype,t),n&&nn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function rn(e,t,n){return(t=on(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function an(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ln(e,t)}function Fn(e){return(Fn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ln(e,t){return(ln=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function Qn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function dn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,U=Fn(e);if(t){var i=Fn(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Qn(e)}(this,n)}}function on(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}Ot({global:!0},{globalThis:i});var sn,cn,Bn=tt("navigator","userAgent")||"",Rn=Bn,un=i.process,hn=un&&un.versions,Vn=hn&&hn.v8;Vn?cn=(sn=Vn.split("."))[0]<4?1:sn[0]+sn[1]:Rn&&(!(sn=Rn.match(/Edge\/(\d+)/))||sn[1]>=74)&&(sn=Rn.match(/Chrome\/(\d+)/))&&(cn=sn[1]);var Zn,pn=cn&&+cn,Sn=pn,mn=a,Jn=!!Object.getOwnPropertySymbols&&!mn((function(){return!String(Symbol())||!Symbol.sham&&Sn&&Sn<41})),Wn=Jn&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,kn=i,En=b,yn=Je,fn=Jn,bn=Wn,vn=pe("wks"),Nn=kn.Symbol,Tn=bn?Nn:Nn&&Nn.withoutSetter||yn,gn=function(e){return En(vn,e)&&(fn||"string"==typeof vn[e])||(fn&&En(Nn,e)?vn[e]=Nn[e]:vn[e]=Tn("Symbol."+e)),vn[e]},Cn=mt,Ln=Jt,Xn=Object.keys||function(e){return Cn(e,Ln)},xn=w,Dn=P,Gn=Xn,In=F?Object.defineProperties:function(e,t){Dn(e);for(var n,U=Gn(t),i=U.length,r=0;i>r;)xn.f(e,n=U[r++],t[n]);return e},Mn=tt("document","documentElement"),Yn=P,Kn=In,wn=Jt,Hn=ye,Pn=Mn,jn=g,_n="prototype",zn="script",On=Ee("IE_PROTO"),An=function(){},qn=function(e){return"<"+zn+">"+e+"</"+zn+">"},$n=function(){try{Zn=document.domain&&new ActiveXObject("htmlfile")}catch(i){}var e,t,n;$n=Zn?function(e){e.write(qn("")),e.close();var t=e.parentWindow.Object;return e=null,t}(Zn):(t=jn("iframe"),n="java"+zn+":",t.style.display="none",Pn.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(qn("document.F=Object")),e.close(),e.F);for(var U=wn.length;U--;)delete $n[_n][wn[U]];return $n()};Hn[On]=!0;var eU=Object.create||function(e,t){var n;return null!==e?(An[_n]=Yn(e),n=new An,An[_n]=null,n[On]=e):n=$n(),void 0===t?n:Kn(n,t)},tU=eU,nU=w,UU=gn("unscopables"),iU=Array.prototype;null==iU[UU]&&nU.f(iU,UU,{configurable:!0,value:tU(null)});var rU,aU,FU,lU={},QU=!a((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),dU=b,oU=E,sU=QU,cU=Ee("IE_PROTO"),BU=Object.prototype,RU=sU?Object.getPrototypeOf:function(e){return e=oU(e),dU(e,cU)?e[cU]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?BU:null},uU=a,hU=RU,VU=te,ZU=b,pU=gn("iterator"),SU=!1;[].keys&&("next"in(FU=[].keys())?(aU=hU(hU(FU)))!==Object.prototype&&(rU=aU):SU=!0),(null==rU||uU((function(){var e={};return rU[pU].call(e)!==e})))&&(rU={}),ZU(rU,pU)||VU(rU,pU,(function(){return this}));var mU={IteratorPrototype:rU,BUGGY_SAFARI_ITERATORS:SU},JU=w.f,WU=b,kU=gn("toStringTag"),EU=function(e,t,n){e&&!WU(e=n?e:e.prototype,kU)&&JU(e,kU,{configurable:!0,value:t})},yU=mU.IteratorPrototype,fU=eU,bU=s,vU=EU,NU=lU,TU=function(){return this},gU=m,CU=P,LU=function(e){if(!gU(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e},XU=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(U){}return function(n,U){return CU(n),LU(U),t?e.call(n,U):n.__proto__=U,n}}():void 0),xU=Ot,DU=function(e,t,n){var U=t+" Iterator";return e.prototype=fU(yU,{next:bU(1,n)}),vU(e,U,!1),NU[U]=TU,e},GU=RU,IU=XU,MU=EU,YU=te,KU=Ae,wU=lU,HU=mU.IteratorPrototype,PU=mU.BUGGY_SAFARI_ITERATORS,jU=gn("iterator"),_U="keys",zU="values",OU="entries",AU=function(){return this},qU=function(e,t,n,U,i,r,a){DU(n,t,U);var F,l,Q,d=function(e){if(e===i&&R)return R;if(!PU&&e in c)return c[e];switch(e){case _U:case zU:case OU:return function(){return new n(this,e)}}return function(){return new n(this)}},o=t+" Iterator",s=!1,c=e.prototype,B=c[jU]||c["@@iterator"]||i&&c[i],R=!PU&&B||d(i),u="Array"==t&&c.entries||B;if(u&&(F=GU(u.call(new e)),HU!==Object.prototype&&F.next&&(GU(F)!==HU&&(IU?IU(F,HU):"function"!=typeof F[jU]&&YU(F,jU,AU)),MU(F,o,!0))),i==zU&&B&&B.name!==zU&&(s=!0,R=function(){return B.call(this)}),c[jU]!==R&&YU(c,jU,R),wU[t]=R,i)if(l={values:d(zU),keys:r?R:d(_U),entries:d(OU)},a)for(Q in l)(PU||s||!(Q in c))&&KU(c,Q,l[Q]);else xU({target:t,proto:!0,forced:PU||s},l);return l},$U=S,ei=function(e){iU[UU][e]=!0},ti=lU,ni=Ye,Ui=qU,ii="Array Iterator",ri=ni.set,ai=ni.getterFor(ii),Fi=Ui(Array,"Array",(function(e,t){ri(this,{type:ii,target:$U(e),index:0,kind:t})}),(function(){var e=ai(this),t=e.target,n=e.kind,U=e.index++;return!t||U>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:U,done:!1}:"values"==n?{value:t[U],done:!1}:{value:[U,t[U]],done:!1}}),"values");ti.Arguments=ti.Array,ei("keys"),ei("values"),ei("entries");var li={exports:{}},Qi=!a((function(){return Object.isExtensible(Object.preventExtensions({}))})),di=ye,oi=m,si=b,ci=w.f,Bi=Qi,Ri=Je("meta"),ui=0,hi=Object.isExtensible||function(){return!0},Vi=function(e){ci(e,Ri,{value:{objectID:"O"+ ++ui,weakData:{}}})},Zi=li.exports={REQUIRED:!1,fastKey:function(e,t){if(!oi(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!si(e,Ri)){if(!hi(e))return"F";if(!t)return"E";Vi(e)}return e[Ri].objectID},getWeakData:function(e,t){if(!si(e,Ri)){if(!hi(e))return!0;if(!t)return!1;Vi(e)}return e[Ri].weakData},onFreeze:function(e){return Bi&&Zi.REQUIRED&&hi(e)&&!si(e,Ri)&&Vi(e),e}};di[Ri]=!0;var pi=li.exports,Si=lU,mi=gn("iterator"),Ji=Array.prototype,Wi=function(e){return void 0!==e&&(Si.Array===e||Ji[mi]===e)},ki=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},Ei=ki,yi=function(e,t,n){if(Ei(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,U){return e.call(t,n,U)};case 3:return function(n,U,i){return e.call(t,n,U,i)}}return function(){return e.apply(t,arguments)}},fi={};fi[gn("toStringTag")]="z";var bi="[object z]"===String(fi),vi=bi,Ni=B,Ti=gn("toStringTag"),gi="Arguments"==Ni(function(){return arguments}()),Ci=vi?Ni:function(e){var t,n,U;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),Ti))?n:gi?Ni(t):"Object"==(U=Ni(t))&&"function"==typeof t.callee?"Arguments":U},Li=Ci,Xi=lU,xi=gn("iterator"),Di=function(e){if(null!=e)return e[xi]||e["@@iterator"]||Xi[Li(e)]},Gi=P,Ii=P,Mi=Wi,Yi=lt,Ki=yi,wi=Di,Hi=function(e){var t=e.return;if(void 0!==t)return Gi(t.call(e)).value},Pi=function(e,t){this.stopped=e,this.result=t},ji=function(e,t,n){var U,i,r,a,F,l,Q,d=n&&n.that,o=!(!n||!n.AS_ENTRIES),s=!(!n||!n.IS_ITERATOR),c=!(!n||!n.INTERRUPTED),B=Ki(t,d,1+o+c),R=function(e){return U&&Hi(U),new Pi(!0,e)},u=function(e){return o?(Ii(e),c?B(e[0],e[1],R):B(e[0],e[1])):c?B(e,R):B(e)};if(s)U=e;else{if("function"!=typeof(i=wi(e)))throw TypeError("Target is not iterable");if(Mi(i)){for(r=0,a=Yi(e.length);a>r;r++)if((F=u(e[r]))&&F instanceof Pi)return F;return new Pi(!1)}U=i.call(e)}for(l=U.next;!(Q=l.call(U)).done;){try{F=u(Q.value)}catch(h){throw Hi(U),h}if("object"==typeof F&&F&&F instanceof Pi)return F}return new Pi(!1)},_i=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},zi=gn("iterator"),Oi=!1;try{var Ai=0,qi={next:function(){return{done:!!Ai++}},return:function(){Oi=!0}};qi[zi]=function(){return this},Array.from(qi,(function(){throw 2}))}catch(gV){}var $i=function(e,t){if(!t&&!Oi)return!1;var n=!1;try{var U={};U[zi]=function(){return{next:function(){return{done:n=!0}}}},e(U)}catch(gV){}return n},er=m,tr=XU,nr=function(e,t,n){var U,i;return tr&&"function"==typeof(U=t.constructor)&&U!==n&&er(i=U.prototype)&&i!==n.prototype&&tr(e,i),e},Ur=Ot,ir=i,rr=Yt,ar=Ae,Fr=pi,lr=ji,Qr=_i,dr=m,or=a,sr=$i,cr=EU,Br=nr,Rr=Ae,ur=function(e,t,n){for(var U in t)Rr(e,U,t[U],n);return e},hr=tt,Vr=w,Zr=F,pr=gn("species"),Sr=function(e){var t=hr(e),n=Vr.f;Zr&&t&&!t[pr]&&n(t,pr,{configurable:!0,get:function(){return this}})},mr=w.f,Jr=eU,Wr=ur,kr=yi,Er=_i,yr=ji,fr=qU,br=Sr,vr=F,Nr=pi.fastKey,Tr=Ye.set,gr=Ye.getterFor,Cr={getConstructor:function(e,t,n,U){var i=e((function(e,r){Er(e,i,t),Tr(e,{type:t,index:Jr(null),first:void 0,last:void 0,size:0}),vr||(e.size=0),null!=r&&yr(r,e[U],{that:e,AS_ENTRIES:n})})),r=gr(t),a=function(e,t,n){var U,i,a=r(e),l=F(e,t);return l?l.value=n:(a.last=l={index:i=Nr(t,!0),key:t,value:n,previous:U=a.last,next:void 0,removed:!1},a.first||(a.first=l),U&&(U.next=l),vr?a.size++:e.size++,"F"!==i&&(a.index[i]=l)),e},F=function(e,t){var n,U=r(e),i=Nr(t);if("F"!==i)return U.index[i];for(n=U.first;n;n=n.next)if(n.key==t)return n};return Wr(i.prototype,{clear:function(){for(var e=r(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,vr?e.size=0:this.size=0},delete:function(e){var t=this,n=r(t),U=F(t,e);if(U){var i=U.next,a=U.previous;delete n.index[U.index],U.removed=!0,a&&(a.next=i),i&&(i.previous=a),n.first==U&&(n.first=i),n.last==U&&(n.last=a),vr?n.size--:t.size--}return!!U},forEach:function(e){for(var t,n=r(this),U=kr(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.next:n.first;)for(U(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!F(this,e)}}),Wr(i.prototype,n?{get:function(e){var t=F(this,e);return t&&t.value},set:function(e,t){return a(this,0===e?0:e,t)}}:{add:function(e){return a(this,e=0===e?0:e,e)}}),vr&&mr(i.prototype,"size",{get:function(){return r(this).size}}),i},setStrong:function(e,t,n){var U=t+" Iterator",i=gr(t),r=gr(U);fr(e,t,(function(e,t){Tr(this,{type:U,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=r(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),br(t)}};!function(e,t,n){var U=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),r=U?"set":"add",a=ir[e],F=a&&a.prototype,l=a,Q={},d=function(e){var t=F[e];ar(F,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!dr(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return i&&!dr(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!dr(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(rr(e,"function"!=typeof a||!(i||F.forEach&&!or((function(){(new a).entries().next()})))))l=n.getConstructor(t,e,U,r),Fr.REQUIRED=!0;else if(rr(e,!0)){var o=new l,s=o[r](i?{}:-0,1)!=o,c=or((function(){o.has(1)})),B=sr((function(e){new a(e)})),R=!i&&or((function(){for(var e=new a,t=5;t--;)e[r](t,t);return!e.has(-0)}));B||((l=t((function(t,n){Qr(t,l,e);var i=Br(new a,t,l);return null!=n&&lr(n,i[r],{that:i,AS_ENTRIES:U}),i}))).prototype=F,F.constructor=l),(c||R)&&(d("delete"),d("has"),U&&d("get")),(R||s)&&d(r),i&&F.clear&&delete F.clear}Q[e]=l,Ur({global:!0,forced:l!=a},Q),cr(l,e),i||n.setStrong(l,e,U)}("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Cr);var Lr=Ci,Xr=bi?{}.toString:function(){return"[object "+Lr(this)+"]"};bi||Ae(Object.prototype,"toString",Xr,{unsafe:!0});var xr=rt,Dr=V,Gr=function(e){return function(t,n){var U,i,r=String(Dr(t)),a=xr(n),F=r.length;return a<0||a>=F?e?"":void 0:(U=r.charCodeAt(a))<55296||U>56319||a+1===F||(i=r.charCodeAt(a+1))<56320||i>57343?e?r.charAt(a):U:e?r.slice(a,a+2):i-56320+(U-55296<<10)+65536}},Ir={codeAt:Gr(!1),charAt:Gr(!0)},Mr=Ir.charAt,Yr=Ye,Kr=qU,wr="String Iterator",Hr=Yr.set,Pr=Yr.getterFor(wr);Kr(String,"String",(function(e){Hr(this,{type:wr,string:String(e),index:0})}),(function(){var e,t=Pr(this),n=t.string,U=t.index;return U>=n.length?{value:void 0,done:!0}:(e=Mr(n,U),t.index+=e.length,{value:e,done:!1})}));var jr=P,_r=ki,zr=function(){for(var e,t=jr(this),n=_r(t.delete),U=!0,i=0,r=arguments.length;i<r;i++)e=n.call(t,arguments[i]),U=U&&e;return!!U};Ot({target:"Map",proto:!0,real:!0,forced:!1},{deleteAll:function(){return zr.apply(this,arguments)}});var Or=function(e){return Map.prototype.entries.call(e)},Ar=P,qr=yi,$r=Or,ea=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{every:function(e){var t=Ar(this),n=$r(t),U=qr(e,arguments.length>1?arguments[1]:void 0,3);return!ea(n,(function(e,n,i){if(!U(n,e,t))return i()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var ta=P,na=ki,Ua=gn("species"),ia=function(e,t){var n,U=ta(e).constructor;return void 0===U||null==(n=ta(U)[Ua])?t:na(n)},ra=tt,aa=P,Fa=ki,la=yi,Qa=ia,da=Or,oa=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{filter:function(e){var t=aa(this),n=da(t),U=la(e,arguments.length>1?arguments[1]:void 0,3),i=new(Qa(t,ra("Map"))),r=Fa(i.set);return oa(n,(function(e,n){U(n,e,t)&&r.call(i,e,n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i}});var sa=P,ca=yi,Ba=Or,Ra=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{find:function(e){var t=sa(this),n=Ba(t),U=ca(e,arguments.length>1?arguments[1]:void 0,3);return Ra(n,(function(e,n,i){if(U(n,e,t))return i(n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var ua=P,ha=yi,Va=Or,Za=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{findKey:function(e){var t=ua(this),n=Va(t),U=ha(e,arguments.length>1?arguments[1]:void 0,3);return Za(n,(function(e,n,i){if(U(n,e,t))return i(e)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var pa=P,Sa=Or,ma=function(e,t){return e===t||e!=e&&t!=t},Ja=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{includes:function(e){return Ja(Sa(pa(this)),(function(t,n,U){if(ma(n,e))return U()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var Wa=P,ka=Or,Ea=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{keyOf:function(e){return Ea(ka(Wa(this)),(function(t,n,U){if(n===e)return U(t)}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).result}});var ya=tt,fa=P,ba=ki,va=yi,Na=ia,Ta=Or,ga=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{mapKeys:function(e){var t=fa(this),n=Ta(t),U=va(e,arguments.length>1?arguments[1]:void 0,3),i=new(Na(t,ya("Map"))),r=ba(i.set);return ga(n,(function(e,n){r.call(i,U(n,e,t),n)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i}});var Ca=tt,La=P,Xa=ki,xa=yi,Da=ia,Ga=Or,Ia=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{mapValues:function(e){var t=La(this),n=Ga(t),U=xa(e,arguments.length>1?arguments[1]:void 0,3),i=new(Da(t,Ca("Map"))),r=Xa(i.set);return Ia(n,(function(e,n){r.call(i,e,U(n,e,t))}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),i}});var Ma=P,Ya=ki,Ka=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{merge:function(e){for(var t=Ma(this),n=Ya(t.set),U=0;U<arguments.length;)Ka(arguments[U++],n,{that:t,AS_ENTRIES:!0});return t}});var wa=P,Ha=ki,Pa=Or,ja=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{reduce:function(e){var t=wa(this),n=Pa(t),U=arguments.length<2,i=U?void 0:arguments[1];if(Ha(e),ja(n,(function(n,r){U?(U=!1,i=r):i=e(i,r,n,t)}),{AS_ENTRIES:!0,IS_ITERATOR:!0}),U)throw TypeError("Reduce of empty map with no initial value");return i}});var _a=P,za=yi,Oa=Or,Aa=ji;Ot({target:"Map",proto:!0,real:!0,forced:!1},{some:function(e){var t=_a(this),n=Oa(t),U=za(e,arguments.length>1?arguments[1]:void 0,3);return Aa(n,(function(e,n,i){if(U(n,e,t))return i()}),{AS_ENTRIES:!0,IS_ITERATOR:!0,INTERRUPTED:!0}).stopped}});var qa=P,$a=ki;Ot({target:"Map",proto:!0,real:!0,forced:!1},{update:function(e,t){var n=qa(this),U=arguments.length;$a(t);var i=n.has(e);if(!i&&U<3)throw TypeError("Updating absent value");var r=i?n.get(e):$a(U>2?arguments[2]:void 0)(e,n);return n.set(e,t(r,e,n)),n}});var eF={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},tF=i,nF=eF,UF=Fi,iF=te,rF=gn,aF=rF("iterator"),FF=rF("toStringTag"),lF=UF.values;for(var QF in nF){var dF=tF[QF],oF=dF&&dF.prototype;if(oF){if(oF[aF]!==lF)try{iF(oF,aF,lF)}catch(gV){oF[aF]=lF}if(oF[FF]||iF(oF,FF,QF),nF[QF])for(var sF in UF)if(oF[sF]!==UF[sF])try{iF(oF,sF,UF[sF])}catch(gV){oF[sF]=UF[sF]}}}var cF=B,BF=Array.isArray||function(e){return"Array"==cF(e)},RF=m,uF=BF,hF=gn("species"),VF=function(e,t){var n;return uF(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!uF(n.prototype)?RF(n)&&null===(n=n[hF])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},ZF=yi,pF=h,SF=E,mF=lt,JF=VF,WF=[].push,kF=function(e){var t=1==e,n=2==e,U=3==e,i=4==e,r=6==e,a=7==e,F=5==e||r;return function(l,Q,d,o){for(var s,c,B=SF(l),R=pF(B),u=ZF(Q,d,3),h=mF(R.length),V=0,Z=o||JF,p=t?Z(l,h):n||a?Z(l,0):void 0;h>V;V++)if((F||V in R)&&(c=u(s=R[V],V,B),e))if(t)p[V]=c;else if(c)switch(e){case 3:return!0;case 5:return s;case 6:return V;case 2:WF.call(p,s)}else switch(e){case 4:return!1;case 7:WF.call(p,s)}return r?-1:U||i?i:p}},EF={forEach:kF(0),map:kF(1),filter:kF(2),some:kF(3),every:kF(4),find:kF(5),findIndex:kF(6),filterOut:kF(7)},yF=a,fF=pn,bF=gn("species"),vF=function(e){return fF>=51||!yF((function(){var t=[];return(t.constructor={})[bF]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},NF=EF.map;Ot({target:"Array",proto:!0,forced:!vF("map")},{map:function(e){return NF(this,e,arguments.length>1?arguments[1]:void 0)}});var TF=E,gF=Xn;Ot({target:"Object",stat:!0,forced:a((function(){gF(1)}))},{keys:function(e){return gF(TF(e))}});var CF=W,LF=w,XF=s,xF=function(e,t,n){var U=CF(t);U in e?LF.f(e,U,XF(0,n)):e[U]=n},DF=Ot,GF=a,IF=BF,MF=m,YF=E,KF=lt,wF=xF,HF=VF,PF=vF,jF=pn,_F=gn("isConcatSpreadable"),zF=9007199254740991,OF="Maximum allowed index exceeded",AF=jF>=51||!GF((function(){var e=[];return e[_F]=!1,e.concat()[0]!==e})),qF=PF("concat"),$F=function(e){if(!MF(e))return!1;var t=e[_F];return void 0!==t?!!t:IF(e)};DF({target:"Array",proto:!0,forced:!AF||!qF},{concat:function(e){var t,n,U,i,r,a=YF(this),F=HF(a,0),l=0;for(t=-1,U=arguments.length;t<U;t++)if($F(r=-1===t?a:arguments[t])){if(l+(i=KF(r.length))>zF)throw TypeError(OF);for(n=0;n<i;n++,l++)n in r&&wF(F,l,r[n])}else{if(l>=zF)throw TypeError(OF);wF(F,l++,r)}return F.length=l,F}});var el,tl,nl,Ul=i.Promise,il=/(?:iphone|ipod|ipad).*applewebkit/i.test(Bn),rl="process"==B(i.process),al=i,Fl=a,ll=yi,Ql=Mn,dl=g,ol=il,sl=rl,cl=al.location,Bl=al.setImmediate,Rl=al.clearImmediate,ul=al.process,hl=al.MessageChannel,Vl=al.Dispatch,Zl=0,pl={},Sl="onreadystatechange",ml=function(e){if(pl.hasOwnProperty(e)){var t=pl[e];delete pl[e],t()}},Jl=function(e){return function(){ml(e)}},Wl=function(e){ml(e.data)},kl=function(e){al.postMessage(e+"",cl.protocol+"//"+cl.host)};Bl&&Rl||(Bl=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return pl[++Zl]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},el(Zl),Zl},Rl=function(e){delete pl[e]},sl?el=function(e){ul.nextTick(Jl(e))}:Vl&&Vl.now?el=function(e){Vl.now(Jl(e))}:hl&&!ol?(nl=(tl=new hl).port2,tl.port1.onmessage=Wl,el=ll(nl.postMessage,nl,1)):al.addEventListener&&"function"==typeof postMessage&&!al.importScripts&&cl&&"file:"!==cl.protocol&&!Fl(kl)?(el=kl,al.addEventListener("message",Wl,!1)):el=Sl in dl("script")?function(e){Ql.appendChild(dl("script"))[Sl]=function(){Ql.removeChild(this),ml(e)}}:function(e){setTimeout(Jl(e),0)});var El,yl,fl,bl,vl,Nl,Tl,gl,Cl={set:Bl,clear:Rl},Ll=/web0s(?!.*chrome)/i.test(Bn),Xl=i,xl=r.f,Dl=Cl.set,Gl=il,Il=Ll,Ml=rl,Yl=Xl.MutationObserver||Xl.WebKitMutationObserver,Kl=Xl.document,wl=Xl.process,Hl=Xl.Promise,Pl=xl(Xl,"queueMicrotask"),jl=Pl&&Pl.value;jl||(El=function(){var e,t;for(Ml&&(e=wl.domain)&&e.exit();yl;){t=yl.fn,yl=yl.next;try{t()}catch(gV){throw yl?bl():fl=void 0,gV}}fl=void 0,e&&e.enter()},Gl||Ml||Il||!Yl||!Kl?Hl&&Hl.resolve?((Tl=Hl.resolve(void 0)).constructor=Hl,gl=Tl.then,bl=function(){gl.call(Tl,El)}):bl=Ml?function(){wl.nextTick(El)}:function(){Dl.call(Xl,El)}:(vl=!0,Nl=Kl.createTextNode(""),new Yl(El).observe(Nl,{characterData:!0}),bl=function(){Nl.data=vl=!vl}));var _l=jl||function(e){var t={fn:e,next:void 0};fl&&(fl.next=t),yl||(yl=t,bl()),fl=t},zl={},Ol=ki,Al=function(e){var t,n;this.promise=new e((function(e,U){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=U})),this.resolve=Ol(t),this.reject=Ol(n)};zl.f=function(e){return new Al(e)};var ql,$l,eQ,tQ,nQ=P,UQ=m,iQ=zl,rQ=i,aQ="object"==typeof window,FQ=Ot,lQ=i,QQ=tt,dQ=Ul,oQ=Ae,sQ=ur,cQ=XU,BQ=EU,RQ=Sr,uQ=m,hQ=ki,VQ=_i,ZQ=oe,pQ=ji,SQ=$i,mQ=ia,JQ=Cl.set,WQ=_l,kQ=function(e,t){if(nQ(e),UQ(t)&&t.constructor===e)return t;var n=iQ.f(e);return(0,n.resolve)(t),n.promise},EQ=function(e,t){var n=rQ.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))},yQ=zl,fQ=function(e){try{return{error:!1,value:e()}}catch(gV){return{error:!0,value:gV}}},bQ=Ye,vQ=Yt,NQ=aQ,TQ=rl,gQ=pn,CQ=gn("species"),LQ="Promise",XQ=bQ.get,xQ=bQ.set,DQ=bQ.getterFor(LQ),GQ=dQ&&dQ.prototype,IQ=dQ,MQ=GQ,YQ=lQ.TypeError,KQ=lQ.document,wQ=lQ.process,HQ=yQ.f,PQ=HQ,jQ=!!(KQ&&KQ.createEvent&&lQ.dispatchEvent),_Q="function"==typeof PromiseRejectionEvent,zQ="unhandledrejection",OQ=!1,AQ=vQ(LQ,(function(){var e=ZQ(IQ)!==String(IQ);if(!e&&66===gQ)return!0;if(gQ>=51&&/native code/.test(IQ))return!1;var t=new IQ((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(t.constructor={})[CQ]=n,!(OQ=t.then((function(){}))instanceof n)||!e&&NQ&&!_Q})),qQ=AQ||!SQ((function(e){IQ.all(e).catch((function(){}))})),$Q=function(e){var t;return!(!uQ(e)||"function"!=typeof(t=e.then))&&t},ed=function(e,t){if(!e.notified){e.notified=!0;var n=e.reactions;WQ((function(){for(var U=e.value,i=1==e.state,r=0;n.length>r;){var a,F,l,Q=n[r++],d=i?Q.ok:Q.fail,o=Q.resolve,s=Q.reject,c=Q.domain;try{d?(i||(2===e.rejection&&id(e),e.rejection=1),!0===d?a=U:(c&&c.enter(),a=d(U),c&&(c.exit(),l=!0)),a===Q.promise?s(YQ("Promise-chain cycle")):(F=$Q(a))?F.call(a,o,s):o(a)):s(U)}catch(gV){c&&!l&&c.exit(),s(gV)}}e.reactions=[],e.notified=!1,t&&!e.rejection&&nd(e)}))}},td=function(e,t,n){var U,i;jQ?((U=KQ.createEvent("Event")).promise=t,U.reason=n,U.initEvent(e,!1,!0),lQ.dispatchEvent(U)):U={promise:t,reason:n},!_Q&&(i=lQ["on"+e])?i(U):e===zQ&&EQ("Unhandled promise rejection",n)},nd=function(e){JQ.call(lQ,(function(){var t,n=e.facade,U=e.value;if(Ud(e)&&(t=fQ((function(){TQ?wQ.emit("unhandledRejection",U,n):td(zQ,n,U)})),e.rejection=TQ||Ud(e)?2:1,t.error))throw t.value}))},Ud=function(e){return 1!==e.rejection&&!e.parent},id=function(e){JQ.call(lQ,(function(){var t=e.facade;TQ?wQ.emit("rejectionHandled",t):td("rejectionhandled",t,e.value)}))},rd=function(e,t,n){return function(U){e(t,U,n)}},ad=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,ed(e,!0))},Fd=function(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw YQ("Promise can't be resolved itself");var U=$Q(t);U?WQ((function(){var n={done:!1};try{U.call(t,rd(Fd,n,e),rd(ad,n,e))}catch(gV){ad(n,gV,e)}})):(e.value=t,e.state=1,ed(e,!1))}catch(gV){ad({done:!1},gV,e)}}};if(AQ&&(MQ=(IQ=function(e){VQ(this,IQ,LQ),hQ(e),ql.call(this);var t=XQ(this);try{e(rd(Fd,t),rd(ad,t))}catch(gV){ad(t,gV)}}).prototype,(ql=function(e){xQ(this,{type:LQ,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=sQ(MQ,{then:function(e,t){var n=DQ(this),U=HQ(mQ(this,IQ));return U.ok="function"!=typeof e||e,U.fail="function"==typeof t&&t,U.domain=TQ?wQ.domain:void 0,n.parent=!0,n.reactions.push(U),0!=n.state&&ed(n,!1),U.promise},catch:function(e){return this.then(void 0,e)}}),$l=function(){var e=new ql,t=XQ(e);this.promise=e,this.resolve=rd(Fd,t),this.reject=rd(ad,t)},yQ.f=HQ=function(e){return e===IQ||e===eQ?new $l(e):PQ(e)},"function"==typeof dQ&&GQ!==Object.prototype)){tQ=GQ.then,OQ||(oQ(GQ,"then",(function(e,t){var n=this;return new IQ((function(e,t){tQ.call(n,e,t)})).then(e,t)}),{unsafe:!0}),oQ(GQ,"catch",MQ.catch,{unsafe:!0}));try{delete GQ.constructor}catch(gV){}cQ&&cQ(GQ,MQ)}FQ({global:!0,wrap:!0,forced:AQ},{Promise:IQ}),BQ(IQ,LQ,!1),RQ(LQ),eQ=QQ(LQ),FQ({target:LQ,stat:!0,forced:AQ},{reject:function(e){var t=HQ(this);return t.reject.call(void 0,e),t.promise}}),FQ({target:LQ,stat:!0,forced:AQ},{resolve:function(e){return kQ(this,e)}}),FQ({target:LQ,stat:!0,forced:qQ},{all:function(e){var t=this,n=HQ(t),U=n.resolve,i=n.reject,r=fQ((function(){var n=hQ(t.resolve),r=[],a=0,F=1;pQ(e,(function(e){var l=a++,Q=!1;r.push(void 0),F++,n.call(t,e).then((function(e){Q||(Q=!0,r[l]=e,--F||U(r))}),i)})),--F||U(r)}));return r.error&&i(r.value),n.promise},race:function(e){var t=this,n=HQ(t),U=n.reject,i=fQ((function(){var i=hQ(t.resolve);pQ(e,(function(e){i.call(t,e).then(n.resolve,U)}))}));return i.error&&U(i.value),n.promise}});var ld={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function U(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,U,r,a){if("function"!=typeof U)throw new TypeError("The listener must be a function");var F=new i(U,r||e,a),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],F]:e._events[l].push(F):(e._events[l]=F,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new U:delete e._events[t]}function F(){this._events=new U,this._eventsCount=0}Object.create&&(U.prototype=Object.create(null),(new U).__proto__||(n=!1)),F.prototype.eventNames=function(){var e,U,i=[];if(0===this._eventsCount)return i;for(U in e=this._events)t.call(e,U)&&i.push(n?U.slice(1):U);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},F.prototype.listeners=function(e){var t=n?n+e:e,U=this._events[t];if(!U)return[];if(U.fn)return[U.fn];for(var i=0,r=U.length,a=new Array(r);i<r;i++)a[i]=U[i].fn;return a},F.prototype.listenerCount=function(e){var t=n?n+e:e,U=this._events[t];return U?U.fn?1:U.length:0},F.prototype.emit=function(e,t,U,i,r,a){var F=n?n+e:e;if(!this._events[F])return!1;var l,Q,d=this._events[F],o=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),o){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,U),!0;case 4:return d.fn.call(d.context,t,U,i),!0;case 5:return d.fn.call(d.context,t,U,i,r),!0;case 6:return d.fn.call(d.context,t,U,i,r,a),!0}for(Q=1,l=new Array(o-1);Q<o;Q++)l[Q-1]=arguments[Q];d.fn.apply(d.context,l)}else{var s,c=d.length;for(Q=0;Q<c;Q++)switch(d[Q].once&&this.removeListener(e,d[Q].fn,void 0,!0),o){case 1:d[Q].fn.call(d[Q].context);break;case 2:d[Q].fn.call(d[Q].context,t);break;case 3:d[Q].fn.call(d[Q].context,t,U);break;case 4:d[Q].fn.call(d[Q].context,t,U,i);break;default:if(!l)for(s=1,l=new Array(o-1);s<o;s++)l[s-1]=arguments[s];d[Q].fn.apply(d[Q].context,l)}}return!0},F.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},F.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},F.prototype.removeListener=function(e,t,U,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return a(this,r),this;var F=this._events[r];if(F.fn)F.fn!==t||i&&!F.once||U&&F.context!==U||a(this,r);else{for(var l=0,Q=[],d=F.length;l<d;l++)(F[l].fn!==t||i&&!F[l].once||U&&F[l].context!==U)&&Q.push(F[l]);Q.length?this._events[r]=1===Q.length?Q[0]:Q:a(this,r)}return this},F.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&a(this,t)):(this._events=new U,this._eventsCount=0),this},F.prototype.off=F.prototype.removeListener,F.prototype.addListener=F.prototype.on,F.prefixed=n,F.EventEmitter=F,e.exports=F}(ld);var Qd=n(ld.exports),dd={exports:{}};dd.exports=function(e){var t=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function n(e,t){var n=e[0],U=e[1],i=e[2],r=e[3];U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&i|~U&r)+t[0]-680876936|0)<<7|n>>>25)+U|0)&U|~n&i)+t[1]-389564586|0)<<12|r>>>20)+n|0)&n|~r&U)+t[2]+606105819|0)<<17|i>>>15)+r|0)&r|~i&n)+t[3]-1044525330|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&i|~U&r)+t[4]-176418897|0)<<7|n>>>25)+U|0)&U|~n&i)+t[5]+1200080426|0)<<12|r>>>20)+n|0)&n|~r&U)+t[6]-1473231341|0)<<17|i>>>15)+r|0)&r|~i&n)+t[7]-45705983|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&i|~U&r)+t[8]+1770035416|0)<<7|n>>>25)+U|0)&U|~n&i)+t[9]-1958414417|0)<<12|r>>>20)+n|0)&n|~r&U)+t[10]-42063|0)<<17|i>>>15)+r|0)&r|~i&n)+t[11]-1990404162|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&i|~U&r)+t[12]+1804603682|0)<<7|n>>>25)+U|0)&U|~n&i)+t[13]-40341101|0)<<12|r>>>20)+n|0)&n|~r&U)+t[14]-1502002290|0)<<17|i>>>15)+r|0)&r|~i&n)+t[15]+1236535329|0)<<22|U>>>10)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&r|i&~r)+t[1]-165796510|0)<<5|n>>>27)+U|0)&i|U&~i)+t[6]-1069501632|0)<<9|r>>>23)+n|0)&U|n&~U)+t[11]+643717713|0)<<14|i>>>18)+r|0)&n|r&~n)+t[0]-373897302|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&r|i&~r)+t[5]-701558691|0)<<5|n>>>27)+U|0)&i|U&~i)+t[10]+38016083|0)<<9|r>>>23)+n|0)&U|n&~U)+t[15]-660478335|0)<<14|i>>>18)+r|0)&n|r&~n)+t[4]-405537848|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&r|i&~r)+t[9]+568446438|0)<<5|n>>>27)+U|0)&i|U&~i)+t[14]-1019803690|0)<<9|r>>>23)+n|0)&U|n&~U)+t[3]-187363961|0)<<14|i>>>18)+r|0)&n|r&~n)+t[8]+1163531501|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U&r|i&~r)+t[13]-1444681467|0)<<5|n>>>27)+U|0)&i|U&~i)+t[2]-51403784|0)<<9|r>>>23)+n|0)&U|n&~U)+t[7]+1735328473|0)<<14|i>>>18)+r|0)&n|r&~n)+t[12]-1926607734|0)<<20|U>>>12)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U^i^r)+t[5]-378558|0)<<4|n>>>28)+U|0)^U^i)+t[8]-2022574463|0)<<11|r>>>21)+n|0)^n^U)+t[11]+1839030562|0)<<16|i>>>16)+r|0)^r^n)+t[14]-35309556|0)<<23|U>>>9)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U^i^r)+t[1]-1530992060|0)<<4|n>>>28)+U|0)^U^i)+t[4]+1272893353|0)<<11|r>>>21)+n|0)^n^U)+t[7]-155497632|0)<<16|i>>>16)+r|0)^r^n)+t[10]-1094730640|0)<<23|U>>>9)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U^i^r)+t[13]+681279174|0)<<4|n>>>28)+U|0)^U^i)+t[0]-358537222|0)<<11|r>>>21)+n|0)^n^U)+t[3]-722521979|0)<<16|i>>>16)+r|0)^r^n)+t[6]+76029189|0)<<23|U>>>9)+i|0,U=((U+=((i=((i+=((r=((r+=((n=((n+=(U^i^r)+t[9]-640364487|0)<<4|n>>>28)+U|0)^U^i)+t[12]-421815835|0)<<11|r>>>21)+n|0)^n^U)+t[15]+530742520|0)<<16|i>>>16)+r|0)^r^n)+t[2]-995338651|0)<<23|U>>>9)+i|0,U=((U+=((r=((r+=(U^((n=((n+=(i^(U|~r))+t[0]-198630844|0)<<6|n>>>26)+U|0)|~i))+t[7]+1126891415|0)<<10|r>>>22)+n|0)^((i=((i+=(n^(r|~U))+t[14]-1416354905|0)<<15|i>>>17)+r|0)|~n))+t[5]-57434055|0)<<21|U>>>11)+i|0,U=((U+=((r=((r+=(U^((n=((n+=(i^(U|~r))+t[12]+1700485571|0)<<6|n>>>26)+U|0)|~i))+t[3]-1894986606|0)<<10|r>>>22)+n|0)^((i=((i+=(n^(r|~U))+t[10]-1051523|0)<<15|i>>>17)+r|0)|~n))+t[1]-2054922799|0)<<21|U>>>11)+i|0,U=((U+=((r=((r+=(U^((n=((n+=(i^(U|~r))+t[8]+1873313359|0)<<6|n>>>26)+U|0)|~i))+t[15]-30611744|0)<<10|r>>>22)+n|0)^((i=((i+=(n^(r|~U))+t[6]-1560198380|0)<<15|i>>>17)+r|0)|~n))+t[13]+1309151649|0)<<21|U>>>11)+i|0,U=((U+=((r=((r+=(U^((n=((n+=(i^(U|~r))+t[4]-145523070|0)<<6|n>>>26)+U|0)|~i))+t[11]-1120210379|0)<<10|r>>>22)+n|0)^((i=((i+=(n^(r|~U))+t[2]+718787259|0)<<15|i>>>17)+r|0)|~n))+t[9]-343485551|0)<<21|U>>>11)+i|0,e[0]=n+e[0]|0,e[1]=U+e[1]|0,e[2]=i+e[2]|0,e[3]=r+e[3]|0}function U(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return n}function i(e){var t,n=[];for(t=0;t<64;t+=4)n[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return n}function r(e){var t,i,r,a,F,l,Q=e.length,d=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=Q;t+=64)n(d,U(e.substring(t-64,t)));for(i=(e=e.substring(t-64)).length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<i;t+=1)r[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(n(d,r),t=0;t<16;t+=1)r[t]=0;return a=(a=8*Q).toString(16).match(/(.*?)(.{0,8})$/),F=parseInt(a[2],16),l=parseInt(a[1],16)||0,r[14]=F,r[15]=l,n(d,r),d}function a(e){var t,U,r,a,F,l,Q=e.length,d=[1732584193,-271733879,-1732584194,271733878];for(t=64;t<=Q;t+=64)n(d,i(e.subarray(t-64,t)));for(U=(e=t-64<Q?e.subarray(t-64):new Uint8Array(0)).length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<U;t+=1)r[t>>2]|=e[t]<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(n(d,r),t=0;t<16;t+=1)r[t]=0;return a=(a=8*Q).toString(16).match(/(.*?)(.{0,8})$/),F=parseInt(a[2],16),l=parseInt(a[1],16)||0,r[14]=F,r[15]=l,n(d,r),d}function F(e){var n,U="";for(n=0;n<4;n+=1)U+=t[e>>8*n+4&15]+t[e>>8*n&15];return U}function l(e){var t;for(t=0;t<e.length;t+=1)e[t]=F(e[t]);return e.join("")}function Q(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function d(e,t){var n,U=e.length,i=new ArrayBuffer(U),r=new Uint8Array(i);for(n=0;n<U;n+=1)r[n]=e.charCodeAt(n);return t?r:i}function o(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function s(e,t,n){var U=new Uint8Array(e.byteLength+t.byteLength);return U.set(new Uint8Array(e)),U.set(new Uint8Array(t),e.byteLength),n?U:U.buffer}function c(e){var t,n=[],U=e.length;for(t=0;t<U-1;t+=2)n.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,n)}function B(){this.reset()}return l(r("hello")),"undefined"==typeof ArrayBuffer||ArrayBuffer.prototype.slice||function(){function t(e,t){return(e=0|e||0)<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(n,U){var i,r,a,F,l=this.byteLength,Q=t(n,l),d=l;return U!==e&&(d=t(U,l)),Q>d?new ArrayBuffer(0):(i=d-Q,r=new ArrayBuffer(i),a=new Uint8Array(r),F=new Uint8Array(this,Q,i),a.set(F),r)}}(),B.prototype.append=function(e){return this.appendBinary(Q(e)),this},B.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,i=this._buff.length;for(t=64;t<=i;t+=64)n(this._hash,U(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},B.prototype.end=function(e){var t,n,U=this._buff,i=U.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<i;t+=1)r[t>>2]|=U.charCodeAt(t)<<(t%4<<3);return this._finish(r,i),n=l(this._hash),e&&(n=c(n)),this.reset(),n},B.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},B.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},B.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},B.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},B.prototype._finish=function(e,t){var U,i,r,a=t;if(e[a>>2]|=128<<(a%4<<3),a>55)for(n(this._hash,e),a=0;a<16;a+=1)e[a]=0;U=(U=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),i=parseInt(U[2],16),r=parseInt(U[1],16)||0,e[14]=i,e[15]=r,n(this._hash,e)},B.hash=function(e,t){return B.hashBinary(Q(e),t)},B.hashBinary=function(e,t){var n=l(r(e));return t?c(n):n},B.ArrayBuffer=function(){this.reset()},B.ArrayBuffer.prototype.append=function(e){var t,U=s(this._buff.buffer,e,!0),r=U.length;for(this._length+=e.byteLength,t=64;t<=r;t+=64)n(this._hash,i(U.subarray(t-64,t)));return this._buff=t-64<r?new Uint8Array(U.buffer.slice(t-64)):new Uint8Array(0),this},B.ArrayBuffer.prototype.end=function(e){var t,n,U=this._buff,i=U.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<i;t+=1)r[t>>2]|=U[t]<<(t%4<<3);return this._finish(r,i),n=l(this._hash),e&&(n=c(n)),this.reset(),n},B.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},B.ArrayBuffer.prototype.getState=function(){var e=B.prototype.getState.call(this);return e.buff=o(e.buff),e},B.ArrayBuffer.prototype.setState=function(e){return e.buff=d(e.buff,!0),B.prototype.setState.call(this,e)},B.ArrayBuffer.prototype.destroy=B.prototype.destroy,B.ArrayBuffer.prototype._finish=B.prototype._finish,B.ArrayBuffer.hash=function(e,t){var n=l(a(new Uint8Array(e)));return t?c(n):n},B}();var od=n(dd.exports),sd=a,cd=function(e,t){var n=[][e];return!!n&&sd((function(){n.call(null,t||function(){throw 1},1)}))},Bd=Ot,Rd=S,ud=[].join,hd=h!=Object,Vd=cd("join",",");Bd({target:"Array",proto:!0,forced:hd||!Vd},{join:function(e){return ud.call(Rd(this),void 0===e?",":e)}});var Zd=function(e){return e>="0"&&e<="9"?e.charCodeAt(0)-"0".charCodeAt(0):e>="a"&&e<="z"?e.charCodeAt(0)-"a".charCodeAt(0)+10:255},pd=function(e,t){var n,U=(e[0].charCodeAt()^e[1].charCodeAt()^e[2].charCodeAt())-"0".charCodeAt(0),i=t-U-1,r=new Array(i),a=new Array(U);for(n=U;n>0;n--)a[U-n]=String.fromCharCode(e[t-U-2].charCodeAt()^e[t-U-1].charCodeAt()^e[t-n].charCodeAt());for(n=0;n<i;n++)r[n]=e[n+1];return{convertKey:r,convertLen:i,method:a.join(""),methodLen:U}},Sd=function(e){var t=0;for(t=0;0!==e;t++)e&=e-1;return t},md=function(e,t,n){var U=e+Sd(t)+n;return String.fromCharCode(255&U)},Jd=function(e,t,n){var U=e.charCodeAt()-Sd(t)-n;return String.fromCharCode(255&U)},Wd=function(e,t,n){for(var U,i=85,r=250,a=0;a<t;a++)a%2==1?(U=i^e[a].charCodeAt(),i=e[a].charCodeAt()):(U=r^e[a].charCodeAt(),r=e[a].charCodeAt()),e[a]=0===n?Jd(U,a,21):md(U,a,21);return e},kd=function(e,t,n){var U=85,i=250;Ed(e);for(var r,a,F,l=0;l<t;l++){(F=e[l].charCodeAt(0))>127&&(F-=256),l%2==1?(r=U^F,U=F,a=i):(r=i^F,i=F,a=U),r>127&&(r-=256);var Q=(0===n?Jd(r,l,21):md(r,l,21)).charCodeAt(0);Q>127&&(Q-=256);var d=Q-a;d<0&&(d+=256),e[l]=String.fromCharCode(d)}return Ed(e),e};function Ed(e){for(var t,n=e.length,U=0;U<n&&U!==n-1;U+=2)t=e[U],e[U]=e[U+1],e[U+1]=t;return e}function yd(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,U=e;t=t||U.length;var i=pd(U,t),r=i.convertKey,a=i.convertLen;switch(i.method){case"11":case"22":case"appdevice":case"webdevice":r=Wd(r,a,n);break;case"app_v2":case"web_v2":r=kd(r,a,n)}var F=a-Zd(r[0])-1,l=new Array(F+1);l[F]="";var Q=0;for(Q=0;Q<F;Q++)l[Q]=r[Q+1];return l.join("")}var fd,bd={exports:{}},vd="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Nd=vd,Td=F,gd=i,Cd=m,Ld=b,Xd=Ci,xd=te,Dd=Ae,Gd=w.f,Id=RU,Md=XU,Yd=gn,Kd=Je,wd=gd.Int8Array,Hd=wd&&wd.prototype,Pd=gd.Uint8ClampedArray,jd=Pd&&Pd.prototype,_d=wd&&Id(wd),zd=Hd&&Id(Hd),Od=Object.prototype,Ad=Od.isPrototypeOf,qd=Yd("toStringTag"),$d=Kd("TYPED_ARRAY_TAG"),eo=Nd&&!!Md&&"Opera"!==Xd(gd.opera),to=!1,no={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Uo={BigInt64Array:8,BigUint64Array:8},io=function(e){if(!Cd(e))return!1;var t=Xd(e);return Ld(no,t)||Ld(Uo,t)};for(fd in no)gd[fd]||(eo=!1);if((!eo||"function"!=typeof _d||_d===Function.prototype)&&(_d=function(){throw TypeError("Incorrect invocation")},eo))for(fd in no)gd[fd]&&Md(gd[fd],_d);if((!eo||!zd||zd===Od)&&(zd=_d.prototype,eo))for(fd in no)gd[fd]&&Md(gd[fd].prototype,zd);if(eo&&Id(jd)!==zd&&Md(jd,zd),Td&&!Ld(zd,qd))for(fd in to=!0,Gd(zd,qd,{get:function(){return Cd(this)?this[$d]:void 0}}),no)gd[fd]&&xd(gd[fd],$d,fd);var ro={NATIVE_ARRAY_BUFFER_VIEWS:eo,TYPED_ARRAY_TAG:to&&$d,aTypedArray:function(e){if(io(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(Md){if(Ad.call(_d,e))return e}else for(var t in no)if(Ld(no,fd)){var n=gd[t];if(n&&(e===n||Ad.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(Td){if(n)for(var U in no){var i=gd[U];if(i&&Ld(i.prototype,e))try{delete i.prototype[e]}catch(gV){}}zd[e]&&!n||Dd(zd,e,n?t:eo&&Hd[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var U,i;if(Td){if(Md){if(n)for(U in no)if((i=gd[U])&&Ld(i,e))try{delete i[e]}catch(gV){}if(_d[e]&&!n)return;try{return Dd(_d,e,n?t:eo&&_d[e]||t)}catch(gV){}}for(U in no)!(i=gd[U])||i[e]&&!n||Dd(i,e,t)}},isView:function(e){if(!Cd(e))return!1;var t=Xd(e);return"DataView"===t||Ld(no,t)||Ld(Uo,t)},isTypedArray:io,TypedArray:_d,TypedArrayPrototype:zd},ao=i,Fo=a,lo=$i,Qo=ro.NATIVE_ARRAY_BUFFER_VIEWS,oo=ao.ArrayBuffer,so=ao.Int8Array,co=!Qo||!Fo((function(){so(1)}))||!Fo((function(){new so(-1)}))||!lo((function(e){new so,new so(null),new so(1.5),new so(e)}),!0)||Fo((function(){return 1!==new so(new oo(2),1,void 0).length})),Bo=rt,Ro=lt,uo=function(e){if(void 0===e)return 0;var t=Bo(e),n=Ro(t);if(t!==n)throw RangeError("Wrong length or index");return n},ho=Math.abs,Vo=Math.pow,Zo=Math.floor,po=Math.log,So=Math.LN2,mo=E,Jo=st,Wo=lt,ko=function(e){for(var t=mo(this),n=Wo(t.length),U=arguments.length,i=Jo(U>1?arguments[1]:void 0,n),r=U>2?arguments[2]:void 0,a=void 0===r?n:Jo(r,n);a>i;)t[i++]=e;return t},Eo=i,yo=F,fo=vd,bo=te,vo=ur,No=a,To=_i,go=rt,Co=lt,Lo=uo,Xo={pack:function(e,t,n){var U,i,r,a=new Array(n),F=8*n-t-1,l=(1<<F)-1,Q=l>>1,d=23===t?Vo(2,-24)-Vo(2,-77):0,o=e<0||0===e&&1/e<0?1:0,s=0;for((e=ho(e))!=e||e===1/0?(i=e!=e?1:0,U=l):(U=Zo(po(e)/So),e*(r=Vo(2,-U))<1&&(U--,r*=2),(e+=U+Q>=1?d/r:d*Vo(2,1-Q))*r>=2&&(U++,r/=2),U+Q>=l?(i=0,U=l):U+Q>=1?(i=(e*r-1)*Vo(2,t),U+=Q):(i=e*Vo(2,Q-1)*Vo(2,t),U=0));t>=8;a[s++]=255&i,i/=256,t-=8);for(U=U<<t|i,F+=t;F>0;a[s++]=255&U,U/=256,F-=8);return a[--s]|=128*o,a},unpack:function(e,t){var n,U=e.length,i=8*U-t-1,r=(1<<i)-1,a=r>>1,F=i-7,l=U-1,Q=e[l--],d=127&Q;for(Q>>=7;F>0;d=256*d+e[l],l--,F-=8);for(n=d&(1<<-F)-1,d>>=-F,F+=t;F>0;n=256*n+e[l],l--,F-=8);if(0===d)d=1-a;else{if(d===r)return n?NaN:Q?-1/0:1/0;n+=Vo(2,t),d-=a}return(Q?-1:1)*n*Vo(2,d-t)}},xo=RU,Do=XU,Go=nt.f,Io=w.f,Mo=ko,Yo=EU,Ko=Ye.get,wo=Ye.set,Ho="ArrayBuffer",Po="DataView",jo="prototype",_o="Wrong index",zo=Eo[Ho],Oo=zo,Ao=Eo[Po],qo=Ao&&Ao[jo],$o=Object.prototype,es=Eo.RangeError,ts=Xo.pack,ns=Xo.unpack,Us=function(e){return[255&e]},is=function(e){return[255&e,e>>8&255]},rs=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},as=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Fs=function(e){return ts(e,23,4)},ls=function(e){return ts(e,52,8)},Qs=function(e,t){Io(e[jo],t,{get:function(){return Ko(this)[t]}})},ds=function(e,t,n,U){var i=Lo(n),r=Ko(e);if(i+t>r.byteLength)throw es(_o);var a=Ko(r.buffer).bytes,F=i+r.byteOffset,l=a.slice(F,F+t);return U?l:l.reverse()},os=function(e,t,n,U,i,r){var a=Lo(n),F=Ko(e);if(a+t>F.byteLength)throw es(_o);for(var l=Ko(F.buffer).bytes,Q=a+F.byteOffset,d=U(+i),o=0;o<t;o++)l[Q+o]=d[r?o:t-o-1]};if(fo){if(!No((function(){zo(1)}))||!No((function(){new zo(-1)}))||No((function(){return new zo,new zo(1.5),new zo(NaN),zo.name!=Ho}))){for(var ss,cs=(Oo=function(e){return To(this,Oo),new zo(Lo(e))})[jo]=zo[jo],Bs=Go(zo),Rs=0;Bs.length>Rs;)(ss=Bs[Rs++])in Oo||bo(Oo,ss,zo[ss]);cs.constructor=Oo}Do&&xo(qo)!==$o&&Do(qo,$o);var us=new Ao(new Oo(2)),hs=qo.setInt8;us.setInt8(0,2147483648),us.setInt8(1,2147483649),!us.getInt8(0)&&us.getInt8(1)||vo(qo,{setInt8:function(e,t){hs.call(this,e,t<<24>>24)},setUint8:function(e,t){hs.call(this,e,t<<24>>24)}},{unsafe:!0})}else Oo=function(e){To(this,Oo,Ho);var t=Lo(e);wo(this,{bytes:Mo.call(new Array(t),0),byteLength:t}),yo||(this.byteLength=t)},Ao=function(e,t,n){To(this,Ao,Po),To(e,Oo,Po);var U=Ko(e).byteLength,i=go(t);if(i<0||i>U)throw es("Wrong offset");if(i+(n=void 0===n?U-i:Co(n))>U)throw es("Wrong length");wo(this,{buffer:e,byteLength:n,byteOffset:i}),yo||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},yo&&(Qs(Oo,"byteLength"),Qs(Ao,"buffer"),Qs(Ao,"byteLength"),Qs(Ao,"byteOffset")),vo(Ao[jo],{getInt8:function(e){return ds(this,1,e)[0]<<24>>24},getUint8:function(e){return ds(this,1,e)[0]},getInt16:function(e){var t=ds(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=ds(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return as(ds(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return as(ds(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return ns(ds(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return ns(ds(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){os(this,1,e,Us,t)},setUint8:function(e,t){os(this,1,e,Us,t)},setInt16:function(e,t){os(this,2,e,is,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){os(this,2,e,is,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){os(this,4,e,rs,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){os(this,4,e,rs,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){os(this,4,e,Fs,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){os(this,8,e,ls,t,arguments.length>2?arguments[2]:void 0)}});Yo(Oo,Ho),Yo(Ao,Po);var Vs={ArrayBuffer:Oo,DataView:Ao},Zs=rt,ps=function(e){var t=Zs(e);if(t<0)throw RangeError("The argument can't be less than 0");return t},Ss=function(e,t){var n=ps(e);if(n%t)throw RangeError("Wrong offset");return n},ms=E,Js=lt,Ws=Di,ks=Wi,Es=yi,ys=ro.aTypedArrayConstructor,fs=Ot,bs=i,vs=F,Ns=co,Ts=ro,gs=Vs,Cs=_i,Ls=s,Xs=te,xs=lt,Ds=uo,Gs=Ss,Is=W,Ms=b,Ys=Ci,Ks=m,ws=eU,Hs=XU,Ps=nt.f,js=function(e){var t,n,U,i,r,a,F=ms(e),l=arguments.length,Q=l>1?arguments[1]:void 0,d=void 0!==Q,o=Ws(F);if(null!=o&&!ks(o))for(a=(r=o.call(F)).next,F=[];!(i=a.call(r)).done;)F.push(i.value);for(d&&l>2&&(Q=Es(Q,arguments[2],2)),n=Js(F.length),U=new(ys(this))(n),t=0;n>t;t++)U[t]=d?Q(F[t],t):F[t];return U},_s=EF.forEach,zs=Sr,Os=w,As=r,qs=nr,$s=Ye.get,ec=Ye.set,tc=Os.f,nc=As.f,Uc=Math.round,ic=bs.RangeError,rc=gs.ArrayBuffer,ac=gs.DataView,Fc=Ts.NATIVE_ARRAY_BUFFER_VIEWS,lc=Ts.TYPED_ARRAY_TAG,Qc=Ts.TypedArray,dc=Ts.TypedArrayPrototype,oc=Ts.aTypedArrayConstructor,sc=Ts.isTypedArray,cc="BYTES_PER_ELEMENT",Bc="Wrong length",Rc=function(e,t){for(var n=0,U=t.length,i=new(oc(e))(U);U>n;)i[n]=t[n++];return i},uc=function(e,t){tc(e,t,{get:function(){return $s(this)[t]}})},hc=function(e){var t;return e instanceof rc||"ArrayBuffer"==(t=Ys(e))||"SharedArrayBuffer"==t},Vc=function(e,t){return sc(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},Zc=function(e,t){return Vc(e,t=Is(t,!0))?Ls(2,e[t]):nc(e,t)},pc=function(e,t,n){return!(Vc(e,t=Is(t,!0))&&Ks(n)&&Ms(n,"value"))||Ms(n,"get")||Ms(n,"set")||n.configurable||Ms(n,"writable")&&!n.writable||Ms(n,"enumerable")&&!n.enumerable?tc(e,t,n):(e[t]=n.value,e)};vs?(Fc||(As.f=Zc,Os.f=pc,uc(dc,"buffer"),uc(dc,"byteOffset"),uc(dc,"byteLength"),uc(dc,"length")),fs({target:"Object",stat:!0,forced:!Fc},{getOwnPropertyDescriptor:Zc,defineProperty:pc}),bd.exports=function(e,t,n){var U=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",r="get"+e,a="set"+e,F=bs[i],l=F,Q=l&&l.prototype,d={},o=function(e,t){tc(e,t,{get:function(){return e=t,(n=$s(this)).view[r](e*U+n.byteOffset,!0);var e,n},set:function(e){return i=t,r=e,F=$s(this),n&&(r=(r=Uc(r))<0?0:r>255?255:255&r),void F.view[a](i*U+F.byteOffset,r,!0);var i,r,F},enumerable:!0})};Fc?Ns&&(l=t((function(e,t,n,r){return Cs(e,l,i),qs(Ks(t)?hc(t)?void 0!==r?new F(t,Gs(n,U),r):void 0!==n?new F(t,Gs(n,U)):new F(t):sc(t)?Rc(l,t):js.call(l,t):new F(Ds(t)),e,l)})),Hs&&Hs(l,Qc),_s(Ps(F),(function(e){e in l||Xs(l,e,F[e])})),l.prototype=Q):(l=t((function(e,t,n,r){Cs(e,l,i);var a,F,Q,d=0,s=0;if(Ks(t)){if(!hc(t))return sc(t)?Rc(l,t):js.call(l,t);a=t,s=Gs(n,U);var c=t.byteLength;if(void 0===r){if(c%U)throw ic(Bc);if((F=c-s)<0)throw ic(Bc)}else if((F=xs(r)*U)+s>c)throw ic(Bc);Q=F/U}else Q=Ds(t),a=new rc(F=Q*U);for(ec(e,{buffer:a,byteOffset:s,byteLength:F,length:Q,view:new ac(a)});d<Q;)o(e,d++)})),Hs&&Hs(l,Qc),Q=l.prototype=ws(dc)),Q.constructor!==l&&Xs(Q,"constructor",l),lc&&Xs(Q,lc,i),d[i]=l,fs({global:!0,forced:l!=F,sham:!Fc},d),cc in l||Xs(l,cc,U),cc in Q||Xs(Q,cc,U),zs(i)}):bd.exports=function(){};var Sc=bd.exports;Sc("Uint8",(function(e){return function(t,n,U){return e(this,t,n,U)}}));var mc=E,Jc=st,Wc=lt,kc=Math.min,Ec=[].copyWithin||function(e,t){var n=mc(this),U=Wc(n.length),i=Jc(e,U),r=Jc(t,U),a=arguments.length>2?arguments[2]:void 0,F=kc((void 0===a?U:Jc(a,U))-r,U-i),l=1;for(r<i&&i<r+F&&(l=-1,r+=F-1,i+=F-1);F-- >0;)r in n?n[i]=n[r]:delete n[i],i+=l,r+=l;return n},yc=Ec,fc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("copyWithin",(function(e,t){return yc.call(fc(this),e,t,arguments.length>2?arguments[2]:void 0)}));var bc=EF.every,vc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("every",(function(e){return bc(vc(this),e,arguments.length>1?arguments[1]:void 0)}));var Nc=ko,Tc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("fill",(function(e){return Nc.apply(Tc(this),arguments)}));var gc=ro.aTypedArrayConstructor,Cc=ia,Lc=EF.filter,Xc=function(e,t){for(var n=Cc(e,e.constructor),U=0,i=t.length,r=new(gc(n))(i);i>U;)r[U]=t[U++];return r},xc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("filter",(function(e){var t=Lc(xc(this),e,arguments.length>1?arguments[1]:void 0);return Xc(this,t)}));var Dc=EF.find,Gc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("find",(function(e){return Dc(Gc(this),e,arguments.length>1?arguments[1]:void 0)}));var Ic=EF.findIndex,Mc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("findIndex",(function(e){return Ic(Mc(this),e,arguments.length>1?arguments[1]:void 0)}));var Yc=EF.forEach,Kc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("forEach",(function(e){Yc(Kc(this),e,arguments.length>1?arguments[1]:void 0)}));var wc=ht.includes,Hc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("includes",(function(e){return wc(Hc(this),e,arguments.length>1?arguments[1]:void 0)}));var Pc=ht.indexOf,jc=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("indexOf",(function(e){return Pc(jc(this),e,arguments.length>1?arguments[1]:void 0)}));var _c=i,zc=ro,Oc=Fi,Ac=gn("iterator"),qc=_c.Uint8Array,$c=Oc.values,eB=Oc.keys,tB=Oc.entries,nB=zc.aTypedArray,UB=zc.exportTypedArrayMethod,iB=qc&&qc.prototype[Ac],rB=!!iB&&("values"==iB.name||null==iB.name),aB=function(){return $c.call(nB(this))};UB("entries",(function(){return tB.call(nB(this))})),UB("keys",(function(){return eB.call(nB(this))})),UB("values",aB,!rB),UB(Ac,aB,!rB);var FB=ro.aTypedArray,lB=[].join;(0,ro.exportTypedArrayMethod)("join",(function(e){return lB.apply(FB(this),arguments)}));var QB=S,dB=rt,oB=lt,sB=cd,cB=Math.min,BB=[].lastIndexOf,RB=!!BB&&1/[1].lastIndexOf(1,-0)<0,uB=sB("lastIndexOf"),hB=RB||!uB?function(e){if(RB)return BB.apply(this,arguments)||0;var t=QB(this),n=oB(t.length),U=n-1;for(arguments.length>1&&(U=cB(U,dB(arguments[1]))),U<0&&(U=n+U);U>=0;U--)if(U in t&&t[U]===e)return U||0;return-1}:BB,VB=hB,ZB=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("lastIndexOf",(function(e){return VB.apply(ZB(this),arguments)}));var pB=EF.map,SB=ia,mB=ro.aTypedArray,JB=ro.aTypedArrayConstructor;(0,ro.exportTypedArrayMethod)("map",(function(e){return pB(mB(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(JB(SB(e,e.constructor)))(t)}))}));var WB=ki,kB=E,EB=h,yB=lt,fB=function(e){return function(t,n,U,i){WB(n);var r=kB(t),a=EB(r),F=yB(r.length),l=e?F-1:0,Q=e?-1:1;if(U<2)for(;;){if(l in a){i=a[l],l+=Q;break}if(l+=Q,e?l<0:F<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:F>l;l+=Q)l in a&&(i=n(i,a[l],l,r));return i}},bB={left:fB(!1),right:fB(!0)},vB=bB.left,NB=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("reduce",(function(e){return vB(NB(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var TB=bB.right,gB=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("reduceRight",(function(e){return TB(gB(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)}));var CB=ro.aTypedArray,LB=ro.exportTypedArrayMethod,XB=Math.floor;LB("reverse",(function(){for(var e,t=this,n=CB(t).length,U=XB(n/2),i=0;i<U;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var xB=lt,DB=Ss,GB=E,IB=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("set",(function(e){IB(this);var t=DB(arguments.length>1?arguments[1]:void 0,1),n=this.length,U=GB(e),i=xB(U.length),r=0;if(i+t>n)throw RangeError("Wrong length");for(;r<i;)this[t+r]=U[r++]}),a((function(){new Int8Array(1).set({})})));var MB=ia,YB=ro.aTypedArray,KB=ro.aTypedArrayConstructor,wB=[].slice;(0,ro.exportTypedArrayMethod)("slice",(function(e,t){for(var n=wB.call(YB(this),e,t),U=MB(this,this.constructor),i=0,r=n.length,a=new(KB(U))(r);r>i;)a[i]=n[i++];return a}),a((function(){new Int8Array(1).slice()})));var HB=EF.some,PB=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("some",(function(e){return HB(PB(this),e,arguments.length>1?arguments[1]:void 0)}));var jB=ro.aTypedArray,_B=[].sort;(0,ro.exportTypedArrayMethod)("sort",(function(e){return _B.call(jB(this),e)}));var zB=lt,OB=st,AB=ia,qB=ro.aTypedArray;(0,ro.exportTypedArrayMethod)("subarray",(function(e,t){var n=qB(this),U=n.length,i=OB(e,U);return new(AB(n,n.constructor))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,zB((void 0===t?U:OB(t,U))-i))}));var $B=ro,eR=a,tR=i.Int8Array,nR=$B.aTypedArray,UR=$B.exportTypedArrayMethod,iR=[].toLocaleString,rR=[].slice,aR=!!tR&&eR((function(){iR.call(new tR(1))}));UR("toLocaleString",(function(){return iR.apply(aR?rR.call(nR(this)):nR(this),arguments)}),eR((function(){return[1,2].toLocaleString()!=new tR([1,2]).toLocaleString()}))||!eR((function(){tR.prototype.toLocaleString.call([1,2])})));var FR=ro.exportTypedArrayMethod,lR=a,QR=i.Uint8Array,dR=QR&&QR.prototype||{},oR=[].toString,sR=[].join;lR((function(){oR.call({})}))&&(oR=function(){return sR.call(this)});var cR=dR.toString!=oR;FR("toString",oR,cR);var BR=EF.forEach,RR=cd("forEach")?[].forEach:function(e){return BR(this,e,arguments.length>1?arguments[1]:void 0)},uR=i,hR=eF,VR=RR,ZR=te;for(var pR in hR){var SR=uR[pR],mR=SR&&SR.prototype;if(mR&&mR.forEach!==VR)try{ZR(mR,"forEach",VR)}catch(gV){mR.forEach=VR}}Sc("Uint16",(function(e){return function(t,n,U){return e(this,t,n,U)}}));var JR=P,WR=function(){var e=JR(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},kR={},ER=a;function yR(e,t){return RegExp(e,t)}kR.UNSUPPORTED_Y=ER((function(){var e=yR("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),kR.BROKEN_CARET=ER((function(){var e=yR("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var fR,bR,vR=WR,NR=kR,TR=pe,gR=RegExp.prototype.exec,CR=TR("native-string-replace",String.prototype.replace),LR=gR,XR=(fR=/a/,bR=/b*/g,gR.call(fR,"a"),gR.call(bR,"a"),0!==fR.lastIndex||0!==bR.lastIndex),xR=NR.UNSUPPORTED_Y||NR.BROKEN_CARET,DR=void 0!==/()??/.exec("")[1];(XR||DR||xR)&&(LR=function(e){var t,n,U,i,r=this,a=xR&&r.sticky,F=vR.call(r),l=r.source,Q=0,d=e;return a&&(-1===(F=F.replace("y","")).indexOf("g")&&(F+="g"),d=String(e).slice(r.lastIndex),r.lastIndex>0&&(!r.multiline||r.multiline&&"\n"!==e[r.lastIndex-1])&&(l="(?: "+l+")",d=" "+d,Q++),n=new RegExp("^(?:"+l+")",F)),DR&&(n=new RegExp("^"+l+"$(?!\\s)",F)),XR&&(t=r.lastIndex),U=gR.call(a?n:r,d),a?U?(U.input=U.input.slice(Q),U[0]=U[0].slice(Q),U.index=r.lastIndex,r.lastIndex+=U[0].length):r.lastIndex=0:XR&&U&&(r.lastIndex=r.global?U.index+U[0].length:t),DR&&U&&U.length>1&&CR.call(U[0],n,(function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(U[i]=void 0)})),U});var GR=LR;Ot({target:"RegExp",proto:!0,forced:/./.exec!==GR},{exec:GR});var IR=Ae,MR=GR,YR=a,KR=gn,wR=te,HR=KR("species"),PR=RegExp.prototype,jR=!YR((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),_R="$0"==="a".replace(/./,"$0"),zR=KR("replace"),OR=!!/./[zR]&&""===/./[zR]("a","$0"),AR=!YR((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),qR=function(e,t,n,U){var i=KR(e),r=!YR((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=r&&!YR((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[HR]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!r||!a||"replace"===e&&(!jR||!_R||OR)||"split"===e&&!AR){var F=/./[i],l=n(i,""[e],(function(e,t,n,U,i){var a=t.exec;return a===MR||a===PR.exec?r&&!i?{done:!0,value:F.call(t,n,U)}:{done:!0,value:e.call(n,t,U)}:{done:!1}}),{REPLACE_KEEPS_$0:_R,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:OR}),Q=l[0],d=l[1];IR(String.prototype,e,Q),IR(PR,i,2==t?function(e,t){return d.call(e,this,t)}:function(e){return d.call(e,this)})}U&&wR(PR[i],"sham",!0)},$R=Ir.charAt,eu=function(e,t,n){return t+(n?$R(e,t).length:1)},tu=E,nu=Math.floor,Uu="".replace,iu=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,ru=/\$([$&'`]|\d{1,2})/g,au=B,Fu=GR,lu=function(e,t){var n=e.exec;if("function"==typeof n){var U=n.call(e,t);if("object"!=typeof U)throw TypeError("RegExp exec method returned something other than an Object or null");return U}if("RegExp"!==au(e))throw TypeError("RegExp#exec called on incompatible receiver");return Fu.call(e,t)},Qu=qR,du=P,ou=lt,su=rt,cu=V,Bu=eu,Ru=function(e,t,n,U,i,r){var a=n+e.length,F=U.length,l=ru;return void 0!==i&&(i=tu(i),l=iu),Uu.call(r,l,(function(r,l){var Q;switch(l.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(a);case"<":Q=i[l.slice(1,-1)];break;default:var d=+l;if(0===d)return r;if(d>F){var o=nu(d/10);return 0===o?r:o<=F?void 0===U[o-1]?l.charAt(1):U[o-1]+l.charAt(1):r}Q=U[d-1]}return void 0===Q?"":Q}))},uu=lu,hu=Math.max,Vu=Math.min;Qu("replace",2,(function(e,t,n,U){var i=U.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,r=U.REPLACE_KEEPS_$0,a=i?"$":"$0";return[function(n,U){var i=cu(this),r=null==n?void 0:n[e];return void 0!==r?r.call(n,i,U):t.call(String(i),n,U)},function(e,U){if(!i&&r||"string"==typeof U&&-1===U.indexOf(a)){var F=n(t,e,this,U);if(F.done)return F.value}var l=du(e),Q=String(this),d="function"==typeof U;d||(U=String(U));var o=l.global;if(o){var s=l.unicode;l.lastIndex=0}for(var c=[];;){var B=uu(l,Q);if(null===B)break;if(c.push(B),!o)break;""===String(B[0])&&(l.lastIndex=Bu(Q,ou(l.lastIndex),s))}for(var R,u="",h=0,V=0;V<c.length;V++){B=c[V];for(var Z=String(B[0]),p=hu(Vu(su(B.index),Q.length),0),S=[],m=1;m<B.length;m++)S.push(void 0===(R=B[m])?R:String(R));var J=B.groups;if(d){var W=[Z].concat(S,p,Q);void 0!==J&&W.push(J);var k=String(U.apply(void 0,W))}else k=Ru(Z,Q,p,S,J,U);p>=h&&(u+=Q.slice(h,p)+k,h=p+Z.length)}return u+Q.slice(h)}]}));var Zu=Ae,pu=P,Su=a,mu=WR,Ju="toString",Wu=RegExp.prototype,ku=Wu[Ju],Eu=Su((function(){return"/a/b"!=ku.call({source:"a",flags:"b"})})),yu=ku.name!=Ju;(Eu||yu)&&Zu(RegExp.prototype,Ju,(function(){var e=pu(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in Wu)?mu.call(e):n)}),{unsafe:!0});var fu=Ot,bu=m,vu=BF,Nu=st,Tu=lt,gu=S,Cu=xF,Lu=gn,Xu=vF("slice"),xu=Lu("species"),Du=[].slice,Gu=Math.max;fu({target:"Array",proto:!0,forced:!Xu},{slice:function(e,t){var n,U,i,r=gu(this),a=Tu(r.length),F=Nu(e,a),l=Nu(void 0===t?a:t,a);if(vu(r)&&("function"!=typeof(n=r.constructor)||n!==Array&&!vu(n.prototype)?bu(n)&&null===(n=n[xu])&&(n=void 0):n=void 0,n===Array||void 0===n))return Du.call(r,F,l);for(U=new(void 0===n?Array:n)(Gu(l-F,0)),i=0;F<l;F++,i++)F in r&&Cu(U,i,r[F]);return U.length=i,U}});var Iu=Sr,Mu="ArrayBuffer",Yu=Vs[Mu];Ot({global:!0,forced:i[Mu]!==Yu},{ArrayBuffer:Yu}),Iu(Mu);var Ku=V,wu="[\t\n\v\f\r                 \u2028\u2029\ufeff]",Hu=RegExp("^"+wu+wu+"*"),Pu=RegExp(wu+wu+"*$"),ju=function(e){return function(t){var n=String(Ku(t));return 1&e&&(n=n.replace(Hu,"")),2&e&&(n=n.replace(Pu,"")),n}},_u={start:ju(1),end:ju(2),trim:ju(3)},zu=F,Ou=i,Au=Yt,qu=Ae,$u=b,eh=B,th=nr,nh=W,Uh=a,ih=eU,rh=nt.f,ah=r.f,Fh=w.f,lh=_u.trim,Qh="Number",dh=Ou[Qh],oh=dh.prototype,sh=eh(ih(oh))==Qh,ch=function(e){var t,n,U,i,r,a,F,l,Q=nh(e,!1);if("string"==typeof Q&&Q.length>2)if(43===(t=(Q=lh(Q)).charCodeAt(0))||45===t){if(88===(n=Q.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(Q.charCodeAt(1)){case 66:case 98:U=2,i=49;break;case 79:case 111:U=8,i=55;break;default:return+Q}for(a=(r=Q.slice(2)).length,F=0;F<a;F++)if((l=r.charCodeAt(F))<48||l>i)return NaN;return parseInt(r,U)}return+Q};if(Au(Qh,!dh(" 0o1")||!dh("0b1")||dh("+0x1"))){for(var Bh,Rh=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof Rh&&(sh?Uh((function(){oh.valueOf.call(n)})):eh(n)!=Qh)?th(new dh(ch(t)),n,Rh):ch(t)},uh=zu?rh(dh):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),hh=0;uh.length>hh;hh++)$u(dh,Bh=uh[hh])&&!$u(Rh,Bh)&&Fh(Rh,Bh,ah(dh,Bh));Rh.prototype=oh,oh.constructor=Rh,qu(Ou,Qh,Rh)}var Vh=P,Zh=lt,ph=V,Sh=eu,mh=lu;qR("match",1,(function(e,t,n){return[function(t){var n=ph(this),U=null==t?void 0:t[e];return void 0!==U?U.call(t,n):new RegExp(t)[e](String(n))},function(e){var U=n(t,e,this);if(U.done)return U.value;var i=Vh(e),r=String(this);if(!i.global)return mh(i,r);var a=i.unicode;i.lastIndex=0;for(var F,l=[],Q=0;null!==(F=mh(i,r));){var d=String(F[0]);l[Q]=d,""===d&&(i.lastIndex=Sh(r,Zh(i.lastIndex),a)),Q++}return 0===Q?null:l}]}));var Jh,Wh,kh,Eh,yh,fh,bh={str2hex:function(e){if(""===e)return"";for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t},Base64ToHex:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=window.atob(e.replace(/-/g,"+").replace(/_/g,"/"));if(t){for(var U=[],i=0;i<n.length;i++)U.push(n.charCodeAt(i));return new Uint8Array(U).buffer}for(var r="",a=0;a<n.length;a++)r+="0".concat(n.charCodeAt(a).toString(16)).substr(-2);return r},checkUnionInfoExpired:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30;if(0===t.indexOf(e)){var U=parseInt(Nh(t.slice(e.length))),i=(new Date).getTime()-U;if(i>0&&i<=1e3*n)return!0;console.error("UnionInfo timestamp expire!!!")}else console.error("unionID and UnionInfo not match!!!");return!1},getUnionInfo:function(){return"".concat(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").concat(vh((new Date).getTime().toString()))},StringToArrayBuffer:function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),U=0;U<e.length;U++)n[U]=e.charCodeAt(U);return t},ArrayBufferToString:function(e){var t=[];e=ArrayBuffer.isView(e)?e:new Uint8Array(e);for(var n,U=0;U<e.length;U++)n=e[U],t.push(String.fromCharCode(n));return t.join("")},isBase64:function(e){return/^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/.test(e)},fromHex:function(e){for(var t=new Uint8Array(e.length/2),n=0;n<e.length;n+=2)t[n/2]=window.parseInt(e.substr(n,2),16);return t},fromCharCode:function(e){for(var t="",n=0;n<e.length;n+=16e3){var U=e.subarray(n,n+16e3);t+=String.fromCharCode.apply(null,U)}return t},toBase64:function(e,t){var n=bh.fromCharCode(e);t=void 0===t||t;var U=window.btoa(n).replace(/\+/g,"-").replace(/\//g,"_");return t?U:U.replace(/=*$/,"")},toUTF8:function(e){for(var t=encodeURIComponent(e),n=unescape(t),U=new Uint8Array(n.length),i=0;i<n.length;++i)U[i]=n.charCodeAt(i);return U.buffer}},vh=(Jh="vodTimestampSalt",Wh=function(e){return e.split("").map((function(e){return e.charCodeAt(0)}))},kh=function(e){return"0".concat(Number(e).toString(16)).substr(-2)},Eh=function(e){return Wh(Jh).reduce((function(e,t){return e^t}),e)},function(e){return e.split("").map(Wh).map(Eh).map(kh).join("")}),Nh=(yh="vodTimestampSalt",fh=function(e){return(t=yh,t.split("").map((function(e){return e.charCodeAt(0)}))).reduce((function(e,t){return e^t}),e);var t},function(e){return e.match(/.{1,2}/g).map((function(e){return parseInt(e,16)})).map(fh).map((function(e){return String.fromCharCode(e)})).join("")}),Th=bh,gh="kid",Ch={ERROR:"error",ENCRYPTED:"encrypted",CDM_LICENSE_SUCCESS:"CDM_LICENSE_SUCCESS",CDM_LICENSE_ERROR:"CDM_LICENSE_ERROR"},Lh=function(e){an(n,e);var t=dn(n);function n(e){var U;return tn(this,n),rn(Qn(U=t.call(this)),"encryptHandle",(function(e){var t,n,i,r=Qn(U).video,a=Qn(U);"org.w3.clearkey"===U.KEYSYSTEM_TYPE?(t="keyids",n=JSON.stringify({kids:["0123456789abcdef0123456789abcdef"]}),i=new Uint8Array(Th.toUTF8(n))):"com.widevine.alpha"===U.KEYSYSTEM_TYPE?(t="cenc",i=e&&new Uint8Array(e.initData)||new Uint8Array([0,0,0,67,112,115,115,104,0,0,0,0,237,239,139,169,121,214,74,206,163,200,39,220,213,29,33,237,0,0,0,35,8,1,18,16,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,0,26,10,105,110,116,101,114,116,114,117,115,116,34,1,42])):"com.microsoft.playready"===U.KEYSYSTEM_TYPE&&(t="cenc",i=e&&new Uint8Array(e.initData)||new Uint8Array([0,0,2,38,112,115,115,104,0,0,0,0,154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149,0,0,2,6,6,2,0,0,1,0,1,0,252,1,60,0,87,0,82,0,77,0,72,0,69,0,65,0,68,0,69,0,82,0,32,0,120,0,109,0,108,0,110,0,115,0,61,0,34,0,104,0,116,0,116,0,112,0,58,0,47,0,47,0,115,0,99,0,104,0,101,0,109,0,97,0,115,0,46,0,109,0,105,0,99,0,114,0,111,0,115,0,111,0,102,0,116,0,46,0,99,0,111,0,109,0,47,0,68,0,82,0,77,0,47,0,50,0,48,0,48,0,55,0,47,0,48,0,51,0,47,0,80,0,108,0,97,0,121,0,82,0,101,0,97,0,100,0,121,0,72,0,101,0,97,0,100,0,101,0,114,0,34,0,32,0,118,0,101,0,114,0,115,0,105,0,111,0,110,0,61,0,34,0,52,0,46,0,48,0,46,0,48,0,46,0,48,0,34,0,62,0,60,0,68,0,65,0,84,0,65,0,62,0,60,0,80,0,82,0,79,0,84,0,69,0,67,0,84,0,73,0,78,0,70,0,79,0,62,0,60,0,75,0,69,0,89,0,76,0,69,0,78,0,62,0,49,0,54,0,60,0,47,0,75,0,69,0,89,0,76,0,69,0,78,0,62,0,60,0,65,0,76,0,71,0,73,0,68,0,62,0,65,0,69,0,83,0,67,0,84,0,82,0,60,0,47,0,65,0,76,0,71,0,73,0,68,0,62,0,60,0,47,0,80,0,82,0,79,0,84,0,69,0,67,0,84,0,73,0,78,0,70,0,79,0,62,0,60,0,75,0,73,0,68,0,62,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,77,0,122,0,65,0,65,0,65,0,65,0,65,0,65,0,61,0,61,0,60,0,47,0,75,0,73,0,68,0,62,0,60,0,67,0,72,0,69,0,67,0,75,0,83,0,85,0,77,0,62,0,65,0,49,0,53,0,66,0,89,0,87,0,68,0,52,0,113,0,115,0,73,0,61,0,60,0,47,0,67,0,72,0,69,0,67,0,75,0,83,0,85,0,77,0,62,0,60,0,47,0,68,0,65,0,84,0,65,0,62,0,60,0,47,0,87,0,82,0,77,0,72,0,69,0,65,0,68,0,69,0,82,0,62,0])),a.EnsureMediaKeysCreated(r,a.KEYSYSTEM_TYPE,a.options).then((function(){var e=r.mediaKeys.createSession();return r.sessions.push(e),"org.w3.clearkey"===a.KEYSYSTEM_TYPE?e.addEventListener("message",a.updateSessionFunc(a.keys)):("com.widevine.alpha"===a.KEYSYSTEM_TYPE||"com.microsoft.playready"===a.KEYSYSTEM_TYPE)&&e.addEventListener("message",a.licenseRequestReady.bind(a)),e.generateRequest(t,i.buffer)}),(function(){return a.bail(" failed to ensure MediaKeys on HTMLMediaElement")})).then((function(){}),(function(){return a.bail(" Failed to generate request.")}))})),U.KEYSYSTEM_TYPE="",U.keys={},U.updateDrm(e),U.options=[],U.ensurePromise=void 0,U.kid=gh,U.video=null,U.licenseStep=0,U.on(Ch.ENCRYPTED,U.encryptHandle),U}return Un(n,[{key:"updateDrm",value:function(e,t){null!=e&&e.clearKeys&&(this.KEYSYSTEM_TYPE="org.w3.clearkey",this.keys=e.clearKeys),null!=e&&e.clearKeys?this.KEYSYSTEM_TYPE="org.w3.clearkey":null!=e&&e.widevine?(this.KEYSYSTEM_TYPE="com.widevine.alpha",this.keys=e.widevine):null!=e&&e.playready&&(this.KEYSYSTEM_TYPE="com.microsoft.playready",this.keys=e.playready),t&&(this.kid=t)}},{key:"updateKid",value:function(e){this.kid===gh&&this.keys[this.kid]&&(this.keys[e]=this.keys[this.kid],delete this.keys[gh]),this.kid=e}},{key:"setOptions",value:function(){this.options=[{initDataTypes:["keyids","webm"],audioCapabilities:[{contentType:'audio/mp4; codecs="mp4a.40.2"'}],videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42c01e"'},{contentType:'video/mp4; codecs="hev1.1.6.L120.90"'},{contentType:'video/webm; codecs="vp8"'}]}]}},{key:"bail",value:function(e){console.error("[EME]",e),this.emit(Ch.ERROR,e)}},{key:"updateSessionFunc",value:function(e){var t=this;return function(n){var U=[],i=[];Object.keys(e).forEach((function(t){var n=e[t],r=Th.fromHex(t),a=Th.fromHex(n),F={kty:"oct",kid:Th.toBase64(r,!1),k:Th.toBase64(a,!1)};U.push(F),i.push(F.kid)}));var r={keys:U},a=JSON.stringify(r);n.target.update(Th.StringToArrayBuffer(a)).then((function(){}),(function(){return t.bail(" MediaKeySession update failed")}))}}},{key:"keysChange",value:function(){}},{key:"EnsureMediaKeysCreated",value:function(e,t,n){var U=this;return this.ensurePromise||(this.ensurePromise=navigator.requestMediaKeySystemAccess(t,n).then((function(e){return e.createMediaKeys()}),(function(){return U.bail(" Failed to request key system access.")})).then((function(t){return e.setMediaKeys(t)}),(function(){return U.bail(" failed to create MediaKeys object")}))),this.ensurePromise}},{key:"setupEME",value:function(e){this.video=e,e.sessions=[]}},{key:"parseServerResponse",value:function(e){var t="https://schemas.xmlsoap.org/soap/envelope/";if(window.DOMParser){var n=this.uintToString(e),U=(new window.DOMParser).parseFromString(n,"text/xml"),i=U?U.getElementsByTagNameNS(t,"Envelope")[0]:null,r=i?i.getElementsByTagNameNS(t,"Body")[0]:null;if(r&&r.getElementsByTagNameNS(t,"Fault")[0])return null}return e}},{key:"uintToString",value:function(e){var t=String.fromCharCode.apply(null,new Uint8Array(e));return decodeURIComponent(escape(t))}},{key:"licenseRequestReady",value:function(e){var t=this,n=new XMLHttpRequest;n.open("GET",this.keys.serverURL),n.onreadystatechange=function(){if(4===n.readyState){var U=e.message,i=n.response;if("com.microsoft.playready"===t.KEYSYSTEM_TYPE&&(i=JSON.parse(n.response),i="".concat(i.licenseAcquisitionUrl,"?ExpressPlayToken=").concat(i.token)),!i)return void t.emit(Ch.CDM_LICENSE_ERROR,{data:"".concat(t.keys.serverURL," request failed! \n status:").concat(n.status," statusText:").concat(n.statusText)});var r=new XMLHttpRequest;r.keySession=e.target,r.responseType="arraybuffer",r.withCredentials=!1,r.open("POST",String(i)),"com.microsoft.playready"===t.KEYSYSTEM_TYPE&&r.setRequestHeader("Content-type","text/xml"),r.onreadystatechange=function(){if(4===r.readyState){if(200!==r.status)return void t.emit(Ch.CDM_LICENSE_ERROR,{data:"".concat(i," request failed! \n status:").concat(r.status," statusText:").concat(r.statusText)});var e;t.emit(Ch.CDM_LICENSE_SUCCESS,{data:t.licenseStep}),t.licenseStep++,e="com.microsoft.playready"===t.KEYSYSTEM_TYPE?t.parseServerResponse(r.response):new Uint8Array(r.response),r.keySession.update(e).catch(console.error.bind(console,"update() failed"))}},r.send(t.getLicenseRequestFromMessage(U))}},n.send()}},{key:"getLicenseRequestFromMessage",value:function(e){if("com.microsoft.playready"===this.KEYSYSTEM_TYPE){var t=null,n=new DOMParser,U=new Uint16Array(e),i=String.fromCharCode.apply(null,U),r=n.parseFromString(i,"application/xml");if(!r.getElementsByTagName("PlayReadyKeyMessage")[0])return e;var a=r.getElementsByTagName("Challenge")[0].childNodes[0].nodeValue;return a&&(t=window.atob(a)),t}return new Uint8Array(e)}},{key:"destroy",value:function(){this.removeAllListeners(),this.video=null}}]),n}(Qd),Xh=ro.aTypedArrayConstructor;(0,ro.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(Xh(this))(t);t>e;)n[e]=arguments[e++];return n}),co);var xh=function(){function e(){var t,n;tn(this,e);var U=new Promise((function(e,U){t=e,n=U}));return U.resolve=function(e){t(e),U.state="fulfilled"},U.reject=function(e){n(e),U.state="rejected",U.isBreak="DESTROYED"===e},U.state="pending",U}return Un(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),Dh=Un((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.url,U=t.method,i=void 0===U?"GET":U,r=t.type,a=void 0===r?"arraybuffer":r,F=t.data,l=void 0===F?{}:F;return tn(this,e),new Promise((function(e,t){var U=new window.XMLHttpRequest,r=i.toUpperCase(),F=[];if(Object.keys(l).map((function(e){F.push("k=".concat(l[e]))})),"GET"===r){var Q="";Q=n.indexOf("?")<0?"".concat(n,"?").concat(F.join("&")):(null==F?void 0:F.length)>0?"".concat(n,"&").concat(F.join("&")):n,U.open(r,Q),a&&(U.responseType=a),U.send()}else{if("POST"!==r)throw new Error("xhr ".concat(r," is not supported"));U.open(r,n,!0),a&&(U.responseType=a),U.setRequestHeader("Content-Type","application/json"),U.send(JSON.stringify(l))}U.onload=function(){200===U.status||206===U.status?e(U):t(U)},U.onerror=function(){t(U)}}))})),Gh=Dh,Ih=null;function Mh(e,t,n){var U=new xh;return new Gh({type:"json",method:"POST",url:n,data:{drm_type:"22",version:"2.0",license_request:[{vid:e,kids:[].concat(t)}]}}).then((function(n){var i=null==n?void 0:n.response;if("string"==typeof i&&(i=JSON.parse(i)),i){var r=i.play_licenses[e][t];U.resolve(r)}else console.error("getSecretKeyByKid end, vid,",e,", kid",t,"response null"),U.reject()})).catch((function(){console.error("getSecretKeyByKid end, vid,",e,", kid",t,"catch"),U.reject()})),U}function Yh(){return function(e,t,n){function U(e,t){var n=parseInt(e.slice(t,t+2),16);return n>>>7==0?[1,n]:n>>>6==2?(n=(63&n)<<8,[2,n+=parseInt(e.slice(t+2,t+4),16)]):(n=(63&n)<<16,[3,n+=parseInt(e.slice(t+2,t+6),16)])}var i,r=0,a=[],F=[];for(i=0;i<4;++i)r+=(3&parseInt(e.slice(8+2*i,10+2*i),16))<<2*i;var l=parseInt(e.slice(16,24),16),Q=2*parseInt(e.slice(32,40),16);for(i=40;i<Q+40;i+=2)a.push(parseInt(e.slice(i,i+2),16));var d=Q+40,o=parseInt(e.slice(d,d+4),16);for(d+=4,i=0;i<o;++i){var s=U(e,d);d+=2*s[0];for(var c="",B=0;B<s[1];++B){var R=U(e,d);c+=String.fromCharCode(r^R[1]),d+=2*R[0]}F.push(c)}return t.p=null,function e(t,n,U,i,r){var l,Q,d,o,s,c=-1,B=[],R=null,u=[n];for(Q=Math.min(n.length,U),d=0;d<Q;++d)u.push(n[d]);u.p=i;for(var h=[];;)try{switch(a[t++]){case 41:B[++c]=null;break;case 9:l=a[t++],B[++c]=l<<24>>24;break;case 71:l=((l=((l=a[t++])<<8)+a[t++])<<8)+a[t++],B[++c]=(l<<8)+a[t++];break;case 32:l=(a[t]<<8)+a[t+1],t+=2,B[++c]=F[l];break;case 12:B[++c]=void 0;break;case 73:B[++c]={};break;case 16:l=(a[t]<<8)+a[t+1],t+=2,Q=F[l],d=B[c--],B[c][Q]=d;break;case 38:for(Q=a[t++],d=a[t++],o=u;Q>0;--Q)o=o.p;B[++c]=o[d];break;case 30:l=(a[t]<<8)+a[t+1],t+=2,Q=F[l],B[c]=B[c][Q];break;case 5:Q=B[c--],B[c]=B[c][Q];break;case 2:for(Q=a[t++],d=a[t++],o=u;Q>0;--Q)o=o.p;o[d]=B[c--];break;case 45:l=(a[t]<<8)+a[t+1],t+=2,Q=F[l],d=B[c--],o=B[c--],d[Q]=o;break;case 21:Q=B[c--],d=B[c--],o=B[c--],d[Q]=o;break;case 4:Q=B[c--],B[c]=B[c]!==Q;break;case 6:Q=B[c--],B[c]=B[c]>Q;break;case 76:l=(l=(a[t]<<8)+a[t+1])<<16>>16,t+=2,B[c]?--c:t+=l;break;case 40:l=a[t++],Q=B[c--],(d=function e(){var t=e._v;return(0,e._u)(t[0],arguments,t[1],t[2],this)})._v=[Q,l,u],d._u=e,B[++c]=d;break;case 64:for(Q=B[c--],d=null;o=h.pop();)if(2===o[0]||3===o[0]){d=o;break}if(d)t=d[2],d[0]=0,h.push(d);else{if(!R)return Q;t=R[1],r=R[2],u=R[3],h=R[4],B[++c]=Q,R=R[0]}break;case 20:c-=l=a[t++],d=B.slice(c+1,c+l+1),Q=B[c--],o=B[c--],Q._u===e?(Q=Q._v,R=[R,t,r,u,h],t=Q[0],null==o&&(o=function(){return this}()),r=o,(u=[d].concat(d)).length=Math.min(Q[1],l)+1,u.p=Q[2],h=[]):(s=Q.apply(o,d),B[++c]=s);break;case 27:for(l=a[t++],o=[void 0],s=l;s>0;--s)o[s]=B[c--];d=B[c--],s=new(Q=Function.bind.apply(d,o)),B[++c]=s;break;case 43:t+=2+(l=(l=(a[t]<<8)+a[t+1])<<16>>16);break;case 36:l=(l=(a[t]<<8)+a[t+1])<<16>>16,t+=2,(Q=B[c--])||(t+=l);break;case 50:--c;break;case 75:Q=B[c],B[++c]=Q;break;default:throw new Error("ioe")}}catch(V){for(;(l=h.pop())&&!l[0];);if(!l){e:for(;R;){for(Q=R[4];l=Q.pop();)if(l[0])break e;R=R[0]}if(!R)throw V;t=R[1],r=R[2],u=R[3],h=R[4],R=R[0]}1===(Q=l[0])?(t=l[2],l[0]=0,h.push(l),B[++c]=V):2===Q?(t=l[2],l[0]=0,h.push(l)):(t=l[3],l[0]=2,h.push(l),B[++c]=V)}}(l,[],0,t,n)}("504B0101c18c50a100000045a0528fc00000014e29260201292602022600011401140102000249491000020200032600022600031e0002260103152601054b1e00032600031401320c402601054b1e00082600011401320c402601041e00000900064c00082601040900050c042400092601040900052b00032000010200012601041e00000901062400092601040901052b00010c0200022601041e00000902062400092601040902052b00010c0200032601041e00000903062400092601040903052b00010c0200042601001b0002000526000224004d29260101292601022600021401140102000626000324002549491000020200072600062600071e0002260003152600054b1e00032600071401322b000d2600054b1e00032600061401322b00392926010326000126000326000414030200082000042600082d00052600084b1e00064700000000280114014b1e000747000000362801140132260005400009062d242f2635290009222d2420330a243832073324322e2d37240e3324303424323511332e2c283224022825043529242f0522203522290633242b242235",{get 0(){return xh},get 1(){return yd},get 2(){return atob},get 3(){return Mh},4:arguments},this)}function Kh(e){var t;if(null===Ih)try{Ih=localStorage&&!!localStorage.getItem("secretkeylog")}catch(r){}for(var n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];Ih&&console.log&&(t=console).log.apply(t,["[XGSecretkey]",e].concat(U))}var wh={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(e){this.toString=function(){return"CORRUPT: "+this.message},this.message=e},invalid:function(e){this.toString=function(){return"INVALID: "+this.message},this.message=e},bug:function(e){this.toString=function(){return"BUG: "+this.message},this.message=e},notReady:function(e){this.toString=function(){return"NOT READY: "+this.message},this.message=e}}};function Hh(e,t){return Ph.apply(this,arguments)}function Ph(){return(Ph=en(At().mark((function e(t,n){var U,i,r,a,F;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=n.iv,i=n.tagLength,r=n.data,a=null,t=Th.StringToArrayBuffer(t),r=Th.Base64ToHex(r,!0),e.prev=4,e.next=7,crypto.subtle.importKey("raw",t,"AES-GCM",!0,["encrypt","decrypt"]);case 7:F=e.sent,e.next=13;break;case 10:throw e.prev=10,e.t0=e.catch(4),new Error("importKey: ".concat((null===e.t0||void 0===e.t0?void 0:e.t0.message)||e.t0));case 13:return e.prev=13,e.next=16,crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(U),tagLength:i},F,r);case 16:a=e.sent,e.next=30;break;case 19:if(e.prev=19,e.t1=e.catch(13),"OperationError"!==String(e.t1)){e.next=25;break}throw new Error("Wrong Password.");case 25:if("InvalidAccessError"!==String(e.t1)){e.next=29;break}throw new Error("Invalid Key");case 29:throw e.t1;case 30:return e.abrupt("return",new TextDecoder("utf-8").decode(a));case 31:case"end":return e.stop()}}),e,null,[[4,10],[13,19]])})))).apply(this,arguments)}function jh(e,t){return _h.apply(this,arguments)}function _h(){return(_h=en(At().mark((function e(t,n){var U,i,r,a,F,l,Q;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=n.iv,i=n.tagLength,r=n.data,a=btoa(Th.ArrayBufferToString(U)),F=wh.codec.base64.toBits(a),l=wh.codec.utf8String.toBits(t),Q=new wh.cipher.aes(l),e.abrupt("return",wh.codec.utf8String.fromBits(wh.mode.gcm.decrypt(Q,wh.codec.base64.toBits(r),F,[],i)));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}wh.cipher.aes=function(e){this._tables[0][0][0]||this._precompute();var t,n,U,i,r,a=this._tables[0][4],F=this._tables[1],l=e.length,Q=1;if(4!==l&&6!==l&&8!==l)throw new wh.exception.invalid("invalid aes key size");for(this._key=[i=e.slice(0),r=[]],t=l;t<4*l+28;t++)U=i[t-1],(t%l==0||8===l&&t%l==4)&&(U=a[U>>>24]<<24^a[U>>16&255]<<16^a[U>>8&255]<<8^a[255&U],t%l==0&&(U=U<<8^U>>>24^Q<<24,Q=Q<<1^283*(Q>>7))),i[t]=i[t-l]^U;for(n=0;t;n++,t--)U=i[3&n?t:t-4],r[n]=t<=4||n<4?U:F[0][a[U>>>24]]^F[1][a[U>>16&255]]^F[2][a[U>>8&255]]^F[3][a[255&U]]},wh.cipher.aes.prototype={encrypt:function(e){return this._crypt(e,0)},decrypt:function(e){return this._crypt(e,1)},_tables:[[[],[],[],[],[]],[[],[],[],[],[]]],_precompute:function(){var e,t,n,U,i,r,a,F,l=this._tables[0],Q=this._tables[1],d=l[4],o=Q[4],s=[],c=[];for(e=0;e<256;e++)c[(s[e]=e<<1^283*(e>>7))^e]=e;for(t=n=0;!d[t];t^=U||1,n=c[n]||1)for(r=(r=n^n<<1^n<<2^n<<3^n<<4)>>8^255&r^99,d[t]=r,o[r]=t,F=16843009*s[i=s[U=s[t]]]^65537*i^257*U^16843008*t,a=257*s[r]^16843008*r,e=0;e<4;e++)l[e][t]=a=a<<24^a>>>8,Q[e][r]=F=F<<24^F>>>8;for(e=0;e<5;e++)l[e]=l[e].slice(0),Q[e]=Q[e].slice(0)},_crypt:function(e,t){if(4!==e.length)throw new wh.exception.invalid("invalid aes block size");var n,U,i,r,a=this._key[t],F=e[0]^a[0],l=e[t?3:1]^a[1],Q=e[2]^a[2],d=e[t?1:3]^a[3],o=a.length/4-2,s=4,c=[0,0,0,0],B=this._tables[t],R=B[0],u=B[1],h=B[2],V=B[3],Z=B[4];for(r=0;r<o;r++)n=R[F>>>24]^u[l>>16&255]^h[Q>>8&255]^V[255&d]^a[s],U=R[l>>>24]^u[Q>>16&255]^h[d>>8&255]^V[255&F]^a[s+1],i=R[Q>>>24]^u[d>>16&255]^h[F>>8&255]^V[255&l]^a[s+2],d=R[d>>>24]^u[F>>16&255]^h[l>>8&255]^V[255&Q]^a[s+3],s+=4,F=n,l=U,Q=i;for(r=0;r<4;r++)c[t?3&-r:r]=Z[F>>>24]<<24^Z[l>>16&255]<<16^Z[Q>>8&255]<<8^Z[255&d]^a[s++],n=F,F=l,l=Q,Q=d,d=n;return c}},wh.bitArray={bitSlice:function(e,t,n){return e=wh.bitArray._shiftRight(e.slice(t/32),32-(31&t)).slice(1),void 0===n?e:wh.bitArray.clamp(e,n-t)},extract:function(e,t,n){var U=Math.floor(-t-n&31);return(-32&(t+n-1^t)?e[t/32|0]<<32-U^e[t/32+1|0]>>>U:e[t/32|0]>>>U)&(1<<n)-1},concat:function(e,t){if(0===e.length||0===t.length)return e.concat(t);var n=e[e.length-1],U=wh.bitArray.getPartial(n);return 32===U?e.concat(t):wh.bitArray._shiftRight(t,U,0|n,e.slice(0,e.length-1))},bitLength:function(e){var t,n=e.length;return 0===n?0:(t=e[n-1],32*(n-1)+wh.bitArray.getPartial(t))},clamp:function(e,t){if(32*e.length<t)return e;var n=(e=e.slice(0,Math.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=wh.bitArray.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:function(e,t,n){return 32===e?t:(n?0|t:t<<32-e)+1099511627776*e},getPartial:function(e){return Math.round(e/1099511627776)||32},equal:function(e,t){if(wh.bitArray.bitLength(e)!==wh.bitArray.bitLength(t))return!1;var n,U=0;for(n=0;n<e.length;n++)U|=e[n]^t[n];return 0===U},_shiftRight:function(e,t,n,U){var i,r,a;for(void 0===U&&(U=[]);t>=32;t-=32)U.push(n),n=0;if(0===t)return U.concat(e);for(i=0;i<e.length;i++)U.push(n|e[i]>>>t),n=e[i]<<32-t;return r=e.length?e[e.length-1]:0,a=wh.bitArray.getPartial(r),U.push(wh.bitArray.partial(t+a&31,t+a>32?n:U.pop(),1)),U},_xor4:function(e,t){return[e[0]^t[0],e[1]^t[1],e[2]^t[2],e[3]^t[3]]},byteswapM:function(e){var t,n;for(t=0;t<e.length;++t)n=e[t],e[t]=n>>>24|n>>>8&65280|(65280&n)<<8|n<<24;return e}},wh.codec.utf8String={fromBits:function(e){var t,n,U="",i=wh.bitArray.bitLength(e);for(t=0;t<i/8;t++)0==(3&t)&&(n=e[t/4]),U+=String.fromCharCode(n>>>8>>>8>>>8),n<<=8;return decodeURIComponent(escape(U))},toBits:function(e){e=unescape(encodeURIComponent(e));var t,n=[],U=0;for(t=0;t<e.length;t++)U=U<<8|e.charCodeAt(t),3==(3&t)&&(n.push(U),U=0);return 3&t&&n.push(wh.bitArray.partial(8*(3&t),U)),n}},wh.codec.base64={_chars:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(e,t,n){var U,i="",r=0,a=wh.codec.base64._chars,F=0,l=wh.bitArray.bitLength(e);for(n&&(a=a.substr(0,62)+"-_"),U=0;6*i.length<l;)i+=a.charAt((F^e[U]>>>r)>>>26),r<6?(F=e[U]<<6-r,r+=26,U++):(F<<=6,r-=6);for(;3&i.length&&!t;)i+="=";return i},toBits:function(e,t){e=e.replace(/\s|=/g,"");var n,U,i=[],r=0,a=wh.codec.base64._chars,F=0;for(t&&(a=a.substr(0,62)+"-_"),n=0;n<e.length;n++){if((U=a.indexOf(e.charAt(n)))<0)throw new wh.exception.invalid("this isn't base64!");r>26?(r-=26,i.push(F^U>>>r),F=U<<32-r):F^=U<<32-(r+=6)}return 56&r&&i.push(wh.bitArray.partial(56&r,F,1)),i}},wh.codec.base64url={fromBits:function(e){return wh.codec.base64.fromBits(e,1,1)},toBits:function(e){return wh.codec.base64.toBits(e,1)}},wh.mode.gcm={name:"gcm",encrypt:function(e,t,n,U,i){var r,a=t.slice(0),F=wh.bitArray;return i=i||128,U=U||[],r=wh.mode.gcm._ctrMode(!0,e,a,U,n,i),F.concat(r.data,r.tag)},decrypt:function(e,t,n,U,i){var r,a,F=t.slice(0),l=wh.bitArray,Q=l.bitLength(F);if(U=U||[],(i=i||128)<=Q?(a=l.bitSlice(F,Q-i),F=l.bitSlice(F,0,Q-i)):(a=F,F=[]),r=wh.mode.gcm._ctrMode(!1,e,F,U,n,i),!l.equal(r.tag,a))throw new wh.exception.corrupt("gcm: tag doesn't match");return r.data},_galoisMultiply:function(e,t){var n,U,i,r,a,F=wh.bitArray._xor4;for(i=[0,0,0,0],r=t.slice(0),n=0;n<128;n++){for(0!=(e[Math.floor(n/32)]&1<<31-n%32)&&(i=F(i,r)),a=0!=(1&r[3]),U=3;U>0;U--)r[U]=r[U]>>>1|(1&r[U-1])<<31;r[0]=r[0]>>>1,a&&(r[0]=r[0]^225<<24)}return i},_ghash:function(e,t,n){var U,i,r=n.length;for(U=t.slice(0),i=0;i<r;i+=4)U[0]^=4294967295&n[i],U[1]^=4294967295&n[i+1],U[2]^=4294967295&n[i+2],U[3]^=4294967295&n[i+3],U=wh.mode.gcm._galoisMultiply(U,e);return U},_ctrMode:function(e,t,n,U,i,r){var a,F,l,Q,d,o,s,c,B,R,u,h,V=wh.bitArray;for(B=n.length,R=V.bitLength(n),u=V.bitLength(U),h=V.bitLength(i),a=t.encrypt([0,0,0,0]),96===h?(F=i.slice(0),F=V.concat(F,[1])):(F=wh.mode.gcm._ghash(a,[0,0,0,0],i),F=wh.mode.gcm._ghash(a,F,[0,0,Math.floor(h/4294967296),4294967295&h])),l=wh.mode.gcm._ghash(a,[0,0,0,0],U),o=F.slice(0),s=l.slice(0),e||(s=wh.mode.gcm._ghash(a,l,n)),d=0;d<B;d+=4)o[3]++,Q=t.encrypt(o),n[d]^=Q[0],n[d+1]^=Q[1],n[d+2]^=Q[2],n[d+3]^=Q[3];return n=V.clamp(n,R),e&&(s=wh.mode.gcm._ghash(a,l,n)),c=[Math.floor(u/4294967296),4294967295&u,Math.floor(R/4294967296),4294967295&R],s=wh.mode.gcm._ghash(a,s,c),Q=t.encrypt(F),s[0]^=Q[0],s[1]^=Q[1],s[2]^=Q[2],s[3]^=Q[3],{tag:V.bitSlice(s,0,r),data:n}}};var zh,Oh={webCryptoDecrypt:Hh,decrypt:(zh=en(At().mark((function e(t,n){var U,i;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"==typeof n&&(n=JSON.parse(n)),!n.enableSoftwareAES&&null!==(U=crypto)&&void 0!==U&&U.subtle){e.next=7;break}return e.next=4,jh(t,n);case 4:i=e.sent,e.next=18;break;case 7:return e.prev=7,e.next=10,Hh(t,n);case 10:i=e.sent,e.next=18;break;case 13:return e.prev=13,e.t0=e.catch(7),e.next=17,jh(t,n);case 17:i=e.sent;case 18:return e.abrupt("return",i);case 19:case"end":return e.stop()}}),e,null,[[7,13]])}))),function(e,t){return zh.apply(this,arguments)})},Ah=new Uint8Array([91,104,69,75,156,171,238,71,202,4,244,5]).buffer;function qh(e,t){return $h.apply(this,arguments)}function $h(){return($h=en(At().mark((function e(t,n){var U,i;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return U=od.hash(n),e.next=3,Oh.decrypt(U,{data:t,iv:Ah,tagLength:128});case 3:return i=e.sent,e.abrupt("return",i);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var eV="volcvui",tV=new Map,nV=function(e){an(U,e);var t,n=dn(U);function U(e){var t;return tn(this,U),rn(Qn(t=n.call(this)),"EMEError",(function(e){t.emit(Ch.ERROR,e)})),rn(Qn(t),"encryptHandle",(function(){var e;null===(e=t.eme)||void 0===e||e.emit(Ch.ENCRYPTED)})),t.config=U.defaultConfig,t.updateConfig(e),t.config.isEncrypt=!!(t.config.kid||t.config.drm||t.config.secretKey||t.config.drmKeyToken||t.config.keyValue||t.config.drm),t.on(Ch.ENCRYPTED,t.encryptHandle),t}return Un(U,[{key:"updateConfig",value:function(e){var t=this;Object.keys(e).map((function(n){void 0!==e[n]&&null!==e[n]&&void 0!==t.config[n]&&(t.config[n]=e[n])})),this.log("set config",JSON.stringify(this.config))}},{key:"setupEME",value:function(e){this.eme&&this.eme.setupEME(e)}},{key:"setOptions",value:function(e){this.eme&&this.eme.setOptions(e)}},{key:"getSecretKeyByToken",value:function(e,t,n){var U=this,i=this.config,r=e||i.kid,a=t||i.playDomain;a.indexOf("//")<0&&(a="//".concat(a));var F=n||i.drmKeyToken,l=Th.isBase64(F)?window.atob(F):F,Q="".concat(a,"?").concat(l,"&PlayAuthIds=").concat(r,"&ssl=true");l.indexOf("DrmType=")<0&&(Q+="&DrmType=".concat(i.useUnionInfoDRM?"webdevice":"22")),this.log("getSecretKeyByToken start, vid,",i.vid,Q);var d=new xh;return new Gh({type:"json",method:"GET",url:Q}).then((function(e){var t,n,r=e.response;if("string"==typeof r&&(r=JSON.parse(r)),r&&null!==(t=r)&&void 0!==t&&t.Result&&(null===(n=r.Result.PlayAuthInfoList)||void 0===n?void 0:n.length)>0){var a=r.Result.PlayAuthInfoList[0].PlayAuthContent;U.log("getSecretKeyByToken end, vid,",i.vid,",res,",JSON.stringify(r)),d.resolve(a)}})).catch((function(e){d.reject(e)})),d}},{key:"getLicense",value:function(){var e=this,t=this.config,n=t.vid,U=t.kid,i=t.getLicenseUrl,r=new xh;return Promise.resolve().then(en(At().mark((function t(){var a,F,l,Q,d,o,s,c,B,R,u,h;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a={method:"getLicense",success:!1},t.next=3,e._tryGetSecretKeyByToken(a,r);case 3:if(F=e.config,l=F.secretKey,Q=F.keyValue,!(U||l||Q||e.config.drm)){t.next=39;break}if(t.prev=5,d=e.config.drm||Q,!(l||U&&i)){t.next=11;break}return t.next=10,Yh(n,l,U,i);case 10:d=t.sent;case 11:if(o=d&&d.clearKeys?d.clearKeys[U]:d,c=e.config,B=c.sessionId,R=c.useUnionInfoDRM,u=c.keyTokenExpiredDuration,h=tV.get(B),!o&&(o=e.config.keyValue),!R||!Th.checkUnionInfoExpired(h.unionID,h.unionInfo,u)){t.next=25;break}return t.next=19,qh(o,h.unionInfo);case 19:s=t.sent,t.next=23;break;case 22:throw new Error('The "transformUnionKey" should be provided in configuration as a function');case 23:t.next=26;break;case 25:s=o;case 26:d&&d.clearKeys&&(d.clearKeys[U]=s,a.drm=d),a.keyValue=s,a.success=!0,r.resolve(a),t.next=37;break;case 32:t.prev=32,t.t0=t.catch(5),a.success=!1,a.error=t.t0,r.reject(a);case 37:t.next=41;break;case 39:a.success=!0,r.resolve(a);case 41:case"end":return t.stop()}}),t,null,[[5,32]])})))),r}},{key:"_tryGetSecretKeyByToken",value:(t=en(At().mark((function e(t,n){var U,i,r,a;return At().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=this.config,i=U.kid,r=U.drmKeyToken,a=U.playDomain,!(i&&r&&a)){e.next=13;break}return e.prev=2,e.next=5,this.getSecretKeyByToken(i,a,r);case 5:this.config.secretKey=e.sent,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(2),t.success=!1,t.error=e.t0,n.reject(t);case 13:case"end":return e.stop()}}),e,this,[[2,8]])}))),function(e,n){return t.apply(this,arguments)})},{key:"updateKid",value:function(e){this.eme&&this.eme.updateKid(e)}},{key:"getLicenseSecret",value:function(){var e=this,t=this.config,n=t.vid,U=t.kid,i=t.getLicenseUrl,r=t.useEME,a=t.keyValue;if(this.config.useEME&&!this.eme){this.eme=new Lh,this.eme.on(Ch.ERROR,this.EMEError),this.eme.on(Ch.CDM_LICENSE_SUCCESS,(function(t){e.emit(Ch.CDM_LICENSE_SUCCESS,t)})),this.eme.on(Ch.CDM_LICENSE_ERROR,(function(t){e.emit(Ch.CDM_LICENSE_ERROR,t)}));var F=this.config.intertrustServerURL;if(U&&F){var l=rn({},window.navigator.userAgent.toLocaleLowerCase().indexOf("chrome")>-1?"widevine":"playready",{serverURL:F+U});return this.eme.updateDrm(l),Promise.resolve()}}var Q=new xh;return Promise.resolve().then(en(At().mark((function t(){var F,l,d,o,s,c,B,R,u;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return F={method:"getLicense",success:!1},t.next=3,e._tryGetSecretKeyByToken(F,Q);case 3:if((l=e.config.secretKey)||a){t.next=8;break}return t.next=7,Mh(n,U,i);case 7:l=t.sent;case 8:if(r&&(l&&(l=yd(atob(l))),a&&(l=a)),t.prev=9,d=e.config,o=d.sessionId,s=d.useUnionInfoDRM,c=d.keyTokenExpiredDuration,B=tV.get(o),!s||!Th.checkUnionInfoExpired(B.unionID,B.unionInfo,c)){t.next=18;break}if(!r){t.next=17;break}return t.next=16,qh(l,B.unionInfo);case 16:l=t.sent;case 17:F.decryptKey=Th.StringToArrayBuffer(od.hash(B.unionInfo));case 18:r?((R={clearKeys:{}}).clearKeys[u=U||gh]=l,e.eme.updateDrm(R,u),F.secretKey=null):F.secretKey=l,F.success=!0,Q.resolve(F),t.next=28;break;case 23:t.prev=23,t.t0=t.catch(9),F.success=!1,F.error=t.t0,Q.reject(F);case 28:case"end":return t.stop()}}),t,null,[[9,23]])})))),Q}},{key:"destroy",value:function(){this.removeAllListeners(),this.eme&&(this.eme.destroy(),this.eme=null)}},{key:"log",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),U=1;U<t;U++)n[U-1]=arguments[U];Kh.apply(void 0,[e].concat(n))}},{key:"getSecretKey",value:function(){var e=this.config,t=e.vid,n=e.kid,U=e.getLicenseUrl,i=e.drmKeyToken,r=e.playDomain,a=e.secretKey;return U&&n?Mh(t,n,U):i&&n&&r?this.getSecretKeyByToken(n,r,i):a||(console.error("[DRM]DRM,getSecretKey args is invalid"),null)}},{key:"getKeyValue",value:function(){var e=this.config,t=e.vid,n=e.kid,U=e.getLicenseUrl;return Yh(t,e.secretKey,n,U)}}],[{key:"pluginName",get:function(){return"XGSecretKey"}},{key:"defaultConfig",get:function(){return{keyValue:null,kid:null,getLicenseUrl:"",secretKey:null,drm:null,vid:"",useUnionInfoDRM:!1,transformUnionKey:null,drmKeyToken:null,keyTokenExpiredDuration:null,playDomain:null,sessionId:eV,useEME:!0,intertrustServerURL:null}}},{key:"updateUnionInfo",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eV,n=Th.getUnionInfo(e);return tV.set(t,{unionID:e,unionInfo:n}),n}}]),U}(Qd);nV.isWebAssemblySupported=function(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":qt(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(fh){}return!1};var UV=m,iV=B,rV=gn("match"),aV=F,FV=i,lV=Yt,QV=nr,dV=w.f,oV=nt.f,sV=function(e){var t;return UV(e)&&(void 0!==(t=e[rV])?!!t:"RegExp"==iV(e))},cV=WR,BV=kR,RV=Ae,uV=a,hV=Ye.enforce,VV=Sr,ZV=gn("match"),pV=FV.RegExp,SV=pV.prototype,mV=/a/g,JV=/a/g,WV=new pV(mV)!==mV,kV=BV.UNSUPPORTED_Y;if(aV&&lV("RegExp",!WV||kV||uV((function(){return JV[ZV]=!1,pV(mV)!=mV||pV(JV)==JV||"/a/i"!=pV(mV,"i")})))){for(var EV=function(e,t){var n,U=this instanceof EV,i=sV(e),r=void 0===t;if(!U&&i&&e.constructor===EV&&r)return e;WV?i&&!r&&(e=e.source):e instanceof EV&&(r&&(t=cV.call(e)),e=e.source),kV&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var a=QV(WV?new pV(e,t):pV(e,t),U?this:SV,EV);return kV&&n&&(hV(a).sticky=!0),a},yV=function(e){e in EV||dV(EV,e,{configurable:!0,get:function(){return pV[e]},set:function(t){pV[e]=t}})},fV=oV(pV),bV=0;fV.length>bV;)yV(fV[bV++]);SV.constructor=EV,EV.prototype=SV,RV(FV,"RegExp",EV)}VV("RegExp");var vV=Object.prototype.toString,NV=Function.prototype.toString;function TV(e){var t=!0;if(Array.isArray(e))t=e.reduce((function(e,t){return e&&TV(t)}),t);else{var n=RegExp("^".concat(String(vV).replace(/[.*+?^${}()|[\]\/\\]/g,"\\$&").replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?"),"$"));t="function"==typeof e&&n.test(NV.call(e))}return t}e.EVENT_EME=Ch,e.TRANSFORM_IV=Ah,e.XGSecretKey=nV,e.aes4js=Oh,e.checkEMEValid=function(){var e=[];return"undefined"!=typeof MediaKeySession&&e.push(MediaKeySession.prototype.update),0===e.length||TV(e)},e.checkMSEValid=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=function(){return"undefined"!=typeof MediaSource?MediaSource:arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&void 0!==self.ManagedMediaSource?self.ManagedMediaSource:void 0!==self.WebKitMediaSource?self.WebKitMediaSource:void 0}(e),n=function(){return"undefined"!=typeof SourceBuffer?SourceBuffer:arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&void 0!==self.ManagedSourceBuffer?self.ManagedSourceBuffer:void 0}(e),U=!1;if(t&&n){var i=[];n&&(i.push(n),i.push(n.prototype.appendBuffer)),t&&(i.push(t),i.push(t.prototype.addSourceBuffer)),TV(i)&&(U=!0)}return U},e.isNativeFunction=TV,e.transformUnionKey=qh,e.util=Th})(z.exports);var O,A=z.exports,q=function(){function e(t,n,U,i){var r=this;b(this,e),this.config=e.getDefaultConfig(),this.bitrate=0,i&&Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(r.config[e]=i[e])})),this.duration=U,this.player=t,this.updateBitrate(n)}return N(e,[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getAdaptLoadDuration",value:function(){var e=this.player,t=this.config;if(!t.rangeControl)return-1;var n=(null==e?void 0:e.bufferedPoint)||null,U=e&&null!=n&&n.end?n.end-e.currentTime:0;return Math.max(t.rangeMaxDuration-U,t.rangeMinDuration)}},{key:"getAdaptCacheBuffer",value:function(){var e=this.player,t=this.config,n=this.bitrate;if(!t.targetCacheControl)return-1;var U=t.estPlayTime,i=U;if(t.estPTcontrol){var r,a=null!==(r=this.duration)&&void 0!==r?r:(null==e?void 0:e.duration)||0,F=(null==e?void 0:e.currentTime)||0;i=Math.min(U,a-F)}var l=e&&1024*e.avgSpeed||0,Q=Math.max(t.safeFactor*l,t.minBandwidth);null!=e&&e.avgSpeed&&(Q=t.safeFactor*l);var d=n>0?Math.floor((1-Q/n)*i):0;return d=t.minDangerThreshold+Math.max(d,0),Math.min(Math.max(t.cacheSafeFactor*d,t.minTargetCacheDur),t.maxTargetCacheDur)}}],[{key:"getDefaultConfig",value:function(){return{rangeMaxDuration:15,rangeMinDuration:5,rangeMinSize:409600,safeFactor:.1,cacheSafeFactor:3,minDangerThreshold:5,estPlayTime:12,minBandwidth:1e6,estPTcontrol:!1,minTargetCacheDur:30,maxTargetCacheDur:60,targetCacheControl:!1,rangeControl:!1}}}]),e}(),$=function(){function e(t,n,U,i){var r=this;b(this,e),this.config=e.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(r.config[e]=i[e])})),this.duration=U,this.player=t,this.updateBitrate(n)}return N(e,[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getBuffer",value:function(){var e=this.player,t=(null==e?void 0:e.bufferedPoint)||null;return t&&t.end?t.end-e.currentTime:0}},{key:"getAdaptLoadDuration",value:function(){var e=this.config,t=this.duration;if(!e.rangeControl)return-1;var n=this.getBuffer(),U=t-n,i=Math.min(U,e.rangeMaxDuration-n);return Math.max(i,e.rangeMinDuration)}},{key:"getAdaptRangeSize",value:function(e){var t=this.config,n=this.bitrate,U=this.duration;if(!t.rangeControl)return-1;e||(e=this.getAdaptLoadDuration());var i=U-this.getBuffer(),r=Math.max(t.rangeMinSize,e*n/8),a=i*n/8;return r+t.rangeFloatSize>=a&&(r=a),Math.ceil(r)}},{key:"getAdaptCacheBuffer",value:function(){var e=this.player,t=this.config,n=this.bitrate;if(!t.targetCacheControl)return-1;var U=t.estPlayTime,i=U;if(t.estPTcontrol){var r,a=null!==(r=this.duration)&&void 0!==r?r:(null==e?void 0:e.duration)||0,F=(null==e?void 0:e.currentTime)||0;i=Math.min(U,a-F)}var l=1024*(null==e?void 0:e.avgSpeed)||0,Q=Math.max(t.safeFactor*l,t.minBandwidth);e&&e.avgSpeed&&(Q=t.safeFactor*l);var d=n>0?Math.floor((1-Q/n)*i):0;d=t.minDangerThreshold+Math.max(d,0);var o=Math.max(t.cacheSafeFactor*d,t.minTargetCacheDur);return Math.min(o,t.maxTargetCacheDur)}}],[{key:"getDefaultConfig",value:function(){return{rangeControl:!1,rangeMaxDuration:20,rangeMinDuration:5,rangeMinSize:409600,rangeFloatSize:10240,safeFactor:.1,cacheSafeFactor:3,minDangerThreshold:5,estPlayTime:12,minBandwidth:1e6,estPTcontrol:!1,minTargetCacheDur:30,maxTargetCacheDur:60,targetCacheControl:!1}}}]),e}(),ee=function(e){return e.MP4="MP4",e.MP4_MSE_SOFT="MP4_MSE_SOFT",e.MP4_MSE="MP4_MSE",e.MP4_0="MP4_0",e.MP4_1="MP4_1",e.MP4_2="MP4_2",e.DASH="DASH",e.HLS="HLS",e}(ee||{}),te=function(e){return e[e.Normal=0]="Normal",e[e.Ad=1]="Ad",e}(te||{}),ne=function(e){return e[e.AVC=0]="AVC",e[e.HEVC=1]="HEVC",e[e.VVC=2]="VVC",e.H264="h264",e.H265="h265",e.H266="h266",e}(ne||{}),Ue="cdn",ie=function(e){return e.CHANGE_FLYING_PLUGIN_CONFIG="CHANGE_FLYING_PLUGIN_CONFIG",e}(ie||{}),re=function(e){g(n,e);var t=G(n);function n(e){var U;b(this,n);var i=D(U=t.call(this,e)),r=i.player,a=i.playerConfig;return U.playerId=r.playerId,U.codecType=a.codecType?a.codecType.toLowerCase():ne.H264,U.bizType=r.bizType="number"==typeof a.bizType?a.bizType:te.Normal,a.vtype&&(U.vtype=a.vtype.toUpperCase()),O&&(r.preloader=O),U}return N(n,[{key:"softDecode",get:function(){var e;return"xg-video"===(null===(e=this.playerConfig)||void 0===e?void 0:e.mediaType)}}],[{key:"registerPreloader",value:function(e){O=e}}]),n}(m.BasePlugin);function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(n),!0).forEach((function(t){Re(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function le(){le=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",F=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(f){l=function(e,t,n){return e[t]=n}}function Q(e,t,n,i){var r=t&&t.prototype instanceof s?t:s,a=Object.create(r.prototype),F=new k(i||[]);return U(a,"_invoke",{value:S(e,n,F)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(f){return{type:"throw",arg:f}}}e.wrap=Q;var o={};function s(){}function c(){}function B(){}var R={};l(R,r,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(E([])));h&&h!==t&&n.call(h,r)&&(R=h);var V=B.prototype=s.prototype=Object.create(R);function Z(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function p(e,t){function i(U,r,a,F){var l=d(e[U],e,r);if("throw"!==l.type){var Q=l.arg,o=Q.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,a,F)}),(function(e){i("throw",e,a,F)})):t.resolve(o).then((function(e){Q.value=e,a(Q)}),(function(e){return i("throw",e,a,F)}))}F(l.arg)}var r;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return r=r?r.then(U,U):U()}})}function S(e,t,n){var U="suspendedStart";return function(i,r){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw r;return{value:void 0,done:!0}}for(n.method=i,n.arg=r;;){var a=n.delegate;if(a){var F=m(a,n);if(F){if(F===o)continue;return F}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var l=d(e,t,n);if("normal"===l.type){if(U=n.done?"completed":"suspendedYield",l.arg===o)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(U="completed",n.method="throw",n.arg=l.arg)}}}function m(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,m(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=d(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var r=i.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function E(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:y}}function y(){return{value:void 0,done:!0}}return c.prototype=B,U(V,"constructor",{value:B,configurable:!0}),U(B,"constructor",{value:c,configurable:!0}),c.displayName=l(B,F,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,B):(e.__proto__=B,l(e,F,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(p.prototype),l(p.prototype,a,(function(){return this})),e.AsyncIterator=p,e.async=function(t,n,U,i,r){void 0===r&&(r=Promise);var a=new p(Q(t,n,U,i),r);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},Z(V),l(V,F,"Generator"),l(V,r,(function(){return this})),l(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=E,k.prototype={constructor:k,reset:function(e){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(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return a.type="throw",a.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],a=r.completion;if("root"===r.tryLoc)return U("end");if(r.tryLoc<=this.prev){var F=n.call(r,"catchLoc"),l=n.call(r,"finallyLoc");if(F&&l){if(this.prev<r.catchLoc)return U(r.catchLoc,!0);if(this.prev<r.finallyLoc)return U(r.finallyLoc)}else if(F){if(this.prev<r.catchLoc)return U(r.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return U(r.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var a=r?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,o):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function Qe(e){return(Qe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function de(e,t,n,U,i,r,a){try{var F=e[r](a),l=F.value}catch(Q){return void n(Q)}F.done?t(l):Promise.resolve(l).then(U,i)}function oe(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var r=e.apply(t,n);function a(e){de(r,U,i,a,F,"next",e)}function F(e){de(r,U,i,a,F,"throw",e)}a(void 0)}))}}function se(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ce(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,fe(U.key),U)}}function Be(e,t,n){return t&&ce(e.prototype,t),n&&ce(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Re(e,t,n){return(t=fe(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ue(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Ve(e,t)}function he(e){return(he=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Ve(e,t){return(Ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function Ze(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function pe(e,t,n){return(pe=Ze()?Reflect.construct.bind():function(e,t,n){var U=[null];U.push.apply(U,t);var i=new(Function.bind.apply(e,U));return n&&Ve(i,n.prototype),i}).apply(null,arguments)}function Se(e){var t="function"==typeof Map?new Map:void 0;return Se=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,U)}function U(){return pe(e,arguments,he(this).constructor)}return U.prototype=Object.create(e.prototype,{constructor:{value:U,enumerable:!1,writable:!0,configurable:!0}}),Ve(U,e)},Se(e)}function me(e,t){if(null==e)return{};var n,U,i=function(e,t){if(null==e)return{};var n,U,i={},r=Object.keys(e);for(U=0;U<r.length;U++)n=r[U],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(U=0;U<r.length;U++)n=r[U],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Je(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function We(e){var t=Ze();return function(){var n,U=he(e);if(t){var i=he(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Je(e)}(this,n)}}function ke(){return ke="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var U=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=he(e)););return e}(e,t);if(U){var i=Object.getOwnPropertyDescriptor(U,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},ke.apply(this,arguments)}function Ee(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function ye(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ee(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ee(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var U=0,i=function(){};return{s:i,n:function(){return U>=e.length?{done:!0}:{done:!1,value:e[U++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,F=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){F=!0,r=e},f:function(){try{a||null==n.return||n.return()}finally{if(F)throw r}}}}function fe(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function be(){var e,t,n=new Promise((function(n,U){e=n,t=U}));return n.used=!1,n.resolve=function(){return n.used=!0,e.apply(void 0,arguments)},n.reject=function(){return n.used=!0,t.apply(void 0,arguments)},n}function ve(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}var Ne,Te=function(){function e(){se(this,e)}return Be(e,null,[{key:"start",value:function(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6||1===e.length&&e.start(0)<0?0:e.start(0):0}},{key:"end",value:function(e){return e&&e.length?1===e.length&&e.end(0)-e.start(0)<1e-6?0:e.end(e.length-1):0}},{key:"get",value:function(e){if(e)try{return e.buffered}catch(t){}}},{key:"buffers",value:function(e,t){if(!e||!e.length)return[];for(var n=[],U=0,i=e.length;U<i;U++){var r=n.length;if(r&&t){var a=n[r-1],F=a[1];if(e.start(U)-F<=t){var l=e.end(U);l>F&&(a[1]=l)}else n.push([e.start(U),e.end(U)])}else n.push([e.start(U),e.end(U)])}return n}},{key:"totalLength",value:function(e){return e&&e.length?e.reduce((function(e,t){return e+(t[1]-t[0])}),0):0}},{key:"info",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!t||!t.length)return{start:0,end:0,buffers:[]};for(var i=0,r=0,a=0,F=0,l=0,Q=0,d=0,o=e.buffers(t,U),s=0,c=o.length;s<c;s++){var B=o[s];if(n+U>=B[0]&&n<=B[1])i=B[0],r=B[1],a=s;else{if(n+U<B[0]){F=B[0],l=B[1];break}n+U>B[1]&&(Q=B[0],d=B[1])}}return{start:i,end:r,index:a,buffers:o,nextStart:F,nextEnd:l,prevStart:Q,prevEnd:d,currentTime:n,behind:n-i,remaining:r?r-n:0,length:e.totalLength&&e.totalLength(o)}}}]),e}(),ge={MANIFEST:"manifest",NETWORK:"network",NETWORK_TIMEOUT:"network_timeout",NETWORK_FORBIDDEN:"network_forbidden",NETWORK_NOTFOUND:"network_notfound",NETWROK_RANGE_NOT_SATISFIABLE:"network_range_not_satisfiable",DEMUX:"demux",REMUX:"remux",MEDIA:"media",DRM:"drm",OTHER:"other",RUNTIME:"runtime",SUB_TYPES:{FLV:"FLV",HLS:"HLS",MP4:"MP4",FMP4:"FMP4",MSE_ADD_SB:"MSE_ADD_SB",MSE_APPEND_BUFFER:"MSE_APPEND_BUFFER",MSE_OTHER:"MSE_OTHER",MSE_FULL:"MSE_FULL",OPTION:"OPTION",DASH:"DASH",LICENSE:"LICENSE",CUSTOM_LICENSE:"CUSTOM_LICENSE",MSE_HIJACK:"MSE_HIJACK",EME_HIJACK:"EME_HIJACK",SIDX:"SIDX",NO_CANPLAY_ERROR:"NO_CANPLAY_ERROR",BUFFERBREAK_ERROR:"BUFFERBREAK_ERROR",WAITING_TIMEOUT_ERROR:"WAITING_TIMEOUT_ERROR",MEDIA_ERR_ABORTED:"MEDIA_ERR_ABORTED",MEDIA_ERR_NETWORK:"MEDIA_ERR_NETWORK",MEDIA_ERR_DECODE:"MEDIA_ERR_DECODE",MEDIA_ERR_SRC_NOT_SUPPORTED:"MEDIA_ERR_SRC_NOT_SUPPORTED",MEDIA_ERR_CODEC_NOT_SUPPORTED:"MEDIA_ERR_CODEC_NOT_SUPPORTED",MEDIA_ERR_URL_EMPTY:"MEDIA_ERR_URL_EMPTY"}},Ce=(Re(Ne={},ge.MANIFEST,{HLS:1100,DASH:1200}),Re(Ne,ge.NETWORK,2100),Re(Ne,ge.NETWORK_TIMEOUT,2101),Re(Ne,ge.NETWORK_FORBIDDEN,2103),Re(Ne,ge.NETWORK_NOTFOUND,2104),Re(Ne,ge.NETWROK_RANGE_NOT_SATISFIABLE,2116),Re(Ne,ge.DEMUX,{FLV:3100,HLS:3200,MP4:3300,FMP4:3400,SIDX:3410}),Re(Ne,ge.REMUX,{FMP4:4100,MP4:4200}),Re(Ne,ge.MEDIA,{MEDIA_ERR_ABORTED:5101,MEDIA_ERR_NETWORK:5102,MEDIA_ERR_DECODE:5103,MEDIA_ERR_SRC_NOT_SUPPORTED:5104,MEDIA_ERR_CODEC_NOT_SUPPORTED:5105,MEDIA_ERR_URL_EMPTY:5106,MSE_ADD_SB:5200,MSE_APPEND_BUFFER:5201,MSE_OTHER:5202,MSE_FULL:5203,MSE_HIJACK:5204,EME_HIJACK:5301}),Re(Ne,ge.DRM,{LICENSE:7100,CUSTOM_LICENSE:7200}),Re(Ne,ge.OTHER,8e3),Re(Ne,ge.RUNTIME,{NO_CANPLAY_ERROR:9001,BUFFERBREAK_ERROR:9002,WAITING_TIMEOUT_ERROR:9003}),Ne),Le=function(e){ue(n,e);var t=We(n);function n(e,U,i,r,a){var F;return se(this,n),(F=t.call(this,a||(null==i?void 0:i.message))).errorType=e===ge.NETWORK_TIMEOUT?ge.NETWORK:e,F.originError=i,F.ext=r,F.errorCode=Ce[e][U]||Ce[e],F.errorMessage=F.message,F.errorCode||(F.errorType=ge.OTHER,F.errorCode=Ce[F.errorType]),F}return Be(n,null,[{key:"create",value:function(e,t,U,i,r){return e instanceof n?e:(e instanceof Error&&(U=e,e=""),e||(e=ge.OTHER),new n(e,t,U,i,r))}},{key:"network",value:function(e){var t;return new n(null!=e&&e.isTimeout?ge.NETWORK_TIMEOUT:ge.NETWORK,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}]),n}(Se(Error)),Xe="undefined"!=typeof window,xe={DEBUG:1,LOG:2,WARN:3,ERROR:4},De=["Boolean","Number","String","Undefined","Null","Date","Object"],Ge=function(){function e(t,n){se(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return Be(e,[{key:"debug",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[xe.DEBUG].concat(U)),e.disabled||(t=console).debug.apply(t,[this._prefix,Ie()].concat(U))}},{key:"log",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[xe.LOG].concat(U)),e.disabled||(t=console).log.apply(t,[this._prefix,Ie()].concat(U))}},{key:"warn",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[xe.WARN].concat(U)),e.disabled||(t=console).warn.apply(t,[this._prefix,Ie()].concat(U))}},{key:"error",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[xe.ERROR].concat(U)),e.disabled||(t=console).error.apply(t,[this._prefix,Ie()].concat(U))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];var r=U.map((function(e){return Ye(e)}));t=this._prefix+Ie()+JSON.stringify(r)}catch(F){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var a=this.logTextArray.shift();this.logSize-=a.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function Ie(){return(new Date).toLocaleString()}function Me(e){if("object"!==Qe(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function Ye(e,t,n){n||(n=1),t||(t=2);var U={};if(!e||"object"!==Qe(e))return e;var i=Object.prototype.toString.call(e).slice(8,-1);if(!De.includes(i))return i;if(!(n>t)){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n===t?U[r]=Me(e[r]):"object"===Qe(e[r])?U[r]=Ye(e[r],t,n+1):U[r]=e[r]);return U}}function Ke(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];try{return Xe?e&&"undefined"!=typeof ManagedMediaSource?ManagedMediaSource:window.MediaSource:null}catch(t){}}function we(e){return/ManagedMediaSource/gi.test(Object.prototype.toString.call(e))}Re(Ge,"disabled",!0);var He="appendBuffer",Pe="removeBuffer",je="updateDuration",_e=function(){function e(t,n){var U=this;se(this,e),Re(this,"media",null),Re(this,"mediaSource",null),Re(this,"_openPromise",be()),Re(this,"_queue",Object.create(null)),Re(this,"_sourceBuffer",Object.create(null)),Re(this,"_mseFullFlag",{}),Re(this,"_st",0),Re(this,"_opst",0),Re(this,"_logger",null),Re(this,"_config",null),Re(this,"_url",null),Re(this,"_onStartStreaming",(function(){U._logger.debug("startstreaming")})),Re(this,"_onEndStreaming",(function(){U._logger.debug("endstreaming")})),Re(this,"_onSBUpdateEnd",(function(e){var t=U._queue[e];if(t){var n=t[0];if((null==n?void 0:n.opName)!==je&&t.shift(),n){var i=ve()-U._opst;U._logger.debug("UpdateEnd",n.opName,i,n.context),n.promise.resolve({name:n.opName,context:n.context,costtime:i}),U._startQueue(e)}}})),Re(this,"_onSBUpdateError",(function(e,t){var n=U._queue[e];if(n){var i=n[0];i&&(U._logger.error("UpdateError",e,i.opName,i.context),i.promise.reject(new Le(ge.MEDIA,ge.SUB_TYPES.MSE_APPEND_BUFFER,t)))}})),this._config=Object.assign(e.getDefaultConfig(),n),t&&this.bindMedia(t),this._logger=new Ge("MSE"),this._config.openLog&&Ge.enable()}var t,n,U;return Be(e,[{key:"isOpened",get:function(){var e;return"open"===(null===(e=this.mediaSource)||void 0===e?void 0:e.readyState)}},{key:"url",get:function(){return this._url}},{key:"duration",get:function(){var e;return(null===(e=this.mediaSource)||void 0===e?void 0:e.duration)||-1}},{key:"isEnded",get:function(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}},{key:"streaming",get:function(){return!we(this.mediaSource)||this.mediaSource.streaming}},{key:"isFull",value:function(t){return t?this._mseFullFlag[t]:this._mseFullFlag[e.VIDEO]}},{key:"updateDuration",value:function(e){var t=this,n=this.mediaSource&&this.mediaSource.duration>e;if(this.mediaSource&&this.mediaSource.duration>e){var U=0;if(Object.keys(this._sourceBuffer).forEach((function(e){try{U=Math.max(t.bufferEnd(e)||0,U)}catch(n){}})),e<U)return Promise.resolve()}return this._enqueueBlockingOp((function(){t.isEnded?t._logger.debug("setDuration but ended"):t.mediaSource&&(t.mediaSource.duration=e,t._logger.debug("setDuration",e))}),je,{isReduceDuration:n})}},{key:"open",value:function(){var e=this;if(this._openPromise.used&&!this.isOpened&&this.mediaSource){var t=this.mediaSource;t.addEventListener("sourceopen",(function n(){var U=ve()-e._st;e._logger.debug("sourceopen",U),t.removeEventListener("sourceopen",n),e._openPromise.resolve({costtime:U})})),this._openPromise=be()}return this._openPromise}},{key:"bindMedia",value:(U=oe(le().mark((function e(t){var n,U,i,r,a=this;return le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.mediaSource&&!this.media){e.next=3;break}return e.next=3,this.unbindMedia();case 3:if(n=Ke(this._config.preferMMS),t&&n){e.next=6;break}throw new Error("Param media or MediaSource does not exist");case 6:return this.media=t,U=this.mediaSource=new n,i=we(U),this._st=ve(),r=function e(){var n=ve()-a._st;a._logger.debug("sourceopen"),U.removeEventListener("sourceopen",e),URL.revokeObjectURL(t.src),a._openPromise.resolve({costtime:n})},U.addEventListener("sourceopen",r),i&&(U.addEventListener("startstreaming",this._onStartStreaming),U.addEventListener("endstreaming",this._onEndStreaming)),this._url=URL.createObjectURL(U),t.src=this._url,t.disableRemotePlayback=i,e.abrupt("return",this._openPromise);case 17:case"end":return e.stop()}}),e,this)}))),function(e){return U.apply(this,arguments)})},{key:"unbindMedia",value:(n=oe(le().mark((function e(){var t,n,U,i=this;return le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._openPromise.used||this._openPromise.resolve(),t=this.mediaSource){if(Object.keys(this._queue).forEach((function(e){var t=i._queue[e];t&&t.forEach((function(e){var t,n;return null===(t=e.promise)||void 0===t||null===(n=t.resolve)||void 0===n?void 0:n.call(t)}))})),n=!!this.media&&this.media.readyState>=1,U="open"===t.readyState,n&&U)try{t.endOfStream()}catch(r){}Object.keys(this._sourceBuffer).forEach((function(e){try{t.removeSourceBuffer(i._sourceBuffer[e])}catch(r){}})),we(t)&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming))}if(this.media){this.media.disableRemotePlayback=!1,this.media.removeAttribute("src");try{this.media.load()}catch(r){}this.media=null}this.mediaSource=null,this._openPromise=be(),this._queue=Object.create(null),this._sourceBuffer=Object.create(null);case 8:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"createSource",value:function(e,t){if(!this._sourceBuffer[e]&&this.mediaSource){var n;try{n=this._sourceBuffer[e]=this.mediaSource.addSourceBuffer(t)}catch(U){throw new Le(ge.MEDIA,ge.SUB_TYPES.MSE_ADD_SB,U)}n.mimeType=t,n.addEventListener("updateend",this._onSBUpdateEnd.bind(this,e)),n.addEventListener("error",this._onSBUpdateError.bind(this,e))}}},{key:"changeType",value:function(e,t){var n=this,U=this._sourceBuffer[e];return this.mediaSource&&U&&U.mimeType!==t?"function"!=typeof U.changeType?Promise.reject():this._enqueueOp(e,(function(){U.changeType(t),U.mimeType=t,n._onSBUpdateEnd(e)}),"changeType",{mimeType:t}):Promise.resolve()}},{key:"createOrChangeSource",value:function(e,t){return this.createSource(e,t),this.changeType(e,t)}},{key:"append",value:function(e,t,n){var U=this;return t&&t.byteLength&&this._sourceBuffer[e]?this._enqueueOp(e,(function(){var i;U.mediaSource&&!U.media.error&&(U._logger.debug("MSE APPEND START",n),U._opst=ve(),null===(i=U._sourceBuffer[e])||void 0===i||i.appendBuffer(t))}),He,n):Promise.resolve()}},{key:"remove",value:function(e,t,n,U){var i=this,r=!1;return this._mseFullFlag[e]&&(r=!0),this._enqueueOp(e,(function(){if(i.mediaSource&&!i.media.error){var r=i._sourceBuffer[e];t>=n||!r?i._onSBUpdateEnd(e):(i._opst=ve(),i._logger.debug("MSE REMOVE START",e,t,n,U),r.remove(t,n))}}),Pe,U,r)}},{key:"clearBuffer",value:function(e,t){var n,U=this;return Object.keys(this._sourceBuffer).forEach((function(i){n=U.remove(i,e,t)})),n||Promise.resolve()}},{key:"clearAllBuffer",value:function(){var e,t=this;return Object.keys(this._sourceBuffer).forEach((function(n){var U=t._sourceBuffer[n];e=t.remove(n,0,Te.end(Te.get(U)))})),e}},{key:"clearOpQueues",value:function(e,t){var n;this._logger.debug("MSE clearOpQueue START");var U=this._queue[e];if(t&&U)this._queue[e]=[];else if(U&&U[e]&&!(U.length<5)){var i=[];U.forEach((function(e){e.context&&e.context.isinit&&i.push(e)})),this._queue[e]=U.slice(0,2),i.length>0&&(n=this._queue[e]).push.apply(n,i)}}},{key:"endOfStream",value:function(e){var t=this;return this.mediaSource&&"open"===this.mediaSource.readyState?this._enqueueBlockingOp((function(){var n=t.mediaSource;n&&"open"===n.readyState&&(t._logger.debug("MSE endOfStream START"),e?n.endOfStream(e):n.endOfStream())}),"endOfStream"):Promise.resolve()}},{key:"setLiveSeekableRange",value:function(e,t){var n=this.mediaSource;e<0||t<e||null==n||!n.setLiveSeekableRange||"open"!==n.readyState||n.setLiveSeekableRange(e,t)}},{key:"getSourceBuffer",value:function(e){return this._sourceBuffer[e]}},{key:"buffered",value:function(e){return Te.get(this._sourceBuffer[e])}},{key:"bufferStart",value:function(e){return Te.start(this.buffered(e))}},{key:"bufferEnd",value:function(e){return Te.end(this.buffered(e))}},{key:"_enqueueOp",value:function(e,t,n,U,i){var r=this;if(!this.mediaSource)return Promise.resolve();var a=this._queue[e]=this._queue[e]||[],F={exec:t,promise:be(),opName:n,context:U};return i?(a.splice(0,0,F),this._mseFullFlag[e]=!1,this._startQueue(e)):a.push(F),this.isOpened||this.isEnded?1===a.length&&this._startQueue(e):this._openPromise.then((function(){1===a.length&&r._startQueue(e)})),F.promise}},{key:"_enqueueBlockingOp",value:(t=oe(le().mark((function e(t,n,U){var i,r,a=this;return le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mediaSource){e.next=2;break}return e.abrupt("return",Promise.resolve());case 2:if((i=Object.keys(this._sourceBuffer)).length){e.next=5;break}return e.abrupt("return",t());case 5:return r=[],i.forEach((function(e){var t=a._queue[e],i=be();r.push(i),t.push({exec:function(){i.resolve()},promise:i,opName:n,context:U}),1===t.length&&a._startQueue(e)})),e.abrupt("return",Promise.all(r).then((function(){try{return t()}finally{i.forEach((function(e){var t=a._queue[e],n=a._sourceBuffer[e];null==t||t.shift(),n&&n.updating||a._startQueue(e)}))}})));case 8:case"end":return e.stop()}}),e,this)}))),function(e,n,U){return t.apply(this,arguments)})},{key:"_startQueue",value:function(e){var t=this._queue[e];if(t){var n=t[0];if(n&&!this._mseFullFlag[e])try{n.exec()}catch(U){U&&U.message&&U.message.indexOf("SourceBuffer is full")>=0?(this._mseFullFlag[e]=!0,this._logger.error("[MSE error], context,",n.context," ,name,",n.opName,",err,SourceBuffer is full"),n.promise.reject(new Le(ge.MEDIA,ge.SUB_TYPES.MSE_FULL,U))):(this._logger.error(U),n.promise.reject(new Le(ge.MEDIA,ge.SUB_TYPES.MSE_OTHER,U)),t.shift(),this._startQueue(e))}}}},{key:"setTimeoffset",value:function(e,t,n){var U=this;return this._enqueueOp(e,(function(){t<0&&(t+=.001),U._sourceBuffer[e].timestampOffset=t,U._onSBUpdateEnd(e)}),"setTimeoffset",n)}},{key:"abort",value:function(e,t){var n=this;return this.isOpened?this._enqueueOp(e,(function(){n._sourceBuffer[e].abort(),n._onSBUpdateEnd(e)}),"abort",t):Promise.resolve()}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=Ke();if(!t)return!1;try{return t.isTypeSupported(e)}catch(n){return this._logger.error(e,n),!1}}},{key:"getDefaultConfig",value:function(){return{openLog:!1,preferMMS:!1}}}]),e}();Re(_e,"VIDEO","video"),Re(_e,"AUDIO","audio");var ze="fetch",Oe="xhr",Ae="arraybuffer",qe="text",$e="json",et=function(e){ue(n,e);var t=We(n);function n(e,U,i,r){var a;return se(this,n),Re(Je(a=t.call(this,r)),"retryCount",0),Re(Je(a),"isTimeout",!1),Re(Je(a),"loaderType",ze),Re(Je(a),"startTime",0),Re(Je(a),"endTime",0),Re(Je(a),"options",{}),a.url=e,a.request=U,a.response=i,a}return Be(n)}(Se(Error)),tt=Object.prototype.toString;function nt(e){if("[object Object]"!==tt.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function Ut(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function it(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function rt(e,t){if(e){if(!t)return e;var n,U=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===tt.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===Qe(e)}(t)&&(t=JSON.stringify(t)),"".concat(it(e),"=").concat(it(t))})).join("&")})).filter(Boolean).join("&");if(U){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+U}return e}}function at(e,t,n,U,i,r,a,F,l,Q,d){return i=null!=i?parseFloat(i):null,U=parseInt(U||"0",10),Number.isNaN(U)&&(U=0),{data:e,done:t,options:{range:l,vid:Q,index:F,contentLength:U,age:i,startTime:r,firstByteTime:a,endTime:Date.now(),priOptions:d},response:n}}function Ft(e,t){return Math.round(8*e*1e3/t/1024)}var lt="real_time_speed",Qt={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,n="~";function U(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function r(e,t,U,r,a){if("function"!=typeof U)throw new TypeError("The listener must be a function");var F=new i(U,r||e,a),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],F]:e._events[l].push(F):(e._events[l]=F,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new U:delete e._events[t]}function F(){this._events=new U,this._eventsCount=0}Object.create&&(U.prototype=Object.create(null),(new U).__proto__||(n=!1)),F.prototype.eventNames=function(){var e,U,i=[];if(0===this._eventsCount)return i;for(U in e=this._events)t.call(e,U)&&i.push(n?U.slice(1):U);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},F.prototype.listeners=function(e){var t=n?n+e:e,U=this._events[t];if(!U)return[];if(U.fn)return[U.fn];for(var i=0,r=U.length,a=new Array(r);i<r;i++)a[i]=U[i].fn;return a},F.prototype.listenerCount=function(e){var t=n?n+e:e,U=this._events[t];return U?U.fn?1:U.length:0},F.prototype.emit=function(e,t,U,i,r,a){var F=n?n+e:e;if(!this._events[F])return!1;var l,Q,d=this._events[F],o=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),o){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,U),!0;case 4:return d.fn.call(d.context,t,U,i),!0;case 5:return d.fn.call(d.context,t,U,i,r),!0;case 6:return d.fn.call(d.context,t,U,i,r,a),!0}for(Q=1,l=new Array(o-1);Q<o;Q++)l[Q-1]=arguments[Q];d.fn.apply(d.context,l)}else{var s,c=d.length;for(Q=0;Q<c;Q++)switch(d[Q].once&&this.removeListener(e,d[Q].fn,void 0,!0),o){case 1:d[Q].fn.call(d[Q].context);break;case 2:d[Q].fn.call(d[Q].context,t);break;case 3:d[Q].fn.call(d[Q].context,t,U);break;case 4:d[Q].fn.call(d[Q].context,t,U,i);break;default:if(!l)for(s=1,l=new Array(o-1);s<o;s++)l[s-1]=arguments[s];d[Q].fn.apply(d[Q].context,l)}}return!0},F.prototype.on=function(e,t,n){return r(this,e,t,n,!1)},F.prototype.once=function(e,t,n){return r(this,e,t,n,!0)},F.prototype.removeListener=function(e,t,U,i){var r=n?n+e:e;if(!this._events[r])return this;if(!t)return a(this,r),this;var F=this._events[r];if(F.fn)F.fn!==t||i&&!F.once||U&&F.context!==U||a(this,r);else{for(var l=0,Q=[],d=F.length;l<d;l++)(F[l].fn!==t||i&&!F[l].once||U&&F[l].context!==U)&&Q.push(F[l]);Q.length?this._events[r]=1===Q.length?Q[0]:Q:a(this,r)}return this},F.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&a(this,t)):(this._events=new U,this._eventsCount=0),this},F.prototype.off=F.prototype.removeListener,F.prototype.addListener=F.prototype.on,F.prefixed=n,F.EventEmitter=F,e.exports=F}(Qt);var dt=Qt.exports,ot=_(dt),st=2097152,ct=function(e){ue(U,e);var t,n=We(U);function U(){var e;return se(this,U),Re(Je(e=n.call(this)),"_abortController",null),Re(Je(e),"_timeoutTimer",null),Re(Je(e),"_reader",null),Re(Je(e),"_response",null),Re(Je(e),"_aborted",!1),Re(Je(e),"_index",-1),Re(Je(e),"_range",null),Re(Je(e),"_receivedLength",0),Re(Je(e),"_running",!1),Re(Je(e),"_logger",null),Re(Je(e),"_vid",""),Re(Je(e),"_onProcessMinLen",0),Re(Je(e),"_onCancel",null),Re(Je(e),"_priOptions",null),e}return Be(U,[{key:"load",value:function(e){var t,n=this,U=e.url,i=e.vid,r=e.timeout,a=e.responseType,F=e.onProgress,l=e.index,Q=e.onTimeout,d=e.onCancel,o=e.range,s=e.transformResponse,c=e.request,B=e.params,R=e.logger,u=e.method,h=e.headers,V=e.body,Z=e.mode,p=e.credentials,S=e.cache,m=e.redirect,J=e.referrer,W=e.referrerPolicy,k=e.onProcessMinLen,E=e.priOptions;this._logger=R,this._aborted=!1,this._onProcessMinLen=k,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=l,this._range=o||[0,0],this._vid=i||U,this._priOptions=E||{};var y={method:u,headers:h,body:V,mode:Z,credentials:p,cache:S,redirect:m,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},f=!1;clearTimeout(this._timeoutTimer),U=rt(U,B);var b=Ut(o);b&&(h=c?c.headers:y.headers=y.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",b):h.Range=b),r&&(this._timeoutTimer=setTimeout((function(){if(f=!0,n.cancel(),Q){var e=new et(U,y,null,"timeout");e.isTimeout=!0,Q(e,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions})}}),r));var v=Date.now();return this._logger.debug("[fetch load start], index,",l,",range,",o),new Promise((function(e,t){fetch(c||U,c?void 0:y).then(function(){var i=oe(le().mark((function i(r){var Q,d,c,B;return le().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=r,!n._aborted&&n._running){i.next=4;break}return i.abrupt("return");case 4:if(s&&(r=s(r,U)||r),r.ok){i.next=7;break}throw new et(U,y,r,"bad network response");case 7:if(Q=Date.now(),a!==qe){i.next=15;break}return i.next=11,r.text();case 11:d=i.sent,n._running=!1,i.next=37;break;case 15:if(a!==$e){i.next=22;break}return i.next=18,r.json();case 18:d=i.sent,n._running=!1,i.next=37;break;case 22:if(!F){i.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(r,F,v,Q),i.abrupt("return");case 29:return i.next=31,r.arrayBuffer();case 31:d=i.sent,d=new Uint8Array(d),n._running=!1,c=Date.now()-v,B=Ft(d.byteLength,c),n.emit(lt,{speed:B,len:d.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",l,",range,",o),e(at(d,!0,r,r.headers.get("Content-Length"),r.headers.get("age"),v,Q,l,o,n._vid,n._priOptions));case 39:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(e){var i;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!f||((e=e instanceof et?e:new et(U,y,null,null===(i=e)||void 0===i?void 0:i.message)).startTime=v,e.endTime=Date.now(),e.isTimeout=f,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=oe(le().mark((function e(){return le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,U){var i=this;if(!e.body||!e.body.getReader){this._running=!1;var r=new et(e.url,"",e,"onProgress of bad response.body.getReader");return r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(r)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(st),this._writeIdx=0);var a,F,l,Q=this._reader=e.body.getReader(),d=function(){var r=oe(le().mark((function r(){var o,s,c,B,R,u,h,V;return le().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return F=Date.now(),r.prev=1,r.next=4,Q.read();case 4:a=r.sent,l=Date.now(),r.next=13;break;case 8:return r.prev=8,r.t0=r.catch(1),l=Date.now(),i._aborted||(i._running=!1,r.t0.options={index:i._index,range:i._range,vid:i._vid,priOptions:i._priOptions},i.reject(r.t0)),r.abrupt("return");case 13:if(s=(null===(o=i._range)||void 0===o?void 0:o.length)>0?i._range[0]:0,c=s+i._receivedLength,!i._aborted){r.next=19;break}return i._running=!1,t(void 0,!1,{range:[c,c],vid:i._vid,index:i._index,startTime:F,endTime:l,st:n,firstByteTime:U,priOptions:i._priOptions},e),r.abrupt("return");case 19:B=a.value?a.value.byteLength:0,i._receivedLength+=B,i._logger.debug("【fetchLoader,onProgress call】,task,",i._range,", start,",c,", end,",s+i._receivedLength,", done,",a.done),i._onProcessMinLen>0?i._writeIdx+B>=i._onProcessMinLen||a.done?((R=new Uint8Array(i._writeIdx+B)).set(i._cache.slice(0,i._writeIdx),0),B>0&&R.set(a.value,i._writeIdx),i._writeIdx=0,i._logger.debug("【fetchLoader,onProgress enough】,done,",a.done,",len,",R.byteLength,", writeIdx,",i._writeIdx)):B>0&&i._writeIdx+B<st?(i._cache.set(a.value,i._writeIdx),i._writeIdx+=B,i._logger.debug("【fetchLoader,onProgress cache】,len,",B,", writeIdx,",i._writeIdx)):B>0&&(u=new Uint8Array(i._writeIdx+B+2048),i._logger.debug("【fetchLoader,onProgress extra start】,size,",i._writeIdx+B+2048,", datalen,",B,", writeIdx,",i._writeIdx),u.set(i._cache.slice(0,i._writeIdx),0),B>0&&u.set(a.value,i._writeIdx),i._writeIdx+=B,delete i._cache,i._cache=u,i._logger.debug("【fetchLoader,onProgress extra end】,len,",B,", writeIdx,",i._writeIdx)):R=a.value,(R&&R.byteLength>0||a.done)&&t(R,a.done,{range:[i._range[0]+i._receivedLength-(R?R.byteLength:0),i._range[0]+i._receivedLength],vid:i._vid,index:i._index,startTime:F,endTime:l,st:n,firstByteTime:U,priOptions:i._priOptions},e),a.done?(h=Date.now()-n,V=Ft(i._receivedLength,h),i.emit(lt,{speed:V,len:i._receivedLength,time:h,vid:i._vid,index:i._index,range:i._range,priOptions:i._priOptions}),i._running=!1,i._logger.debug("[fetchLoader onProgress end],task,",i._range,",done,",a.done),i.resolve(at(a,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,U,i._index,i._range,i._vid,i._priOptions))):d();case 25:case"end":return r.stop()}}),r,null,[[1,8]])})));return function(){return r.apply(this,arguments)}}();d()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),U}(ot);var Bt=function(e){ue(n,e);var t=We(n);function n(){var e;return se(this,n),Re(Je(e=t.call(this)),"_xhr",null),Re(Je(e),"_aborted",!1),Re(Je(e),"_timeoutTimer",null),Re(Je(e),"_range",null),Re(Je(e),"_receivedLength",0),Re(Je(e),"_url",null),Re(Je(e),"_onProgress",null),Re(Je(e),"_index",-1),Re(Je(e),"_headers",null),Re(Je(e),"_currentChunkSizeKB",384),Re(Je(e),"_timeout",null),Re(Je(e),"_xhr",null),Re(Je(e),"_withCredentials",null),Re(Je(e),"_startTime",-1),Re(Je(e),"_loadCompleteResolve",null),Re(Je(e),"_loadCompleteReject",null),Re(Je(e),"_runing",!1),Re(Je(e),"_logger",!1),Re(Je(e),"_vid",""),Re(Je(e),"_responseType",void 0),Re(Je(e),"_credentials",void 0),Re(Je(e),"_method",void 0),Re(Je(e),"_transformResponse",void 0),Re(Je(e),"_firstRtt",void 0),Re(Je(e),"_onCancel",null),Re(Je(e),"_priOptions",null),e}return Be(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=rt(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof et?e:new et(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===Ae&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,U=this._range[1];t<this._range[1]-n&&(U=n+t),e=[n,U],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,U,i;t._running=!1;var r=new et(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(U=e.currentTarget)||void 0===U?void 0:U.status)+",statusText,"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.statusText));r.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(r)},n.ontimeout=function(e){t.cancel();var n=new et(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var U=this._headers||{},i=Ut(e);i&&(U.Range=i),U&&Object.keys(U).forEach((function(e){n.setRequestHeader(e,U[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(r){r.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var U=new et(this._url,null,Fe(Fe({},e.target.response),{},{status:n}),"bad response,status:"+n);return U.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(U)}var i,r=null,a=!1,F=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===Ae){var l,Q=new Uint8Array(e.target.response);if(i=F+this._receivedLength,Q&&Q.byteLength>0){this._receivedLength+=Q.byteLength;var d=Date.now()-this._startTime,o=Ft(this._receivedLength,d);this.emit(lt,{speed:o,len:this._receivedLength,time:d,vid:this._vid,index:this._index,range:[i,F+this._receivedLength],priOptions:this._priOptions})}r=Q,a=!((null===(l=this._range)||void 0===l?void 0:l.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",i,"end ",F+this._receivedLength,",dataLen,",Q?Q.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",a)}else a=!0,r=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(r,a,{index:this._index,vid:this._vid,range:[i,F+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),a?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(at(this._onProgress?null:r,a,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,ke(he(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},U=ye(e.getAllResponseHeaders().trim().split("\r\n"));try{for(U.s();!(t=U.n()).done;){var i=t.value.split(": ");n[i[0].toLowerCase()]=i.slice(1).join(": ")}}catch(r){U.e(r)}finally{U.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(ot),Rt=["retry","retryDelay","onRetryError","transformError"],ut=function(){function e(t,n){se(this,e),this.promise=be(),this.alive=!!n.onProgress,!n.logger&&(n.logger=new Ge("Loader")),this._loaderType=t,this._loader=t===ze&&"undefined"!=typeof fetch?new ct:new Bt,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return Be(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,U=t.retryDelay,i=t.onRetryError,r=t.transformError,a=me(t,Rt),F=function(){var t=oe(le().mark((function t(){var l,Q,d;return le().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(a);case 3:l=t.sent,e.promise.resolve(l),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,Q=t.t0,r&&(Q=r(Q)||Q),i&&e._retryCount>0&&i(Q,e._retryCount,{index:a.index,vid:a.vid,range:a.range,priOptions:a.priOptions}),e._retryCount++,d=!0,e._retryCheckFunc&&(d=e._retryCheckFunc(t.t0)),!(d&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",a.range),e._retryTimer=setTimeout(F,U),t.abrupt("return");case 26:e.promise.reject(Q);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return F(),this.promise}},{key:"cancel",value:(t=oe(le().mark((function e(){return le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function ht(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var Vt=function(e){ue(U,e);var t,n=We(U);function U(e){var t;return se(this,U),Re(Je(t=n.call(this,e)),"type",ze),Re(Je(t),"_queue",[]),Re(Je(t),"_alive",[]),Re(Je(t),"_currentTask",null),Re(Je(t),"_finnalUrl",""),Re(Je(t),"_config",void 0),t._config=function(e){return Fe({loaderType:ze,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:qe,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}(e),t._config.loaderType!==Oe&&ct.isSupported()||(t.type=Oe),t.log=e.logger,t}return Be(U,[{key:"isFetch",value:function(){return this.type===ze}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&nt(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&nt(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var U=new ut(this.type,n);return U.loader.on(lt,(function(e){t.emit(lt,e)})),this._queue.push(U),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),U.promise}},{key:"cancel",value:(t=oe(le().mark((function e(){var t;return le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,ht();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return ct.isSupported()}}]),U}(ot),Zt=function(){function e(t,n,U,i){var r=this;b(this,e),this.config=e.getDefaultConfig(),Object.keys(i).map((function(e){void 0!==i[e]&&null!==i[e]&&(r.config[e]=i[e])})),this.duration=U,this.player=t,this.updateBitrate(n),this.curPCDNInBuffer=this.config.maxPCDNInBuffer,this.curPCDNOutBuffer=this.config.maxPCDNOutBuffer,this.PCDNChangeCnt=0}return N(e,[{key:"updateBitrate",value:function(e){this.bitrate=e,this.bitrate||(this.bitrate=this.config.minBandwidth)}},{key:"getPCDNInBuffer",value:function(){var e=this.config,t=this.player,n=this.bitrate;if(!e.PCDNBufferControl)return null;var U=e.estPlayTime,i=U;e.estPTcontrol&&(i=Math.min(U,Math.max(0,this.duration-((null==t?void 0:t.currentTime)||0))));var r=e.safePCDNInFactor,a=e.minBandwidth,F=e.maxPCDNInBuffer,l=e.minPCDNInBuffer,Q=r*Math.max(1024*(null==t?void 0:t.avgSpeedPCDN)||0,a),d=n>0?(1-Q/n)*i:0;return this.curPCDNInBuffer=Math.min(F,Math.max(l,d)),this.curPCDNInBuffer}},{key:"getPCDNOutBuffer",value:function(){var e=this.config,t=this.player,n=this.bitrate;if(!e.PCDNBufferControl)return null;var U=e.estPlayTime,i=U;e.estPTcontrol&&(i=Math.min(U,Math.max(0,this.duration-((null==t?void 0:t.currentTime)||0))));var r=e.safePCDNOutFactor,a=e.minBandwidth,F=e.maxPCDNOutBuffer,l=e.minPCDNOutBuffer,Q=r*Math.max(1024*(null==t?void 0:t.avgSpeedPCDN)||0,a),d=n>0?(1-Q/n)*i:0;return this.curPCDNOutBuffer=Math.min(F,Math.max(l,d)),this.curPCDNOutBuffer}},{key:"getPCDNChangeCnt",value:function(){var e=this.config,t=e.PCDNCntControl,n=e.alpha,U=this.curPCDNInBuffer,i=this.player,r=(null==i?void 0:i.bufferedPoint)||null,a=r&&r.end?r.end-i.currentTime:0;t?a>U+(this.PCDNChangeCnt-1)*n&&this.PCDNChangeCnt++:a>=U&&this.PCDNChangeCnt<2&&this.PCDNChangeCnt++;return this.PCDNChangeCnt}}],[{key:"getDefaultConfig",value:function(){return{PCDNBufferControl:!1,PCDNCntControl:!1,estPTcontrol:!1,minPCDNInBuffer:8,maxPCDNInBuffer:12,minPCDNOutBuffer:3,maxPCDNOutBuffer:6,safePCDNInFactor:.1,safePCDNOutFactor:.4,alpha:.5,estPlayTime:12,minBandwidth:1e6}}}]),e}(),pt=new Map,St=function(){function e(t,n,U,i){var r,a,F=this;b(this,e),this.options=e.getDefaultConfig(),Object.keys(t).map((function(e){void 0!==t[e]&&null!==t[e]&&(F.options[e]=t[e])})),this.options.productConfig&&this.options.productConfig.app_id||console.error("productConfig must has"),this.loader=new Vt(this.options),this.resetTrackeArgs(),this._lastFileInfo=null,this.lastfetchNodeTime=-1,this._lastRetFileKey=null,this._minUpdateNodeStep=this.options.ErrorTimeStep,null!==(r=this.options)&&void 0!==r&&null!==(a=r.adaptPCDNConfig)&&void 0!==a&&a.PCDNBufferControl&&(this.pcdnAdapt=new Zt(n,U,i,this.options.adaptPCDNConfig))}var t,n;return N(e,[{key:"isOpenAdaptPCDN",get:function(){return!!this.pcdnAdapt}},{key:"curPCDNInBuffer",get:function(){return this.pcdnAdapt.curPCDNInBuffer}},{key:"getPCDNInBuffer",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNInBuffer()}},{key:"curPCDNOutBuffer",get:function(){return this.pcdnAdapt.curPCDNOutBuffer}},{key:"getPCDNOutBuffer",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNOutBuffer()}},{key:"curPCDNChangeCnt",get:function(){return this.pcdnAdapt.PCDNChangeCnt}},{key:"getPCDNChangeCnt",value:function(){var e;return null===(e=this.pcdnAdapt)||void 0===e?void 0:e.getPCDNChangeCnt()}},{key:"updatePCDNBitrate",value:function(e){var t;return null===(t=this.pcdnAdapt)||void 0===t?void 0:t.updateBitrate(e)}},{key:"resetTrackeArgs",value:function(e){this.trackeArgs={fid:null,trace_id:null,req_times:(null==e?void 0:e.req_times)||0,resp_times:(null==e?void 0:e.resp_times)||0,token:null,node_num:this.options.node_num,client_info:this.options.client_info}}},{key:"getPCDNNode",value:function(e,t,n){var U,i=Jt(t),r=pt.get(mt(e,i)),a=new be;return null==r||!r.nodes||(null==r||null===(U=r.nodes)||void 0===U?void 0:U.length)<1?this.fetchPCDNNode(null,null,n).then((function(e){a.resolve(e)})).catch((function(e){a.reject(e)})):(r.fromCache=!0,a.resolve(r)),a}},{key:"removePCDNNode",value:function(e,t,n){var U=Jt(t),i=pt.get(mt(e,U)),r=null==i?void 0:i.nodes;r&&(n?i.nodes=r.filter((function(e){return e&&n.indexOf(e.url)<0})):r.shift(),pt.set(mt(e,U),i)),r&&r.length||this.fetchPCDNNode().then().catch((function(){}))}},{key:"fetchPCDNNode",value:(n=f(k().mark((function t(n,U,i){var r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z,p,S;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=new be,U){t.next=5;break}U=this._lastFileInfo,t.next=15;break;case 5:if(U.byterate=Jt(U.bitrate),this.options.trackerOptions&&Object.assign(U,this.options.trackerOptions),this._lastFileInfo=Object.assign({},U,{byterate:U.byterate}),!((null==(F=pt.get(mt(U.vid,U.byterate)))||null===(a=F.nodes)||void 0===a?void 0:a.length)>0)){t.next=13;break}return F.fromCache=!0,r.resolve(F),t.abrupt("return",r);case 13:delete U.bitrate,this._lastFileInfo=U;case 15:if(U){t.next=18;break}return r.resolve(null),t.abrupt("return",r);case 18:if(l=!1,Q=mt(U.vid,U.byterate),this._lastRetFileKey!==Q&&(this.resetTrackeArgs(),l=!0),!(Date.now()-this.lastfetchNodeTime<this._minUpdateNodeStep)||l){t.next=24;break}return r.resolve(null),t.abrupt("return",r);case 24:if(this.lastfetchNodeTime=Date.now(),this._lastRetFileKey=Q,U.sfid?U.version=1:U.vid&&(U.version=2),this.options.withReferer&&(U.with_referer=this.options.withReferer),d=Object.assign(this.options.productConfig,{file_info:U},this.trackeArgs,{req_id:i}),o=JSON.stringify(d),!(this.trackeArgs.req_times>=this.options.maxCnt)){t.next=33;break}return r.resolve(null),t.abrupt("return",r);case 33:return this.loader||(this.loader=new Vt(this.options)),this.trackeArgs.req_times+=1,t.prev=35,e.pcdn_tracker_request_cnt++,t.next=39,this.loader.load(n||this.options.trackerUrl,{body:o});case 39:s=t.sent,c=null,s&&(this.trackeArgs.resp_times+=1,R=8*U.byterate,s.done&&null!==(B=s.data)&&void 0!==B&&B.Result?(u=s.data.Result,(c=u.nodes)&&c.length>0?e.pcdn_tracker_success_cnt++:this._minUpdateNodeStep=this.options.NULLNodeTimeStep,c.map((function(e){e.vid=U.vid,e.bitrate=R})),h=u.fid,V=u.trace_id,Z=u.req_id,p={nodes:c,fid:h,vid:U.vid,trace_id:V,req_id:Z,bitrate:R},S=mt(U.vid,U.byterate),pt.set(S,p),this.trackeArgs.fid=u.fid,this.trackeArgs.trace_id=u.trace_id,this.trackeArgs.token=u.token,r.resolve(p)):(this._minUpdateNodeStep=this.options.ErrorTimeStep,r.reject(s))),t.next=49;break;case 44:t.prev=44,t.t0=t.catch(35),this._minUpdateNodeStep=this.options.ErrorTimeStep,console.warn("tracker catch ERR,",t.t0),r.reject(t.t0);case 49:return t.abrupt("return",r);case 50:case"end":return t.stop()}}),t,this,[[35,44]])}))),function(e,t,U){return n.apply(this,arguments)})}],[{key:"pluginName",get:function(){return"PCDN"}},{key:"pcdnReqCnt",get:function(){var t=e.pcdn_tracker_request_cnt,n=e.pcdn_tracker_success_cnt;return e.pcdn_tracker_request_cnt=0,e.pcdn_tracker_success_cnt=0,{pcdn_tracker_request_cnt:t,pcdn_tracker_failed_cnt:t-n}}},{key:"getDefaultConfig",value:function(){return{trackerUrl:"",loaderType:ze,responseType:$e,mode:"cors",method:"POST",retry:0,retryDelay:3e3,timeout:5e3,node_num:5,client_info:null,maxCnt:30,withReferer:0,NULLNodeTimeStep:6e4,ErrorTimeStep:15e3}}},{key:"gainPCDNNode",value:(t=f(k().mark((function t(n,U,i,r){var a,F,l,Q,d,o,s,c,B;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=e.getDefaultConfig(),Object.keys(U).map((function(e){void 0!==U[e]&&null!==U[e]&&(a[e]=U[e])})),r&&r.app_id||console.error("productConfig must has"),F=new be,i?(i.byterate=Jt(i.bitrate),this.options.trackerOptions&&Object.assign(i,this.options.trackerOptions),delete i.bitrate):F.reject("video fileInfo need set"),l=Object.assign(r,{file_info:i},{node_num:(null==U?void 0:U.node_num)||3}),Q=JSON.stringify(l),d=new Vt(a),t.prev=8,e.pcdn_tracker_request_cnt++,t.next=12,d.load(n,{body:Q});case 12:(B=t.sent).done&&(null===(o=B.data)||void 0===o||null===(s=o.Result)||void 0===s||null===(c=s.nodes)||void 0===c?void 0:c.length)>0&&e.pcdn_tracker_success_cnt++,F.resolve(B),t.next=20;break;case 17:t.prev=17,t.t0=t.catch(8),F.reject((null===t.t0||void 0===t.t0?void 0:t.t0.message)||"get pcdnNode error");case 20:return t.abrupt("return",F);case 21:case"end":return t.stop()}}),t,this,[[8,17]])}))),function(e,n,U,i){return t.apply(this,arguments)})}]),e}();function mt(e,t){return"".concat(e,"-").concat(t)}function Jt(e){return Math.floor(e/8)}T(St,"pcdn_tracker_request_cnt",0),T(St,"pcdn_tracker_success_cnt",0);var Wt=function(){function e(){b(this,e)}return N(e,null,[{key:"install",value:function(){if(window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.cancelRequestAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame,!window.requestAnimationFrame){var e=Date.now();window.requestAnimationFrame=function(t){var n=Date.now(),U=Math.max(16.7-(n-e),0),i=setTimeout(t,U);return e=n+U,i}}window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}}]),e}(),kt=function(){function e(){b(this,e),this.fps=0,this.isStoped=!0,this.ticks=[],this.isSupport=!0,this.maxFps=0,this.step=this._step.bind(this),this.rafId=null}return N(e,[{key:"_step",value:function(e){var t=this.ticks;if(t.unshift(e),t.length>10){var n=t.pop();n&&(this.fps=Math.floor(1e4/(e-n)),this.updateFpsInfo())}this.isStoped||(this.rafId=window.requestAnimationFrame(this.step))}},{key:"updateFpsInfo",value:function(){this.fps>this.maxFps&&(this.maxFps=this.fps)}},{key:"start",value:function(){void 0!==window.requestAnimationFrame&&(this.isStoped=!1,this.rafId=window.requestAnimationFrame(this.step))}},{key:"stop",value:function(){window.cancelAnimationFrame(this.rafId),this.isStoped=!0}}],[{key:"install",value:function(){Wt.install()}}]),e}(),Et=yt&&!function(){var e="_localstorage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(t){return!0}}();function yt(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}var ft={length:Et?localStorage.length:0,clear:function(e){try{for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}}catch(U){}},getItem:function(e){try{return localStorage.getItem(e)}catch(t){return null}},key:function(e){try{return localStorage.key(e)}catch(t){return null}},setItem:function(e,t){try{localStorage.setItem(e,t)}catch(n){}},removeItem:function(e){try{localStorage.removeItem(e)}catch(t){}},isSupport:Et},bt=function(){function e(){var t,n;b(this,e);var U=new Promise((function(e,U){t=e,n=U}));return U.resolve=t,U.reject=n,U}return N(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),vt="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPXt9LHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBhKHQscyl7ZVt0XT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Bvc3RNZXNzYWdlKHtkYXRhOntmYWtlSWQ6dH19KSxhKHQscyl9KSxzKX1wb3N0TWVzc2FnZSh7ZXZlbnQ6InJlYWR5In0pLGFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbihzKXt0cnl7dmFyIHI9cy5kYXRhLG89dm9pZCAwPT09cj97fTpyLGM9by5hY3Rpb24sbj1vLmZha2VJZCxpPW8udGltZTtzd2l0Y2goYyl7Y2FzZSJzZXRJbnRlcnZhbCI6YShuLGkpO2JyZWFrO2Nhc2UiY2xlYXJJbnRlcnZhbCI6Y2FzZSJjbGVhclRpbWVvdXQiOnQuY2FsbChlLG4pJiYoY2xlYXJUaW1lb3V0KGVbbl0pLGRlbGV0ZSBlW25dKTticmVhaztjYXNlInNldFRpbWVvdXQiOmVbbl09c2V0VGltZW91dCgoZnVuY3Rpb24oKXtwb3N0TWVzc2FnZSh7ZGF0YTp7ZmFrZUlkOm59fSksdC5jYWxsKGUsbikmJmRlbGV0ZSBlW25dfSksaSl9fWNhdGNoKGQpe3Bvc3RNZXNzYWdlKHtldmVudDoiZXJyb3IiLGRhdGE6e2Vycm9yOmR9fSl9fSkpfSgpOwo=",Nt="undefined"!=typeof window&&window.Blob&&new Blob([atob(vt)],{type:"text/javascript;charset=utf-8"});function Tt(){var e;try{if(!(e=Nt&&(window.URL||window.webkitURL).createObjectURL(Nt)))throw"";return new Worker(e)}catch(t){return new Worker("data:application/javascript;base64,"+vt)}finally{!("undefined"!=typeof window&&navigator.userAgent.indexOf("Trident/")>0)&&e&&(window.URL||window.webkitlRL).revokeObjectURL(e)}}var gt,Ct,Lt,Xt={},xt=0;if("undefined"!=typeof Worker){var Dt,Gt=!1,It=!1,Mt=function(e,t){It?t&&t():Gt?e():function(){if(!Dt){var e=Promise.withResolvers(),t=e.promise,n=e.resolve,U=e.reject;Dt=t;try{(gt=new Tt).addEventListener("message",(function(e){var t=e.data,i=t.event,r=t.data;switch(i){case"error":It=!0,U(r.error);break;case"ready":Gt=!0,n();break;default:var a=r.fakeId;if(a in Xt){var F=Xt[a]||{},l=F.cb,Q=F.param,d=F.keepAlive;if("setInterval"!==F.type&&delete Xt[a],!d&&document.hidden)return;if("function"==typeof l)try{l.apply(window,Q)}catch(o){console.error("Error when parse callback function, code %s",o)}}}})),gt.addEventListener("error",(function(e){console.error(e),It=!0,U(e)}))}catch(i){It=!0,U(i)}}return Dt}().then(e,t)};Ct=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("cb must be a function");for(var U=function(){do{2147483647===xt?xt=0:xt++}while(xt in Xt);return xt}(),i=arguments.length,r=new Array(i>3?i-3:0),a=3;a<i;a++)r[a-3]=arguments[a];return Xt[U]={cb:e,param:r,keepAlive:!!n,type:"setInterval"},Mt((function(){gt.postMessage({action:"setInterval",fakeId:U,time:t})}),(function(){U in Xt&&(Xt[U].degradeId=setInterval(e,t))})),U},Lt=function(e){if("number"==typeof e&&e in Xt){var t=Xt[e].degradeId;delete Xt[e],Mt((function(){gt.postMessage({action:"clearInterval",fakeId:e})}),(function(){t&&clearInterval(t)}))}}}else Ct=setInterval,Lt=clearInterval,console.error("the browser not support web worker, fallback to unWarp function!");Promise.withResolvers||(Promise.withResolvers=function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e});var Yt="danger_d_speed";var Kt=function(){function e(t,n,U,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{logger:function(){},openLog:!1};b(this,e),this.bitrate=n,this.segment_duration=i||5e3,this.logger=r.logger,this.openLog=r.openLog,this.cdnHost=t.cdnHost,this._loadedPromise=new bt,this._wasmPromise=new bt,this.config=t,this.autoBitrateOpts=t.autoBitrateOpts||{},this.stall_penalty=this.autoBitrateOpts.stall_penalty||11,this.switch_penalty=this.autoBitrateOpts.switch_penalty||4,this.interval=this.autoBitrateOpts.interval||1e3;var a=t.progressTimer||1e3,F=this.autoBitrateOpts.startInterval||a;this.initInterval=.8*F,this._prealodMethod=t.preloadmethod||0,this._videoWidth=0,this._videoHeight=0,this._hasDeviceInfoChanged=!0,this._maxDefinition=this.autoBitrateOpts.maxDefinition||null,this._underflowDefinition=this.autoBitrateOpts.underflowDefinition||null,this.updateMediaInfos(U,!1)}return N(e,[{key:"onLoadWasm",value:function(){var e=this,t=this.module={onRuntimeInitialized:function(){e._wasmPromise.resolve()}};return(0,this.autoBitrateOpts.module)(t),this._wasmPromise}},{key:"updateMediaInfos",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._heightToDefitionConfig=new Map,this._bitrateToDefitionConfig=new Map,this._definitionToDefitionConfig=new Map,e?(this.mediaInfos=e,this.mediaInfos.dynamic_video_list.forEach((function(e){t._heightToDefitionConfig.set(e.vheight,e),t._bitrateToDefitionConfig.set(e.bitrate,e),t._definitionToDefitionConfig.set(e.definition,e)})),this._maxDefinition&&(this._defaultMaxBitrate=this._getBitrate(this._maxDefinition)),this._underflowDefinition&&(this._underflowBitrate=this._getBitrate(this._underflowDefinition))):n&&console.error("baseAbr mediaInfos null")}},{key:"_getBitrate",value:function(e){var t;return(null===(t=this._definitionToDefitionConfig.get(e))||void 0===t?void 0:t.bitrate)||-1}},{key:"parseMPD",value:function(){if(this.setDebugModel(this.openLog),this.mediaInfos){this.logger("mediaInfos",this.mediaInfos);try{for(var e=[],t=this.mediaInfos.dynamic_video_list,n=0;n<t.length;n++){var U=t[n];e.push({stream_id:"s".concat(n),bandwidth:U.bitrate||U.bandwidth,width:U.vwidth||U.width,height:U.vheight||U.height,codec:U.codecs||U.codec_type||"h264",frame_rate:Number(U.fps)||-1,segment_duration:this.segment_duration})}var i={v_adaptation:e},r=JSON.stringify(i);this.module.ccall("parseMPD","null",["string"],[r])}catch(a){}}else console.warn("mediaInfos is null")}},{key:"_getDefautSpeed",value:function(e){var t=0,n=window.navigator.connection;if(n&&n.downlink)t=1024*navigator.connection.downlink/8,this.logger("initSpeed connect",t);else try{t=parseFloat(ft.getItem(Yt))||0,this.logger("initSpeed connect",t)}catch(U){}return 0===t&&(t=e&&e.historyAvspeed||0,this.logger("initSpeed history",t)),t}},{key:"setDebugModel",value:function(e){this.module._setDebugModel(e)}},{key:"updateBitrate",value:function(e){this.bitrate=e}},{key:"_updatePreloadSupplier",value:function(e,t){this.module._updatePreloadSupplier(e,t)}},{key:"updatePreloadSupplier",value:function(e){var t=this._getDefautSpeed();this._updatePreloadSupplier(t,e)}},{key:"getPreloadBitrate",value:function(){var e,t=null,n=[];try{this.logger("preloadMethod",this._prealodMethod),e=this.module._getPreloadBitrate(this._prealodMethod);for(var U=0;U<5;U++)n.push(this.module.HEAP32[e/Int32Array.BYTES_PER_ELEMENT+U]);var i={bitrate:n[0],pduration:n[1],preloadType:n[2],size:n[3],mediaType:n[4]};return this.logger("getPreloadBitrate",i),i}catch(r){t=null,console.log("getPreloadBitrate",r)}finally{this.module._free(e)}return t}},{key:"_updateDeviceInfo",value:function(e){try{if(this._hasDeviceInfoChanged){var t=window.devicePixelRatio||1;this.module._updateDeviceInfo(this._videoWidth||Number(this.config.width),this._videoHeight||Number(this.config.height),t,e||-1)}this._hasDeviceInfoChanged=!1}catch(n){console.log("_updateDeviceInfo")}}},{key:"preload",value:function(e){this.parseMPD(),this.updatePreloadSupplier(e),this._updateDeviceInfo(-1);var t=window.devicePixelRatio||1;return this.logger("baseAbr updateDeviceInfo width",this._videoWidth||Number(this.config.width),"height",this._videoHeight||Number(this.config.height),"dpr",t),this.getPreloadBitrate()}}]),e}();Kt.SPPED_CACHE=Yt;var wt="ABR_CHANGE_A",Ht="UPDATE_AUTO_DESC",Pt="MAX_BUFFER_CHANGE",jt="ABR_LIMIT_BITRATE",_t=0,zt=1,Ot=-1,At=0,qt=1,$t={PLAYBACK_BITRATE:"avg_play_bitrate",DOWNLOAD_BITRATE:"avg_download_bitrate",DOWNLOAD_NETWORK_SPEED:"avg_download_speed",PREDICT_NETWORK_SPEED:"avg_predict_speed",BUFFER_LENGTH:"avg_buffer_length",QOE:"avg_qoe"},en=function(e){g(n,e);var t=G(n);function n(e,U,i,r,a){var F,l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{logger:function(){},openLog:!1};b(this,n),(F=t.call(this,U,i,r,a,l)).player=e,F.timerId=0,F.isOpenAutoDefi=!!F.autoBitrateOpts.isOpenAutoDefi,F._maxDefinition=F.autoBitrateOpts.maxDefinition||null,F.onPlayrateChange=F._onPlayrateChange.bind(D(F)),F.onPlay=F._onPlay.bind(D(F)),F._stop=F.stop.bind(D(F)),F._bufferRange=new Map,F._sortedBufferRange=[],F._lastCheckResolutionStamp=0,F._currentDefinition=null,F._isSeeking=!1,F._waitingStartTime=0,F._stallCount=0,F._seekState=_t,F._stallState=At,F._videoCurrentTime=0,F._maxBitrate=-1,F.listeners=[{evt:"playbackrateChange",handler:F.onPlayrateChange},{evt:"ended",handler:F._stop},{evt:"error",handler:F._stop},{evt:"timeupdate",handler:F._onTimeUpdate.bind(D(F))},{evt:"addVideoBufferEnd",handler:F._bufferRangeUpdate.bind(D(F))},{evt:"canplay",handler:F._updateAutoDesc.bind(D(F))},{evt:"play",handler:F._onplayStart.bind(D(F))},{evt:Pt,handler:F._onMaxBufferChange.bind(D(F))},{evt:"seeking",handler:F._onSeeking.bind(D(F))},{evt:"seeked",handler:F._onSeekEnd.bind(D(F))},{evt:"waiting",handler:F._onWaiting.bind(D(F))},{evt:"playing",handler:F._onPlaying.bind(D(F))}],F._hasStart=!1,F.listeners.forEach((function(e){var t=e.evt,n=e.handler;F.player.on(t,n)})),F._isPaused=!1,F._hasAddFrament=!1,F._eventInfo={local_time_ms:0,internet_speed:0,buffer_length:0,last_bitrate:0,now_bitrate:0,play_speed:1},F._bitrateSet=[],F._generalInfo={},F._currentInAbr=!1,F._hasCalcTimelineLog=!1,F._abr_play_info={start_play_time_ms:0,is_hint:0,playback_info:{internet_speed_record:[],play_bitrate_record:[],buffer_length_record:[],play_speed_record:[],qoe_record:[],qoe_a_record:[],qoe_b_record:[],qoe_c_record:[]}},F._abrMethod=F.autoBitrateOpts.method||0,F.logger("abr: constructor"),F._loopInterval=F.initInterval,F._tickCount=0,F._fps=30,kt.install(),F.startTime=performance.now(),F.logger("time abr",(new Date).getTime()),F._maxCacheTimeVideo=F.config.preloadTime||5,F._maxCacheTimeAudio=F._maxCacheTimeVideo,F._prevDefinitionItem=null,F._currentItem=null,F._switchCount=0,F._switchBitrate=0,F._avgStatItems={};for(var Q=Object.keys($t),d=0;d<Q.length;d++){var o=Q[d],s=$t[o];F._avgStatItems[s]=new tn}return F._qoeArgs=[0,0,0,0],F._abrUsed=-1,F._abrAlwaysOn=1,F._prelaodInfo=null,F._hasLogStartInfo=!1,F._hasExecuteAbrAlgo=!1,F._lastExecuteTimeInMs=0,F}return N(n,[{key:"init",value:function(e){return this._mediaList=e,this.isOpenAutoDefi?this.onLoadWasm():this._wasmPromise.resolve(),this._wasmPromise}},{key:"execute",value:function(){return this.listenSize(),this.initFps(),this.onWinElemSizeChange(),this.onPlay()}},{key:"_onSeeking",value:function(){this._isSeeking=!0,this.player.currentTime<this._videoCurrentTime?this._seekState=Ot:this._seekState=zt,this.logger("seekState",this._seekState)}},{key:"_onSeekEnd",value:function(){this._isSeeking=!1}},{key:"_onWaiting",value:function(){var e=this;if(!(this._isSeeking||this._waitingStartTime>0)){for(var t=this.player.video.buffered,n=this.player.currentTime,U=!1,i=0;i<t.length;i++){var r=t.start(i),a=t.end(i);if(r<=n&&n<a-1&&this.player.readyState<HTMLVideoElement.HAVE_ENOUGH_DATA){U=!0;break}}U&&(this._defaultMaxBitrate||this._underflowBitrate)&&(this.player.emit(jt),this._underflowBitrate>0&&(this._maxBitrate=this._underflowBitrate)),this._waitingStartTime=(new Date).getTime(),this._stallId=setTimeout((function(){clearTimeout(e._stallId),e._stallCount++,e._stallState=qt}),200)}}},{key:"_onPlaying",value:function(){this._waitingStartTime=0,this._stallState=At,clearTimeout(this._stallId)}},{key:"initFps",value:function(){this.fpsDetection=new kt,this.fpsDetection.start(),this._fps=this.fpsDetection.fps,this._hasDeviceInfoChanged=!0}},{key:"listenSize",value:function(){var e,t,n,U;this.mediaElem=this.player.video,this._onWinSizeChange=(e=this.onWinElemSizeChange.bind(this),t=1e3,n=!1,function(){for(var i=this,r=arguments.length,a=new Array(r),F=0;F<r;F++)a[F]=arguments[F];var l=a,Q=n&&!U;clearTimeout(U),U=setTimeout((function(){U=null,n||e.apply(i,l)}),t),Q&&e.apply(i,l)}),window.addEventListener("resize",this._onWinSizeChange)}},{key:"onWinElemSizeChange",value:function(){if(this.mediaElem){var e=this.mediaElem.getBoundingClientRect();this._videoWidth=Math.floor(e.width),this._videoHeight=Math.floor(e.height),this._hasDeviceInfoChanged=!0}}},{key:"_onMaxBufferChange",value:function(e){var t=e.videoCacheTime,n=e.audioCacheTime;this._maxCacheTimeAudio=n,this._maxCacheTimeVideo=t}},{key:"_onTimeUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._sortedBufferRange&&0!==this._sortedBufferRange.length&&this._currentInAbr){this._videoCurrentTime=this.player.currentTime;var n=Date.now();if(!(n-this._lastCheckResolutionStamp<1e3&&0!==this._lastCheckResolutionStamp)||t){this._lastCheckResolutionStamp=n;for(var U=this.player.currentTime,i=0,r=this._sortedBufferRange.length-1,a=null;i<=r;){var F=Math.floor(i+(r-i)/2),l=this._sortedBufferRange[F];if(U<l.start)r=F-1;else{if(!(U>=l.end)){a=l;break}i=F+1}}if(a){var Q=this._bitrateToDefitionConfig.get(a.bandwidth),d=Q&&Q.definition;if(this._currentDefinition===d&&!t||!d)return void(d||this.logger("error defintion, mpd配置与接口配置不一致"));this._currentDefinition=d,this._prevDefinitionItem=this._currentItem,this._currentFps=Q.fps,this._currentItem=Q,this._emitAutoDescChange(d,!1,this._currentFps,Q)}}}}},{key:"_emitAutoDescChange",value:function(e,t,n,U){this.player.emit(Ht,{definition:e,reset:t,fps:n,item:U,pre_item:this._prevDefinitionItem})}},{key:"_onplayStart",value:function(){this._hasStart=!0,this.logger("onplaystart")}},{key:"_updateAutoDesc",value:function(){var e=this;this._currentInAbr&&this._currentDefinition&&(this._updateId=setTimeout((function(){clearTimeout(e._updateId),e._emitAutoDescChange(e._currentDefinition,!1,e._currentFps,e._currentItem)}),0))}},{key:"_bufferRangeUpdate",value:function(e){if(void 0!==e.start){null===this._currentItem&&this._onTimeUpdate(null,!0);var t=e.start;this._hasAddFrament=!0,this._bufferRange.set(t,e);var n=Y(this._bufferRange.values());this._sortedBufferRange=n.sort((function(e,t){return e.start-t.start})),this.avgStat($t.DOWNLOAD_BITRATE,e.bandwidth)}}},{key:"_onPlayrateChange",value:function(){this.module&&this.updateBufferInfo()}},{key:"_onPlay",value:function(){var e=this;if(!this.isOpenAutoDefi)return this.logger("onPlay"),0;var t=0;try{this.logger("abr: loadeddata"),this.updateSwitchInfo(),this.parseMPD(),this.updateDeviceInfo();var U=n.getIsPlayAutoDefi(this.autoBitrateOpts);if(this.isOpenAutoDefi&&U){this._abrUsed=1;var i=this._getDefautSpeed(this.player);t=this._loopAbr(i),this.start(),this.logger("time abr start prgress",(new Date).getTime()),this.logger("time abr costTime",performance.now()-this.startTime),this.logger("abr onplay"),this.startTimer=setTimeout((function(){e._loopInterval=e.interval,clearTimeout(e.startTimer),e.logger("interval change")}),5e3)}}catch(r){this.logger("abr: loadeddata error",r),this.logger("time abr costTime err",performance.now()-this.startTime)}return t}},{key:"start",value:function(){if(this.logger("abr: start"),this._isPaused=!1,!this._hasCalcTimelineLog){var e=1===Math.floor(100*Math.random());this._abr_play_info.is_hint=e?1:0}this._hasCalcTimelineLog=!0,this._loop()}},{key:"_loop",value:function(){var e=this;this._isPaused||(clearTimeout(this.timerId),this.timerId=setTimeout((function(){if(!e.player.paused||!e.player.config.autoplay&&!e._hasStart){var t=e._hasAddFrament?void 0:e._getDefautSpeed(e.player);e._loopAbr(t)}e._loop()}),this._loopInterval))}},{key:"updateDeviceInfo",value:function(){try{if(this.fpsDetection){var e=this.fpsDetection.fps;e!==this._fps&&(this._fps=e,this._hasDeviceInfoChanged=!0)}this._updateDeviceInfo(this._fps)}catch(t){}}},{key:"updateBufferInfo",value:function(e){var t=this.player.playbackRate,n=this.bufferLength,U=e||Math.floor(this.player.downloadSpeed);this._tickCount<5&&0===U&&(U=this._getDefautSpeed(this.player),this.logger("initSpeed fix"));var i=-1===this._maxBitrate?this._defaultMaxBitrate:this._maxBitrate;return this.logger("maxCacheTimeAudio:",this._maxCacheTimeAudio,"maxCacheVideoTime",this._maxCacheTimeVideo,"seekState",this._seekState,"stallState",this._stallState,"maxBitrate",i),this.module._updateBufferInfo(t,this._maxCacheTimeAudio,this._maxCacheTimeVideo,n,n,U,this._seekState,this.player.currentTime,this._stallState,i),this._seekState=_t,this._eventInfo={internet_speed:U,buffer_length:n,last_bitrate:this.bitrate,play_speed:t},this.logger("playRate:",t,"buff:",n,"downloadSpeed:",U),{buffer:n,downloadSpeed:U}}},{key:"updateSwitchInfo",value:function(){var e=(new Date).getTime();this._openTimeMs=e,this._abr_play_info.start_play_time_ms=e;var t,n,U=this.player.config.preloadTime||50,i=(n=(t=e).toString(16)).length<=8?{high:0,low:t}:{high:parseInt(n.substr(0,n.length-8),16),low:parseInt(n.substr(n.length-8),16)},r=this.autoBitrateOpts.noStallCheckTime||5,a=this.openLog;this.logger("openTime:",e,"this.logger",a),this.module._updateSwitchInfo(i.low,i.high,r,a,this.stall_penalty,this.switch_penalty);var F=this._mediaList.video,l=F.map((function(e){var t=e.bandwidth,n=e.bitrate;return t||n}));this._bitrateSet=l.map((function(e,t){return{bitrate:e,codecs:F[t].codecs||F[t].codec_type}})),this._generalInfo={max_cache_time:U,bitrate_set:this._bitrateSet,segment_duration:this.segment_duration,preload_info:{},startup_info:{}}}},{key:"updatePreloadCacheInfo",value:function(e){try{this._prelaodInfo=e,this.logger("update preloadInfo",e),e&&e.item_num!==e.items.length&&(this.logger("preloadInfo invalid"),this._prelaodInfo=null)}catch(t){this.logger("updatePreloadCacheInfo",t),this._prelaodInfo=null}}},{key:"updatePreloadLogInfo",value:function(e){this._generalInfo.preload_info=e||{}}},{key:"_updatePreloadInfo",value:function(){try{var e=this.player.getPreloadInfos();if(e){var t=e.preloadInfo,n=e.abr;this.updatePreloadLogInfo(t),n&&this.updatePreloadCacheInfo(t)}if(this.logger("_updatePreloadInfo preloadinfos",e),null!=this._prelaodInfo){var U=JSON.stringify(this._prelaodInfo);this.module.ccall("updatePreloadInfo","null",["string"],[U])}else this.logger("_updatePreloadInfo preloadinfo null, no preload")}catch(i){this.logger("_updatePreloadInfo err",i)}}},{key:"_loopAbr",value:function(e){var t;this._tickCount++;var n=[];try{this.updateDeviceInfo();var U=this.updateBufferInfo(e),i=U.downloadSpeed,r=U.buffer;t=this.module._getPredictedBitrate(this.bitrate,this._abrMethod);for(var a=0;a<7;a++)n.push(this.module.HEAP32[t/Int32Array.BYTES_PER_ELEMENT+a]);var F=n[0],l=1===n[1];this._eventInfo.now_bitrate=F,this._eventInfo.local_time_ms=(new Date).getTime();var Q=0;if(F!==this.bitrate&&0!==F){var d=this.bitrate;Q=Math.abs(d-F);for(var o=[],s=this.player.video.buffered,c=0;c<s.length;c++)o.push({start:s.start(c),end:s.end(c)});var B=this._videoWidth||Number(this.config.width),R=this._videoHeight||Number(this.config.height),u=(new Date).getTime(),h={speed:"".concat(i," KB/s"),buffer_length:"".concat(r," s"),video_pos:this.player.currentTime,all_buffers:o,seek_state:this._seekState,stall_state:this._stallState,screen_width:B,screen_height:R,dpr:window&&window.devicePixelRatio,playbackRate:this.player.playbackRate,bitrateSet:this._bitrateSet,abrMethod:this._abrMethod,delta:this._hasExecuteAbrAlgo?u-this._lastExecuteTimeInMs:0};this._lastExecuteTimeInMs=u,this._hasExecuteAbrAlgo=!0,this.player.emit(wt,this.bitrate,F,l,JSON.stringify(h)),this.logger("abr loop predicte:",F,"willStall:",l,"switchBitrate",Q,"cur",d),this.bitrate=F}this._hasLogStartInfo||(this._hasLogStartInfo=!0,this._generalInfo.startup_info={predict_bitrate:F,download_speed:i,screen_width:this._videoWidth||Number(this.config.width),screen_height:this._videoHeight||Number(this.config.height),device_pixel_ratio:window&&window.devicePixelRatio,screen_fps:this._fps,startup_method:this._abrMethod}),this.player.emit("ABR_LOOP"),this.onAbrLoop(i,n[2],Q,n.slice(3))}catch(V){this.logger("abr error",V),console.log("error",V)}finally{this.module._free(t)}return this.bitrate}},{key:"stop",value:function(){!0===(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&(this._abrAlwaysOn=-1),clearTimeout(this.timerId),this._isPaused=!0,this.logger("abr: stop")}},{key:"destroy",value:function(){var e=this;this._stop(),this.listeners.forEach((function(t){var n=t.evt,U=t.handler;e.player.off(n,U)})),this.player=null,this._heightToDefitionConfig=null,this._bitrateToDefitionConfig=null,this._bufferRange=null,this._sortedBufferRange=null,this.module=null,clearTimeout(this._stallId),clearTimeout(this._updateId),clearTimeout(this.startTimer),window.removeEventListener("resize",this._onWinSizeChange),this.fpsDetection&&this.fpsDetection.stop(),this._maxBitrate=-1,this.player=null}},{key:"eventInfo",get:function(){return this._eventInfo}},{key:"generalInfo",get:function(){return this._generalInfo}},{key:"bufferLength",get:function(){var e=this.player.getBufferedRange(),t=this.player.video.currentTime,n=e[1]-Math.max(e[0],t);return n=Math.max(0,n).toFixed(2),parseFloat(n)}},{key:"downloadSpeed",get:function(){return Math.floor(this.player.downloadSpeed)}},{key:"nowBitrate",get:function(){return this.bitrate}},{key:"openTimeMs",get:function(){return this._openTimeMs}},{key:"isCurrentInAbr",get:function(){return this._currentInAbr},set:function(e){this._currentInAbr=e}},{key:"onAbrLoop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,U=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(this._qoeArgs=U,this._currentItem&&this.avgStat($t.PLAYBACK_BITRATE,this._currentItem.bitrate),this.avgStat($t.DOWNLOAD_NETWORK_SPEED,1e3*e*8),this.avgStat($t.PREDICT_NETWORK_SPEED,t),this.avgStat($t.BUFFER_LENGTH,this.bufferLength),this.avgStat($t.QOE,this.getQoeRelValue(0)),n>0&&(this._switchCount++,this._switchBitrate+=n),this._abr_play_info.is_hint){var i=this,r=((new Date).getTime()-this.openTimeMs)/1e3;r=parseFloat(r.toFixed(2)),this._abr_play_info.playback_info.internet_speed_record.push([r,i.downloadSpeed]),this._abr_play_info.playback_info.play_bitrate_record.push([r,i.nowBitrate]),this._abr_play_info.playback_info.buffer_length_record.push([r,i.bufferLength]),this._abr_play_info.playback_info.play_speed_record.push([r,this.player.playbackRate]),this._abr_play_info.playback_info.qoe_record.push([r,this.getQoeRelValue(0)]),this._abr_play_info.playback_info.qoe_a_record.push([r,this.getQoeRelValue(1)]),this._abr_play_info.playback_info.qoe_b_record.push([r,this.getQoeRelValue(2)]),this._abr_play_info.playback_info.qoe_c_record.push([r,this.getQoeRelValue(3)])}}},{key:"getQoeRelValue",value:function(e){return this._qoeArgs[e]/100}},{key:"avgStat",value:function(e,t){var n=this._avgStatItems[e];n&&n.add(t)}},{key:"getAbrPlayInfo",value:function(){return this._abr_play_info}},{key:"updateAbrMethod",value:function(e){this._abrMethod=e}},{key:"getAbrMethod",value:function(){return this._abrMethod}},{key:"getAbrVVStats",value:function(){for(var e={},t=Object.keys($t),n=0;n<t.length;n++){var U=t[n],i=$t[U],r=this._avgStatItems[i];e[i]=r.avg()}return e.switch_counts=this._switchCount,e.avg_switch_bitrate=0===this._switchCount?0:this._switchBitrate/this._switchCount,e.abr_qoe=this.getQoeRelValue(0),e.abr_qoe_a=this.getQoeRelValue(1),e.abr_qoe_b=this.getQoeRelValue(2),e.abr_qoe_c=this.getQoeRelValue(3),e.abr_method=this._abrMethod,e.abr_used=this._abrUsed,e.abr_always_on=this._abrAlwaysOn,this.logger("abrVVStats",e),e}}],[{key:"getIsPlayAutoDefi",value:function(e){return!!e.isPlayAutoDefi}}]),n}(Kt),tn=function(){function e(){b(this,e),this.total=0,this.count=0}return N(e,[{key:"add",value:function(e){this.total+=e,this.count++}},{key:"avg",value:function(){if(0===this.count)return 0;var e=this.total/this.count;return Math.floor(e)}}]),e}(),nn={1:"debug",2:"log",3:"warn",4:"error"},Un=function(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}()&&!function(){var e="local_storage_support_test";try{return window.localStorage.setItem(e,"true"),window.localStorage.removeItem(e),!1}catch(t){return!0}}(),rn=Fn(),an=function(){if(Un)try{return!!window.localStorage.getItem("playertestlog")}catch(e){return!1}return!1}();function Fn(){if(Un)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function ln(e,t,n){var U=nn[t];if(U&&null!=e&&e[U]){for(var i=arguments.length,r=new Array(i>3?i-3:0),a=3;a<i;a++)r[a-3]=arguments[a];e[U].apply(e,[n].concat(r))}}var Qn="FIXED",dn="AUTO",on=function(){function e(t,n){var U=this;b(this,e),this.bitrateMap={},this.defIdMap={},this._startPlay=!1,this.canplayHandler=function(){U._startPlay=!0},this.onAbrChange=function(e,t,n,i){var r=U.pluginInst.player,a=U.bitrateMap[e],F=U.bitrateMap[t],l=null==a?void 0:a.definition,Q=null!=F&&F.definition?F.definition:l;console.log("[ABR] onAbrChange ",l,Q),l!==Q&&U._startPlay&&(U._abrSwitchHandler(F),r.emit("ABR_CHANGE",{prev:l,cur:Q,prevName:null==a?void 0:a.definitionName,curName:null==F?void 0:F.definitionName,abrInfo:i}))},this.onAutoDescChange=function(e){var t=e.definition,n=e.reset,i=e.fps,r=e.item;U.updateAutoDefiDesc(t,n,i,r)};var i=t.player;this.pluginInst=t;var r=this.pluginInst.config.autoBitrateOpts||{};this.isPlayAutoDefi=en.getIsPlayAutoDefi(r),this.isOpenAutoDefi=!!r.isOpenAutoDefi,this.isCurrentAutoDefi=this.isOpenAutoDefi&&this.isPlayAutoDefi,this._abrSwitchHandler=n,i.once("playing",this.canplayHandler)}var t;return N(e,[{key:"init",value:(t=f(k().mark((function e(t){var n,U,i,r;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isOpenAutoDefi){e.next=2;break}return e.abrupt("return",{type:Qn});case 2:return n=this.pluginInst,U=n.player,i=n.playerConfig,r=n.config,U.on(Ht,this.onAutoDescChange),this.bitrateMap={},this.defIdMap={},this.abrInstance=new en(U,r,0,{dynamic_video_list:i.definition.list.concat()},5e3,{logger:ln,openLog:rn}),e.next=9,this.abrInstance.init(t);case 9:U.on(wt,this.onAbrChange),this.abrInstance&&(this.abrInstance.isCurrentInAbr=this.isCurrentAutoDefi);case 11:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"execute",value:function(){var e,t=null===(e=this.abrInstance)||void 0===e?void 0:e.execute();return{bitrate:t,type:-1===t?Qn:dn}}},{key:"updateBitrate",value:function(e){var t;null===(t=this.abrInstance)||void 0===t||t.updateBitrate(e)}},{key:"enable",value:function(){this.isCurrentAutoDefi=!0,this.abrInstance&&(this.abrInstance.start(),this.abrInstance.isCurrentInAbr=!0,this.abrInstance._onTimeUpdate(null,!0))}},{key:"disable",value:function(){this.abrInstance&&(this.updateAutoDefiDesc("",!0),this.isCurrentAutoDefi=!1,this.abrInstance.isCurrentInAbr=!1,this.abrInstance.stop(!0))}},{key:"isCurrentInAbr",value:function(){return!!this.abrInstance&&this.abrInstance.isCurrentInAbr}},{key:"updateAutoDefiDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,U=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=this.pluginInst,r=i.player,a=(i.config.autoBitrateOpts||{}).autoDefiText||"auto";r.emit("ABR_AUTO_DESC_CHANGE",a,t?void 0:e,n,U),t||(r._currentDefitionFromPlayer={definition:"自动 ".concat(e),item:U})}},{key:"updateAbrCacheData",value:function(){var e=this,t=this.pluginInst,n=t.player,U=t.config,i=t.playerConfig,r=U.autoBitrateOpts||{},a=i.definition.list,F=!1;if(a.forEach((function(t){e.bitrateMap[t.bitrate]={url:t.url,definition:t.definition,definitionName:t.text},e.defIdMap[t.definition]={bitrate:t.bitrate,definition:t.definition},"auto"!==t.definition&&"自动"!==t.definition||(F=!0)})),this.isOpenAutoDefi&&!F){var l=r.autoDefiText||"auto",Q={definition:"自动",bitrate:n.curDefinition.bitrate,text:l,url:"__auto__",selected:this.isPlayAutoDefi,name:"自动",vwidth:n.curDefinition.vwidth,vheight:n.curDefinition.vheight};i.definition.list.push(Q)}}},{key:"destroy",value:function(){var e=this.pluginInst.player;e&&(e.off(wt,this.onAbrChange),e.off("playing",this.canplayHandler),this.abrInstance&&(e.off(Ht,this.onAutoDescChange),this.abrInstance.destroy(),this.abrInstance=void 0))}}]),e}(),sn={MEDIA_EXPIRED:"MEDIA_EXPIRED",INIT_FAIL:"INIT_FAIL",PARSE_ERROR:"PARSE_ERROR",PLAYER_LOG:"PLAYER_LOG",BUFFERED_RESET:"BUFFERED_RESET",MEDIA_LIST:"MEDIA_LIST"},cn="real_time_speed",Bn="is unsupported",Rn="buffer_control",un="waiting",hn="playing",Vn={app_id:6383,sid:5,task_type:1},Zn=function(e){return e.GOP="gop",e.SIZE="size",e}(Zn||{}),pn={BUFFER_CONTROLS:"buffer_control"},Sn="timer_update",mn={PRELOAD_ERROR:"PRELOAD_ERROR",PRELOAD_CHECK:"PRELOAD_CHECK",PRELOAD_OK:"PRELOAD_OK",PRELOAD_MATCH:"PRELOAD_MATCH",USER_DEFI_CHECK:"USER_DEFI_CHECK"},Jn={onlyInit:!1,useWaterLevel:!1,maxBufferLength:10,minBufferLength:5,tickInSeconds:.2,getLicenseUrl:"",xhrSetup:{},retryCount:1,retryDelay:1e3,timeout:3e3,preloadCacheType:1,needPreloadRangeList:!1,isOpenPreload:!0,needPreloadCheck:!1,preloadTime:0,preloadMaxCacheCount:0,needAutoBitrate:!0,keyValue:null,drm:null,switchBitRateWay:!1,enableWorker:!1,bufferThreshold:10,removeBufferLen:60,removeBufferAtSeek:!1,resumePlayWaterLevel:2,waitJampBufferMaxCnt:3,waitingInBufferTimeOut:5e3,waitingTimeOut:1e4,notDegradeErrorList:["timeout",403,404],h265Degrade:!1,forceVideoPlay:!1,segmentMinDuration:3,supportHevc:void 0,H264Config:null,reqOptions:{},rangeMaxDuration:15,getRequestOptionsCallback:null,closeDowngrade:!1,loaderType:"fetch",reUseMSE:!1,urlExpireDisableErrorEvent:!1,logCacheConfig:{logCacheLevel:xe.LOG,logMaxSize:204800},noPreloadAddBufferLen:0,enableFPSStuckHandle:!1,loadRangeType:Zn.GOP,timerInWorker:!1,waitingRetrySeekTimes:null,waitingRetryDuration:null,disableInactiveWaitingCheck:!1,alwaysStreamingLoad:!0,enableCusExpiryCheck:!1,enableCheckTrackGap:!1,trackGap:1,reqParams:{},isAddRange:!1,disableRepeatRange:!1,audioGroupingStrategy:2},Wn=function(){function e(t){var n=this;b(this,e),this.alive=!0,this.timeoutId=null,this.onTick=function(e){var t,U;(null===(t=n.cancelPending)||void 0===t||t.call(n),n.alive)&&(null===(U=n.onTick_)||void 0===U||U.call(n),null==e||e())},this.onTick_=t}return N(e,[{key:"tickAfter",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return this.cancelPending?this.cancelPending():this.cancelPending=function(){t.timeoutId&&(clearTimeout(t.timeoutId),t.timeoutId=null)},this.alive=!0,this.timeoutId=setTimeout(this.onTick,1e3*e,n),this}},{key:"tickEvery",value:function(e){var t=this;this.tickAfter(e,(function(){t.tickEvery(e)}))}},{key:"stop",value:function(){this.alive=!1,this.cancelPending&&(this.cancelPending(),this.cancelPending=void 0)}}]),e}(),kn=function(e){g(n,e);var t=G(n);function n(e){var U;return b(this,n),(U=t.call(this)).onVisibleChange=function(){var e=U.masterTimer||U.workerTimer;U.stop(),e&&U.start()},U.options=e,document.addEventListener("visibilitychange",U.onVisibleChange),U}return N(n,[{key:"start",value:function(){var e=this,t=this.options,n=t.timerInWorker,U=t.frequency,i=function(){try{(e.masterTimer||e.workerTimer)&&e.emit(Sn)}catch(t){}};this.stop(),n&&"undefined"!=typeof Worker&&document.hidden?this.workerTimer=Ct(i,1e3*U,!0):(this.masterTimer=new Wn(i),this.masterTimer.tickEvery(U))}},{key:"stop",value:function(){this.workerTimer&&(Lt(this.workerTimer),this.workerTimer=void 0),this.masterTimer&&(this.masterTimer.stop(),this.masterTimer=void 0)}},{key:"destroy",value:function(){this.removeAllListeners(),document.removeEventListener("visibilitychange",this.onVisibleChange),this.stop()}}]),n}(dt.EventEmitter);const En="3.0.16-rc-volc.1";var yn={416:Ce[ge.NETWROK_RANGE_NOT_SATISFIABLE],403:Ce[ge.NETWORK_FORBIDDEN],404:Ce[ge.NETWORK_NOTFOUND],timeout:Ce[ge.NETWORK_TIMEOUT],"4xx":"".concat(Ce[ge.NETWORK],"4XX"),"5xx":"".concat(Ce[ge.NETWORK],"5XX"),networkError:Ce[ge.NETWORK],contentError:"".concat(Ce[ge.NETWORK],"contentError"),mse:Ce[ge.MEDIA][ge.SUB_TYPES.MSE_OTHER],mseOpen:Ce[ge.MEDIA][ge.SUB_TYPES.MSE_ADD_SB],mseAppend:Ce[ge.MEDIA][ge.SUB_TYPES.MSE_APPEND_BUFFER],mse_hijack:Ce[ge.MEDIA][ge.SUB_TYPES.MSE_HIJACK],eme_hijack:Ce[ge.MEDIA][ge.SUB_TYPES.EME_HIJACK],metaError:Ce[ge.DEMUX][ge.SUB_TYPES.MP4],muxError:Ce[ge.REMUX][ge.SUB_TYPES.FMP4],other:Ce[ge.OTHER],waitTimeout:Ce[ge.RUNTIME][ge.SUB_TYPES.BUFFERBREAK_ERROR],waitTimeoutWithHidden:Ce[ge.RUNTIME][ge.SUB_TYPES.WAITING_TIMEOUT_ERROR],drm:Ce[ge.DRM][ge.SUB_TYPES.LICENSE]},fn=ge;var bn=N((function e(t,n,U){b(this,e);var i=0,r=0;null!=U&&U.range&&U.range.length>1&&(i=U.range[0],r=U.range[1]);var a=function(e){return yn[e]||e}(n);return{errorCode:a,errorType:t,errorMessage:(null==U?void 0:U.httpText)||(null==U?void 0:U.message),url:null==U?void 0:U.url,httpCode:n,version:En,rangeStart:i,rangeEnd:r,ext:U,mediaError:{code:a,message:(null==U?void 0:U.httpText)||(null==U?void 0:U.message)}}})),vn=N((function e(t,n,U){return b(this,e),{version:En,errorCode:n,errorType:t,errorMessage:U.msg,ext:U,mediaError:{code:n,message:U.msg}}}));function Nn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function Tn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nn(Object(n),!0).forEach((function(t){Gn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function gn(){gn=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",F=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(f){l=function(e,t,n){return e[t]=n}}function Q(e,t,n,i){var r=t&&t.prototype instanceof s?t:s,a=Object.create(r.prototype),F=new k(i||[]);return U(a,"_invoke",{value:S(e,n,F)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(f){return{type:"throw",arg:f}}}e.wrap=Q;var o={};function s(){}function c(){}function B(){}var R={};l(R,r,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(E([])));h&&h!==t&&n.call(h,r)&&(R=h);var V=B.prototype=s.prototype=Object.create(R);function Z(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function p(e,t){function i(U,r,a,F){var l=d(e[U],e,r);if("throw"!==l.type){var Q=l.arg,o=Q.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,a,F)}),(function(e){i("throw",e,a,F)})):t.resolve(o).then((function(e){Q.value=e,a(Q)}),(function(e){return i("throw",e,a,F)}))}F(l.arg)}var r;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return r=r?r.then(U,U):U()}})}function S(e,t,n){var U="suspendedStart";return function(i,r){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw r;return{value:void 0,done:!0}}for(n.method=i,n.arg=r;;){var a=n.delegate;if(a){var F=m(a,n);if(F){if(F===o)continue;return F}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var l=d(e,t,n);if("normal"===l.type){if(U=n.done?"completed":"suspendedYield",l.arg===o)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(U="completed",n.method="throw",n.arg=l.arg)}}}function m(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,m(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=d(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var r=i.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function E(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:y}}function y(){return{value:void 0,done:!0}}return c.prototype=B,U(V,"constructor",{value:B,configurable:!0}),U(B,"constructor",{value:c,configurable:!0}),c.displayName=l(B,F,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,B):(e.__proto__=B,l(e,F,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(p.prototype),l(p.prototype,a,(function(){return this})),e.AsyncIterator=p,e.async=function(t,n,U,i,r){void 0===r&&(r=Promise);var a=new p(Q(t,n,U,i),r);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},Z(V),l(V,F,"Generator"),l(V,r,(function(){return this})),l(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=E,k.prototype={constructor:k,reset:function(e){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(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return a.type="throw",a.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],a=r.completion;if("root"===r.tryLoc)return U("end");if(r.tryLoc<=this.prev){var F=n.call(r,"catchLoc"),l=n.call(r,"finallyLoc");if(F&&l){if(this.prev<r.catchLoc)return U(r.catchLoc,!0);if(this.prev<r.finallyLoc)return U(r.finallyLoc)}else if(F){if(this.prev<r.catchLoc)return U(r.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return U(r.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var a=r?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,o):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function Cn(e,t,n,U,i,r,a){try{var F=e[r](a),l=F.value}catch(Q){return void n(Q)}F.done?t(l):Promise.resolve(l).then(U,i)}function Ln(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var r=e.apply(t,n);function a(e){Cn(r,U,i,a,F,"next",e)}function F(e){Cn(r,U,i,a,F,"throw",e)}a(void 0)}))}}function Xn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function xn(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,zn(U.key),U)}}function Dn(e,t,n){return t&&xn(e.prototype,t),n&&xn(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Gn(e,t,n){return(t=zn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function In(e){return(In=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Mn(e,t){return(Mn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function Yn(e,t){if(null==e)return{};var n,U,i=function(e,t){if(null==e)return{};var n,U,i={},r=Object.keys(e);for(U=0;U<r.length;U++)n=r[U],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(U=0;U<r.length;U++)n=r[U],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Kn(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function wn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,U=In(e);if(t){var i=In(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Kn(e)}(this,n)}}function Hn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var U,i,r,a,F=[],l=!0,Q=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(U=r.call(n)).done)&&(F.push(U.value),F.length!==t);l=!0);}catch(d){Q=!0,i=d}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(Q)throw i}}return F}}(e,t)||jn(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pn(e){return function(e){if(Array.isArray(e))return _n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||jn(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jn(e,t){if(e){if("string"==typeof e)return _n(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_n(e,t):void 0}}function _n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function zn(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function On(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(e);t&&(U=U.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,U)}return n}function An(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?On(Object(n),!0).forEach((function(t){rU(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):On(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function qn(){qn=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,U=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",F=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(f){l=function(e,t,n){return e[t]=n}}function Q(e,t,n,i){var r=t&&t.prototype instanceof s?t:s,a=Object.create(r.prototype),F=new k(i||[]);return U(a,"_invoke",{value:S(e,n,F)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(f){return{type:"throw",arg:f}}}e.wrap=Q;var o={};function s(){}function c(){}function B(){}var R={};l(R,r,(function(){return this}));var u=Object.getPrototypeOf,h=u&&u(u(E([])));h&&h!==t&&n.call(h,r)&&(R=h);var V=B.prototype=s.prototype=Object.create(R);function Z(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function p(e,t){function i(U,r,a,F){var l=d(e[U],e,r);if("throw"!==l.type){var Q=l.arg,o=Q.value;return o&&"object"==typeof o&&n.call(o,"__await")?t.resolve(o.__await).then((function(e){i("next",e,a,F)}),(function(e){i("throw",e,a,F)})):t.resolve(o).then((function(e){Q.value=e,a(Q)}),(function(e){return i("throw",e,a,F)}))}F(l.arg)}var r;U(this,"_invoke",{value:function(e,n){function U(){return new t((function(t,U){i(e,n,t,U)}))}return r=r?r.then(U,U):U()}})}function S(e,t,n){var U="suspendedStart";return function(i,r){if("executing"===U)throw new Error("Generator is already running");if("completed"===U){if("throw"===i)throw r;return{value:void 0,done:!0}}for(n.method=i,n.arg=r;;){var a=n.delegate;if(a){var F=m(a,n);if(F){if(F===o)continue;return F}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===U)throw U="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);U="executing";var l=d(e,t,n);if("normal"===l.type){if(U=n.done?"completed":"suspendedYield",l.arg===o)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(U="completed",n.method="throw",n.arg=l.arg)}}}function m(e,t){var n=t.method,U=e.iterator[n];if(void 0===U)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,m(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),o;var i=d(U,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,o;var r=i.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,o):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,o)}function J(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function W(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(J,this),this.reset(!0)}function E(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var U=-1,i=function t(){for(;++U<e.length;)if(n.call(e,U))return t.value=e[U],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:y}}function y(){return{value:void 0,done:!0}}return c.prototype=B,U(V,"constructor",{value:B,configurable:!0}),U(B,"constructor",{value:c,configurable:!0}),c.displayName=l(B,F,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===c||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,B):(e.__proto__=B,l(e,F,"GeneratorFunction")),e.prototype=Object.create(V),e},e.awrap=function(e){return{__await:e}},Z(p.prototype),l(p.prototype,a,(function(){return this})),e.AsyncIterator=p,e.async=function(t,n,U,i,r){void 0===r&&(r=Promise);var a=new p(Q(t,n,U,i),r);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},Z(V),l(V,F,"Generator"),l(V,r,(function(){return this})),l(V,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var U in t)n.push(U);return n.reverse(),function e(){for(;n.length;){var U=n.pop();if(U in t)return e.value=U,e.done=!1,e}return e.done=!0,e}},e.values=E,k.prototype={constructor:k,reset:function(e){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(W),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function U(n,U){return a.type="throw",a.arg=e,t.next=n,U&&(t.method="next",t.arg=void 0),!!U}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],a=r.completion;if("root"===r.tryLoc)return U("end");if(r.tryLoc<=this.prev){var F=n.call(r,"catchLoc"),l=n.call(r,"finallyLoc");if(F&&l){if(this.prev<r.catchLoc)return U(r.catchLoc,!0);if(this.prev<r.finallyLoc)return U(r.finallyLoc)}else if(F){if(this.prev<r.catchLoc)return U(r.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return U(r.finallyLoc)}}}},abrupt:function(e,t){for(var U=this.tryEntries.length-1;U>=0;--U){var i=this.tryEntries[U];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc&&(r=null);var a=r?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,o):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),o},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),W(n),o}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var U=n.completion;if("throw"===U.type){var i=U.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),o}},e}function $n(e){return($n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function eU(e,t,n,U,i,r,a){try{var F=e[r](a),l=F.value}catch(Q){return void n(Q)}F.done?t(l):Promise.resolve(l).then(U,i)}function tU(e){return function(){var t=this,n=arguments;return new Promise((function(U,i){var r=e.apply(t,n);function a(e){eU(r,U,i,a,F,"next",e)}function F(e){eU(r,U,i,a,F,"throw",e)}a(void 0)}))}}function nU(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function UU(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,VU(U.key),U)}}function iU(e,t,n){return t&&UU(e.prototype,t),n&&UU(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function rU(e,t,n){return(t=VU(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function aU(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&lU(e,t)}function FU(e){return(FU=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function lU(e,t){return(lU=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function QU(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function dU(e,t,n){return(dU=QU()?Reflect.construct.bind():function(e,t,n){var U=[null];U.push.apply(U,t);var i=new(Function.bind.apply(e,U));return n&&lU(i,n.prototype),i}).apply(null,arguments)}function oU(e){var t="function"==typeof Map?new Map:void 0;return oU=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,U)}function U(){return dU(e,arguments,FU(this).constructor)}return U.prototype=Object.create(e.prototype,{constructor:{value:U,enumerable:!1,writable:!0,configurable:!0}}),lU(U,e)},oU(e)}function sU(e,t){if(null==e)return{};var n,U,i=function(e,t){if(null==e)return{};var n,U,i={},r=Object.keys(e);for(U=0;U<r.length;U++)n=r[U],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(U=0;U<r.length;U++)n=r[U],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function cU(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function BU(e){var t=QU();return function(){var n,U=FU(e);if(t){var i=FU(this).constructor;n=Reflect.construct(U,arguments,i)}else n=U.apply(this,arguments);return function(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return cU(e)}(this,n)}}function RU(){return RU="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var U=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=FU(e)););return e}(e,t);if(U){var i=Object.getOwnPropertyDescriptor(U,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},RU.apply(this,arguments)}function uU(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function hU(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return uU(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?uU(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var U=0,i=function(){};return{s:i,n:function(){return U>=e.length?{done:!0}:{done:!1,value:e[U++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,F=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){F=!0,r=e},f:function(){try{a||null==n.return||n.return()}finally{if(F)throw r}}}}function VU(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var ZU={DEBUG:1,LOG:2,WARN:3,ERROR:4},pU=["Boolean","Number","String","Undefined","Null","Date","Object"],SU=function(){function e(t,n){nU(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),this.logCacheLevel=(null==n?void 0:n.logCacheLevel)||3,this.logMaxSize=(null==n?void 0:n.logMaxSize)||204800,this.logSize=0,this.logTextArray=[]}return iU(e,[{key:"debug",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[ZU.DEBUG].concat(U)),e.disabled||(t=console).debug.apply(t,[this._prefix,mU()].concat(U))}},{key:"log",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[ZU.LOG].concat(U)),e.disabled||(t=console).log.apply(t,[this._prefix,mU()].concat(U))}},{key:"warn",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[ZU.WARN].concat(U)),e.disabled||(t=console).warn.apply(t,[this._prefix,mU()].concat(U))}},{key:"error",value:function(){for(var t,n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];this.logCache.apply(this,[ZU.ERROR].concat(U)),e.disabled||(t=console).error.apply(t,[this._prefix,mU()].concat(U))}},{key:"logCache",value:function(e){if(!(e<this.logCacheLevel)){var t="";try{for(var n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];var r=U.map((function(e){return WU(e)}));t=this._prefix+mU()+JSON.stringify(r)}catch(F){return}if(e>=this.logCacheLevel&&(this.logSize+=t.length,this.logTextArray.push(t)),this.logSize>this.logMaxSize){var a=this.logTextArray.shift();this.logSize-=a.length}}}},{key:"getLogCache",value:function(){var e=this.logTextArray.join("\n");return this.reset(),e}},{key:"reset",value:function(){this.logTextArray=[],this.logSize=0}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}},{key:"setLogLevel",value:function(e){this.logCacheLevel=e}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();function mU(){return(new Date).toLocaleString()}function JU(e){if("object"!==$n(e))return e;var t=Object.prototype.toString.call(e).slice(8,-1);switch(t){case"Array":case"Uint8Array":case"ArrayBuffer":return t+"["+e.length+"]";case"Object":return"{}";default:return t}}function WU(e,t,n){n||(n=1),t||(t=2);var U={};if(!e||"object"!==$n(e))return e;var i=Object.prototype.toString.call(e).slice(8,-1);if(!pU.includes(i))return i;if(!(n>t)){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n===t?U[r]=JU(e[r]):"object"===$n(e[r])?U[r]=WU(e[r],t,n+1):U[r]=e[r]);return U}}rU(SU,"disabled",!0);var kU="fetch",EU="xhr",yU="arraybuffer",fU="text",bU="json",vU=function(e){aU(n,e);var t=BU(n);function n(e,U,i,r){var a;return nU(this,n),rU(cU(a=t.call(this,r)),"retryCount",0),rU(cU(a),"isTimeout",!1),rU(cU(a),"loaderType",kU),rU(cU(a),"startTime",0),rU(cU(a),"endTime",0),rU(cU(a),"options",{}),a.url=e,a.request=U,a.response=i,a}return iU(n)}(oU(Error)),NU=Object.prototype.toString;function TU(e){if("[object Object]"!==NU.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function gU(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function CU(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function LU(e,t){if(e){if(!t)return e;var n,U=Object.keys(t).map((function(e){if(null!=(n=t[e]))return Array.isArray(n)?e+="[]":n=[n],n.map((function(t){var n;return n=t,"[object Date]"===NU.call(n)?t=t.toISOString():function(e){return null!==e&&"object"===$n(e)}(t)&&(t=JSON.stringify(t)),"".concat(CU(e),"=").concat(CU(t))})).join("&")})).filter(Boolean).join("&");if(U){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+U}return e}}function XU(e,t,n,U,i,r,a,F,l,Q,d){return i=null!=i?parseFloat(i):null,U=parseInt(U||"0",10),Number.isNaN(U)&&(U=0),{data:e,done:t,options:{range:l,vid:Q,index:F,contentLength:U,age:i,startTime:r,firstByteTime:a,endTime:Date.now(),priOptions:d},response:n}}function xU(e,t){return Math.round(8*e*1e3/t/1024)}var DU="real_time_speed",GU=2097152,IU=function(e){aU(U,e);var t,n=BU(U);function U(){var e;return nU(this,U),rU(cU(e=n.call(this)),"_abortController",null),rU(cU(e),"_timeoutTimer",null),rU(cU(e),"_reader",null),rU(cU(e),"_response",null),rU(cU(e),"_aborted",!1),rU(cU(e),"_index",-1),rU(cU(e),"_range",null),rU(cU(e),"_receivedLength",0),rU(cU(e),"_running",!1),rU(cU(e),"_logger",null),rU(cU(e),"_vid",""),rU(cU(e),"_onProcessMinLen",0),rU(cU(e),"_onCancel",null),rU(cU(e),"_priOptions",null),e}return iU(U,[{key:"load",value:function(e){var t,n=this,U=e.url,i=e.vid,r=e.timeout,a=e.responseType,F=e.onProgress,l=e.index,Q=e.onTimeout,d=e.onCancel,o=e.range,s=e.transformResponse,c=e.request,B=e.params,R=e.logger,u=e.method,h=e.headers,V=e.body,Z=e.mode,p=e.credentials,S=e.cache,m=e.redirect,J=e.referrer,W=e.referrerPolicy,k=e.onProcessMinLen,E=e.priOptions;this._logger=R,this._aborted=!1,this._onProcessMinLen=k,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=l,this._range=o||[0,0],this._vid=i||U,this._priOptions=E||{};var y={method:u,headers:h,body:V,mode:Z,credentials:p,cache:S,redirect:m,referrer:J,referrerPolicy:W,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},f=!1;clearTimeout(this._timeoutTimer),U=LU(U,B);var b=gU(o);b&&(h=c?c.headers:y.headers=y.headers||(Headers?new Headers:{}),Headers&&h instanceof Headers?h.append("Range",b):h.Range=b),r&&(this._timeoutTimer=setTimeout((function(){if(f=!0,n.cancel(),Q){var e=new vU(U,y,null,"timeout");e.isTimeout=!0,Q(e,{index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions})}}),r));var v=Date.now();return this._logger.debug("[fetch load start], index,",l,",range,",o),new Promise((function(e,t){fetch(c||U,c?void 0:y).then(function(){var i=tU(qn().mark((function i(r){var Q,d,c,B;return qn().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(clearTimeout(n._timeoutTimer),n._response=r,!n._aborted&&n._running){i.next=4;break}return i.abrupt("return");case 4:if(s&&(r=s(r,U)||r),r.ok){i.next=7;break}throw new vU(U,y,r,"bad network response");case 7:if(Q=Date.now(),a!==fU){i.next=15;break}return i.next=11,r.text();case 11:d=i.sent,n._running=!1,i.next=37;break;case 15:if(a!==bU){i.next=22;break}return i.next=18,r.json();case 18:d=i.sent,n._running=!1,i.next=37;break;case 22:if(!F){i.next=29;break}return n.resolve=e,n.reject=t,n._loadChunk(r,F,v,Q),i.abrupt("return");case 29:return i.next=31,r.arrayBuffer();case 31:d=i.sent,d=new Uint8Array(d),n._running=!1,c=Date.now()-v,B=xU(d.byteLength,c),n.emit(DU,{speed:B,len:d.byteLength,time:c,vid:n._vid,index:n._index,range:n._range,priOptions:n._priOptions});case 37:n._logger.debug("[fetch load end], index,",l,",range,",o),e(XU(d,!0,r,r.headers.get("Content-Length"),r.headers.get("age"),v,Q,l,o,n._vid,n._priOptions));case 39:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(e){var i;clearTimeout(n._timeoutTimer),n._running=!1,n._aborted&&!f||((e=e instanceof vU?e:new vU(U,y,null,null===(i=e)||void 0===i?void 0:i.message)).startTime=v,e.endTime=Date.now(),e.isTimeout=f,e.options={index:n._index,range:n._range,vid:n._vid,priOptions:n._priOptions},t(e))}))}))}},{key:"cancel",value:(t=tU(qn().mark((function e(){return qn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(t){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions});case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,n,U){var i=this;if(!e.body||!e.body.getReader){this._running=!1;var r=new vU(e.url,"",e,"onProgress of bad response.body.getReader");return r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(r)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(GU),this._writeIdx=0);var a,F,l,Q=this._reader=e.body.getReader(),d=function(){var r=tU(qn().mark((function r(){var o,s,c,B,R,u,h,V;return qn().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return F=Date.now(),r.prev=1,r.next=4,Q.read();case 4:a=r.sent,l=Date.now(),r.next=13;break;case 8:return r.prev=8,r.t0=r.catch(1),l=Date.now(),i._aborted||(i._running=!1,r.t0.options={index:i._index,range:i._range,vid:i._vid,priOptions:i._priOptions},i.reject(r.t0)),r.abrupt("return");case 13:if(s=(null===(o=i._range)||void 0===o?void 0:o.length)>0?i._range[0]:0,c=s+i._receivedLength,!i._aborted){r.next=19;break}return i._running=!1,t(void 0,!1,{range:[c,c],vid:i._vid,index:i._index,startTime:F,endTime:l,st:n,firstByteTime:U,priOptions:i._priOptions},e),r.abrupt("return");case 19:B=a.value?a.value.byteLength:0,i._receivedLength+=B,i._logger.debug("【fetchLoader,onProgress call】,task,",i._range,", start,",c,", end,",s+i._receivedLength,", done,",a.done),i._onProcessMinLen>0?i._writeIdx+B>=i._onProcessMinLen||a.done?((R=new Uint8Array(i._writeIdx+B)).set(i._cache.slice(0,i._writeIdx),0),B>0&&R.set(a.value,i._writeIdx),i._writeIdx=0,i._logger.debug("【fetchLoader,onProgress enough】,done,",a.done,",len,",R.byteLength,", writeIdx,",i._writeIdx)):B>0&&i._writeIdx+B<GU?(i._cache.set(a.value,i._writeIdx),i._writeIdx+=B,i._logger.debug("【fetchLoader,onProgress cache】,len,",B,", writeIdx,",i._writeIdx)):B>0&&(u=new Uint8Array(i._writeIdx+B+2048),i._logger.debug("【fetchLoader,onProgress extra start】,size,",i._writeIdx+B+2048,", datalen,",B,", writeIdx,",i._writeIdx),u.set(i._cache.slice(0,i._writeIdx),0),B>0&&u.set(a.value,i._writeIdx),i._writeIdx+=B,delete i._cache,i._cache=u,i._logger.debug("【fetchLoader,onProgress extra end】,len,",B,", writeIdx,",i._writeIdx)):R=a.value,(R&&R.byteLength>0||a.done)&&t(R,a.done,{range:[i._range[0]+i._receivedLength-(R?R.byteLength:0),i._range[0]+i._receivedLength],vid:i._vid,index:i._index,startTime:F,endTime:l,st:n,firstByteTime:U,priOptions:i._priOptions},e),a.done?(h=Date.now()-n,V=xU(i._receivedLength,h),i.emit(DU,{speed:V,len:i._receivedLength,time:h,vid:i._vid,index:i._index,range:i._range,priOptions:i._priOptions}),i._running=!1,i._logger.debug("[fetchLoader onProgress end],task,",i._range,",done,",a.done),i.resolve(XU(a,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),n,U,i._index,i._range,i._vid,i._priOptions))):d();case 25:case"end":return r.stop()}}),r,null,[[1,8]])})));return function(){return r.apply(this,arguments)}}();d()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),U}(ot);var MU=function(e){aU(n,e);var t=BU(n);function n(){var e;return nU(this,n),rU(cU(e=t.call(this)),"_xhr",null),rU(cU(e),"_aborted",!1),rU(cU(e),"_timeoutTimer",null),rU(cU(e),"_range",null),rU(cU(e),"_receivedLength",0),rU(cU(e),"_url",null),rU(cU(e),"_onProgress",null),rU(cU(e),"_index",-1),rU(cU(e),"_headers",null),rU(cU(e),"_currentChunkSizeKB",384),rU(cU(e),"_timeout",null),rU(cU(e),"_xhr",null),rU(cU(e),"_withCredentials",null),rU(cU(e),"_startTime",-1),rU(cU(e),"_loadCompleteResolve",null),rU(cU(e),"_loadCompleteReject",null),rU(cU(e),"_runing",!1),rU(cU(e),"_logger",!1),rU(cU(e),"_vid",""),rU(cU(e),"_responseType",void 0),rU(cU(e),"_credentials",void 0),rU(cU(e),"_method",void 0),rU(cU(e),"_transformResponse",void 0),rU(cU(e),"_firstRtt",void 0),rU(cU(e),"_onCancel",null),rU(cU(e),"_priOptions",null),e}return iU(n,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=LU(e.url,e.params);var n=Date.now();return new Promise((function(e,n){t._loadCompleteResolve=e,t._loadCompleteReject=n,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof vU?e:new vU(t._url,t._request)).startTime=n,e.endTime=Date.now(),e.options={index:t._index,vid:t._vid,priOptions:t._priOptions},e}))}},{key:"_startLoad",value:function(){var e=null;if(this._responseType===yU&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,n=this._range[0]+this._receivedLength,U=this._range[1];t<this._range[1]-n&&(U=n+t),e=[n,U],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var n=this._xhr=new XMLHttpRequest;n.open(this._method||"GET",this._url,!0),n.responseType=this._responseType,this._timeout&&(n.timeout=this._timeout),n.withCredentials=this._withCredentials,n.onload=this._onLoad.bind(this),n.onreadystatechange=this._onReadyStatechange.bind(this),n.onerror=function(e){var n,U,i;t._running=!1;var r=new vU(t._url,t._request,null==e||null===(n=e.currentTarget)||void 0===n?void 0:n.response,"xhr.onerror.status:"+(null==e||null===(U=e.currentTarget)||void 0===U?void 0:U.status)+",statusText,"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.statusText));r.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(r)},n.ontimeout=function(e){t.cancel();var n=new vU(t._url,t._request,{status:408},"timeout");t._onTimeout&&(n.isTimeout=!0,t._onTimeout(n,{index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions})),n.options={index:t._index,range:t._range,vid:t._vid,priOptions:t._priOptions},t._loadCompleteReject(n)};var U=this._headers||{},i=gU(e);i&&(U.Range=i),U&&Object.keys(U).forEach((function(e){n.setRequestHeader(e,U[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),n.send(this._body)}catch(r){r.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t,n=e.target.status;if(n<200||n>299){var U=new vU(this._url,null,An(An({},e.target.response),{},{status:n}),"bad response,status:"+n);return U.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(U)}var i,r=null,a=!1,F=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===yU){var l,Q=new Uint8Array(e.target.response);if(i=F+this._receivedLength,Q&&Q.byteLength>0){this._receivedLength+=Q.byteLength;var d=Date.now()-this._startTime,o=xU(this._receivedLength,d);this.emit(DU,{speed:o,len:this._receivedLength,time:d,vid:this._vid,index:this._index,range:[i,F+this._receivedLength],priOptions:this._priOptions})}r=Q,a=!((null===(l=this._range)||void 0===l?void 0:l.length)>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",i,"end ",F+this._receivedLength,",dataLen,",Q?Q.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",a)}else a=!0,r=e.target.response;var s={ok:n>=200&&n<300,status:n,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(s=this._transformResponse(s,this._url)||s),this._onProgress&&this._onProgress(r,a,{index:this._index,vid:this._vid,range:[i,F+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},s),a?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(XU(this._onProgress?null:r,a,s,s.headers["content-length"],s.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,RU(FU(n.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,n={},U=hU(e.getAllResponseHeaders().trim().split("\r\n"));try{for(U.s();!(t=U.n()).done;){var i=t.value.split(": ");n[i[0].toLowerCase()]=i.slice(1).join(": ")}}catch(r){U.e(r)}finally{U.f()}return n}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),n}(ot),YU=["retry","retryDelay","onRetryError","transformError"],KU=function(){function e(t,n){var U,i,r;nU(this,e),this.promise=((r=new Promise((function(e,t){U=e,i=t}))).used=!1,r.resolve=function(){return r.used=!0,U.apply(void 0,arguments)},r.reject=function(){return r.used=!0,i.apply(void 0,arguments)},r),this.alive=!!n.onProgress,!n.logger&&(n.logger=new SU("Loader")),this._loaderType=t,this._loader=t===kU&&window.fetch?new IU:new MU,this._config=n,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=n.retryCheckFunc,this._logger=n.logger}var t;return iU(e,[{key:"exec",value:function(){var e=this,t=this._config,n=t.retry,U=t.retryDelay,i=t.onRetryError,r=t.transformError,a=sU(t,YU),F=function(){var t=tU(qn().mark((function t(){var l,Q,d;return qn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(a);case 3:l=t.sent,e.promise.resolve(l),t.next=27;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,Q=t.t0,r&&(Q=r(Q)||Q),i&&e._retryCount>0&&i(Q,e._retryCount,{index:a.index,vid:a.vid,range:a.range,priOptions:a.priOptions}),e._retryCount++,d=!0,e._retryCheckFunc&&(d=e._retryCheckFunc(t.t0)),!(d&&e._retryCount<=n)){t.next=26;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",a.range),e._retryTimer=setTimeout(F,U),t.abrupt("return");case 26:e.promise.reject(Q);case 27:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return F(),this.promise}},{key:"cancel",value:(t=tU(qn().mark((function e(){return qn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function wU(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if((t=t.filter(Boolean)).length<2)return t[0];var U=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){U.set(e,i),i+=e.byteLength})),U}function HU(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var PU=function(e){aU(U,e);var t,n=BU(U);function U(e){var t;return nU(this,U),rU(cU(t=n.call(this,e)),"type",kU),rU(cU(t),"_queue",[]),rU(cU(t),"_alive",[]),rU(cU(t),"_currentTask",null),rU(cU(t),"_finnalUrl",""),rU(cU(t),"_config",void 0),t._config=function(e){return An({loaderType:kU,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:fU,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}(e),t._config.loaderType!==EU&&IU.isSupported()||(t.type=EU),t.log=e.logger,t}return iU(U,[{key:"isFetch",value:function(){return this.type===kU}},{key:"load",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?n=e:n.url=e||n.url||this._config.url,(n=Object.assign({},this._config,n)).params&&(n.params=Object.assign({},n.params)),n.headers&&TU(n.headers)&&(n.headers=Object.assign({},n.headers)),n.body&&TU(n.body)&&(n.body=Object.assign({},n.body)),n.transformRequest&&(n=n.transformRequest(n)||n),n.logger=this.log;var U=new KU(this.type,n);return U.loader.on(DU,(function(e){t.emit(DU,e)})),this._queue.push(U),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),U.promise}},{key:"cancel",value:(t=tU(qn().mark((function e(){var t;return qn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,HU();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;if(this._currentTask=this._queue.shift(),this._currentTask){this._currentTask.alive&&this._alive.push(this._currentTask);var t=this._currentTask.exec().catch((function(e){}));t&&"function"==typeof t.finally&&t.finally((function(){var t,n;null!==(t=e._currentTask)&&void 0!==t&&t.alive&&(null===(n=e._alive)||void 0===n?void 0:n.length)>0&&(e._alive=e._alive.filter((function(t){return t&&t!==e._currentTask}))),e._processTask()}))}}}],[{key:"isFetchSupport",value:function(){return IU.isSupported()}}]),U}(ot);function jU(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _U(e,t){for(var n=0;n<t.length;n++){var U=t[n];U.enumerable=U.enumerable||!1,U.configurable=!0,"value"in U&&(U.writable=!0),Object.defineProperty(e,ti(U.key),U)}}function zU(e,t,n){return t&&_U(e.prototype,t),n&&_U(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function OU(e,t,n){return(t=ti(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function AU(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var U,i,r,a,F=[],l=!0,Q=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(U=r.call(n)).done)&&(F.push(U.value),F.length!==t);l=!0);}catch(d){Q=!0,i=d}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(Q)throw i}}return F}}(e,t)||$U(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qU(e){return function(e){if(Array.isArray(e))return ei(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||$U(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $U(e,t){if(e){if("string"==typeof e)return ei(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ei(e,t):void 0}}function ei(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,U=new Array(t);n<t;n++)U[n]=e[n];return U}function ti(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var U=n.call(e,t||"default");if("object"!=typeof U)return U;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var ni="video",Ui="audio",ii="metadata",ri="avc",ai="hevc",Fi="vvcC",li="aac",Qi="g7110a",di="g7110m",oi=function(){function e(){jU(this,e),OU(this,"id",1),OU(this,"type",ni),OU(this,"codecType",ri),OU(this,"pid",-1),OU(this,"hvcC",void 0),OU(this,"codec",""),OU(this,"timescale",0),OU(this,"formatTimescale",0),OU(this,"sequenceNumber",0),OU(this,"baseMediaDecodeTime",0),OU(this,"baseDts",0),OU(this,"duration",0),OU(this,"warnings",[]),OU(this,"samples",[]),OU(this,"pps",[]),OU(this,"sps",[]),OU(this,"vps",[]),OU(this,"fpsNum",0),OU(this,"fpsDen",0),OU(this,"sarRatio",[]),OU(this,"width",0),OU(this,"height",0),OU(this,"nalUnitSize",4),OU(this,"present",!1),OU(this,"isVideoEncryption",!1),OU(this,"isAudioEncryption",!1),OU(this,"isVideo",!0),OU(this,"kid",null),OU(this,"pssh",null),OU(this,"ext",void 0)}return zU(e,[{key:"reset",value:function(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}},{key:"exist",value:function(){return!!(this.pps.length&&this.sps.length&&this.codec)}},{key:"hasSample",value:function(){return!!this.samples.length}},{key:"isEncryption",get:function(){return this.isVideoEncryption}}]),e}(),si=function(){function e(){jU(this,e),OU(this,"id",2),OU(this,"type",Ui),OU(this,"codecType",li),OU(this,"pid",-1),OU(this,"codec",""),OU(this,"sequenceNumber",0),OU(this,"sampleDuration",0),OU(this,"timescale",0),OU(this,"formatTimescale",0),OU(this,"baseMediaDecodeTime",0),OU(this,"duration",0),OU(this,"warnings",[]),OU(this,"samples",[]),OU(this,"baseDts",0),OU(this,"sampleSize",16),OU(this,"sampleRate",0),OU(this,"channelCount",0),OU(this,"objectType",0),OU(this,"sampleRateIndex",0),OU(this,"config",[]),OU(this,"present",!1),OU(this,"isVideoEncryption",!1),OU(this,"isAudioEncryption",!1),OU(this,"kid",null),OU(this,"ext",void 0)}return zU(e,[{key:"reset",value:function(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}},{key:"exist",value:function(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===li)}},{key:"hasSample",value:function(){return!!this.samples.length}},{key:"isEncryption",get:function(){return this.isAudioEncryption}}]),e}(),ci=function(){function e(t,n,U){jU(this,e),OU(this,"flag",{}),OU(this,"keyframe",!1),OU(this,"gopId",0),OU(this,"duration",0),OU(this,"size",0),OU(this,"units",[]),OU(this,"chromaFormat",420),this.originPts=this.pts=t,this.originDts=this.dts=n,U&&(this.units=U)}return zU(e,[{key:"cts",get:function(){return this.pts-this.dts}},{key:"setToKeyframe",value:function(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}]),e}(),Bi=zU((function e(t,n,U,i){jU(this,e),OU(this,"duration",1024),OU(this,"flag",{dependsOn:2,isNonSyncSample:0}),OU(this,"keyframe",!0),this.originPts=this.pts=this.dts=t,this.data=n,this.size=n.byteLength,this.sampleOffset=i,U&&(this.duration=U)})),Ri=function(){function e(){jU(this,e),OU(this,"id",3),OU(this,"type",ii),OU(this,"timescale",0),OU(this,"flvScriptSamples",[]),OU(this,"seiSamples",[])}return zU(e,[{key:"exist",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}},{key:"reset",value:function(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}},{key:"hasSample",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}]),e}(),ui="undefined"!=typeof window,hi=ui&&navigator.userAgent.toLocaleLowerCase(),Vi=ui&&hi.includes("firefox"),Zi=ui&&hi.includes("android"),pi=function(){function e(){jU(this,e)}return zU(e,null,[{key:"getRateIndexByRate",value:function(t){return e.FREQ.indexOf(t)}},{key:"parseADTS",value:function(t,n){for(var U=t.length,i=0;i+2<U&&(255!==t[i]||240!=(246&t[i+1]));)i++;if(!(i>=U)){var r=i,a=[],F=(60&t[i+2])>>>2,l=e.FREQ[F];if(!l)throw new Error("Invalid sampling index: ".concat(F));for(var Q,d,o=1+((192&t[i+2])>>>6),s=(1&t[i+2])<<2|(192&t[i+3])>>>6,c=e._getConfig(F,s,o),B=c.config,R=c.codec,u=0,h=e.getFrameDuration(l);i+7<U;)if(255===t[i]&&240==(246&t[i+1])){if(U-i<(d=(3&t[i+3])<<11|t[i+4]<<3|(224&t[i+5])>>5))break;Q=2*(1&~t[i+1]),a.push({pts:n+u*h,data:t.subarray(i+7+Q,i+d)}),u++,i+=d}else i++;return{skip:r,remaining:i>=U?void 0:t.subarray(i),frames:a,samplingFrequencyIndex:F,sampleRate:l,objectType:o,channelCount:s,codec:R,config:B,originCodec:"mp4a.40.".concat(o)}}}},{key:"parseAudioSpecificConfig",value:function(t){if(t.length){var n=t[0]>>>3,U=(7&t[0])<<1|t[1]>>>7,i=(120&t[1])>>>3,r=e.FREQ[U];if(r){var a=e._getConfig(U,i,n);return{samplingFrequencyIndex:U,sampleRate:r,objectType:n,channelCount:i,config:a.config,codec:a.codec,originCodec:"mp4a.40.".concat(n)}}}}},{key:"getFrameDuration",value:function(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}},{key:"_getConfig",value:function(e,t,n){var U,i,r=[];return Vi?e>=6?(U=5,i=e-3):(U=2,i=e):Zi?(U=2,i=e):(U=2===n||5===n?n:5,i=e,e>=6?i=e-3:1===t&&(U=2,i=e)),r[0]=U<<3,r[0]|=(14&e)>>1,r[1]=(1&e)<<7,r[1]|=t<<3,5===U&&(r[1]|=(14&i)>>1,r[2]=(1&i)<<7,r[2]|=8,r[3]=0),{config:r,codec:"mp4a.40.".concat(U)}}},{key:"getSilentFrame",value:function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}]),e}();function Si(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];t=t.filter(Boolean);var U=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){U.set(e,i),i+=e.byteLength})),U}OU(pi,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);var mi=Math.pow(2,32);function Ji(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function Wi(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ki(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt32(t)}function Ei(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return Wi(e,t)*mi+Wi(e,t+4)}function yi(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=new DataView(e.buffer,e.byteOffset,e.byteLength);return n.getUint32(t)<<32|n.getUint32(t+4)}function fi(e){var t="";if(e.forEach((function(e){t+=function(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()}(e)})),t.length<=32)for(var n=32-t.length,U=0;U<n;U++)t+="0";return t}function bi(e){if(!Array.isArray(e)){for(var t=[],n="",U=0;U<e.length;U++)U%2&&(n=e[U-1]+e[U],t.push(parseInt(n,16)),n="");return t}return e.map((function(e){return parseInt(e,16)}))}var vi=function(){function e(t){if(jU(this,e),OU(this,"_bytesAvailable",void 0),OU(this,"_bitsAvailable",0),OU(this,"_word",0),!t)throw new Error("ExpGolomb data params is required");this._data=t,this._bytesAvailable=t.byteLength,this._bytesAvailable&&this._loadWord()}return zU(e,[{key:"_loadWord",value:function(){var e=this._data.byteLength-this._bytesAvailable,t=Math.min(4,this._bytesAvailable);if(0===t)throw new Error("No bytes available");var n=new Uint8Array(4);n.set(this._data.subarray(e,e+t)),this._word=new DataView(n.buffer).getUint32(0),this._bitsAvailable=8*t,this._bytesAvailable-=t}},{key:"bitsPos",value:function(){return 8*this._bytesAvailable-this._bitsAvailable}},{key:"bitsLeft",value:function(){return 8*this._data.length-this.bitsPos()}},{key:"byteAligned",value:function(){return 0===this.bitsPos()||this.bitsPos()%8==0}},{key:"skipBits",value:function(e){if(this._bitsAvailable>e)this._word<<=e,this._bitsAvailable-=e;else{e-=this._bitsAvailable;var t=Math.floor(e/8);e-=8*t,this._bytesAvailable-=t,this._loadWord(),this._word<<=e,this._bitsAvailable-=e}}},{key:"readBits",value:function(e){if(e>32)throw new Error("Cannot read more than 32 bits");var t=Math.min(this._bitsAvailable,e),n=this._word>>>32-t;return this._bitsAvailable-=t,this._bitsAvailable>0?this._word<<=t:this._bytesAvailable>0&&this._loadWord(),(t=e-t)>0&&this._bitsAvailable?n<<t|this.readBits(t):n}},{key:"skipLZ",value:function(){var e;for(e=0;e<this._bitsAvailable;++e)if(0!=(this._word&2147483648>>>e))return this._word<<=e,this._bitsAvailable-=e,e;return this._loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBool",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"skipScalingList",value:function(e){for(var t=8,n=8,U=0;U<e;U++)0!==n&&(n=(t+this.readEG()+256)%256),t=0===n?t:n}}]),e}(),Ni=function(){function e(t){jU(this,e),this._buffer=t,this._offset=0,this._heldBits=0,this._numHeldBits=0}return zU(e,[{key:"readUint8",value:function(){return this._buffer[this._offset++]}},{key:"readUint16",value:function(){return this._buffer[this._offset++]<<8|this._buffer[this._offset++]}},{key:"readUint32",value:function(){return this._buffer[this._offset++]<<24|this._buffer[this._offset++]<<16|this._buffer[this._offset++]<<8|this._buffer[this._offset++]}},{key:"readUint8Array",value:function(e){var t=this._buffer.slice(this._offset,this._offset+e);return this._offset+=e,t}},{key:"streamRead1Bytes",value:function(){this._heldBits=this.readUint8(),this._numHeldBits=8}},{key:"streamRead2Bytes",value:function(){this._heldBits=this.readUint16(),this._numHeldBits=16}},{key:"extractBits",value:function(e){var t=this._heldBits>>this._numHeldBits-e&(1<<e)-1;return this._numHeldBits-=e,t}}]),e}(),Ti=function(){function e(){jU(this,e)}return zU(e,null,[{key:"parseVVCDecoderConfigurationRecord",value:function(t){var n=new Ni(t),U=n.readUint8();n.streamRead1Bytes(),n.extractBits(5);var i,r,a,F,l,Q,d,o,s=n.extractBits(2)+1,c=n.extractBits(1),B={};c&&(n.streamRead2Bytes(),F=n.extractBits(2),l=n.extractBits(3),r=n.extractBits(3),a=n.extractBits(2),n.extractBits(6),B=e.parseVVCPTLRecord(n,r),i=n.readUint16(),Q=n.readUint16(),d=n.readUint16(),o=n.readUint16());for(var R=n.readUint8(),u=[],h=[],V=[],Z=null,p=0;p<R;p++){n.streamRead1Bytes(),n.extractBits(1),n.extractBits(2);var S=n.extractBits(5),m=1;13!==S&&12!==S&&(m=n.readUint16());for(var J=0;J<m;J++){var W=n.readUint16();switch(S){case 14:u.push(n.readUint8Array(W));break;case 15:var k=n.readUint8Array(W);Z||(Z=e.parseSPS(e.removeEPB(k))),h.push(k);break;case 16:V.push(n.readUint8Array(W))}}}return{data:t,configurationVersion:U,codec:"bvc2.1.6.L93.B0",nalUnitSize:s,ptlPresentFlag:c,olsIdx:i,numSublayers:r,constantFrameRate:a,chromaFormatIdc:F,bitDepthLumaMinus8:l,ptlRecord:B,width:Q,height:d,sampleRate:o,numOfArrays:R,vps:u,sps:h,pps:V,spsParsed:Z}}},{key:"parseVVCPTLRecord",value:function(e,t){e.streamRead2Bytes(),e.extractBits(2);var n=e.extractBits(6),U=e.extractBits(7),i=e.extractBits(1),r=e.readUint8();e.streamRead1Bytes();var a=e.extractBits(1),F=e.extractBits(1),l=new Uint8Array(n);if(n){for(var Q=0;Q<n-1;Q++){var d=e.extractBits(6);e.streamRead1Bytes();var o=e.extractBits(2);l[Q]=d<<2|o}l[n-1]=e.extractBits(6)}else e.extractBits(6);var s=[];if(t>1){e.streamRead1Bytes();for(var c=0,B=t-2;B>=0;--B){c|=e.extractBits(1)<<B}for(var R=t;R<=8&&t>1;++R)e.extractBits(1);for(var u=t-2;u>=0;--u)c&1<<u&&(s[u]=e.readUint8())}var h=e.readUint8(),V=[];if(h)for(var Z=0;Z<h;Z++)V.push(e.readUint32());return{generalProfileIdc:U,generalTierFlag:i,generalLevelIdc:r,ptlFrameOnlyConstraintFlag:a,ptlMultilayerEnabledFlag:F,generalConstraintInfo:l,subLayerLevelIdc:s,generalSubProfileIdc:V,ptlNumSubProfiles:h,numBytesConstraintInfo:n}}},{key:"getAvccNals",value:function(e){for(var t=[];e.position<e.length-4;){var n=e.dataview.getInt32(e.dataview.position);if(!(e.length-e.position>=n))break;var U=e.buffer.slice(e.position,e.position+4);e.skip(4);var i=new Uint8Array(e.buffer.slice(e.position,e.position+n));e.skip(n),t.push({header:U,body:i})}return t}},{key:"analyseNal",value:function(e){var t=(248&e.body[1])>>3;switch(e.type=t,t){case 23:case 24:break;case 7:case 8:e.key=!0;break;case 14:e.vps=!0;break;case 15:e.sps=!0;break;case 16:e.pps=!0;break;case 17:e.aps=!0}}},{key:"removeEPB",value:function(e){for(var t=e.byteLength,n=[],U=1;U<t-2;)0===e[U]&&0===e[U+1]&&3===e[U+2]?(n.push(U+2),U+=2):U++;if(!n.length)return e;var i=t-n.length,r=new Uint8Array(i),a=0;for(U=0;U<i;a++,U++)a===n[0]&&(a++,n.shift()),r[U]=e[a];return r}},{key:"parseVps",value:function(){}},{key:"parseSPS",value:function(t){var n=new vi(t);n.readUByte(),n.readUByte(),n.skipBits(4);var U=n.readBits(4),i=n.readBits(3),r=n.readBits(2),a=420;r<=3&&(a=[0,420,422,444][r]),n.readBits(2),n.readBits(1);var F=e._parseProfileTierLevel(n,1,i);return n.readBits(1),n.readBits(1)&&n.readBits(1),{width:n.readUEG(),height:n.readUEG(),spsMaxSubLayerMinus1:i,spsVideoParameterSetId:U,chromaFormatIdc:r,chromaFormat:a,ptlInfo:F}}},{key:"_parseProfileTierLevel",value:function(t,n,U){var i,r=t.readBits(7),a=t.readBits(1),F=t.readBits(8),l=t.readBits(1),Q=t.readBits(1);n&&(i=e._parseGeneralConstraintsInfo(t));for(var d=U-1,o=[],s=[],c=[],B=d;B>=0;--B)o[B]=t.readBits(1);for(;!t.byteAligned();)t.readBits(1);for(var R=d;R>=0;--R)o[R]&&(s[R]=t.readUByte());if(n)for(var u=t.readUByte(),h=0;h<u;h++)c[h]=t.readBits(32);return{generalProfileIdc:r,generalTierFlag:a,generalLevelIdc:F,ptlFrameOnlyConstraintFlag:l,ptlMultilayerEnabledFlag:Q,ptlSublayerLevelPresentFlags:o,ptlSublayerLevelIdcs:s,ptlSubProfileIdcs:c,gciInfo:i}}},{key:"_parseGeneralConstraintsInfo",value:function(e){var t=e.readBits(1);if(t){e.skipBits(71);var n=e.readBits(8);n&&e.skipBits(n)}var U=8-e.bitsPos()%8;return e.skipBits(U),{gciPresentFlag:t}}}]),e}(),gi=function(){function e(){jU(this,e)}return zU(e,null,[{key:"findBox",value:function(t,n){var U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=[];if(!t)return i;for(var r=0,a="",F=0;t.length>7;){if(r=Wi(t),a=String.fromCharCode.apply(null,t.subarray(4,8)),F=8,1===r?(r=Ei(t,8),F+=8):r||(r=t.length),!n[0]||a===n[0]){var l=t.subarray(0,r);if(!(n.length<2))return e.findBox(l.subarray(F),n.slice(1),U+F);i.push({start:U,size:r,headerSize:F,type:a,data:l})}U+=r,t=t.subarray(r)}return i}},{key:"tfhd",value:function(e){return xi(e,!0,(function(e,t){e.trackId=Wi(t);var n=4,U=1&e.flags,i=2&e.flags,r=8&e.flags,a=16&e.flags,F=32&e.flags;U&&(n+=4,e.baseDataOffset=Wi(t,n),n+=4),i&&(e.sampleDescriptionIndex=Wi(t,n),n+=4),r&&(e.defaultSampleDuration=Wi(t,n),n+=4),a&&(e.defaultSampleSize=Wi(t,n),n+=4),F&&(e.defaultSampleFlags=Wi(t,n))}))}},{key:"sidx",value:function(e){return xi(e,!0,(function(e,t){var n=0;e.reference_ID=Wi(t,n),n+=4,e.timescale=Wi(t,n),n+=4,0===e.version?(e.earliest_presentation_time=Wi(t,n),n+=4,e.first_offset=Wi(t,n),n+=4):(e.earliest_presentation_time=Ei(t,n),n+=8,e.first_offset=Ei(t,n),n+=8),n+=2,e.references=[];var U=Ji(t,n);n+=2;for(var i=0;i<U;i++){var r={};e.references.push(r);var a=Wi(t,n);n+=4,r.reference_type=a>>31&1,r.referenced_size=2147483647&a,r.subsegment_duration=Wi(t,n),a=Wi(t,n+=4),n+=4,r.starts_with_SAP=a>>31&1,r.SAP_type=a>>28&7,r.SAP_delta_time=268435455&a}}))}},{key:"moov",value:function(t){return xi(t,!1,(function(t,n,U){t.mvhd=e.mvhd(e.findBox(n,["mvhd"],U)[0]),t.trak=e.findBox(n,["trak"],U).map((function(t){return e.trak(t)})),t.pssh=e.pssh(e.findBox(n,["pssh"],U)[0])}))}},{key:"mvhd",value:function(e){return xi(e,!0,(function(e,t){var n=0;1===e.version?(e.timescale=Wi(t,16),e.duration=Ei(t,20),n+=28):(e.timescale=Wi(t,8),e.duration=Wi(t,12),n+=16),e.nextTrackId=Wi(t,n+76)}))}},{key:"trak",value:function(t){return xi(t,!1,(function(t,n,U){t.tkhd=e.tkhd(e.findBox(n,["tkhd"],U)[0]),t.mdia=e.mdia(e.findBox(n,["mdia"],U)[0]),t.edts=e.edts(e.findBox(n,["edts"],U)[0])}))}},{key:"tkhd",value:function(e){return xi(e,!0,(function(e,t){var n=0;1===e.version?(e.trackId=Wi(t,16),e.duration=Ei(t,24),n+=32):(e.trackId=Wi(t,8),e.duration=Wi(t,16),n+=20),e.width=Wi(t,n+52),e.height=Wi(t,n+56)}))}},{key:"mdia",value:function(t){return xi(t,!1,(function(t,n,U){t.mdhd=e.mdhd(e.findBox(n,["mdhd"],U)[0]),t.hdlr=e.hdlr(e.findBox(n,["hdlr"],U)[0]),t.minf=e.minf(e.findBox(n,["minf"],U)[0])}))}},{key:"edts",value:function(t){return xi(t,!1,(function(t,n,U){t.elst=e.elst(e.findBox(n,["elst"],U)[0])}))}},{key:"elst",value:function(e){return xi(e,!0,(function(e,t,n){e.entries=[],e.entriesData=t;var U=0,i=Wi(t,U);U+=4;for(var r=0;r<i;r++){var a={};e.entries.push(a),1===e.version?(a.segment_duration=Ei(t,U),U+=8,a.media_time=yi(t,U),U+=8):(a.segment_duration=Wi(t,U),U+=4,a.media_time=ki(t,U),U+=4),a.media_rate_integer=Ji(t,U),U+=2,a.media_rate_fraction=Ji(t,n),U+=2}}))}},{key:"mdhd",value:function(e){return xi(e,!0,(function(e,t){var n=0;1===e.version?(e.timescale=Wi(t,16),e.duration=Ei(t,20),n+=28):(e.timescale=Wi(t,8),e.duration=Wi(t,12),n+=16);var U=Ji(t,n);e.language=String.fromCharCode(96+(U>>10&31),96+(U>>5&31),96+(31&U))}))}},{key:"hdlr",value:function(e){return xi(e,!0,(function(e,t){0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}},{key:"minf",value:function(t){return xi(t,!1,(function(t,n,U){t.vmhd=e.vmhd(e.findBox(n,["vmhd"],U)[0]),t.smhd=e.smhd(e.findBox(n,["smhd"],U)[0]),t.stbl=e.stbl(e.findBox(n,["stbl"],U)[0])}))}},{key:"vmhd",value:function(e){return xi(e,!0,(function(e,t){e.graphicsmode=Ji(t),e.opcolor=[Ji(t,2),Ji(t,4),Ji(t,6)]}))}},{key:"smhd",value:function(e){return xi(e,!0,(function(e,t){e.balance=Ji(t)}))}},{key:"stbl",value:function(t){return xi(t,!1,(function(t,n,U){var i,r,a;t.stsd=e.stsd(e.findBox(n,["stsd"],U)[0]),t.stts=e.stts(e.findBox(n,["stts"],U)[0]),t.ctts=e.ctts(e.findBox(n,["ctts"],U)[0]),t.stsc=e.stsc(e.findBox(n,["stsc"],U)[0]),t.stsz=e.stsz(e.findBox(n,["stsz"],U)[0]),t.stco=e.stco(e.findBox(n,["stco"],U)[0]),t.stco||(t.co64=e.co64(e.findBox(n,["co64"],U)[0]),t.stco=t.co64);var F=null===(i=t.stsd.entries[0])||void 0===i||null===(r=i.sinf)||void 0===r||null===(a=r.schi)||void 0===a?void 0:a.tenc.default_IV_size;t.stss=e.stss(e.findBox(n,["stss"],U)[0]),t.senc=e.senc(e.findBox(n,["senc"],U)[0],F)}))}},{key:"senc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return xi(e,!0,(function(e,n){var U=0,i=Wi(n,U);U+=4,e.samples=[];for(var r=0;r<i;r++){for(var a={InitializationVector:[]},F=0;F<t;F++)a.InitializationVector[F]=n[U+F];if(U+=t,2&e.flags){a.subsamples=[];var l=Ji(n,U);U+=2;for(var Q=0;Q<l;Q++){var d={};d.BytesOfClearData=Ji(n,U),U+=2,d.BytesOfProtectedData=Wi(n,U),U+=4,a.subsamples.push(d)}}e.samples.push(a)}}))}},{key:"pssh",value:function(e){return xi(e,!0,(function(e,t){for(var n=[],U=[],i=0,r=0;r<16;r++)U.push(Di(t[i+r]));if(i+=16,e.version>0){var a=Wi(t,i);i+=4;for(var F=0;F<(""+a).length;F++)for(var l=0;l<16;l++){var Q=t[i];i+=1,n.push(Di(Q))}}var d=Wi(t,i);e.data_size=d,i+=4,e.kid=n,e.system_id=U,e.buffer=t}))}},{key:"bvc2",value:function(t){return xi(t,!1,(function(t,n,U){var i=Li(t,n),r=n.subarray(i);U+=i,t.vvcC=e.bv2C(e.findBox(r,["bv2C"],U)[0]),t.pasp=e.pasp(e.findBox(r,["pasp"],U)[0])}))}},{key:"bv2C",value:function(e){return xi(e,!1,(function(e,t,n){var U=Ti.parseVVCDecoderConfigurationRecord(t);for(var i in U)Object.prototype.hasOwnProperty.call(U,i)&&(e[i]=U[i])}))}},{key:"stsd",value:function(t){return xi(t,!0,(function(t,n,U){t.entryCount=Wi(n),t.entries=e.findBox(n.subarray(4),[],U+4).map((function(t){switch(t.type){case"avc1":case"avc2":case"avc3":case"avc4":return e.avc1(t);case"hvc1":case"hev1":return e.hvc1(t);case"bvc2":return e.bvc2(t);case"mp4a":return e.mp4a(t);case"alaw":case"ulaw":return e.alaw(t);case"enca":return xi(t,!1,(function(t,n,U){t.channelCount=Ji(n,16),t.samplesize=Ji(n,18),t.sampleRate=Wi(n,24)/65536,n=n.subarray(28),t.sinf=e.sinf(e.findBox(n,["sinf"],U)[0]),t.esds=e.esds(e.findBox(n,["esds"],U)[0])}));case"encv":return xi(t,!1,(function(t,n,U){t.width=Ji(n,24),t.height=Ji(n,26),t.horizresolution=Wi(n,28),t.vertresolution=Wi(n,32),n=n.subarray(78),t.sinf=e.sinf(e.findBox(n,["sinf"],U)[0]),t.avcC=e.avcC(e.findBox(n,["avcC"],U)[0]),t.hvcC=e.hvcC(e.findBox(n,["hvcC"],U)[0]),t.pasp=e.pasp(e.findBox(n,["pasp"],U)[0])}))}})).filter(Boolean)}))}},{key:"tenc",value:function(e){return xi(e,!1,(function(e,t){var n=6;e.default_IsEncrypted=t[n],n+=1,e.default_IV_size=t[n],n+=1,e.default_KID=[];for(var U=0;U<16;U++)e.default_KID.push(Di(t[n])),n+=1}))}},{key:"schi",value:function(t){return xi(t,!1,(function(t,n,U){t.tenc=e.tenc(e.findBox(n,["tenc"],U)[0])}))}},{key:"sinf",value:function(t){return xi(t,!1,(function(t,n,U){t.schi=e.schi(e.findBox(n,["schi"],U)[0]),t.frma=e.frma(e.findBox(n,["frma"],U)[0])}))}},{key:"frma",value:function(e){return xi(e,!1,(function(e,t){e.data_format="";for(var n=0;n<4;n++)e.data_format+=String.fromCharCode(t[n])}))}},{key:"avc1",value:function(t){return xi(t,!1,(function(t,n,U){var i=Li(t,n),r=n.subarray(i);U+=i,t.avcC=e.avcC(e.findBox(r,["avcC"],U)[0]),t.pasp=e.pasp(e.findBox(r,["pasp"],U)[0])}))}},{key:"avcC",value:function(e){return xi(e,!1,(function(e,t){e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){for(var t,n="avc1.",U=0;U<3;U++)(t=e[U].toString(16)).length<2&&(t="0".concat(t)),n+=t;return n}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];for(var n=6,U=0;U<e.spsLength;U++){var i=Ji(t,n);n+=2,e.sps.push(t.subarray(n,n+i)),n+=i}e.ppsLength=t[n],n+=1,e.pps=[];for(var r=0;r<e.ppsLength;r++){var a=Ji(t,n);n+=2,e.pps.push(t.subarray(n,n+=a)),n+=a}}))}},{key:"hvc1",value:function(t){return xi(t,!1,(function(t,n,U){var i=Li(t,n),r=n.subarray(i);U+=i,t.hvcC=e.hvcC(e.findBox(r,["hvcC"],U)[0]),t.pasp=e.pasp(e.findBox(r,["pasp"],U)[0])}))}},{key:"hvcC",value:function(e){return xi(e,!1,(function(t,n){t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=n[0];var U=n[1];t.generalProfileSpace=U>>6,t.generalTierFlag=(32&U)>>5,t.generalProfileIdc=31&U,t.generalProfileCompatibility=Wi(n,2),t.generalConstraintIndicatorFlags=n.subarray(6,12),t.generalLevelIdc=n[12],t.avgFrameRate=Ji(n,19),t.numOfArrays=n[22],t.vps=[],t.sps=[],t.pps=[];for(var i=23,r=0,a=0,F=0,l=0;l<t.numOfArrays;l++){r=63&n[i],a=Ji(n,i+1),i+=3;for(var Q,d=[],o=0;o<a;o++)F=Ji(n,i),i+=2,d.push(n.subarray(i,i+F)),i+=F;if(32===r)(Q=t.vps).push.apply(Q,d);else if(33===r){var s;(s=t.sps).push.apply(s,d)}else if(34===r){var c;(c=t.pps).push.apply(c,d)}}}))}},{key:"pasp",value:function(e){return xi(e,!1,(function(e,t){e.hSpacing=Wi(t),e.vSpacing=Wi(t,4)}))}},{key:"mp4a",value:function(t){return xi(t,!1,(function(t,n,U){var i=Xi(t,n);t.esds=e.esds(e.findBox(n.subarray(i),["esds"],U+i)[0])}))}},{key:"esds",value:function(e){return xi(e,!0,(function(e,t){e.codec="mp4a.";for(var n=0,U=0,i=0,r=0;t.length;){for(r=t[n=0],U=t[n+1],n+=2;128&U;)i=(127&U)<<7,U=t[n],n+=1;if(i+=127&U,3===r)t=t.subarray(n+3);else{if(4!==r){if(5===r){var a=e.config=t.subarray(n,n+i),F=(248&a[0])>>3;return 31===F&&a.length>=2&&(F=32+((7&a[0])<<3)+((224&a[1])>>5)),e.objectType=F,e.codec+=F.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[n].toString(16)+".").padStart(3,"0"),t=t.subarray(n+13)}}}))}},{key:"alaw",value:function(e){return xi(e,!1,(function(e,t){Xi(e,t)}))}},{key:"stts",value:function(e){return xi(e,!0,(function(e,t){for(var n=Wi(t),U=[],i=4,r=0;r<n;r++)U.push({count:Wi(t,i),delta:Wi(t,i+4)}),i+=8;e.entryCount=n,e.entries=U}))}},{key:"ctts",value:function(e){return xi(e,!0,(function(e,t){var n=Wi(t),U=[],i=4;if(1===e.version)for(var r=0;r<n;r++)U.push({count:Wi(t,i),offset:Wi(t,i+4)}),i+=8;else for(var a=0;a<n;a++)U.push({count:Wi(t,i),offset:-(1+~Wi(t,i+4))}),i+=8;e.entryCount=n,e.entries=U}))}},{key:"stsc",value:function(e){return xi(e,!0,(function(e,t){for(var n=Wi(t),U=[],i=4,r=0;r<n;r++)U.push({firstChunk:Wi(t,i),samplesPerChunk:Wi(t,i+4),sampleDescriptionIndex:Wi(t,i+8)}),i+=12;e.entryCount=n,e.entries=U}))}},{key:"stsz",value:function(e){return xi(e,!0,(function(e,t){var n=Wi(t),U=Wi(t,4),i=[];if(!n)for(var r=8,a=0;a<U;a++)i.push(Wi(t,r)),r+=4;e.sampleSize=n,e.sampleCount=U,e.entrySizes=i}))}},{key:"stco",value:function(e){return xi(e,!0,(function(e,t){for(var n=Wi(t),U=[],i=4,r=0;r<n;r++)U.push(Wi(t,i)),i+=4;e.entryCount=n,e.entries=U}))}},{key:"co64",value:function(e){return xi(e,!0,(function(e,t){for(var n=Wi(t),U=[],i=4,r=0;r<n;r++)U.push(Ei(t,i)),i+=8;e.entryCount=n,e.entries=U}))}},{key:"stss",value:function(e){return xi(e,!0,(function(e,t){for(var n=Wi(t),U=[],i=4,r=0;r<n;r++)U.push(Wi(t,i)),i+=4;e.entryCount=n,e.entries=U}))}},{key:"moof",value:function(t){return xi(t,!1,(function(t,n,U){t.mfhd=e.mfhd(e.findBox(n,["mfhd"],U)[0]),t.traf=e.findBox(n,["traf"],U).map((function(t){return e.traf(t)}))}))}},{key:"mfhd",value:function(e){return xi(e,!0,(function(e,t){e.sequenceNumber=Wi(t)}))}},{key:"traf",value:function(t){return xi(t,!1,(function(t,n,U){t.tfhd=e.tfhd(e.findBox(n,["tfhd"],U)[0]),t.tfdt=e.tfdt(e.findBox(n,["tfdt"],U)[0]),t.trun=e.trun(e.findBox(n,["trun"],U)[0])}))}},{key:"trun",value:function(e){return xi(e,!0,(function(e,t){var n=e.version,U=e.flags,i=t.length,r=e.sampleCount=Wi(t),a=4;if(i>a&&1&U&&(e.dataOffset=-(1+~Wi(t,a)),a+=4),i>a&&4&U&&(e.firstSampleFlags=Wi(t,a),a+=4),e.samples=[],i>a)for(var F,l=0;l<r;l++)F={},256&U&&(F.duration=Wi(t,a),a+=4),512&U&&(F.size=Wi(t,a),a+=4),1024&U&&(F.flags=Wi(t,a),a+=4),2048&U&&(F.cts=n?-(1+~Wi(t,a+4)):Wi(t,a),a+=4),e.samples.push(F)}))}},{key:"tfdt",value:function(e){return xi(e,!0,(function(e,t){1===e.version?e.baseMediaDecodeTime=Ei(t):e.baseMediaDecodeTime=Wi(t)}))}},{key:"probe",value:function(t){return!!e.findBox(t,["ftyp"])}},{key:"parseSampleFlags",value:function(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}},{key:"moovToTrack",value:function(e,t,n){var U,i,r=e.trak;if(r&&r.length){var a=r.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),F=r.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(a&&t){var l,Q,d,o,s,c,B,R,u=t,h=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=h&&(u.id=a.tkhd.trackId),u.tkhdDuration=a.tkhd.duration,u.mvhdDurtion=e.mvhd.duration,u.mvhdTimecale=e.mvhd.timescale,u.timescale=u.formatTimescale=a.mdia.mdhd.timescale,u.duration=a.mdia.mdhd.duration||u.mvhdDurtion/u.mvhdTimecale*u.timescale,null!==(Q=a.edts)&&void 0!==Q&&Q.elst&&(u.editList=a.edts.elst,u.editListApplied=a.editListApplied);var V,Z,p,S,m,J,W,k,E=a.mdia.minf.stbl.stsd.entries[0];if(u.width=E.width,u.height=E.height,E.pasp&&(u.sarRatio=[E.pasp.hSpacing,E.pasp.vSpacing]),E.hvcC)u.codecType=ai,u.codec=E.hvcC.codec,u.vps=E.hvcC.vps,u.sps=E.hvcC.sps,u.pps=E.hvcC.pps,u.hvcC=E.hvcC.data;else if(E.avcC)u.codec=E.avcC.codec,u.sps=E.avcC.sps,u.pps=E.avcC.pps;else{if(!E.vvcC)throw new Error("unknown video stsd entry");u.codecType=Fi,u.codec=E.vvcC.codec,u.sps=E.vvcC.sps,u.pps=E.vvcC.pps,u.vps=E.vvcC.vps,u.vvcC=E.vvcC.data}if(u.present=!0,u.ext={},u.ext.stss=null===(d=a.mdia)||void 0===d||null===(o=d.minf)||void 0===o||null===(s=o.stbl)||void 0===s?void 0:s.stss,u.ext.ctts=null===(c=a.mdia)||void 0===c||null===(B=c.minf)||void 0===B||null===(R=B.stbl)||void 0===R?void 0:R.ctts,E&&"encv"===E.type)u.isVideoEncryption=!0,E.default_KID=null===(V=E.sinf)||void 0===V||null===(Z=V.schi)||void 0===Z?void 0:Z.tenc.default_KID,E.default_IsEncrypted=null===(p=E.sinf)||void 0===p||null===(S=p.schi)||void 0===S?void 0:S.tenc.default_IsEncrypted,E.default_IV_size=null===(m=E.sinf)||void 0===m||null===(J=m.schi)||void 0===J?void 0:J.tenc.default_IV_size,u.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,E.data_format=null===(W=E.sinf)||void 0===W||null===(k=W.frma)||void 0===k?void 0:k.data_format,u.useEME=e.useEME,u.kidValue=e.kidValue,u.pssh=e.pssh,u.encv=E}if(F&&n){var y,f,b,v,N,T,g,C,L,X,x=n,D=null===(y=F.tkhd)||void 0===y?void 0:y.trackId;null!=D&&(x.id=F.tkhd.trackId),x.tkhdDuration=F.tkhd.duration,x.mvhdDurtion=e.mvhd.duration,x.mvhdTimecale=e.mvhd.timescale,x.timescale=x.formatTimescale=F.mdia.mdhd.timescale,x.duration=F.mdia.mdhd.duration||x.mvhdDurtion/x.mvhdTimecale*x.timescale,null!==(f=F.edts)&&void 0!==f&&f.elst&&(x.editList=F.edts.elst,x.editListApplied=F.editListApplied);var G,I,M,Y,K,w,H,P,j=F.mdia.minf.stbl.stsd.entries[0];switch(x.sampleSize=j.sampleSize,x.sampleRate=j.sampleRate,x.channelCount=j.channelCount,x.present=!0,j.type){case"alaw":x.codecType=x.codec=Qi,x.sampleRate=8e3;break;case"ulaw":x.codecType=x.codec=di,x.sampleRate=8e3;break;default:x.sampleDuration=pi.getFrameDuration(x.sampleRate,x.timescale),x.sampleRateIndex=pi.getRateIndexByRate(x.sampleRate),x.objectType=(null===(U=j.esds)||void 0===U?void 0:U.objectType)||2,j.esds&&(x.config=Array.from(j.esds.config)),x.codec=(null===(i=j.esds)||void 0===i?void 0:i.codec)||"mp4a.40.2"}if(x.sampleDuration=pi.getFrameDuration(x.sampleRate,x.timescale),x.objectType=(null===(b=j.esds)||void 0===b?void 0:b.objectType)||2,j.esds&&(j.esds.config?x.config=Array.from(j.esds.config):console.warn("esds config is null")),x.codec=(null===(v=j.esds)||void 0===v?void 0:v.codec)||"mp4a.40.2",x.sampleRateIndex=pi.getRateIndexByRate(x.sampleRate),x.ext={},x.ext.stss=null===(N=F.mdia)||void 0===N||null===(T=N.minf)||void 0===T||null===(g=T.stbl)||void 0===g?void 0:g.stss,x.ext.ctts=null===(C=F.mdia)||void 0===C||null===(L=C.minf)||void 0===L||null===(X=L.stbl)||void 0===X?void 0:X.ctts,x.present=!0,j&&"enca"===j.type)x.isAudioEncryption=!0,j.data_format=null===(G=j.sinf)||void 0===G||null===(I=G.frma)||void 0===I?void 0:I.data_format,j.default_KID=null===(M=j.sinf)||void 0===M||null===(Y=M.schi)||void 0===Y?void 0:Y.tenc.default_KID,j.default_IsEncrypted=null===(K=j.sinf)||void 0===K||null===(w=K.schi)||void 0===w?void 0:w.tenc.default_IsEncrypted,j.default_IV_size=null===(H=j.sinf)||void 0===H||null===(P=H.schi)||void 0===P?void 0:P.tenc.default_IV_size,x.audioSenc=F.mdia.minf.stbl.senc&&F.mdia.minf.stbl.senc.samples,x.useEME=e.useEME,x.kidValue=e.kidValue,x.enca=j}if(n&&(n.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!n&&n.isAudioEncryption),null!=t&&t.encv||null!=n&&n.enca){var _,z,O=null==t||null===(_=t.encv)||void 0===_?void 0:_.default_KID,A=null==n||null===(z=n.enca)||void 0===z?void 0:z.default_KID,q=O||A?(O||A).join(""):null;t&&(t.kid=q),n&&(n.kid=q)}return t&&(t.flags=3841),n&&(n.flags=1793),{videoTrack:t,audioTrack:n}}}},{key:"evaluateDefaultDuration",value:function(e,t,n){var U,i=null==t||null===(U=t.samples)||void 0===U?void 0:U.length;return i?1024*i/t.timescale*e.timescale/n:1024}},{key:"moofToSamples",value:function(t,n,U){var i={};return t.mfhd&&(n&&(n.sequenceNumber=t.mfhd.sequenceNumber),U&&(U.sequenceNumber=t.mfhd.sequenceNumber)),t.traf.forEach((function(t){var r=t.tfhd,a=t.tfdt,F=t.trun;if(r&&F){a&&(n&&n.id===r.trackId&&(n.baseMediaDecodeTime=a.baseMediaDecodeTime),U&&U.id===r.trackId&&(U.baseMediaDecodeTime=a.baseMediaDecodeTime));var l=r.defaultSampleSize||0,Q=r.defaultSampleDuration||e.evaluateDefaultDuration(n,U,F.samples.length||F.sampleCount),d=F.dataOffset||0,o=0,s=-1;if(!F.samples.length&&F.sampleCount){i[r.trackId]=[];for(var c=0;c<F.sampleCount;c++)i[r.trackId].push({offset:d,dts:o,duration:Q,size:l}),o+=Q,d+=l}else i[r.trackId]=F.samples.map((function(e,t){return(e={offset:d,dts:o,pts:o+(e.cts||0),duration:e.duration||Q,size:e.size||l,gopId:s,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(s++,e.gopId=s),o+=e.duration,d+=e.size,e}))}})),i}},{key:"moovToSamples",value:function(e){var t=e.trak;if(t&&t.length){var n=t.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),U=t.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(n||U){var i,r;if(n){var a,F,l=null===(a=n.mdia)||void 0===a||null===(F=a.minf)||void 0===F?void 0:F.stbl;if(!l)return;var Q=l.stts,d=l.stsc,o=l.stsz,s=l.stco,c=l.stss,B=l.ctts;if(!(Q&&d&&o&&s&&c))return;i=Ci(Q,d,o,s,B,c)}if(U){var R,u,h,V=null===(R=U.mdia)||void 0===R||null===(u=R.minf)||void 0===u?void 0:u.stbl;if(!V)return;var Z=null===(h=U.mdia.mdhd)||void 0===h?void 0:h.timescale,p=V.stts,S=V.stsc,m=V.stsz,J=V.stco;if(!(Z&&p&&S&&m&&J))return;r=Ci(p,S,m,J)}return{videoSamples:i,audioSamples:r}}}}}]),e}();function Ci(e,t,n,U,i,r){var a,F,l,Q=[],d=null==i?void 0:i.entries,o=t.entries,s=U.entries,c=n.entrySizes,B=null==r?void 0:r.entries;B&&(a={},B.forEach((function(e){a[e-1]=!0}))),d&&(F=[],d.forEach((function(e){for(var t=e.count,n=e.offset,U=0;U<t;U++)F.push(n)})));var R=-1,u=0,h=0,V=0,Z=0,p=0,S=o[0].samplesPerChunk,m=o[1]?o[1].firstChunk-1:1/0;return e.entries.forEach((function(e){for(var t=e.count,U=e.delta,i=0;i<t;i++)l={dts:u,duration:U,size:c[h]||n.sampleSize,offset:s[V]+p,index:h},B&&(l.keyframe=a[h],l.keyframe&&R++,l.gopId=R),F&&h<F.length&&(l.pts=l.dts+F[h]),Q.push(l),u+=U,++h<S?p+=l.size:(V++,p=0,V>=m&&(Z++,m=o[Z+1]?o[Z+1].firstChunk-1:1/0),S+=o[Z].samplesPerChunk)})),Q}function Li(e,t){return e.dataReferenceIndex=Ji(t,6),e.width=Ji(t,24),e.height=Ji(t,26),e.horizresolution=Wi(t,28),e.vertresolution=Wi(t,32),e.frameCount=Ji(t,40),e.depth=Ji(t,74),78}function Xi(e,t){return e.dataReferenceIndex=Ji(t,6),e.channelCount=Ji(t,16),e.sampleSize=Ji(t,18),e.sampleRate=Wi(t,24)/65536,28}function xi(e,t,n){if(e){if(e.size!==e.data.length)throw new Error("box ".concat(e.type," size !== data.length"));var U={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(U.version=e.data[e.headerSize],U.flags=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),U.headerSize+=4),n(U,e.data.subarray(U.headerSize),U.start+U.headerSize),U}}var Di=function(){for(var e=[],t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];return n.forEach((function(t){e.push(function(e,t,n){for(var U=String(n),i=t>>0,r=Math.ceil(i/U.length),a=[],F=String(e);r--;)a.push(U);return a.join("").substring(0,i-F.length)+F}(Number(t).toString(16),2,0))})),e[0]};var Gi=function(){function e(){jU(this,e),this.buffer=new Uint8Array(0)}return zU(e,[{key:"write",value:function(){for(var e=this,t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];n.forEach((function(t){t?e.buffer=function(e){for(var t=0,n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];U.forEach((function(e){t+=e.length}));var r=new e(t),a=0;return U.forEach((function(e){r.set(e,a),a+=e.length})),r}(Uint8Array,e.buffer,t):window.console.warn(t)}))}}],[{key:"writeUint16",value:function(e){return new Uint8Array([e>>8&255,255&e])}},{key:"writeUint32",value:function(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}]),e}(),Ii=Math.pow(2,32)-1,Mi=function(){function e(){jU(this,e)}return zU(e,null,[{key:"box",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),U=1;U<t;U++)n[U-1]=arguments[U];var i=8+(n=n.filter(Boolean)).reduce((function(e,t){return e+t.byteLength}),0),r=new Uint8Array(i);r[0]=i>>24&255,r[1]=i>>16&255,r[2]=i>>8&255,r[3]=255&i,r.set(e,4);var a=8;return n.forEach((function(e){r.set(e,a),a+=e.byteLength})),r}},{key:"FullBox",value:function(t,n,U){for(var i=arguments.length,r=new Array(i>3?i-3:0),a=3;a<i;a++)r[a-3]=arguments[a];return e.box.apply(e,[t,new Uint8Array([n,U>>16&255,U>>8&255,255&U])].concat(r))}},{key:"ftyp",value:function(t){return t.find((function(e){return e.type===ni&&e.codecType===ai}))?e.FTYPHEV1:e.FTYPAVC1}},{key:"initSegment",value:function(t){return Si(e.ftyp(t),e.moov(t))}},{key:"pssh",value:function(t){var n=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],bi(t.kid),[0,0,0,0]));return e.box(e.types.pssh,n)}},{key:"moov",value:function(t){if(t[0].useEME&&(t[0].encv||t[0].enca)){t[0].pssh||(t[0].pssh={kid:t[0].kid});var n=this.pssh(t[0].pssh);return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale),e.mvex(t)].concat(qU(t.map((function(t){return e.trak(t)}))),[n]))}return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale)].concat(qU(t.map((function(t){return e.trak(t)}))),[e.mvex(t)]))}},{key:"mvhd",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,t>>24&255,t>>16&255,t>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.tkhdDuration||0,t.width,t.height),e.mdia(t))}},{key:"tkhd",value:function(t,n){var U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,U>>8&255,255&U,0,0,i>>8&255,255&i,0,0]))}},{key:"edts",value:function(t){return e.box(e.types.edts,e.elst(t))}},{key:"elst",value:function(t){t.entries;var n=t.entriesData,U=t.version;return e.FullBox(e.types.elst,U,0,n)}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minf(t))}},{key:"mdhd",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n,t>>24&255,t>>16&255,t>>8&255,255&t,85,196,0,0]))}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"minf",value:function(t){return e.box(e.types.minf,t.type===ni?e.VMHD:e.SMHD,e.DINF,e.stbl(t))}},{key:"stbl",value:function(t){var n=[];return t&&t.ext&&t.ext.stss&&n.push(e.stss(t.ext.stss.entries)),e.box(e.types.stbl,e.stsd(t),e.STTS,n[0],e.STSC,e.STSZ,e.STCO)}},{key:"stsd",value:function(t){var n;return n="audio"===t.type?t.useEME&&t.enca?e.enca(t):e.mp4a(t):t.useEME&&t.encv?e.encv(t):e.avc1hev1vvc1(t),e.box(e.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),n)}},{key:"enca",value:function(t){var n=t.enca.channelCount,U=t.enca.sampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,U>>8&255,255&U,0,0]),r=e.esds(t.config),a=e.sinf(t.enca);return e.box(e.types.enca,i,r,a)}},{key:"encv",value:function(t){var n,U,i=t.sps.length>0?t.sps[0]:[],r=t.pps.length>0?t.pps[0]:[],a=t.width,F=t.height,l=t.sarRatio[0],Q=t.sarRatio[1],d=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a>>8&255,255&a,F>>8&255,255&F,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o=new Uint8Array((n=(U=[1,i[1],i[2],i[3],255,225,i.length>>>8&255,255&i.length]).concat.apply(U,qU(i)).concat([1,r.length>>>8&255,255&r.length])).concat.apply(n,qU(r))),s=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),c=e.sinf(t.encv),B=new Uint8Array([l>>24,l>>16&255,l>>8&255,255&l,Q>>24,Q>>16&255,Q>>8&255,255&Q]);return e.box(e.types.encv,d,e.box(e.types.avcC,o),e.box(e.types.btrt,s),c,e.box(e.types.pasp,B))}},{key:"schi",value:function(t){var n=new Uint8Array([]),U=e.tenc(t);return e.box(e.types.schi,n,U)}},{key:"tenc",value:function(t){var n=new Uint8Array([0,0,0,0,0,0,255&t.default_IsEncrypted,255&t.default_IV_size].concat(bi(t.default_KID)));return e.box(e.types.tenc,n)}},{key:"sinf",value:function(t){var n=new Uint8Array([]),U=new Uint8Array([t.data_format.charCodeAt(0),t.data_format.charCodeAt(1),t.data_format.charCodeAt(2),t.data_format.charCodeAt(3)]),i=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),r=e.schi(t);return e.box(e.types.sinf,n,e.box(e.types.frma,U),e.box(e.types.schm,i),r)}},{key:"avc1hev1vvc1",value:function(t){var n,U;t.codecType===ai?(n=e.hvcC(t),U=e.types.hvc1):t.codecType===Fi?(n=e.vvcC(t),U=e.types.bvc2):(n=e.avcC(t),U=e.types.avc1);var i=[new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),n];return t.codecType===ai?i.push(e.box(e.types.fiel,new Uint8Array([1,0]))):t.sarRatio&&t.sarRatio.length>1&&i.push(e.pasp(t.sarRatio)),e.box.apply(e,[U].concat(i))}},{key:"avcC",value:function(t){var n,U,i,r=[],a=[];return t.sps.forEach((function(e){i=e.byteLength,r.push(i>>>8&255),r.push(255&i),r.push.apply(r,qU(e))})),t.pps.forEach((function(e){i=e.byteLength,a.push(i>>>8&255),a.push(255&i),a.push.apply(a,qU(e))})),e.box(e.types.avcC,new Uint8Array((n=(U=[1,r[3],r[4],r[5],255,224|t.sps.length]).concat.apply(U,r).concat([t.pps.length])).concat.apply(n,a)))}},{key:"vvcC",value:function(t){var n=t.vvcC;return e.box(e.types.bv2C,new Uint8Array(n))}},{key:"hvcC",value:function(t){var n=t.hvcC;if(n instanceof ArrayBuffer||n instanceof Uint8Array)return n;var U,i=t.vps,r=t.sps,a=t.pps;if(n){var F=n.generalProfileCompatibilityFlags,l=n.generalConstraintIndicatorFlags,Q=(i.length&&1)+(r.length&&1)+(a.length&&1);U=[1,n.generalProfileSpace<<6|n.generalTierFlag<<5|n.generalProfileIdc,F>>>24,F>>>16,F>>>8,F,l[0],l[1],l[2],l[3],l[4],l[5],n.generalLevelIdc,240,0,252,252|n.chromaFormatIdc,248|n.bitDepthLumaMinus8,248|n.bitDepthChromaMinus8,0,0,n.numTemporalLayers<<3|n.temporalIdNested<<2|3,Q];var d=function(e){var t;U.push(e.length>>8,e.length),(t=U).push.apply(t,qU(e))};i.length&&(U.push(160,0,i.length),i.forEach(d)),r.length&&(U.push(161,0,r.length),r.forEach(d)),a.length&&(U.push(162,0,a.length),a.forEach(d))}else U=[1,1,96,0,0,0,144,0,0,0,0,0,93,240,0,252,253,248,248,0,0,15,3,160,0,1,0,24,64,1,12,1,255,255,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,153,152,9,161,0,1,0,45,66,1,1,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,160,2,128,128,45,22,89,153,164,147,43,154,128,128,128,130,0,0,3,0,2,0,0,3,0,50,16,162,0,1,0,7,68,1,193,114,180,98,64];return e.box(e.types.hvcC,new Uint8Array(U))}},{key:"pasp",value:function(t){var n=AU(t,2),U=n[0],i=n[1];return e.box(e.types.pasp,new Uint8Array([U>>24,U>>16&255,U>>8&255,255&U,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"mp4a",value:function(t){return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.sampleRate>>8&255,255&t.sampleRate,0,0]),t.config.length?e.esds(t.config):void 0)}},{key:"esds",value:function(t){var n=t.length;return e.box(e.types.esds,new Uint8Array([0,0,0,0,3,23+n,0,0,0,4,15+n,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([n]).concat(t).concat([6,1,2])))}},{key:"mvex",value:function(t){return e.box.apply(e,[e.types.mvex].concat(qU(t.map((function(t){return e.trex(t.id)})))))}},{key:"trex",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trex1",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}},{key:"trex2",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}},{key:"moof",value:function(t){return e.box.apply(e,[e.types.moof,e.mfhd(t[0].samples?t[0].samples[0].gopId:0)].concat(qU(t.map((function(t){return e.traf(t)})))))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"traf",value:function(t){var n=e.tfhd(t.id),U=e.tfdt(t.baseMediaDecodeTime),i=0;if(t.isVideo&&t.videoSenc&&t.videoSenc.forEach((function(e){i+=8,e.subsamples&&e.subsamples.length&&(i+=2,i+=6*e.subsamples.length)})),t.videoSencLength=i,t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)){if(t.isVideoEncryption){if(t.isVideo){var r=e.saiz(t),a=e.saio(t),F=e.trun1(t),l=e.senc(t);return e.box(e.types.traf,n,U,r,a,F,l)}if(t.isAudioEncryption){var Q=e.sbgp(),d=e.saiz(t),o=e.saio(t),s=e.senc(t),c=e.trun1(t);return e.box(e.types.traf,n,U,Q,d,o,s,c)}var B=e.sbgp(),R=e.trun1(t);return e.box(e.types.traf,n,U,B,R)}if(t.isVideo){var u=e.trun1(t);return e.box(e.types.traf,n,U,u)}var h=e.sbgp(),V=e.saiz(t),Z=e.saio(t),p=e.senc(t),S=e.trun1(t);return e.box(e.types.traf,n,U,h,V,Z,p,S)}var m=e.sdtp(t);return e.box(e.types.traf,n,U,m,e.trun(t.samples,m.byteLength+76))}},{key:"sdtp",value:function(t){var n=new Gi;return t.samples.forEach((function(e){n.write(new Uint8Array(t.isVideo?[e.keyframe?32:16]:[16]))})),e.box(e.types.sdtp,this.extension(0,0),n.buffer)}},{key:"trun1",value:function(t){var n=new Gi,U=Gi.writeUint32(t.samples.length),i=null;if(t.isVideo){var r=t.videoSencLength;i=Gi.writeUint32(76+16*t.samples.length+r+77),!t.isVideoEncryption&&t.isAudioEncryption&&(i=Gi.writeUint32(76+16*t.samples.length+20))}else{var a=76+12*t.samples.length+52;t.isAudioEncryption&&(a=76+12*t.samples.length+8*t.audioSenc.length+105),i=Gi.writeUint32(a)}return t.samples.forEach((function(e){n.write(Gi.writeUint32(e.duration)),n.write(Gi.writeUint32(e.size)),n.write(Gi.writeUint32(e.keyframe?33554432:65536)),t.isVideo&&n.write(Gi.writeUint32(e.cts?e.cts:0))})),e.box(e.types.trun,this.extension(0,t.flags),U,i,n.buffer)}},{key:"senc",value:function(t){var n=new Gi,U=t.samples.length,i=t.isVideo?16:8,r=t.isVideo?2:0,a=[],F=0;return t.isVideo?(a=t.videoSenc,F=t.videoSencLength):a=t.audioSenc,F=F||i*U,n.write(Gi.writeUint32(16+F),e.types.senc,this.extension(0,r)),n.write(Gi.writeUint32(U)),a.forEach((function(e){for(var t=0;t<e.InitializationVector.length;t++)n.write(new Uint8Array([e.InitializationVector[t]]));e.subsamples&&e.subsamples.length&&(n.write(Gi.writeUint16(e.subsamples.length)),e.subsamples.forEach((function(e){n.write(Gi.writeUint16(e.BytesOfClearData)),n.write(Gi.writeUint32(e.BytesOfProtectedData))})))})),n.buffer}},{key:"saio",value:function(t){var n=12*t.samples.length+141;!t.isVideo&&t.isAudioEncryption&&(n=149);var U=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,n>>24&255,n>>16&255,n>>8&255,255&n]);return e.box(e.types.saio,U)}},{key:"saiz",value:function(t){var n=t.samples.length,U=new Uint8Array([0,0,0,0,16,n>>24&255,n>>16&255,n>>8&255,255&n]);return e.box(e.types.saiz,U)}},{key:"sbgp",value:function(){var t=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return e.box(e.types.sbgp,this.extension(0,0),t)}},{key:"extension",value:function(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}},{key:"tfhd",value:function(t){return e.box(e.types.tfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"tfdt",value:function(t){var n=Math.floor(t/(Ii+1)),U=Math.floor(t%(Ii+1));return e.box(e.types.tfdt,new Uint8Array([1,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,U>>24,U>>16&255,U>>8&255,255&U]))}},{key:"trun",value:function(t,n){var U=t.length,i=12+16*U;n+=8+i;var r=new Uint8Array(i);r.set([0,0,15,1,U>>>24&255,U>>>16&255,U>>>8&255,255&U,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var a=0;a<U;a++){var F=t[a],l=F.duration,Q=F.size,d=F.flag,o=void 0===d?{}:d,s=F.cts,c=void 0===s?0:s;r.set([l>>>24&255,l>>>16&255,l>>>8&255,255&l,Q>>>24&255,Q>>>16&255,Q>>>8&255,255&Q,o.isLeading<<2|(null===o.dependsOn||void 0===o.dependsOn?1:o.dependsOn),o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|(null===o.isNonSyncSample||void 0===o.isNonSyncSample?1:o.isNonSyncSample),61440&o.degradationPriority,15&o.degradationPriority,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a)}return e.box(e.types.trun,r)}},{key:"moovMP4",value:function(t){return e.box.apply(e,[e.types.moov,e.mvhd(t[0].duration,t[0].timescale)].concat(qU(t.map((function(t){return e.trackMP4(t)})))))}},{key:"trackMP4",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.duration,t.width,t.height),e.mdiaMP4(t))}},{key:"mdiaMP4",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minfMP4(t))}},{key:"minfMP4",value:function(t){return e.box(e.types.minf,t.type===ni?e.VMHD:e.SMHD,e.DINF,e.stblMP4(t))}},{key:"stblMP4",value:function(t){var n=t.ext,U=[e.stsd(t),e.stts(n.stts),e.stsc(n.stsc),e.stsz(n.stsz),e.stco(n.stco)];return n.stss.length&&U.push(e.stss(n.stss)),n.ctts.length&&U.push(e.ctts(n.ctts)),e.box.apply(e,[e.types.stbl].concat(U))}},{key:"stts",value:function(t){var n=t.length,U=new Uint8Array(8*n),i=0;return t.forEach((function(e){var t=e.value,n=e.count;U.set([n>>24,n>>16&255,n>>8&255,255&n,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.stts,Si(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stsc",value:function(t){var n=t.length,U=new Uint8Array(12*n),i=0;return t.forEach((function(e){var t=e.firstChunk,n=e.samplesPerChunk,r=e.sampleDescIndex;U.set([t>>24,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,r>>24,r>>16&255,r>>8&255,255&r],i),i+=12})),e.box(e.types.stsc,Si(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stsz",value:function(t){var n=t.length,U=new Uint8Array(4*n),i=0;return t.forEach((function(e){U.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stsz,Si(new Uint8Array([0,0,0,0,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stco",value:function(t){var n=t.length,U=new Uint8Array(4*n),i=0;return t.forEach((function(e){U.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stco,Si(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"stss",value:function(t){var n=t.length,U=new Uint8Array(4*n),i=0;return t.forEach((function(e){U.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stss,Si(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"ctts",value:function(t){var n=t.length,U=new Uint8Array(8*n),i=0;return t.forEach((function(e){var t=e.value,n=e.count;U.set([n>>24,n>>16&255,n>>8&255,255&n,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.ctts,Si(new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n]),U))}},{key:"styp",value:function(){return e.box(e.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}},{key:"sidx",value:function(t){var n=t.timescale,U=t.samples[0].duration,i=U*t.samples.length,r=t.samples[0].sampleOffset*U,a=8;t.samples.forEach((function(e){a+=e.size}));var F=0;if(t.isVideo){var l,Q=0;t.videoSenc&&(l=t.videoSenc),t.isVideo&&l.forEach((function(e){Q+=8,e.subsamples&&e.subsamples.length&&(Q+=2,Q+=6*e.subsamples.length)})),t.videoSencLength=Q,F=a+141+16*t.samples.length+Q,t.useEME&&t.isAudioEncryption&&!t.isVideoEncryption&&(F=a+16*t.samples.length+84)}else F=a+116+12*t.samples.length,t.useEME&&t.isAudioEncryption&&(F=a+169+12*t.samples.length+8*t.audioSenc.length);var d=new Uint8Array([0,0,0,0,0,0,0,255&t.id,n>>24&255,n>>16&255,n>>8&255,255&n,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,0,0,0,1,0,F>>16&255,F>>8&255,255&F,i>>24&255,i>>16&255,i>>8&255,255&i,144,0,0,0]);return e.box(e.types.sidx,d)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();OU(Mi,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","edts","elst","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp","bvc2","bv2C"].reduce((function(e,t){return e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e}),Object.create(null))),OU(Mi,"HDLR_TYPES",{video:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),audio:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0])}),OU(Mi,"FTYPAVC1",Mi.box(Mi.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),OU(Mi,"FTYPHEV1",Mi.box(Mi.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),OU(Mi,"DINF",Mi.box(Mi.types.dinf,Mi.box(Mi.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),OU(Mi,"VMHD",Mi.box(Mi.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),OU(Mi,"SMHD",Mi.box(Mi.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),OU(Mi,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),OU(Mi,"STTS",Mi.box(Mi.types.stts,Mi.StblTable)),OU(Mi,"STSC",Mi.box(Mi.types.stsc,Mi.StblTable)),OU(Mi,"STSZ",Mi.box(Mi.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),OU(Mi,"STCO",Mi.box(Mi.types.stco,Mi.StblTable));var Yi=function(){function e(t,n){jU(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),e.disabled=n}return zU(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).debug.apply(t,[this._prefix].concat(U))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).log.apply(t,[this._prefix].concat(U))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).warn.apply(t,[this._prefix].concat(U))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var n=arguments.length,U=new Array(n),i=0;i<n;i++)U[i]=arguments[i];(t=console).error.apply(t,[this._prefix].concat(U))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();OU(Yi,"disabled",!0);for(var Ki=function(){function e(t,n,U){jU(this,e),this.videoTrack=t,this.audioTrack=n;var i=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=i&&Number(i[1])<50,this.log=new Yi("FMP4Remuxer",!U||!U.openLog||!U.openLog)}return zU(e,[{key:"remux",value:function(){var e,t,n,U,i,r=arguments.length>0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},F=this.videoTrack,l=this.audioTrack,Q=F.exist(),d=l.exist(),o=[];return r&&(a&&a.initMerge?(Q&&o.push(this.videoTrack),d&&o.push(this.audioTrack),n=Mi.initSegment(o)):(Q&&(e=Mi.initSegment([this.videoTrack])),d&&(t=Mi.initSegment([this.audioTrack])))),Q&&F.hasSample()&&(U=this._remuxVideo()),d&&l.hasSample()&&(i=this._remuxAudio()),F.samples=[],l.samples=[],{initSegment:n,videoInitSegment:e,audioInitSegment:t,videoSegment:U,audioSegment:i}}},{key:"_remuxVideo",value:function(){var e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});var t=e.samples,n=0;t.forEach((function(e){n+=e.units.reduce((function(e,t){return e+t.byteLength}),0),n+=4*e.units.length}));for(var U,i=new Uint8Array(n),r=new DataView(i.buffer),a=function(e,n){n=t[F];var a=0;n.units.forEach((function(t){r.setUint32(e,t.byteLength),e+=4,i.set(t,e),e+=t.byteLength,a+=4+t.byteLength})),n.size=a,Q=e,U=n},F=0,l=t.length,Q=0;F<l;F++)a(Q,U);var d=Mi.mdat(i);return Si(Mi.moof([e]),d)}},{key:"_remuxAudio",value:function(){var e=this.audioTrack,t=new Uint8Array(e.samples.reduce((function(e,t){return e+t.size}),0));e.samples.reduce((function(e,n){return t.set(n.data,e),e+n.size}),0);var n=Mi.mdat(t);return Si(Mi.moof([e]),n)}},{key:"reset",value:function(){this.videoTrack.reset(),this.audioTrack.reset()}}]),e}(),wi=function(){function e(){b(this,e)}return N(e,[{key:"mixIn",value:function(e){return Object.assign(this,e)}},{key:"clone",value:function(){var e=new this.constructor;return Object.assign(e,this),e}}],[{key:"create",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return x(this,t)}}]),e}(),Hi=function(e){g(n,e);var t=G(n);function n(){var e,U=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4*U.length;b(this,n),e=t.call(this);var r=U;if(r instanceof ArrayBuffer&&(r=new Uint8Array(r)),(r instanceof Int8Array||r instanceof Uint8ClampedArray||r instanceof Int16Array||r instanceof Uint16Array||r instanceof Int32Array||r instanceof Uint32Array||r instanceof Float32Array||r instanceof Float64Array)&&(r=new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),r instanceof Uint8Array){for(var a=r.byteLength,F=[],l=0;l<a;l+=1)F[l>>>2]|=r[l]<<24-l%4*8;e.words=F,e.sigBytes=a}else e.words=U,e.sigBytes=i;return e}return N(n,[{key:"toString",value:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:Pi).stringify(this)}},{key:"concat",value:function(e){var t=this.words,n=e.words,U=this.sigBytes,i=e.sigBytes;if(this.clamp(),U%4)for(var r=0;r<i;r+=1){var a=n[r>>>2]>>>24-r%4*8&255;t[U+r>>>2]|=a<<24-(U+r)%4*8}else for(var F=0;F<i;F+=4)t[U+F>>>2]=n[F>>>2];return this.sigBytes+=i,this}},{key:"clamp",value:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=Math.ceil(t/4)}},{key:"clone",value:function(){var e=I(C(n.prototype),"clone",this).call(this);return e.words=this.words.slice(0),e}}],[{key:"random",value:function(e){for(var t,U=[],i=function(e){var t=e,n=987654321,U=4294967295;return function(){var e=((n=36969*(65535&n)+(n>>16)&U)<<16)+(t=18e3*(65535&t)+(t>>16)&U)&U;return e/=4294967296,(e+=.5)*(Math.random()>.5?1:-1)}},r=0;r<e;r+=4){var a=i(4294967296*(t||Math.random()));t=987654071*a(),U.push(4294967296*a()|0)}return new n(U,e)}}]),n}(wi),Pi={stringify:function(e){for(var t=e.words,n=e.sigBytes,U=[],i=0;i<n;i+=1){var r=t[i>>>2]>>>24-i%4*8&255;U.push((r>>>4).toString(16)),U.push((15&r).toString(16))}return U.join("")},parse:function(e){for(var t=e.length,n=[],U=0;U<t;U+=2)n[U>>>3]|=parseInt(e.substr(U,2),16)<<24-U%8*4;return new Hi(n,t/2)}},ji=function(e){for(var t=e.length,n=[],U=0;U<t;U+=1)n[U>>>2]|=(255&e.charCodeAt(U))<<24-U%4*8;return new Hi(n,t)},_i=function(e){return ji(unescape(encodeURIComponent(e)))},zi=function(e){g(n,e);var t=G(n);function n(){var e;return b(this,n),(e=t.call(this))._minBufferSize=0,e}return N(n,[{key:"reset",value:function(){this._data=new Hi,this._nDataBytes=0}},{key:"_append",value:function(e){var t=e;"string"==typeof t&&(t=_i(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}},{key:"_process",value:function(e){var t,n=this._data,U=this.blockSize,i=n.words,r=n.sigBytes,a=r/(4*U),F=(a=e?Math.ceil(a):Math.max((0|a)-this._minBufferSize,0))*U,l=Math.min(4*F,r);if(F){for(var Q=0;Q<F;Q+=U)this._doProcessBlock(i,Q);t=i.splice(0,F),n.sigBytes-=l}return new Hi(t,l)}},{key:"clone",value:function(){var e=I(C(n.prototype),"clone",this).call(this);return e._data=this._data.clone(),e}}]),n}(wi),Oi=function(e){g(n,e);var t=G(n);function n(e){var U;return b(this,n),(U=t.call(this)).blockSize=16,U.cfg=Object.assign(new wi,e),U.reset(),U}return N(n,[{key:"reset",value:function(){I(C(n.prototype),"reset",this).call(this),this._doReset()}},{key:"update",value:function(e){return this._append(e),this._process(),this}},{key:"finalize",value:function(e){return e&&this._append(e),this._doFinalize()}}],[{key:"_createHelper",value:function(e){return function(t,n){return new e(n).finalize(t)}}},{key:"_createHmacHelper",value:function(e){return function(t,n){return new Ai(e,n).finalize(t)}}}]),n}(zi),Ai=function(e){g(n,e);var t=G(n);function n(e,U){var i;b(this,n),i=t.call(this);var r=new e;i._hasher=r;var a=U;"string"==typeof a&&(a=_i(a));var F=r.blockSize,l=4*F;a.sigBytes>l&&(a=r.finalize(U)),a.clamp();var Q=a.clone();i._oKey=Q;var d=a.clone();i._iKey=d;for(var o=Q.words,s=d.words,c=0;c<F;c+=1)o[c]^=1549556828,s[c]^=909522486;return Q.sigBytes=l,d.sigBytes=l,i.reset(),i}return N(n,[{key:"reset",value:function(){var e=this._hasher;e.reset(),e.update(this._iKey)}},{key:"update",value:function(e){return this._hasher.update(e),this}},{key:"finalize",value:function(e){var t=this._hasher,n=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(n))}}]),n}(wi),qi={stringify:function(e){var t=e.words,n=e.sigBytes,U=this._map;e.clamp();for(var i=[],r=0;r<n;r+=3)for(var a=(t[r>>>2]>>>24-r%4*8&255)<<16|(t[r+1>>>2]>>>24-(r+1)%4*8&255)<<8|t[r+2>>>2]>>>24-(r+2)%4*8&255,F=0;F<4&&r+.75*F<n;F+=1)i.push(U.charAt(a>>>6*(3-F)&63));var l=U.charAt(64);if(l)for(;i.length%4;)i.push(l);return i.join("")},parse:function(e){var t=e.length,n=this._map,U=this._reverseMap;if(!U){this._reverseMap=[],U=this._reverseMap;for(var i=0;i<n.length;i+=1)U[n.charCodeAt(i)]=i}var r=n.charAt(64);if(r){var a=e.indexOf(r);-1!==a&&(t=a)}return function(e,t,n){for(var U=[],i=0,r=0;r<t;r+=1)if(r%4){var a=n[e.charCodeAt(r-1)]<<r%4*2|n[e.charCodeAt(r)]>>>6-r%4*2;U[i>>>2]|=a<<24-i%4*8,i+=1}return Hi.create(U,i)}(e,t,U)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},$i=[],er=0;er<64;er+=1)$i[er]=4294967296*Math.abs(Math.sin(er+1))|0;var tr=function(e,t,n,U,i,r,a){var F=e+(t&n|~t&U)+i+a;return(F<<r|F>>>32-r)+t},nr=function(e,t,n,U,i,r,a){var F=e+(t&U|n&~U)+i+a;return(F<<r|F>>>32-r)+t},Ur=function(e,t,n,U,i,r,a){var F=e+(t^n^U)+i+a;return(F<<r|F>>>32-r)+t},ir=function(e,t,n,U,i,r,a){var F=e+(n^(t|~U))+i+a;return(F<<r|F>>>32-r)+t},rr=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,[{key:"_doReset",value:function(){this._hash=new Hi([1732584193,4023233417,2562383102,271733878])}},{key:"_doProcessBlock",value:function(e,t){for(var n=e,U=0;U<16;U+=1){var i=t+U,r=e[i];n[i]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var a=this._hash.words,F=n[t+0],l=n[t+1],Q=n[t+2],d=n[t+3],o=n[t+4],s=n[t+5],c=n[t+6],B=n[t+7],R=n[t+8],u=n[t+9],h=n[t+10],V=n[t+11],Z=n[t+12],p=n[t+13],S=n[t+14],m=n[t+15],J=a[0],W=a[1],k=a[2],E=a[3];J=tr(J,W,k,E,F,7,$i[0]),E=tr(E,J,W,k,l,12,$i[1]),k=tr(k,E,J,W,Q,17,$i[2]),W=tr(W,k,E,J,d,22,$i[3]),J=tr(J,W,k,E,o,7,$i[4]),E=tr(E,J,W,k,s,12,$i[5]),k=tr(k,E,J,W,c,17,$i[6]),W=tr(W,k,E,J,B,22,$i[7]),J=tr(J,W,k,E,R,7,$i[8]),E=tr(E,J,W,k,u,12,$i[9]),k=tr(k,E,J,W,h,17,$i[10]),W=tr(W,k,E,J,V,22,$i[11]),J=tr(J,W,k,E,Z,7,$i[12]),E=tr(E,J,W,k,p,12,$i[13]),k=tr(k,E,J,W,S,17,$i[14]),W=tr(W,k,E,J,m,22,$i[15]),J=nr(J,W,k,E,l,5,$i[16]),E=nr(E,J,W,k,c,9,$i[17]),k=nr(k,E,J,W,V,14,$i[18]),W=nr(W,k,E,J,F,20,$i[19]),J=nr(J,W,k,E,s,5,$i[20]),E=nr(E,J,W,k,h,9,$i[21]),k=nr(k,E,J,W,m,14,$i[22]),W=nr(W,k,E,J,o,20,$i[23]),J=nr(J,W,k,E,u,5,$i[24]),E=nr(E,J,W,k,S,9,$i[25]),k=nr(k,E,J,W,d,14,$i[26]),W=nr(W,k,E,J,R,20,$i[27]),J=nr(J,W,k,E,p,5,$i[28]),E=nr(E,J,W,k,Q,9,$i[29]),k=nr(k,E,J,W,B,14,$i[30]),W=nr(W,k,E,J,Z,20,$i[31]),J=Ur(J,W,k,E,s,4,$i[32]),E=Ur(E,J,W,k,R,11,$i[33]),k=Ur(k,E,J,W,V,16,$i[34]),W=Ur(W,k,E,J,S,23,$i[35]),J=Ur(J,W,k,E,l,4,$i[36]),E=Ur(E,J,W,k,o,11,$i[37]),k=Ur(k,E,J,W,B,16,$i[38]),W=Ur(W,k,E,J,h,23,$i[39]),J=Ur(J,W,k,E,p,4,$i[40]),E=Ur(E,J,W,k,F,11,$i[41]),k=Ur(k,E,J,W,d,16,$i[42]),W=Ur(W,k,E,J,c,23,$i[43]),J=Ur(J,W,k,E,u,4,$i[44]),E=Ur(E,J,W,k,Z,11,$i[45]),k=Ur(k,E,J,W,m,16,$i[46]),W=Ur(W,k,E,J,Q,23,$i[47]),J=ir(J,W,k,E,F,6,$i[48]),E=ir(E,J,W,k,B,10,$i[49]),k=ir(k,E,J,W,S,15,$i[50]),W=ir(W,k,E,J,s,21,$i[51]),J=ir(J,W,k,E,Z,6,$i[52]),E=ir(E,J,W,k,d,10,$i[53]),k=ir(k,E,J,W,h,15,$i[54]),W=ir(W,k,E,J,l,21,$i[55]),J=ir(J,W,k,E,R,6,$i[56]),E=ir(E,J,W,k,m,10,$i[57]),k=ir(k,E,J,W,c,15,$i[58]),W=ir(W,k,E,J,p,21,$i[59]),J=ir(J,W,k,E,o,6,$i[60]),E=ir(E,J,W,k,V,10,$i[61]),k=ir(k,E,J,W,Q,15,$i[62]),W=ir(W,k,E,J,u,21,$i[63]),a[0]=a[0]+J|0,a[1]=a[1]+W|0,a[2]=a[2]+k|0,a[3]=a[3]+E|0}},{key:"_doFinalize",value:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,U=8*e.sigBytes;t[U>>>5]|=128<<24-U%32;var i=Math.floor(n/4294967296),r=n;t[15+(U+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(U+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var a=this._hash,F=a.words,l=0;l<4;l+=1){var Q=F[l];F[l]=16711935&(Q<<8|Q>>>24)|4278255360&(Q<<24|Q>>>8)}return a}},{key:"clone",value:function(){var e=I(C(n.prototype),"clone",this).call(this);return e._hash=this._hash.clone(),e}}]),n}(Oi);Oi._createHelper(rr),Oi._createHmacHelper(rr);var ar=function(e){g(n,e);var t=G(n);function n(e){var U;return b(this,n),(U=t.call(this)).cfg=Object.assign(new wi,{keySize:4,hasher:rr,iterations:1},e),U}return N(n,[{key:"compute",value:function(e,t){for(var n,U=this.cfg,i=U.hasher.create(),r=Hi.create(),a=r.words,F=U.keySize,l=U.iterations;a.length<F;){n&&i.update(n),n=i.update(e).finalize(t),i.reset();for(var Q=1;Q<l;Q+=1)n=i.finalize(n),i.reset();r.concat(n)}return r.sigBytes=4*F,r}}]),n}(wi),Fr=function(e){g(n,e);var t=G(n);function n(e,U,i){var r;return b(this,n),(r=t.call(this)).cfg=Object.assign(new wi,i),r._xformMode=e,r._key=U,r.reset(),r}return N(n,[{key:"reset",value:function(){I(C(n.prototype),"reset",this).call(this),this._doReset()}},{key:"process",value:function(e){return this._append(e),this._process()}},{key:"finalize",value:function(e){return e&&this._append(e),this._doFinalize()}}],[{key:"createEncryptor",value:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)}},{key:"createDecryptor",value:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)}},{key:"_createHelper",value:function(e){var t=function(e){return"string"==typeof e?hr:Rr};return{encrypt:function(n,U,i){return t(U).encrypt(e,n,U,i)},decrypt:function(n,U,i){return t(U).decrypt(e,n,U,i)}}}}]),n}(zi);Fr._ENC_XFORM_MODE=1,Fr._DEC_XFORM_MODE=2,Fr.keySize=4,Fr.ivSize=4;var lr=function(e){g(n,e);var t=G(n);function n(e,U){var i;return b(this,n),(i=t.call(this))._cipher=e,i._iv=U,i}return N(n,null,[{key:"createEncryptor",value:function(e,t){return this.Encryptor.create(e,t)}},{key:"createDecryptor",value:function(e,t){return this.Decryptor.create(e,t)}}]),n}(wi);function Qr(e,t,n){var U,i=e,r=this._iv;r?(U=r,this._iv=void 0):U=this._prevBlock;for(var a=0;a<n;a+=1)i[t+a]^=U[a]}var dr=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n)}(lr);dr.Encryptor=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,[{key:"processBlock",value:function(e,t){var n=this._cipher,U=n.blockSize;Qr.call(this,e,t,U),n.encryptBlock(e,t),this._prevBlock=e.slice(t,t+U)}}]),n}(dr),dr.Decryptor=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,[{key:"processBlock",value:function(e,t){var n=this._cipher,U=n.blockSize,i=e.slice(t,t+U);n.decryptBlock(e,t),Qr.call(this,e,t,U),this._prevBlock=i}}]),n}(dr);var or={pad:function(e,t){for(var n=4*t,U=n-e.sigBytes%n,i=U<<24|U<<16|U<<8|U,r=[],a=0;a<U;a+=4)r.push(i);var F=Hi.create(r,U);e.concat(F)},unpad:function(e){var t=e,n=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=n}},sr=function(e){g(n,e);var t=G(n);function n(e,U,i){var r;return b(this,n),(r=t.call(this,e,U,Object.assign({mode:dr,padding:or},i))).blockSize=4,r}return N(n,[{key:"reset",value:function(){var e;I(C(n.prototype),"reset",this).call(this);var t=this.cfg,U=t.iv,i=t.mode;this._xformMode===this.constructor._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode=e.call(i,this,U&&U.words),this._mode.__creator=e}},{key:"_doProcessBlock",value:function(e,t){this._mode.processBlock(e,t)}},{key:"_doFinalize",value:function(){var e,t=this.cfg.padding;return this._xformMode===this.constructor._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e}}]),n}(Fr),cr=function(e){g(n,e);var t=G(n);function n(e){var U;return b(this,n),(U=t.call(this)).mixIn(e),U}return N(n,[{key:"toString",value:function(e){return(e||this.formatter).stringify(this)}}]),n}(wi),Br={stringify:function(e){var t=e.ciphertext,n=e.salt;return(n?Hi.create([1398893684,1701076831]).concat(n).concat(t):t).toString(qi)},parse:function(e){var t,n=qi.parse(e),U=n.words;return 1398893684===U[0]&&1701076831===U[1]&&(t=Hi.create(U.slice(2,4)),U.splice(0,4),n.sigBytes-=16),cr.create({ciphertext:n,salt:t})}},Rr=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,null,[{key:"encrypt",value:function(e,t,n,U){var i=Object.assign(new wi,this.cfg,U),r=e.createEncryptor(n,i),a=r.finalize(t),F=r.cfg;return cr.create({ciphertext:a,key:n,iv:F.iv,algorithm:e,mode:F.mode,padding:F.padding,blockSize:r.blockSize,formatter:i.format})}},{key:"decrypt",value:function(e,t,n,U){var i=t,r=Object.assign(new wi,this.cfg,U);return i=this._parse(i,r.format),e.createDecryptor(n,r).finalize(i.ciphertext)}},{key:"_parse",value:function(e,t){return"string"==typeof e?t.parse(e,this):e}}]),n}(wi);Rr.cfg=Object.assign(new wi,{format:Br});var ur={execute:function(e,t,n,U){var i=U;i||(i=Hi.random(8));var r=ar.create({keySize:t+n}).compute(e,i),a=Hi.create(r.words.slice(t),4*n);return r.sigBytes=4*t,cr.create({key:r,iv:a,salt:i})}},hr=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,null,[{key:"encrypt",value:function(e,t,n,U){var i=Object.assign(new wi,this.cfg,U),r=i.kdf.execute(n,e.keySize,e.ivSize);i.iv=r.iv;var a=Rr.encrypt.call(this,e,t,r.key,i);return a.mixIn(r),a}},{key:"decrypt",value:function(e,t,n,U){var i=t,r=Object.assign(new wi,this.cfg,U);i=this._parse(i,r.format);var a=r.kdf.execute(n,e.keySize,e.ivSize,i.salt);return r.iv=a.iv,Rr.decrypt.call(this,e,i,a.key,r)}}]),n}(Rr);hr.cfg=Object.assign(Rr.cfg,{kdf:ur});for(var Vr=[],Zr=[],pr=[],Sr=[],mr=[],Jr=[],Wr=[],kr=[],Er=[],yr=[],fr=[],br=0;br<256;br+=1)fr[br]=br<128?br<<1:br<<1^283;for(var vr=0,Nr=0,Tr=0;Tr<256;Tr+=1){var gr=Nr^Nr<<1^Nr<<2^Nr<<3^Nr<<4;gr=gr>>>8^255&gr^99,Vr[vr]=gr,Zr[gr]=vr;var Cr=fr[vr],Lr=fr[Cr],Xr=fr[Lr],xr=257*fr[gr]^16843008*gr;pr[vr]=xr<<24|xr>>>8,Sr[vr]=xr<<16|xr>>>16,mr[vr]=xr<<8|xr>>>24,Jr[vr]=xr,xr=16843009*Xr^65537*Lr^257*Cr^16843008*vr,Wr[gr]=xr<<24|xr>>>8,kr[gr]=xr<<16|xr>>>16,Er[gr]=xr<<8|xr>>>24,yr[gr]=xr,vr?(vr=Cr^fr[fr[fr[Xr^Cr]]],Nr^=fr[fr[Nr]]):vr=Nr=1}var Dr=[0,1,2,4,8,16,32,64,128,27,54],Gr=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,[{key:"_doReset",value:function(){var e;if(!this._nRounds||this._keyPriorReset!==this._key){this._keyPriorReset=this._key;var t=this._keyPriorReset,n=t.words,U=t.sigBytes/4;this._nRounds=U+6;var i=4*(this._nRounds+1);this._keySchedule=[];for(var r=this._keySchedule,a=0;a<i;a+=1)a<U?r[a]=n[a]:(e=r[a-1],a%U?U>6&&a%U==4&&(e=Vr[e>>>24]<<24|Vr[e>>>16&255]<<16|Vr[e>>>8&255]<<8|Vr[255&e]):(e=Vr[(e=e<<8|e>>>24)>>>24]<<24|Vr[e>>>16&255]<<16|Vr[e>>>8&255]<<8|Vr[255&e],e^=Dr[a/U|0]<<24),r[a]=r[a-U]^e);this._invKeySchedule=[];for(var F=this._invKeySchedule,l=0;l<i;l+=1){var Q=i-l;e=l%4?r[Q]:r[Q-4],F[l]=l<4||Q<=4?e:Wr[Vr[e>>>24]]^kr[Vr[e>>>16&255]]^Er[Vr[e>>>8&255]]^yr[Vr[255&e]]}}}},{key:"encryptBlock",value:function(e,t){this._doCryptBlock(e,t,this._keySchedule,pr,Sr,mr,Jr,Vr)}},{key:"decryptBlock",value:function(e,t){var n=e,U=n[t+1];n[t+1]=n[t+3],n[t+3]=U,this._doCryptBlock(n,t,this._invKeySchedule,Wr,kr,Er,yr,Zr),U=n[t+1],n[t+1]=n[t+3],n[t+3]=U}},{key:"_doCryptBlock",value:function(e,t,n,U,i,r,a,F){for(var l=e,Q=this._nRounds,d=l[t]^n[0],o=l[t+1]^n[1],s=l[t+2]^n[2],c=l[t+3]^n[3],B=4,R=1;R<Q;R+=1){var u=U[d>>>24]^i[o>>>16&255]^r[s>>>8&255]^a[255&c]^n[B];B+=1;var h=U[o>>>24]^i[s>>>16&255]^r[c>>>8&255]^a[255&d]^n[B];B+=1;var V=U[s>>>24]^i[c>>>16&255]^r[d>>>8&255]^a[255&o]^n[B];B+=1;var Z=U[c>>>24]^i[d>>>16&255]^r[o>>>8&255]^a[255&s]^n[B];B+=1,d=u,o=h,s=V,c=Z}var p=(F[d>>>24]<<24|F[o>>>16&255]<<16|F[s>>>8&255]<<8|F[255&c])^n[B];B+=1;var S=(F[o>>>24]<<24|F[s>>>16&255]<<16|F[c>>>8&255]<<8|F[255&d])^n[B];B+=1;var m=(F[s>>>24]<<24|F[c>>>16&255]<<16|F[d>>>8&255]<<8|F[255&o])^n[B];B+=1;var J=(F[c>>>24]<<24|F[d>>>16&255]<<16|F[o>>>8&255]<<8|F[255&s])^n[B];B+=1,l[t]=p,l[t+1]=S,l[t+2]=m,l[t+3]=J}}]),n}(sr);Gr.keySize=8;var Ir=sr._createHelper(Gr),Mr=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n)}(lr);Mr.Encryptor=function(e){g(n,e);var t=G(n);function n(){return b(this,n),t.apply(this,arguments)}return N(n,[{key:"processBlock",value:function(e,t){var n=e,U=this._cipher,i=U.blockSize,r=this._iv,a=this._counter;r&&(this._counter=r.slice(0),a=this._counter,this._iv=void 0);var F=a.slice(0);U.encryptBlock(F,0),a[i-1]=a[i-1]+1|0;for(var l=0;l<i;l+=1)n[t+l]^=F[l]}}]),n}(Mr),Mr.Decryptor=Mr.Encryptor;var Yr={pad:function(){},unpad:function(){}},Kr={decryptWordArray:function(e,t,n){var U=Pi.parse(t),i=Pi.parse(fi(n)),r=Hi.create(new Uint8Array(e)),a=Ir.decrypt(cr.create({ciphertext:r}),U,{iv:i,mode:Mr,padding:Yr});return Kr.wordArrayToUint8Array(a)},wordArrayToUint8Array:function(e){for(var t=e.sigBytes,n=e.words,U=new Uint8Array(t),i=0,r=0;i!==t;){var a=n[r++];if(U[i++]=(4278190080&a)>>>24,i===t)break;if(U[i++]=(16711680&a)>>>16,i===t)break;if(U[i++]=(65280&a)>>>8,i===t)break;U[i++]=255&a}return U},decoderAESCTRData:function(e,t,n){if(e.videoSenc){var U=e.kidValue,i=e.videoSenc;e.samples.forEach((function(t,r){var a=i[r],F=t.data,l=[],Q=[],d=a.InitializationVector;if(a.subsamples&&a.subsamples.length)a.subsamples.forEach((function(e){var t=e.BytesOfClearData+e.BytesOfProtectedData,n=F.slice(0,t);l.push(n.slice(0,e.BytesOfClearData)),Q.push(n.slice(e.BytesOfClearData)),F=F.slice(t)}));else{var o=t.size;l.push(F.slice(0,0)),Q.push(F.slice(0,o)),F=F.slice(o)}var s=new Gi;s.write.apply(s,Q);var c=n?n(s.buffer,U,d):Kr.decryptWordArray(s.buffer,U,d),B=new Gi;l.forEach((function(e,t){var n=Q[t].length,U=c.slice(0,n);B.write(e),B.write(U),c=c.slice(n)})),e.samples[r].data=B.buffer}))}if(t.audioSenc){var r=t.kidValue,a=t.audioSenc;t.samples.forEach((function(e,U){var i=a[U],F=n?n(e.data,r,i.InitializationVector):Kr.decryptWordArray(e.data,r,i.InitializationVector);t.samples[U].data=F}))}}},wr=function(){function e(t,n,U,i){var r=this;jU(this,e),OU(this,"_videoSamples",[]),OU(this,"_audioSamples",[]),OU(this,"_lastRemainBuffer",[]),OU(this,"_lastRemainBufferStartPos",0),this.videoTrack=new oi,this.audioTrack=new si,this.metadataTrack=U||new Ri,this.log=new Yi("MP4Demuxer",!i||!i.openLog||!i.openLog),t&&t.forEach((function(e){var t;(t=r._videoSamples).push.apply(t,qU(e.frames))})),n&&n.forEach((function(e){var t;(t=r._audioSamples).push.apply(t,qU(e.frames))}))}return zU(e,[{key:"parseSamples",value:function(e){if(!e)throw new Error("moov is required");if(this.videoTrack.codec||this.audioTrack.codec||(gi.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc),!this._audioSamples.length&&!this._videoSamples.length){var t=gi.moovToSamples(e);if(!t)throw new Error("cannot parse samples from moov box");this._videoSamples=t.videoSamples||[],this._audioSamples=t.audioSamples||[]}}},{key:"demux",value:function(e,t,n,U,i){this.parseSamples(i);var r,a,F,l=this.videoTrack,Q=this.audioTrack;if(l.samples=[],Q.samples=[],n){for(var d,o=0,s=n[0],c=n[1];s<=c;s++){if(!(r=this._videoSamples[s]))throw new Error("cannot found video frame #".concat(s));F=r.offset-t,a=e.subarray(F,F+r.size),(d=new ci("number"==typeof r.pts?r.pts:r.dts,r.dts)).duration=r.duration,d.gopId=r.gopId,r.keyframe&&d.setToKeyframe();for(var B=0,R=a.length-1;B<R;)o=Wi(a,B),B+=4,d.units.push(a.subarray(B,B+o)),B+=o;l.samples.push(d)}l.baseMediaDecodeTime=l.samples[0].dts}if(U){for(var u=U[0],h=U[1];u<=h;u++){if(!(r=this._audioSamples[u]))throw new Error("cannot found video frame #".concat(u));F=r.offset-t,a=e.subarray(F,F+r.size),Q.samples.push(new Bi(r.dts,a,r.duration))}Q.baseMediaDecodeTime=Q.samples[0].dts}return{videoTrack:l,audioTrack:Q,metadataTrack:this.metadataTrack}}},{key:"demuxPart",value:function(e,t,n,U,i,r,a,F){if(this.parseSamples(i),this.videoTrack.useEME=r,this.audioTrack.useEME=r,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength)for(var l=0;l<20;)try{var Q=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),d=new Uint8Array(e.byteLength+Q.byteLength);d.set(Q,0),d.set(new Uint8Array(e),Q.byteLength),e=d,t-=Q.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(y){if(!(l<20))throw new Error("new Uint8Array error:,"+y.errorMessage);l++}var o,s,c,B=this.videoTrack,R=this.audioTrack;B.samples=[],R.samples=[],B.videoSenc=null,R.audioSenc=null;var u=0,h=0;if(this._videoSamples.length>0&&n.length>0){for(var V,Z=e.byteLength+t,p=n[0];p<=n[1];p++){if(!(o=this._videoSamples[p]))throw new Error("cannot found video frame #".concat(p));o.offset>=t&&o.offset+o.size<=Z&&(u=(c=o.offset-t)+o.size,s=e.subarray(c,u),(V=new ci("number"==typeof o.pts?o.pts:o.dts,o.dts)).duration=o.duration,V.gopId=o.gopId,V.sampleOffset=o.index,o.keyframe&&V.setToKeyframe(),V.data=s,V.size=o.size,B.samples.push(V))}B.samples.length>0&&(B.gopId=B.samples[0].gopId,B.baseMediaDecodeTime=B.samples[0].dts,B.startPts=B.samples[0].pts/B.timescale,B.endPts=B.samples[B.samples.length-1].pts/B.timescale,this.videoSenc&&(B.videoSenc=this.videoSenc.slice(B.samples[0].sampleOffset,B.samples[0].sampleOffset+B.samples.length),B.kidValue=a))}if(this._audioSamples.length>0&&U.length>0){for(var S=U[0];S<=U[1];S++){if(!(o=this._audioSamples[S]))throw new Error("cannot found video frame #".concat(S));o.offset>=t&&o.offset+o.size<=e.byteLength+t&&(h=(c=o.offset-t)+o.size,s=e.subarray(c,h),R.samples.push(new Bi(o.dts,s,o.duration,o.index)))}R.samples.length>0&&(R.gopId=R.samples[0].gopId||B.gopId,R.baseMediaDecodeTime=R.samples[0].dts,R.startPts=R.samples[0].pts/R.timescale,R.endPts=R.samples[R.samples.length-1].pts/R.timescale,this.audioSenc&&(R.audioSenc=this.audioSenc.slice(R.samples[0].sampleOffset,R.samples[0].sampleOffset+R.samples.length),R.kidValue=a))}this.decoderData(B,R,F);for(var m=0,J=0;J<B.samples.length;J++)for(var W=0,k=B.samples[J].data,E=k.length-1;W<E;)m=Wi(k,W),W+=4,B.samples[J].units.push(k.subarray(W,W+m)),W+=m;return this._lastRemainBuffer=e.subarray(Math.max(u,h)),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:B,audioTrack:R,metadataTrack:this.metadataTrack}}},{key:"reset",value:function(){this._videoSamples=[],this._audioSamples=[],this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}},{key:"decoderData",value:function(e,t,n){e.useEME||t.useEME||Kr.decoderAESCTRData(e,t,n)}}],[{key:"probe",value:function(e){return gi.probe(e)}}]),e}();var Hr=Dn((function e(t,n){Xn(this,e),this.type="file",this.message=t,this.data=n})),Pr=function(){function e(){Xn(this,e),Gn(this,"_data",Object.create(null))}return Dn(e,[{key:"set",value:function(e,t){this._data[e]=t}},{key:"get",value:function(e){return this._data[e]}},{key:"clear",value:function(){this._data=Object.create(null)}}]),e}();function jr(e,t){var n=t.segmentDuration,U=e.trak;if(U&&U.length){var i=U.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),r=U.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)}));if(i||r){var a,F=[],l=[];return i&&(a=(F=_r("video",i,n,t)).map((function(e){return e.duration}))),r&&(l=_r("audio",r,n,t,a,F)),{videoSegments:F,audioSegments:l}}}}function _r(e,t,n,U){var i,r,a,F,l,Q,d=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],o=arguments.length>5?arguments[5]:void 0,s=U.fixEditListOffset,c=U.fixEditListOffsetThreshold,B=U.audioGroupingStrategy,R=null===(i=t.mdia)||void 0===i||null===(r=i.minf)||void 0===r?void 0:r.stbl;if(!R)return[];var u=null===(a=t.mdia.mdhd)||void 0===a?void 0:a.timescale,h=R.stts,V=R.stsc,Z=R.stsz,p=R.stco,S=R.stss,m=R.ctts;if(!(u&&h&&V&&Z&&p&&("video"!==e||S)))return[];var J=0,W=null===(F=t.edts)||void 0===F||null===(l=F.elst)||void 0===l?void 0:l.entries;if(s&&function(){var e=!0,t=navigator.userAgent||"";if(/Chrome/gi.test(t)&&!/Edge\//gi.test(t)){var n=t.match(/Chrome\/(\d+)/i),U=n?parseInt(n[1],10):0;e=!!U&&U>=75}return e}()&&Array.isArray(W)&&W.length>0){var k=W[0].media_time;k>0&&k<(c?c*u:5*u)&&(J=k)}var E,y,f,b,v=[],N=[],T=[],g=[],C=[],L=V.entries,X=p.entries,x=Z.entrySizes,D=null==S?void 0:S.entries,G=null==m?void 0:m.entries;G&&(E=[],G.forEach((function(e){for(var t=e.count,n=e.offset,U=0;U<t;U++)E.push(n)}))),D&&(y={},D.forEach((function(e){y[e-1]=!0})));var I=0,M=0,Y=0,K=0,w=L[0].samplesPerChunk,H=L[1]?L[1].firstChunk-1:1/0,P=0,j=-1,_=!1;(null===(Q=E)||void 0===Q?void 0:Q.length)>0&&J>0&&(P-=J,_=!0),t.editListApplied=_,h.entries.forEach((function(e){var t=e.count,n=e.delta;b=n;for(var U=0;U<t;U++){if(f={dts:P,duration:b,size:x[I]||Z.sampleSize,offset:X[M]+K,index:I},D&&(f.keyframe=y[I],f.keyframe?(j++,N.push([f]),T.push(f.duration)):(N[N.length-1].push(f),T[N.length-1]+=f.duration),f.gopId=j),E&&I<E.length&&(f.pts=P+E[I]),0===J&&0===I&&(f.pts=0),void 0===f.pts&&(f.pts=f.dts),f.keyframe?g.push(f.pts):f.pts<g[N.length-1]&&(g[N.length-1]=f.pts),f.keyframe)C.push(f.index);else if(N.length>0&&void 0!==C[N.length-1]){var i,r=null===(i=v[C[N.length-1]])||void 0===i?void 0:i.pts;void 0!==r&&f.pts>r&&(C[N.length-1]=f.index)}v.push(f),P+=n,++I<w?K+=f.size:(M++,K=0,M>=H&&(Y++,H=L[Y+1]?L[Y+1].firstChunk-1:1/0),w+=L[Y].samplesPerChunk)}}));var z=v.length;if(z&&(!S||v[0].keyframe)){var O,A=[],q=[],$=0,ee=0,te=0,ne=0,Ue=function(e,t,n){(O=q[q.length-1],te=g[t],ne=v[C[n]],0===A.length)&&(e=(ne.pts+ne.duration-te)/u);A.push({index:A.length,startTime:te/u,endTime:(ne.pts+ne.duration)/u,duration:e,range:[q[0].offset,O.offset+O.size-1],frames:q}),1!==B&&($=0),q=[]},ie=0;if(S)for(var re=n*u,ae=0,Fe=N.length;ae<Fe;ae++){var le;$+=T[ae],(le=q).push.apply(le,Pn(N[ae])),ae+1<Fe?(0===ae||$>re)&&(Ue($/u,ie,ae),ie=ae+1):(Ue($/u,ie,ae),ie=ae+1)}else{g=[],C=[];var Qe=d[0]||n;if(1===B)for(var de,oe=0;oe<z;oe++){var se=v[oe],ce=v[oe+1],Be=oe===z-1;q.push(se),$+=se.duration;var Re=de||$/u;de=(ce?$+ce.duration:0)/u,(Be||(o[A.length]?de>o[A.length].endTime:de-q[0].pts/u>=Qe))&&(g.push(q[0].pts),C.push(q[q.length-1].index),Ue(Re,A.length,A.length),Qe=d[A.length]||n)}else for(var ue,he=0;he<z;he++){var Ve=v[he],Ze=v[he+1],pe=he===z-1;q.push(Ve),$+=Ve.duration;var Se=ue||$/u;ue=(Ze?$+Ze.duration:0)/u,(pe||ue+ee>=Qe)&&(ee+=2===B?$/u-Qe:ue-Qe,g.push(q[0].pts),C.push(q[q.length-1].index),Ue(Se,A.length,A.length),Qe=d[A.length]||n)}}return A}}function zr(e){var t="",n="",U=0,i=0,r=0,a=0,F=0,l=0,Q=0;e.mvhd&&(F=e.mvhd.duration/e.mvhd.timescale);var d=e.trak;if(d){var o,s,c,B,R,u,h,V,Z,p,S,m,J,W,k,E,y,f=d.find((function(e){var t,n;return"vide"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),b=d.find((function(e){var t,n;return"soun"===(null===(t=e.mdia)||void 0===t||null===(n=t.hdlr)||void 0===n?void 0:n.handlerType)})),v=null;if(f)if(v=null===(s=f.mdia)||void 0===s||null===(c=s.minf)||void 0===c||null===(B=c.stbl)||void 0===B?void 0:B.stsd.entries[0])if(U=v.width,i=v.height,l=null===(R=f.mdia)||void 0===R||null===(u=R.mdhd)||void 0===u?void 0:u.timescale,t=null===(h=v.avcC||v.hvcC||v.vvcC)||void 0===h?void 0:h.codec,"encv"===v.type)o=null===(V=v.sinf)||void 0===V||null===(Z=V.schi)||void 0===Z?void 0:Z.tenc.default_KID;if(b)if(v=null===(p=b.mdia)||void 0===p||null===(S=p.minf)||void 0===S||null===(m=S.stbl)||void 0===m?void 0:m.stsd.entries[0])if(r=v.channelCount,a=v.sampleRate,n=null===(J=v.esds)||void 0===J?void 0:J.codec,Q=null===(W=b.mdia)||void 0===W||null===(k=W.mdhd)||void 0===k?void 0:k.timescale,"enca"===v.type)o=o||(null===(E=v.sinf)||void 0===E||null===(y=E.schi)||void 0===y?void 0:y.tenc.default_KID);return{kid:o?o.join(""):null,videoCodec:t,audioCodec:n,width:U,height:i,videoTimescale:l,audioChannelCount:r,audioSampleRate:a,duration:F,audioTimescale:Q,moov:e}}}function Or(e){return"number"==typeof e&&!Number.isNaN(e)}var Ar=["vid","cache"],qr=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Mn(e,t)}(c,e);var t,n,U,i,r,a,F,l,Q,d,o,s=wn(c);function c(e){var t,n;Xn(this,c),Gn(Kn(t=s.call(this)),"vid",""),Gn(Kn(t),"url",""),Gn(Kn(t),"meta",{}),Gn(Kn(t),"downloadInfo",[]),Gn(Kn(t),"videoSegments",[]),Gn(Kn(t),"audioSegments",[]),Gn(Kn(t),"cache",null),Gn(Kn(t),"_currentSegmentIndex",-1),Gn(Kn(t),"_currentLoadingSegmentIndex",-1),Gn(Kn(t),"buffer",void 0),Gn(Kn(t),"_error",void 0),Gn(Kn(t),"_transformError",(function(e){return e})),t._config=("boolean"!=typeof(n=e).fixEditListOffset&&delete n.fixEditListOffset,Tn({vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",fixEditListOffset:!0,cache:null},n));var U=t._config,i=U.vid,r=U.cache,a=Yn(U,Ar);return t.cache=r||new Pr,t.vid=i||a.url,t.url=a.url,a.transformError=t._transformError,t.logger=new SU("MP4Loader_"+t.vid),e.openLog&&SU.enable(),a.logger=t.logger,t._loader=new PU(a),t._loader.on(DU,(function(e){t.emit(DU,e)})),t}return Dn(c,[{key:"isMetaLoaded",get:function(){return this.videoSegments.length||this.audioSegments.length}},{key:"setCurrentSegment",value:function(e){Or(e)&&(this._currentSegmentIndex=e)}},{key:"isLastSegment",value:function(e){var t,n;return!!Or(e)&&e>=((null===(t=this.videoSegments[this.videoSegments.length-1])||void 0===t?void 0:t.index)||(null===(n=this.audioSegments[this.audioSegments.length-1])||void 0===n?void 0:n.index)||0)}},{key:"isSegmentLoading",value:function(e){return e===this._currentLoadingSegmentIndex}},{key:"changeUrl",value:(o=Ln(gn().mark((function e(t){var n,U,i,r=arguments;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.length>1&&void 0!==r[1]?r[1]:t,U=r.length>2?r[2]:void 0,i=r.length>3?r[3]:void 0,e.next=5,this.reset(i);case 5:t&&(this.url=t),n&&(this.vid=n),U&&(this._config.moovEnd=U);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"getOrLoadMeta",value:(d=Ln(gn().mark((function e(t){return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(t);case 3:return e.abrupt("return",this.meta);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"loadMetaProcess",value:(Q=Ln(gn().mark((function e(t,n,U,i){var r,a,F,l,Q=this;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Hn(n,2),a=r[0],F=r[1],this._error=!1,this.logger.debug("[loadMetaProcess start], range,",[a,F]),l=function(){var e=Ln(gn().mark((function e(n,r,l,d){var o,s,c,B,R,u,h,V;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Q.meta&&null!=l&&l.range&&l.range.length>0&&l.range[1]>=F&&(r=!0,Q.logger.debug("[loadMetaProcess],data done,setstate true,[",a,F,"]")),r&&null!=l&&l.range&&l.range.length>0&&l.range[1]<F&&(r=!1,Q.logger.debug("[loadMetaProcess],data not done,setstate false,[",a,F,"]")),Q.logger.debug("[loadMetaProcess],task,[",a,F,"], range,",l.range,",dataLen,",n?n.byteLength:void 0,", state,",r,",err,",Q._error),!Q._error&&n&&n.byteLength>0&&U(n,r,l,null,d),!Q.meta.moov&&!Q._error){e.next=6;break}return e.abrupt("return");case 6:if(!(n&&n.byteLength>0)){e.next=44;break}if(Q.buffer=wU(Q.buffer,n),o=gi.findBox(Q.buffer,["moov"])[0]){e.next=23;break}if(s=gi.findBox(Q.buffer,["mdat"])[0],!r){e.next=23;break}if(s){e.next=18;break}return Q._error=!0,U(null,r,l,{err:"cannot find moov or mdat box"},d),e.abrupt("return");case 18:return c=s.start+s.size,e.next=21,Q.loadData([c,""],t,i);case 21:(B=e.sent)&&(o=gi.findBox(B.data,["moov"])[0]);case 23:if(!(o&&r&&o.size>o.data.length)){e.next=27;break}return Q.logger.debug("[loadMetaProcess],moov not all, range,",l.range[1],",dataLen,",Q.buffer.byteLength,", state,",r),e.next=27,Q.loadMetaProcess(t,[l.range[1],o.start+o.size-1],U);case 27:if(!(o&&o.size<=o.data.length)||Q.meta.moov){e.next=44;break}if(R=gi.moov(o)){e.next=33;break}return Q._error=!0,U(null,r,l,{err:"cannot parse moov box"},d),e.abrupt("return");case 33:if(u=jr(R,Q._config)){e.next=38;break}return Q._error=!0,U(null,r,l,{err:"cannot parse segments"},d),e.abrupt("return");case 38:Q.meta=zr(R),h=u.videoSegments,V=u.audioSegments,Q.videoSegments=h,Q.audioSegments=V,Q.logger.debug("[loadMetaProcess] moov ok"),U(void 0,r,{meta:{meta:Q.meta,videoSegments:h,audioSegments:V}},null,d);case 44:case"end":return e.stop()}}),e)})));return function(t,n,U,i){return e.apply(this,arguments)}}(),e.next=6,this.loadData([a,F||this._config.moovEnd],t,Tn({onProgress:l},i));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t,n,U){return Q.apply(this,arguments)})},{key:"loadMeta",value:(l=Ln(gn().mark((function e(t,n,U){var i,r,a,F,l,Q,d,o,s;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],this.logger.debug("[loadMeta start]"),e.next=4,this.loadData([0,n||this._config.moovEnd],t,U);case 4:if(r=e.sent){e.next=7;break}return e.abrupt("return");case 7:if(i.push(r),a=gi.findBox(r.data,["moov"])[0]){e.next=23;break}if(F=gi.findBox(r.data,["mdat"])[0]){e.next=13;break}throw new Hr("cannot find moov or mdat box",r.data);case 13:return l=F.start+F.size,e.next=16,this.loadData([l],t,U);case 16:if(r=e.sent){e.next=19;break}return e.abrupt("return");case 19:if(i.push(r),a=gi.findBox(r.data,["moov"],l)[0]){e.next=23;break}throw new Hr("cannot find moov box",r.data);case 23:if(!(a.size>a.data.length)){e.next=31;break}return e.next=26,this.loadData([r.data.length,a.start+a.size-1],t,U);case 26:if(r=e.sent){e.next=29;break}return e.abrupt("return");case 29:i.push(r),a.data=wU(a.data,r.data);case 31:if(Q=gi.moov(a)){e.next=34;break}throw new Hr("cannot parse moov box",a.data);case 34:if(d=jr(Q,this._config)){e.next=37;break}throw new Hr("cannot parse segments",a.data);case 37:return this.meta=zr(Q),o=d.videoSegments,s=d.audioSegments,this.videoSegments=o,this.audioSegments=s,this.logger.debug("[load moov end!!!!!]"),e.abrupt("return",{meta:this.meta,videoSegments:o,audioSegments:s,responses:i});case 43:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return l.apply(this,arguments)})},{key:"loadCacheMeta",value:function(e,t){var n=jr(e.moov,this._config),U=n.videoSegments,i=n.audioSegments;this.videoSegments=U,this.audioSegments=i,this._currentSegmentIndex=t,this.meta=e}},{key:"getSegmentByTime",value:function(e){var t,n;return this.videoSegments.length?(t=this.videoSegments.find((function(t){return t.startTime<=e&&t.endTime>e})))&&(n=this.audioSegments[t.index]):n=this.audioSegments.find((function(t){return t.startTime<=e&&t.endTime>e})),{video:t,audio:n}}},{key:"loadSegmentByTime",value:(F=Ln(gn().mark((function e(t,n){var U,i,r,a,F,l=arguments;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=!(l.length>2&&void 0!==l[2])||l[2],i=l.length>3&&void 0!==l[3]?l[3]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta(n);case 5:return r=this.getSegmentByTime(t),a=r.video,F=r.audio,e.abrupt("return",this._loadSegment(a,F,n,U,i));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return F.apply(this,arguments)})},{key:"loadNextSegment",value:(a=Ln(gn().mark((function e(t){var n,U,i,r,a=arguments;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(a.length>1&&void 0!==a[1])||a[1],U=a.length>2&&void 0!==a[2]?a[2]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta();case 5:return i=this.videoSegments[this._currentSegmentIndex+1],r=this.audioSegments[this._currentSegmentIndex+1],e.abrupt("return",this._loadSegment(i,r,t,n,U));case 8:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"preload",value:(r=Ln(gn().mark((function e(t){var n,U,i,r,a,F,l,Q=this;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(!0);case 3:if(t&&!(t<0)){e.next=5;break}return e.abrupt("return");case 5:if(n=this.getSegmentByTime(t),U=n.video,i=n.audio,r=Math.max((null==U?void 0:U.index)||0,(null==i?void 0:i.index)||0)){e.next=9;break}return e.abrupt("return");case 9:return a=this.videoSegments.slice(0,r),F=this.audioSegments.slice(0,r),l=function(){var e=Ln(gn().mark((function e(t){return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t>r)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,Q._loadSegment(a[t],F[t],!0,!1);case 4:return e.next=6,l(t+1);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=14,l(0);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"cancel",value:function(){return this._loader.cancel()}},{key:"reset",value:(i=Ln(gn().mark((function e(){var t=arguments;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.length>0&&void 0!==t[0]&&t[0]){e.next=5;break}return this.logger.debug("[MP4loader reset func call loader.cancel]"),e.next=5,this._loader.cancel();case 5:this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1;case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"destroy",value:(U=Ln(gn().mark((function e(){return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.reset();case 2:this.cache.clear();case 3:case"end":return e.stop()}}),e,this)}))),function(){return U.apply(this,arguments)})},{key:"_loadSegment",value:(n=Ln(gn().mark((function e(t,n,U,i,r){var a,F;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||n){e.next=2;break}return e.abrupt("return");case 2:return a=(null==t?void 0:t.index)||(null==n?void 0:n.index)||0,this._currentLoadingSegmentIndex=a,e.prev=4,e.next=7,this.loadData([Math.min((null==t?void 0:t.range[0])||1/0,(null==n?void 0:n.range[0])||1/0),Math.max((null==t?void 0:t.range[1])||0,(null==n?void 0:n.range[1])||0)],U,r);case 7:F=e.sent;case 8:return e.prev=8,this._currentLoadingSegmentIndex=-1,e.finish(8);case 11:if(F){e.next=13;break}return e.abrupt("return");case 13:return i&&(this._currentSegmentIndex=a),F.video=t,F.audio=n,e.abrupt("return",F);case 17:case"end":return e.stop()}}),e,this,[[4,,8,11]])}))),function(e,t,U,i,r){return n.apply(this,arguments)})},{key:"loadData",value:(t=Ln(gn().mark((function e(t,n,U){var i,r,a,F;return gn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this._getCacheKey(t),e.next=3,this.cache.get(i);case 3:if(r=e.sent){e.next=11;break}return F=U&&U.url?U.url:this.url,e.next=8,this._loader.load(F,Tn({range:t,vid:this.vid},U));case 8:a=e.sent,e.next=12;break;case 11:a={data:r,state:!0,options:{fromCache:!0,range:t,vid:this.vid}};case 12:if(a){e.next=14;break}return e.abrupt("return");case 14:return r||(a.data&&this.downloadInfo.push({startTime:a.startTime,endTime:a.endTime,size:a.data.byteLength,range:t}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),e.abrupt("return",a);case 17:case"end":return e.stop()}}),e,this)}))),function(e,n,U){return t.apply(this,arguments)})},{key:"_getCacheKey",value:function(e){return(this.vid||this.url)+":"+e}}]),c}(ot),$r=[{range:[0,90],size:614400},{range:[90,120],size:819200},{range:[120,Number.MAX_VALUE],size:1024e3}];function ea(e,t,n){var U=n>51200?Math.min(n,t):t;if(!e)return U||$r[0].size;for(var i=0;i<$r.length;i++)if(e>=$r[i].range[0]&&e<$r[i].range[1]){U=Math.min(Math.max(U,$r[i].size),n>0?n:t);break}return U||$r[0].size}var ta={playBtnClick:function(e,t,n,U){e.paused||e.waitingMoreBuffer&&(e.waitingMoreBuffer=!1),U.call(e,t,n)}},na={waiting:function(e,t){var n=e.player,U=e.eventName;n.waitingMoreBuffer=!0,t(U,e)},play:function(e,t){var n=e.player,U=e.eventName;n.waitingMoreBuffer||t(U,e)},pause:function(e,t){var n=e.player,U=e.eventName;n.waitingMoreBuffer||t(U,e)},seeking:function(e,t){var n=e.player,U=e.eventName;n.isSeekingStart=!0,t(U,e)},progress:function(e,t){ln(">>>>progress");var n=e.player,U=e.eventName;if(n.waitingMoreBuffer){var i=n.getBufferedRange(n.buffered2);0===i[0]&&0===i[1]||(void 0===n.inWaitingStart||n.isSeekingStart?(ln("progress startplay or seek ended"),i[1]-n.currentTime>=(n.config.canplayWaterLevel||1)||i[1]>n.duration-1?(ln("progress out bufferWaterLevel"),n.play()):(ln("progress not out bufferWaterLevel"),n.emit("waiting"))):(ln("progress video waiting end"),i[1]-n.currentTime>=(n.config.bufferWaterLevel||5)||i[1]>n.duration-1?(ln("progress out bufferWaterLevel"),n.play()):(ln("progress not out bufferWaterLevel"),n.emit("waiting"))))}t(U,e)},playing:function(e,t){var n=e.player,U=e.eventName;ln("playing");var i=n.getBufferedRange(n.buffered2);if(0===i[0]&&0===i[1])return ln("playing currentTime no buffer, not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),void t.call("waiting",e);void 0===n.inWaitingStart||n.isSeekingStart?(ln("playing startplay or seek ended"),i[1]-n.currentTime>=(n.config.canplayWaterLevel||1)||i[1]>n.duration-1?(ln("playing out bufferWaterLevel"),n.waitingMoreBuffer=!1,n.isSeekingStart=!1,t(U,e)):(ln("playing not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),t.call("waiting",e))):(ln("playing video waiting ended"),i[1]-n.currentTime>=(n.config.bufferWaterLevel||5)||i[1]>n.duration-1?(ln("playing out bufferWaterLevel"),n.waitingMoreBuffer=!1,t(U,e)):(ln("playing not out bufferWaterLevel"),n.waitingMoreBuffer=!0,n.pause(),t.call("waiting",e)))}};function Ua(e){return/^http(s)?:\/\/.+/.test(e)}function ia(e,t){return Math.round(8*e*1e3/t/1024)}function ra(e){var t,n;return!((null==e||null===(t=e.message)||void 0===t?void 0:t.indexOf("Failed to fetch"))>=0||null!=e&&e.response&&(null===(n=e.response)||void 0===n?void 0:n.status)>=400&&e.response.status<=599)}function aa(e){return e.preLoadMeta||{}}var Fa={findBox:function e(t,n){var U=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(t.type!==n){if(t&&t.subBox){var i=t.subBox.filter((function(e){return e.type===n}));i.length?i.forEach((function(e){return U.push(e)})):t.subBox.forEach((function(t){return e(t,n,U)}))}}else U.push(t);return(U=Y(U)).length>1?U:U[0]},padStart:la,toHex:function(){for(var e=[],t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];return n.forEach((function(t){var n=Number(t).toString(16);e.push(la(n,2,0))})),e},fromHex:function(e){for(var t=new Uint8Array(e.length/2),n=0;n<e.length;n+=2)t[n/2]=window.parseInt(e.substr(n,2),16);return t},sum:function(){for(var e=0,t=arguments.length,n=new Array(t),U=0;U<t;U++)n[U]=arguments[U];return n.forEach((function(t){e+=t})),e},StringToArrayBuffer:function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),U=0;U<e.length;U++)n[U]=e.charCodeAt(U);return t},ArrayBufferToString:function(e){for(var t="",n=new Uint8Array(e),U=0;U<n.length;U++)t+=String.fromCharCode(n[U]);return t},fromCharCode:Qa,Base64ToHex:function(e){for(var t=window.atob(e.replace(/-/g,"+").replace(/_/g,"/")),n="",U=0;U<t.length;U++)n+="0".concat(t.charCodeAt(U).toString(16)).substr(-2);return n},toBase64:function(e,t){var n=Qa(e);t=void 0===t||t;var U=window.btoa(n).replace(/\+/g,"-").replace(/\//g,"_");return t?U:U.replace(/=*$/,"")},toUTF8:function(e){for(var t=encodeURIComponent(e),n=unescape(t),U=new Uint8Array(n.length),i=0;i<n.length;++i)U[i]=n.charCodeAt(i);return U.buffer},strToBuf:function(e){for(var t=[],n=0;n<e.length;n+=2)t.push(parseInt(e[n]+e[n+1],16));return new Uint8Array(t)},str2hex:function(e){if(""===e)return"";for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t},formatIV:function(e){if(e.length>=16)return e;for(var t=new Uint8Array(16),n=0;n<t.length;n++)t[n]=n<e.length?e[n]:0;return t},parse:function(e){if(!Array.isArray(e)){for(var t=[],n="",U=0;U<e.length;U++)U%2&&(n=e[U-1]+e[U],t.push(parseInt(n,16)),n="");return t}return e.map((function(e){return parseInt(e,16)}))},generateUniqueKey:function(e){var t=e.vid,n=e.mediaType,U=e.definition;if(n=n||"video",U=U||-1,!t)return null;return"".concat(t,"#").concat(n,"#").concat(U,"#mp4")},validateFragment:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(e instanceof ArrayBuffer){try{if(2===t.length){var n=t[1]-t[0]+1;if(!(e.byteLength===n))return}}catch(U){return console.error(U),!1}return!0}return!1},typeOf:da,nowTime:function(){try{return parseInt("".concat(performance.now()),10)}catch(e){return(new Date).getTime()}},extUrl:function(e,t){try{if(!t||e.startsWith("blob"))return e;var n=e.indexOf("?"),U=n<0,i=n===e.length-1,r="";return Object.keys(t).forEach((function(e){var n=t[e];null!=n&&""!==n&&(r+="".concat(r?"&":"").concat(e,"=").concat(t[e]))})),e+=(U?"?":i?"":"&")+r}catch(a){return e}},deepMerge:function e(t,n){return Object.keys(n).forEach((function(U){var i,r=da(n[U]),a=da(t[U]);"Array"===r?("Array"!==a&&(t[U]=[]),(i=t[U]).push.apply(i,Y(n[U]))):"Object"===r?("Object"!==a&&(t[U]={}),e(t[U],n[U])):t[U]=n[U]})),t},getFileSize:function(e,t){try{return e&&t?parseInt("".concat(t*e/8),10):0}catch(n){return 0}},hashVal:function(e){var t,n=0;if(0===e.length)return n;for(t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t),n|=0;return n},ArrayCopy:function(e){var t=[];if(!e||!e.length||0===e.length)return t;for(var n=0;n<e.length;n++){var U=e[n],i={};for(var r in U)Object.prototype.hasOwnProperty.call(U,r)&&(i[r]=U[r]);t.push(i)}return t},concatData:function(e,t){var n=[],U=0;e&&n.push(e);t&&n.push(t);n.every((function(e){return e&&(U+=e.byteLength),!0}));var i=new Uint8Array(U),r=0;return n.every((function(e){return e&&(i.set(e,r),r+=e.byteLength),!0})),i},getFragRange:function(e,t,n){var U,i,r,a,F=null,l=null;F=e<t.length-1?t[e]:t[t.length-1];l=e<n.length-1?n[e]:n[n.length-1];return[Math.min((null===(U=F)||void 0===U?void 0:U.range[0])||1/0,(null===(i=l)||void 0===i?void 0:i.range[0])||1/0),Math.max(null===(r=F)||void 0===r?void 0:r.range[1],null===(a=l)||void 0===a?void 0:a.range[1])]},getHostFromUrl:function(e){if("String"!==da(e)||!e)return"";var t=e.split("/"),n="";t.length>3&&t[2]&&(n=t[2]);return n},newUint8Array:function(e){var t,n=0;for(;n<10;)try{if((t=new Uint8Array(e))&&t.byteLength>0)break;n++}catch(U){n<10?n++:console.error("repeat data cache new array failed final",10)}return t},checkUrlIsExpired:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!e||"String"!==da(e))return 0;var n=0;try{var U=new RegExp("(\\?|&)x-tos-expires=([^&]*)(&|$)"),i=e.match(U);if(null!==i)n=parseInt(i[2],10);else{var r=e.split("/");r.length>5&&8===r[4].length&&(n=parseInt(r[4],16))}return n>0?n<parseInt("".concat(t&&"number"==typeof t?(new Date).getTime()/1e3+t:(new Date).getTime()/1e3),10)?1:2:0}catch(a){return 0}},getBufferSplits:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;if(t-e-n<n/2||!t)return[[e,t]];var U=[];for(;e<t;){var i=e+n;(i>t||t-i<n/2)&&(i=t),U.push([e,i]),e=i+1}return U}};function la(e,t,n){for(var U=String(n),i=t>>0,r=Math.ceil(i/U.length),a=[],F=String(e);r--;)a.push(U);return a.join("").substring(0,i-F.length)+F}function Qa(e){for(var t="",n=0;n<e.length;n+=16e3){var U=e.subarray(n,n+16e3);t+=String.fromCharCode.apply(null,U)}return t}function da(e){return Object.prototype.toString.call(e).match(/([^\s.*]+)(?=]$)/g)[0]}var oa={"x-cache":"x_cache","x-response-sinfo":"server_ip","x-response-cinfo":"x-response-cinfo","content-range":"content-range","content-length":"content-length","content-type":"content-type"};function sa(e){var t={};return Object.keys(oa).forEach((function(n){var U,i=null==e||null===(U=e.get)||void 0===U?void 0:U.call(e,n);i&&(t[oa[n]]=i)})),t}function ca(e){var t,n=oa["content-range"],U=null==e||null===(t=e.get)||void 0===t?void 0:t.call(e,n);if(U){var i=U.split("/");if(Array.isArray(i)&&2===i.length)return i[1]}return null}var Ba="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEEoQSxnKXt2YXIgST1PYmplY3Qua2V5cyhBKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgQj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKEEpO2cmJihCPUIuZmlsdGVyKChmdW5jdGlvbihnKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBLGcpLmVudW1lcmFibGV9KSkpLEkucHVzaC5hcHBseShJLEIpfXJldHVybiBJfWZ1bmN0aW9uIGcoZyl7Zm9yKHZhciBJPTE7STxhcmd1bWVudHMubGVuZ3RoO0krKyl7dmFyIEI9bnVsbCE9YXJndW1lbnRzW0ldP2FyZ3VtZW50c1tJXTp7fTtJJTI/QShPYmplY3QoQiksITApLmZvckVhY2goKGZ1bmN0aW9uKEEpe2koZyxBLEJbQV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGcsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQikpOkEoT2JqZWN0KEIpKS5mb3JFYWNoKChmdW5jdGlvbihBKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZyxBLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQixBKSl9KSl9cmV0dXJuIGd9ZnVuY3Rpb24gSSgpe0k9ZnVuY3Rpb24oKXtyZXR1cm4gQX07dmFyIEE9e30sZz1PYmplY3QucHJvdG90eXBlLEI9Zy5oYXNPd25Qcm9wZXJ0eSxRPU9iamVjdC5kZWZpbmVQcm9wZXJ0eXx8ZnVuY3Rpb24oQSxnLEkpe0FbZ109SS52YWx1ZX0sQz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxFPUMuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIix0PUMuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsaT1DLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZShBLGcsSSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGcse3ZhbHVlOkksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxBW2ddfXRyeXtlKHt9LCIiKX1jYXRjaChTKXtlPWZ1bmN0aW9uKEEsZyxJKXtyZXR1cm4gQVtnXT1JfX1mdW5jdGlvbiBvKEEsZyxJLEIpe3ZhciBDPWcmJmcucHJvdG90eXBlIGluc3RhbmNlb2YgYT9nOmEsRT1PYmplY3QuY3JlYXRlKEMucHJvdG90eXBlKSx0PW5ldyBSKEJ8fFtdKTtyZXR1cm4gUShFLCJfaW52b2tlIix7dmFsdWU6bChBLEksdCl9KSxFfWZ1bmN0aW9uIHIoQSxnLEkpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6QS5jYWxsKGcsSSl9fWNhdGNoKFMpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOlN9fX1BLndyYXA9bzt2YXIgbj17fTtmdW5jdGlvbiBhKCl7fWZ1bmN0aW9uIHMoKXt9ZnVuY3Rpb24gYygpe312YXIgaD17fTtlKGgsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsZj15JiZ5KHkoVShbXSkpKTtmJiZmIT09ZyYmQi5jYWxsKGYsRSkmJihoPWYpO3ZhciB1PWMucHJvdG90eXBlPWEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaCk7ZnVuY3Rpb24gRChBKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKGcpe2UoQSxnLChmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5faW52b2tlKGcsQSl9KSl9KSl9ZnVuY3Rpb24gdyhBLGcpe2Z1bmN0aW9uIEkoUSxDLEUsdCl7dmFyIGk9cihBW1FdLEEsQyk7aWYoInRocm93IiE9PWkudHlwZSl7dmFyIGU9aS5hcmcsbz1lLnZhbHVlO3JldHVybiBvJiYib2JqZWN0Ij09dHlwZW9mIG8mJkIuY2FsbChvLCJfX2F3YWl0Iik/Zy5yZXNvbHZlKG8uX19hd2FpdCkudGhlbigoZnVuY3Rpb24oQSl7SSgibmV4dCIsQSxFLHQpfSksKGZ1bmN0aW9uKEEpe0koInRocm93IixBLEUsdCl9KSk6Zy5yZXNvbHZlKG8pLnRoZW4oKGZ1bmN0aW9uKEEpe2UudmFsdWU9QSxFKGUpfSksKGZ1bmN0aW9uKEEpe3JldHVybiBJKCJ0aHJvdyIsQSxFLHQpfSkpfXQoaS5hcmcpfXZhciBDO1EodGhpcywiX2ludm9rZSIse3ZhbHVlOmZ1bmN0aW9uKEEsQil7ZnVuY3Rpb24gUSgpe3JldHVybiBuZXcgZygoZnVuY3Rpb24oZyxRKXtJKEEsQixnLFEpfSkpfXJldHVybiBDPUM/Qy50aGVuKFEsUSk6USgpfX0pfWZ1bmN0aW9uIGwoQSxnLEkpe3ZhciBCPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKFEsQyl7aWYoImV4ZWN1dGluZyI9PT1CKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKCJjb21wbGV0ZWQiPT09Qil7aWYoInRocm93Ij09PVEpdGhyb3cgQztyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fWZvcihJLm1ldGhvZD1RLEkuYXJnPUM7Oyl7dmFyIEU9SS5kZWxlZ2F0ZTtpZihFKXt2YXIgdD1kKEUsSSk7aWYodCl7aWYodD09PW4pY29udGludWU7cmV0dXJuIHR9fWlmKCJuZXh0Ij09PUkubWV0aG9kKUkuc2VudD1JLl9zZW50PUkuYXJnO2Vsc2UgaWYoInRocm93Ij09PUkubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09Qil0aHJvdyBCPSJjb21wbGV0ZWQiLEkuYXJnO0kuZGlzcGF0Y2hFeGNlcHRpb24oSS5hcmcpfWVsc2UicmV0dXJuIj09PUkubWV0aG9kJiZJLmFicnVwdCgicmV0dXJuIixJLmFyZyk7Qj0iZXhlY3V0aW5nIjt2YXIgaT1yKEEsZyxJKTtpZigibm9ybWFsIj09PWkudHlwZSl7aWYoQj1JLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixpLmFyZz09PW4pY29udGludWU7cmV0dXJue3ZhbHVlOmkuYXJnLGRvbmU6SS5kb25lfX0idGhyb3ciPT09aS50eXBlJiYoQj0iY29tcGxldGVkIixJLm1ldGhvZD0idGhyb3ciLEkuYXJnPWkuYXJnKX19fWZ1bmN0aW9uIGQoQSxnKXt2YXIgST1nLm1ldGhvZCxCPUEuaXRlcmF0b3JbSV07aWYodm9pZCAwPT09QilyZXR1cm4gZy5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1JJiZBLml0ZXJhdG9yLnJldHVybiYmKGcubWV0aG9kPSJyZXR1cm4iLGcuYXJnPXZvaWQgMCxkKEEsZyksInRocm93Ij09PWcubWV0aG9kKXx8InJldHVybiIhPT1JJiYoZy5tZXRob2Q9InRocm93IixnLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICciK0krIicgbWV0aG9kIikpLG47dmFyIFE9cihCLEEuaXRlcmF0b3IsZy5hcmcpO2lmKCJ0aHJvdyI9PT1RLnR5cGUpcmV0dXJuIGcubWV0aG9kPSJ0aHJvdyIsZy5hcmc9US5hcmcsZy5kZWxlZ2F0ZT1udWxsLG47dmFyIEM9US5hcmc7cmV0dXJuIEM/Qy5kb25lPyhnW0EucmVzdWx0TmFtZV09Qy52YWx1ZSxnLm5leHQ9QS5uZXh0TG9jLCJyZXR1cm4iIT09Zy5tZXRob2QmJihnLm1ldGhvZD0ibmV4dCIsZy5hcmc9dm9pZCAwKSxnLmRlbGVnYXRlPW51bGwsbik6QzooZy5tZXRob2Q9InRocm93IixnLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLGcuZGVsZWdhdGU9bnVsbCxuKX1mdW5jdGlvbiBGKEEpe3ZhciBnPXt0cnlMb2M6QVswXX07MSBpbiBBJiYoZy5jYXRjaExvYz1BWzFdKSwyIGluIEEmJihnLmZpbmFsbHlMb2M9QVsyXSxnLmFmdGVyTG9jPUFbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGcpfWZ1bmN0aW9uIEcoQSl7dmFyIGc9QS5jb21wbGV0aW9ufHx7fTtnLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGcuYXJnLEEuY29tcGxldGlvbj1nfWZ1bmN0aW9uIFIoQSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLEEuZm9yRWFjaChGLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIFUoQSl7aWYoQSl7dmFyIGc9QVtFXTtpZihnKXJldHVybiBnLmNhbGwoQSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEEubmV4dClyZXR1cm4gQTtpZighaXNOYU4oQS5sZW5ndGgpKXt2YXIgST0tMSxRPWZ1bmN0aW9uIGcoKXtmb3IoOysrSTxBLmxlbmd0aDspaWYoQi5jYWxsKEEsSSkpcmV0dXJuIGcudmFsdWU9QVtJXSxnLmRvbmU9ITEsZztyZXR1cm4gZy52YWx1ZT12b2lkIDAsZy5kb25lPSEwLGd9O3JldHVybiBRLm5leHQ9UX19cmV0dXJue25leHQ6a319ZnVuY3Rpb24gaygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIHMucHJvdG90eXBlPWMsUSh1LCJjb25zdHJ1Y3RvciIse3ZhbHVlOmMsY29uZmlndXJhYmxlOiEwfSksUShjLCJjb25zdHJ1Y3RvciIse3ZhbHVlOnMsY29uZmlndXJhYmxlOiEwfSkscy5kaXNwbGF5TmFtZT1lKGMsaSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxBLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oQSl7dmFyIGc9ImZ1bmN0aW9uIj09dHlwZW9mIEEmJkEuY29uc3RydWN0b3I7cmV0dXJuISFnJiYoZz09PXN8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZy5kaXNwbGF5TmFtZXx8Zy5uYW1lKSl9LEEubWFyaz1mdW5jdGlvbihBKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihBLGMpOihBLl9fcHJvdG9fXz1jLGUoQSxpLCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHUpLEF9LEEuYXdyYXA9ZnVuY3Rpb24oQSl7cmV0dXJue19fYXdhaXQ6QX19LEQody5wcm90b3R5cGUpLGUody5wcm90b3R5cGUsdCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxBLkFzeW5jSXRlcmF0b3I9dyxBLmFzeW5jPWZ1bmN0aW9uKGcsSSxCLFEsQyl7dm9pZCAwPT09QyYmKEM9UHJvbWlzZSk7dmFyIEU9bmV3IHcobyhnLEksQixRKSxDKTtyZXR1cm4gQS5pc0dlbmVyYXRvckZ1bmN0aW9uKEkpP0U6RS5uZXh0KCkudGhlbigoZnVuY3Rpb24oQSl7cmV0dXJuIEEuZG9uZT9BLnZhbHVlOkUubmV4dCgpfSkpfSxEKHUpLGUodSxpLCJHZW5lcmF0b3IiKSxlKHUsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlKHUsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxBLmtleXM9ZnVuY3Rpb24oQSl7dmFyIGc9T2JqZWN0KEEpLEk9W107Zm9yKHZhciBCIGluIGcpSS5wdXNoKEIpO3JldHVybiBJLnJldmVyc2UoKSxmdW5jdGlvbiBBKCl7Zm9yKDtJLmxlbmd0aDspe3ZhciBCPUkucG9wKCk7aWYoQiBpbiBnKXJldHVybiBBLnZhbHVlPUIsQS5kb25lPSExLEF9cmV0dXJuIEEuZG9uZT0hMCxBfX0sQS52YWx1ZXM9VSxSLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UixyZXNldDpmdW5jdGlvbihBKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9dm9pZCAwLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEcpLCFBKWZvcih2YXIgZyBpbiB0aGlzKSJ0Ij09PWcuY2hhckF0KDApJiZCLmNhbGwodGhpcyxnKSYmIWlzTmFOKCtnLnNsaWNlKDEpKSYmKHRoaXNbZ109dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgQT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09QS50eXBlKXRocm93IEEuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKEEpe2lmKHRoaXMuZG9uZSl0aHJvdyBBO3ZhciBnPXRoaXM7ZnVuY3Rpb24gSShJLEIpe3JldHVybiBFLnR5cGU9InRocm93IixFLmFyZz1BLGcubmV4dD1JLEImJihnLm1ldGhvZD0ibmV4dCIsZy5hcmc9dm9pZCAwKSwhIUJ9Zm9yKHZhciBRPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtRPj0wOy0tUSl7dmFyIEM9dGhpcy50cnlFbnRyaWVzW1FdLEU9Qy5jb21wbGV0aW9uO2lmKCJyb290Ij09PUMudHJ5TG9jKXJldHVybiBJKCJlbmQiKTtpZihDLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdD1CLmNhbGwoQywiY2F0Y2hMb2MiKSxpPUIuY2FsbChDLCJmaW5hbGx5TG9jIik7aWYodCYmaSl7aWYodGhpcy5wcmV2PEMuY2F0Y2hMb2MpcmV0dXJuIEkoQy5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PEMuZmluYWxseUxvYylyZXR1cm4gSShDLmZpbmFsbHlMb2MpfWVsc2UgaWYodCl7aWYodGhpcy5wcmV2PEMuY2F0Y2hMb2MpcmV0dXJuIEkoQy5jYXRjaExvYywhMCl9ZWxzZXtpZighaSl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PEMuZmluYWxseUxvYylyZXR1cm4gSShDLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO0k+PTA7LS1JKXt2YXIgUT10aGlzLnRyeUVudHJpZXNbSV07aWYoUS50cnlMb2M8PXRoaXMucHJldiYmQi5jYWxsKFEsImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PFEuZmluYWxseUxvYyl7dmFyIEM9UTticmVha319QyYmKCJicmVhayI9PT1BfHwiY29udGludWUiPT09QSkmJkMudHJ5TG9jPD1nJiZnPD1DLmZpbmFsbHlMb2MmJihDPW51bGwpO3ZhciBFPUM/Qy5jb21wbGV0aW9uOnt9O3JldHVybiBFLnR5cGU9QSxFLmFyZz1nLEM/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9Qy5maW5hbGx5TG9jLG4pOnRoaXMuY29tcGxldGUoRSl9LGNvbXBsZXRlOmZ1bmN0aW9uKEEsZyl7aWYoInRocm93Ij09PUEudHlwZSl0aHJvdyBBLmFyZztyZXR1cm4iYnJlYWsiPT09QS50eXBlfHwiY29udGludWUiPT09QS50eXBlP3RoaXMubmV4dD1BLmFyZzoicmV0dXJuIj09PUEudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPUEuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1BLnR5cGUmJmcmJih0aGlzLm5leHQ9Zyksbn0sZmluaXNoOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7Zz49MDstLWcpe3ZhciBJPXRoaXMudHJ5RW50cmllc1tnXTtpZihJLmZpbmFsbHlMb2M9PT1BKXJldHVybiB0aGlzLmNvbXBsZXRlKEkuY29tcGxldGlvbixJLmFmdGVyTG9jKSxHKEkpLG59fSxjYXRjaDpmdW5jdGlvbihBKXtmb3IodmFyIGc9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2c+PTA7LS1nKXt2YXIgST10aGlzLnRyeUVudHJpZXNbZ107aWYoSS50cnlMb2M9PT1BKXt2YXIgQj1JLmNvbXBsZXRpb247aWYoInRocm93Ij09PUIudHlwZSl7dmFyIFE9Qi5hcmc7RyhJKX1yZXR1cm4gUX19dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbihBLGcsSSl7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOlUoQSkscmVzdWx0TmFtZTpnLG5leHRMb2M6SX0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz12b2lkIDApLG59fSxBfWZ1bmN0aW9uIEIoQSl7cmV0dXJuKEI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oQSl7cmV0dXJuIHR5cGVvZiBBfTpmdW5jdGlvbihBKXtyZXR1cm4gQSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmQS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmQSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIEF9KShBKX1mdW5jdGlvbiBRKEEsZyxJLEIsUSxDLEUpe3RyeXt2YXIgdD1BW0NdKEUpLGk9dC52YWx1ZX1jYXRjaChlKXtyZXR1cm4gdm9pZCBJKGUpfXQuZG9uZT9nKGkpOlByb21pc2UucmVzb2x2ZShpKS50aGVuKEIsUSl9ZnVuY3Rpb24gQyhBLGcpe2lmKCEoQSBpbnN0YW5jZW9mIGcpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIEUoQSxnKXtmb3IodmFyIEk9MDtJPGcubGVuZ3RoO0krKyl7dmFyIEI9Z1tJXTtCLmVudW1lcmFibGU9Qi5lbnVtZXJhYmxlfHwhMSxCLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gQiYmKEIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLHUoQi5rZXkpLEIpfX1mdW5jdGlvbiB0KEEsZyxJKXtyZXR1cm4gZyYmRShBLnByb3RvdHlwZSxnKSxJJiZFKEEsSSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksQX1mdW5jdGlvbiBpKEEsZyxJKXtyZXR1cm4oZz11KGcpKWluIEE/T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZyx7dmFsdWU6SSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOkFbZ109SSxBfWZ1bmN0aW9uIGUoQSxnKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZyYmbnVsbCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGcmJmcucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6QSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZyYmcihBLGcpfWZ1bmN0aW9uIG8oQSl7cmV0dXJuKG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oQSl7cmV0dXJuIEEuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoQSl9KShBKX1mdW5jdGlvbiByKEEsZyl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oQSxnKXtyZXR1cm4gQS5fX3Byb3RvX189ZyxBfSkoQSxnKX1mdW5jdGlvbiBuKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKEEpe3JldHVybiExfX1mdW5jdGlvbiBhKEEsZyxJKXtyZXR1cm4oYT1uKCk/UmVmbGVjdC5jb25zdHJ1Y3QuYmluZCgpOmZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1bbnVsbF07Qi5wdXNoLmFwcGx5KEIsZyk7dmFyIFE9bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoQSxCKSk7cmV0dXJuIEkmJnIoUSxJLnByb3RvdHlwZSksUX0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBzKEEsZyl7aWYoZyYmKCJvYmplY3QiPT10eXBlb2YgZ3x8ImZ1bmN0aW9uIj09dHlwZW9mIGcpKXJldHVybiBnO2lmKHZvaWQgMCE9PWcpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZnVuY3Rpb24oQSl7aWYodm9pZCAwPT09QSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBBfShBKX1mdW5jdGlvbiBjKEEpe3ZhciBnPW4oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgSSxCPW8oQSk7aWYoZyl7dmFyIFE9byh0aGlzKS5jb25zdHJ1Y3RvcjtJPVJlZmxlY3QuY29uc3RydWN0KEIsYXJndW1lbnRzLFEpfWVsc2UgST1CLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gcyh0aGlzLEkpfX1mdW5jdGlvbiBoKCl7cmV0dXJuIGg9InVuZGVmaW5lZCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmdldD9SZWZsZWN0LmdldC5iaW5kKCk6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPWZ1bmN0aW9uKEEsZyl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEEsZykmJm51bGwhPT0oQT1vKEEpKTspO3JldHVybiBBfShBLGcpO2lmKEIpe3ZhciBRPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQixnKTtyZXR1cm4gUS5nZXQ/US5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM/QTpJKTpRLnZhbHVlfX0saC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geShBKXtyZXR1cm4gZnVuY3Rpb24oQSl7aWYoQXJyYXkuaXNBcnJheShBKSlyZXR1cm4gZihBKX0oQSl8fGZ1bmN0aW9uKEEpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1BW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPUFbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShBKX0oQSl8fGZ1bmN0aW9uKEEsZyl7aWYoIUEpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgQSlyZXR1cm4gZihBLGcpO3ZhciBJPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChBKS5zbGljZSg4LC0xKTsiT2JqZWN0Ij09PUkmJkEuY29uc3RydWN0b3ImJihJPUEuY29uc3RydWN0b3IubmFtZSk7aWYoIk1hcCI9PT1JfHwiU2V0Ij09PUkpcmV0dXJuIEFycmF5LmZyb20oQSk7aWYoIkFyZ3VtZW50cyI9PT1JfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChJKSlyZXR1cm4gZihBLGcpfShBKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBmKEEsZyl7KG51bGw9PWd8fGc+QS5sZW5ndGgpJiYoZz1BLmxlbmd0aCk7Zm9yKHZhciBJPTAsQj1uZXcgQXJyYXkoZyk7STxnO0krKylCW0ldPUFbSV07cmV0dXJuIEJ9ZnVuY3Rpb24gdShBKXt2YXIgZz1mdW5jdGlvbihBLGcpe2lmKCJvYmplY3QiIT10eXBlb2YgQXx8bnVsbD09PUEpcmV0dXJuIEE7dmFyIEk9QVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PUkpe3ZhciBCPUkuY2FsbChBLGd8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXJldHVybiBCO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Zz9TdHJpbmc6TnVtYmVyKShBKX0oQSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBnP2c6U3RyaW5nKGcpfXZhciBEPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sdz1mdW5jdGlvbihBKXt0cnl7cmV0dXJuISFBKCl9Y2F0Y2goZyl7cmV0dXJuITB9fSxsPXt9LnRvU3RyaW5nLGQ9ZnVuY3Rpb24oQSl7cmV0dXJuIGwuY2FsbChBKS5zbGljZSg4LC0xKX0sRj1kLEc9IiIuc3BsaXQsUj13KChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihBKXtyZXR1cm4iU3RyaW5nIj09RihBKT9HLmNhbGwoQSwiIik6T2JqZWN0KEEpfTpPYmplY3QsVT1mdW5jdGlvbihBKXtpZihudWxsPT1BKXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIitBKTtyZXR1cm4gQX0saz1SLFM9VSxwPWZ1bmN0aW9uKEEpe3JldHVybiBrKFMoQSkpfSxOPWZ1bmN0aW9uKEEpe3JldHVybiBBJiZBLk1hdGg9PU1hdGgmJkF9LE09Tigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxOKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxOKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fE4oIm9iamVjdCI9PXR5cGVvZiBEJiZEKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxZPXtleHBvcnRzOnt9fSxIPSF3KChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksdj17fSxMPWZ1bmN0aW9uKEEpe3JldHVybiJvYmplY3QiPT10eXBlb2YgQT9udWxsIT09QToiZnVuY3Rpb24iPT10eXBlb2YgQX0sSj1MLEs9TS5kb2N1bWVudCxtPUooSykmJkooSy5jcmVhdGVFbGVtZW50KSx4PWZ1bmN0aW9uKEEpe3JldHVybiBtP0suY3JlYXRlRWxlbWVudChBKTp7fX0scT14LGI9IUgmJiF3KChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLFQ9TCxPPWZ1bmN0aW9uKEEpe2lmKCFUKEEpKXRocm93IFR5cGVFcnJvcihTdHJpbmcoQSkrIiBpcyBub3QgYW4gb2JqZWN0Iik7cmV0dXJuIEF9LFA9TCxXPWZ1bmN0aW9uKEEsZyl7aWYoIVAoQSkpcmV0dXJuIEE7dmFyIEksQjtpZihnJiYiZnVuY3Rpb24iPT10eXBlb2YoST1BLnRvU3RyaW5nKSYmIVAoQj1JLmNhbGwoQSkpKXJldHVybiBCO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihJPUEudmFsdWVPZikmJiFQKEI9SS5jYWxsKEEpKSlyZXR1cm4gQjtpZighZyYmImZ1bmN0aW9uIj09dHlwZW9mKEk9QS50b1N0cmluZykmJiFQKEI9SS5jYWxsKEEpKSlyZXR1cm4gQjt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfSxaPUgsaj1iLFg9TyxWPVcsej1PYmplY3QuZGVmaW5lUHJvcGVydHk7di5mPVo/ejpmdW5jdGlvbihBLGcsSSl7aWYoWChBKSxnPVYoZywhMCksWChJKSxqKXRyeXtyZXR1cm4geihBLGcsSSl9Y2F0Y2goQil7fWlmKCJnZXQiaW4gSXx8InNldCJpbiBJKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gSSYmKEFbZ109SS52YWx1ZSksQX07dmFyIF89ZnVuY3Rpb24oQSxnKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmQSksY29uZmlndXJhYmxlOiEoMiZBKSx3cml0YWJsZTohKDQmQSksdmFsdWU6Z319LCQ9dixBQT1fLGdBPUg/ZnVuY3Rpb24oQSxnLEkpe3JldHVybiAkLmYoQSxnLEFBKDEsSSkpfTpmdW5jdGlvbihBLGcsSSl7cmV0dXJuIEFbZ109SSxBfSxJQT1NLEJBPWdBLFFBPWZ1bmN0aW9uKEEsZyl7dHJ5e0JBKElBLEEsZyl9Y2F0Y2goSSl7SUFbQV09Z31yZXR1cm4gZ30sQ0E9UUEsRUE9Il9fY29yZS1qc19zaGFyZWRfXyIsdEE9TVtFQV18fENBKEVBLHt9KSxpQT10QTsoWS5leHBvcnRzPWZ1bmN0aW9uKEEsZyl7cmV0dXJuIGlBW0FdfHwoaUFbQV09dm9pZCAwIT09Zz9nOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMTIuMSIsbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSk7dmFyIGVBLG9BLHJBPVkuZXhwb3J0cyxuQT1VLGFBPWZ1bmN0aW9uKEEpe3JldHVybiBPYmplY3QobkEoQSkpfSxzQT1hQSxjQT17fS5oYXNPd25Qcm9wZXJ0eSxoQT1mdW5jdGlvbihBLGcpe3JldHVybiBjQS5jYWxsKHNBKEEpLGcpfSx5QT0wLGZBPU1hdGgucmFuZG9tKCksdUE9ZnVuY3Rpb24oQSl7cmV0dXJuIlN5bWJvbCgiK1N0cmluZyh2b2lkIDA9PT1BPyIiOkEpKyIpXyIrKCsreUErZkEpLnRvU3RyaW5nKDM2KX0sREE9TSx3QT1NLGxBPWZ1bmN0aW9uKEEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBBP0E6dm9pZCAwfSxkQT1mdW5jdGlvbihBLGcpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/bEEoREFbQV0pfHxsQSh3QVtBXSk6REFbQV0mJkRBW0FdW2ddfHx3QVtBXSYmd0FbQV1bZ119LEZBPWRBKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiIsR0E9RkEsUkE9TS5wcm9jZXNzLFVBPVJBJiZSQS52ZXJzaW9ucyxrQT1VQSYmVUEudjg7a0E/b0E9KGVBPWtBLnNwbGl0KCIuIikpWzBdPDQ/MTplQVswXStlQVsxXTpHQSYmKCEoZUE9R0EubWF0Y2goL0VkZ2VcLyhcZCspLykpfHxlQVsxXT49NzQpJiYoZUE9R0EubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihvQT1lQVsxXSk7dmFyIFNBLHBBPW9BJiYrb0EsTkE9cEEsTUE9dyxZQT0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFNQSgoZnVuY3Rpb24oKXtyZXR1cm4hU3RyaW5nKFN5bWJvbCgpKXx8IVN5bWJvbC5zaGFtJiZOQSYmTkE8NDF9KSksSEE9WUEmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3IsdkE9TSxMQT1oQSxKQT11QSxLQT1ZQSxtQT1IQSx4QT1yQSgid2tzIikscUE9dkEuU3ltYm9sLGJBPW1BP3FBOnFBJiZxQS53aXRob3V0U2V0dGVyfHxKQSxUQT1mdW5jdGlvbihBKXtyZXR1cm4gTEEoeEEsQSkmJihLQXx8InN0cmluZyI9PXR5cGVvZiB4QVtBXSl8fChLQSYmTEEocUEsQSk/eEFbQV09cUFbQV06eEFbQV09YkEoIlN5bWJvbC4iK0EpKSx4QVtBXX0sT0E9TWF0aC5jZWlsLFBBPU1hdGguZmxvb3IsV0E9ZnVuY3Rpb24oQSl7cmV0dXJuIGlzTmFOKEE9K0EpPzA6KEE+MD9QQTpPQSkoQSl9LFpBPVdBLGpBPU1hdGgubWluLFhBPWZ1bmN0aW9uKEEpe3JldHVybiBBPjA/akEoWkEoQSksOTAwNzE5OTI1NDc0MDk5MSk6MH0sVkE9V0EsekE9TWF0aC5tYXgsX0E9TWF0aC5taW4sJEE9ZnVuY3Rpb24oQSxnKXt2YXIgST1WQShBKTtyZXR1cm4gSTwwP3pBKEkrZywwKTpfQShJLGcpfSxBZz1wLGdnPVhBLElnPSRBLEJnPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7dmFyIFEsQz1BZyhnKSxFPWdnKEMubGVuZ3RoKSx0PUlnKEIsRSk7aWYoQSYmSSE9SSl7Zm9yKDtFPnQ7KWlmKChRPUNbdCsrXSkhPVEpcmV0dXJuITB9ZWxzZSBmb3IoO0U+dDt0KyspaWYoKEF8fHQgaW4gQykmJkNbdF09PT1JKXJldHVybiBBfHx0fHwwO3JldHVybiFBJiYtMX19LFFnPXtpbmNsdWRlczpCZyghMCksaW5kZXhPZjpCZyghMSl9LENnPXt9LEVnPWhBLHRnPXAsaWc9UWcuaW5kZXhPZixlZz1DZyxvZz1mdW5jdGlvbihBLGcpe3ZhciBJLEI9dGcoQSksUT0wLEM9W107Zm9yKEkgaW4gQikhRWcoZWcsSSkmJkVnKEIsSSkmJkMucHVzaChJKTtmb3IoO2cubGVuZ3RoPlE7KUVnKEIsST1nW1ErK10pJiYofmlnKEMsSSl8fEMucHVzaChJKSk7cmV0dXJuIEN9LHJnPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl0sbmc9b2csYWc9cmcsc2c9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKEEpe3JldHVybiBuZyhBLGFnKX0sY2c9dixoZz1PLHlnPXNnLGZnPUg/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oQSxnKXtoZyhBKTtmb3IodmFyIEksQj15ZyhnKSxRPUIubGVuZ3RoLEM9MDtRPkM7KWNnLmYoQSxJPUJbQysrXSxnW0ldKTtyZXR1cm4gQX0sdWc9ZEEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiksRGc9dUEsd2c9ckEoImtleXMiKSxsZz1mdW5jdGlvbihBKXtyZXR1cm4gd2dbQV18fCh3Z1tBXT1EZyhBKSl9LGRnPU8sRmc9ZmcsR2c9cmcsUmc9Q2csVWc9dWcsa2c9eCxTZz0icHJvdG90eXBlIixwZz0ic2NyaXB0IixOZz1sZygiSUVfUFJPVE8iKSxNZz1mdW5jdGlvbigpe30sWWc9ZnVuY3Rpb24oQSl7cmV0dXJuIjwiK3BnKyI+IitBKyI8LyIrcGcrIj4ifSxIZz1mdW5jdGlvbigpe3RyeXtTQT1kb2N1bWVudC5kb21haW4mJm5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKFEpe312YXIgQSxnLEk7SGc9U0E/ZnVuY3Rpb24oQSl7QS53cml0ZShZZygiIikpLEEuY2xvc2UoKTt2YXIgZz1BLnBhcmVudFdpbmRvdy5PYmplY3Q7cmV0dXJuIEE9bnVsbCxnfShTQSk6KGc9a2coImlmcmFtZSIpLEk9ImphdmEiK3BnKyI6IixnLnN0eWxlLmRpc3BsYXk9Im5vbmUiLFVnLmFwcGVuZENoaWxkKGcpLGcuc3JjPVN0cmluZyhJKSwoQT1nLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxBLndyaXRlKFlnKCJkb2N1bWVudC5GPU9iamVjdCIpKSxBLmNsb3NlKCksQS5GKTtmb3IodmFyIEI9R2cubGVuZ3RoO0ItLTspZGVsZXRlIEhnW1NnXVtHZ1tCXV07cmV0dXJuIEhnKCl9O1JnW05nXT0hMDt2YXIgdmc9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oQSxnKXt2YXIgSTtyZXR1cm4gbnVsbCE9PUE/KE1nW1NnXT1kZyhBKSxJPW5ldyBNZyxNZ1tTZ109bnVsbCxJW05nXT1BKTpJPUhnKCksdm9pZCAwPT09Zz9JOkZnKEksZyl9LExnPXZnLEpnPXYsS2c9VEEoInVuc2NvcGFibGVzIiksbWc9QXJyYXkucHJvdG90eXBlO251bGw9PW1nW0tnXSYmSmcuZihtZyxLZyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOkxnKG51bGwpfSk7dmFyIHhnPWZ1bmN0aW9uKEEpe21nW0tnXVtBXT0hMH0scWc9e30sYmc9dEEsVGc9RnVuY3Rpb24udG9TdHJpbmc7ImZ1bmN0aW9uIiE9dHlwZW9mIGJnLmluc3BlY3RTb3VyY2UmJihiZy5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKEEpe3JldHVybiBUZy5jYWxsKEEpfSk7dmFyIE9nLFBnLFdnLFpnPWJnLmluc3BlY3RTb3VyY2Usamc9WmcsWGc9TS5XZWFrTWFwLFZnPSJmdW5jdGlvbiI9PXR5cGVvZiBYZyYmL25hdGl2ZSBjb2RlLy50ZXN0KGpnKFhnKSksemc9TCxfZz1nQSwkZz1oQSxBST10QSxnST1sZyxJST1DZyxCST0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLFFJPU0uV2Vha01hcDtpZihWZ3x8QUkuc3RhdGUpe3ZhciBDST1BSS5zdGF0ZXx8KEFJLnN0YXRlPW5ldyBRSSksRUk9Q0kuZ2V0LHRJPUNJLmhhcyxpST1DSS5zZXQ7T2c9ZnVuY3Rpb24oQSxnKXtpZih0SS5jYWxsKENJLEEpKXRocm93IG5ldyBUeXBlRXJyb3IoQkkpO3JldHVybiBnLmZhY2FkZT1BLGlJLmNhbGwoQ0ksQSxnKSxnfSxQZz1mdW5jdGlvbihBKXtyZXR1cm4gRUkuY2FsbChDSSxBKXx8e319LFdnPWZ1bmN0aW9uKEEpe3JldHVybiB0SS5jYWxsKENJLEEpfX1lbHNle3ZhciBlST1nSSgic3RhdGUiKTtJSVtlSV09ITAsT2c9ZnVuY3Rpb24oQSxnKXtpZigkZyhBLGVJKSl0aHJvdyBuZXcgVHlwZUVycm9yKEJJKTtyZXR1cm4gZy5mYWNhZGU9QSxfZyhBLGVJLGcpLGd9LFBnPWZ1bmN0aW9uKEEpe3JldHVybiAkZyhBLGVJKT9BW2VJXTp7fX0sV2c9ZnVuY3Rpb24oQSl7cmV0dXJuICRnKEEsZUkpfX12YXIgb0k9e3NldDpPZyxnZXQ6UGcsaGFzOldnLGVuZm9yY2U6ZnVuY3Rpb24oQSl7cmV0dXJuIFdnKEEpP1BnKEEpOk9nKEEse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcpe3ZhciBJO2lmKCF6ZyhnKXx8KEk9UGcoZykpLnR5cGUhPT1BKXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK0ErIiByZXF1aXJlZCIpO3JldHVybiBJfX19LHJJPXt9LG5JPXt9LGFJPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHNJPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsY0k9c0kmJiFhSS5jYWxsKHsxOjJ9LDEpO25JLmY9Y0k/ZnVuY3Rpb24oQSl7dmFyIGc9c0kodGhpcyxBKTtyZXR1cm4hIWcmJmcuZW51bWVyYWJsZX06YUk7dmFyIGhJPUgseUk9bkksZkk9Xyx1ST1wLERJPVcsd0k9aEEsbEk9YixkST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3JJLmY9aEk/ZEk6ZnVuY3Rpb24oQSxnKXtpZihBPXVJKEEpLGc9REkoZywhMCksbEkpdHJ5e3JldHVybiBkSShBLGcpfWNhdGNoKEkpe31pZih3SShBLGcpKXJldHVybiBmSSgheUkuZi5jYWxsKEEsZyksQVtnXSl9O3ZhciBGST17ZXhwb3J0czp7fX0sR0k9TSxSST1nQSxVST1oQSxrST1RQSxTST1aZyxwST1vSS5nZXQsTkk9b0kuZW5mb3JjZSxNST1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIik7KEZJLmV4cG9ydHM9ZnVuY3Rpb24oQSxnLEksQil7dmFyIFEsQz0hIUImJiEhQi51bnNhZmUsRT0hIUImJiEhQi5lbnVtZXJhYmxlLHQ9ISFCJiYhIUIubm9UYXJnZXRHZXQ7ImZ1bmN0aW9uIj09dHlwZW9mIEkmJigic3RyaW5nIiE9dHlwZW9mIGd8fFVJKEksIm5hbWUiKXx8UkkoSSwibmFtZSIsZyksKFE9TkkoSSkpLnNvdXJjZXx8KFEuc291cmNlPU1JLmpvaW4oInN0cmluZyI9PXR5cGVvZiBnP2c6IiIpKSksQSE9PUdJPyhDPyF0JiZBW2ddJiYoRT0hMCk6ZGVsZXRlIEFbZ10sRT9BW2ddPUk6UkkoQSxnLEkpKTpFP0FbZ109STprSShnLEkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnBJKHRoaXMpLnNvdXJjZXx8U0kodGhpcyl9KSk7dmFyIFlJPUZJLmV4cG9ydHMsSEk9e30sdkk9b2csTEk9cmcuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtISS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihBKXtyZXR1cm4gdkkoQSxMSSl9O3ZhciBKST17fTtKSS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7dmFyIEtJLG1JLHhJLHFJPUhJLGJJPUpJLFRJPU8sT0k9ZEEoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKEEpe3ZhciBnPXFJLmYoVEkoQSkpLEk9YkkuZjtyZXR1cm4gST9nLmNvbmNhdChJKEEpKTpnfSxQST1oQSxXST1PSSxaST1ySSxqST12LFhJPXcsVkk9LyN8XC5wcm90b3R5cGVcLi8sekk9ZnVuY3Rpb24oQSxnKXt2YXIgST0kSVtfSShBKV07cmV0dXJuIEk9PWdCfHxJIT1BQiYmKCJmdW5jdGlvbiI9PXR5cGVvZiBnP1hJKGcpOiEhZyl9LF9JPXpJLm5vcm1hbGl6ZT1mdW5jdGlvbihBKXtyZXR1cm4gU3RyaW5nKEEpLnJlcGxhY2UoVkksIi4iKS50b0xvd2VyQ2FzZSgpfSwkST16SS5kYXRhPXt9LEFCPXpJLk5BVElWRT0iTiIsZ0I9ekkuUE9MWUZJTEw9IlAiLElCPXpJLEJCPU0sUUI9ckkuZixDQj1nQSxFQj1ZSSx0Qj1RQSxpQj1mdW5jdGlvbihBLGcpe2Zvcih2YXIgST1XSShnKSxCPWpJLmYsUT1aSS5mLEM9MDtDPEkubGVuZ3RoO0MrKyl7dmFyIEU9SVtDXTtQSShBLEUpfHxCKEEsRSxRKGcsRSkpfX0sZUI9SUIsb0I9ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsQyxFLHQ9QS50YXJnZXQsaT1BLmdsb2JhbCxlPUEuc3RhdDtpZihJPWk/QkI6ZT9CQlt0XXx8dEIodCx7fSk6KEJCW3RdfHx7fSkucHJvdG90eXBlKWZvcihCIGluIGcpe2lmKEM9Z1tCXSxRPUEubm9UYXJnZXRHZXQ/KEU9UUIoSSxCKSkmJkUudmFsdWU6SVtCXSwhZUIoaT9COnQrKGU/Ii4iOiIjIikrQixBLmZvcmNlZCkmJnZvaWQgMCE9PVEpe2lmKHR5cGVvZiBDPT10eXBlb2YgUSljb250aW51ZTtpQihDLFEpfShBLnNoYW18fFEmJlEuc2hhbSkmJkNCKEMsInNoYW0iLCEwKSxFQihJLEIsQyxBKX19LHJCPSF3KChmdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXt9cmV0dXJuIEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBBKSE9PUEucHJvdG90eXBlfSkpLG5CPWhBLGFCPWFBLHNCPXJCLGNCPWxnKCJJRV9QUk9UTyIpLGhCPU9iamVjdC5wcm90b3R5cGUseUI9c0I/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKEEpe3JldHVybiBBPWFCKEEpLG5CKEEsY0IpP0FbY0JdOiJmdW5jdGlvbiI9PXR5cGVvZiBBLmNvbnN0cnVjdG9yJiZBIGluc3RhbmNlb2YgQS5jb25zdHJ1Y3Rvcj9BLmNvbnN0cnVjdG9yLnByb3RvdHlwZTpBIGluc3RhbmNlb2YgT2JqZWN0P2hCOm51bGx9LGZCPXcsdUI9eUIsREI9Z0Esd0I9aEEsbEI9VEEoIml0ZXJhdG9yIiksZEI9ITE7W10ua2V5cyYmKCJuZXh0ImluKHhJPVtdLmtleXMoKSk/KG1JPXVCKHVCKHhJKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKEtJPW1JKTpkQj0hMCksKG51bGw9PUtJfHxmQigoZnVuY3Rpb24oKXt2YXIgQT17fTtyZXR1cm4gS0lbbEJdLmNhbGwoQSkhPT1BfSkpKSYmKEtJPXt9KSx3QihLSSxsQil8fERCKEtJLGxCLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO3ZhciBGQj17SXRlcmF0b3JQcm90b3R5cGU6S0ksQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpkQn0sR0I9di5mLFJCPWhBLFVCPVRBKCJ0b1N0cmluZ1RhZyIpLGtCPWZ1bmN0aW9uKEEsZyxJKXtBJiYhUkIoQT1JP0E6QS5wcm90b3R5cGUsVUIpJiZHQihBLFVCLHtjb25maWd1cmFibGU6ITAsdmFsdWU6Z30pfSxTQj1GQi5JdGVyYXRvclByb3RvdHlwZSxwQj12ZyxOQj1fLE1CPWtCLFlCPXFnLEhCPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHZCPUwsTEI9TyxKQj1mdW5jdGlvbihBKXtpZighdkIoQSkmJm51bGwhPT1BKXRocm93IFR5cGVFcnJvcigiQ2FuJ3Qgc2V0ICIrU3RyaW5nKEEpKyIgYXMgYSBwcm90b3R5cGUiKTtyZXR1cm4gQX0sS0I9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIEEsZz0hMSxJPXt9O3RyeXsoQT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCkuY2FsbChJLFtdKSxnPUkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChCKXt9cmV0dXJuIGZ1bmN0aW9uKEksQil7cmV0dXJuIExCKEkpLEpCKEIpLGc/QS5jYWxsKEksQik6SS5fX3Byb3RvX189QixJfX0oKTp2b2lkIDApLG1CPW9CLHhCPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1nKyIgSXRlcmF0b3IiO3JldHVybiBBLnByb3RvdHlwZT1wQihTQix7bmV4dDpOQigxLEkpfSksTUIoQSxCLCExKSxZQltCXT1IQixBfSxxQj15QixiQj1LQixUQj1rQixPQj1nQSxQQj1ZSSxXQj1xZyxaQj1GQi5JdGVyYXRvclByb3RvdHlwZSxqQj1GQi5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLFhCPVRBKCJpdGVyYXRvciIpLFZCPSJrZXlzIix6Qj0idmFsdWVzIixfQj0iZW50cmllcyIsJEI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQVE9cCxnUT14ZyxJUT1xZyxCUT1vSSxRUT1mdW5jdGlvbihBLGcsSSxCLFEsQyxFKXt4QihJLGcsQik7dmFyIHQsaSxlLG89ZnVuY3Rpb24oQSl7aWYoQT09PVEmJmMpcmV0dXJuIGM7aWYoIWpCJiZBIGluIGEpcmV0dXJuIGFbQV07c3dpdGNoKEEpe2Nhc2UgVkI6Y2FzZSB6QjpjYXNlIF9COnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgSSh0aGlzLEEpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEkodGhpcyl9fSxyPWcrIiBJdGVyYXRvciIsbj0hMSxhPUEucHJvdG90eXBlLHM9YVtYQl18fGFbIkBAaXRlcmF0b3IiXXx8USYmYVtRXSxjPSFqQiYmc3x8byhRKSxoPSJBcnJheSI9PWcmJmEuZW50cmllc3x8cztpZihoJiYodD1xQihoLmNhbGwobmV3IEEpKSxaQiE9PU9iamVjdC5wcm90b3R5cGUmJnQubmV4dCYmKHFCKHQpIT09WkImJihiQj9iQih0LFpCKToiZnVuY3Rpb24iIT10eXBlb2YgdFtYQl0mJk9CKHQsWEIsJEIpKSxUQih0LHIsITApKSksUT09ekImJnMmJnMubmFtZSE9PXpCJiYobj0hMCxjPWZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0pLGFbWEJdIT09YyYmT0IoYSxYQixjKSxXQltnXT1jLFEpaWYoaT17dmFsdWVzOm8oekIpLGtleXM6Qz9jOm8oVkIpLGVudHJpZXM6byhfQil9LEUpZm9yKGUgaW4gaSkoakJ8fG58fCEoZSBpbiBhKSkmJlBCKGEsZSxpW2VdKTtlbHNlIG1CKHt0YXJnZXQ6Zyxwcm90bzohMCxmb3JjZWQ6akJ8fG59LGkpO3JldHVybiBpfSxDUT0iQXJyYXkgSXRlcmF0b3IiLEVRPUJRLnNldCx0UT1CUS5nZXR0ZXJGb3IoQ1EpLGlRPVFRKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKEEsZyl7RVEodGhpcyx7dHlwZTpDUSx0YXJnZXQ6QVEoQSksaW5kZXg6MCxraW5kOmd9KX0pLChmdW5jdGlvbigpe3ZhciBBPXRRKHRoaXMpLGc9QS50YXJnZXQsST1BLmtpbmQsQj1BLmluZGV4Kys7cmV0dXJuIWd8fEI+PWcubGVuZ3RoPyhBLnRhcmdldD12b2lkIDAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk6ImtleXMiPT1JP3t2YWx1ZTpCLGRvbmU6ITF9OiJ2YWx1ZXMiPT1JP3t2YWx1ZTpnW0JdLGRvbmU6ITF9Ont2YWx1ZTpbQixnW0JdXSxkb25lOiExfX0pLCJ2YWx1ZXMiKTtJUS5Bcmd1bWVudHM9SVEuQXJyYXksZ1EoImtleXMiKSxnUSgidmFsdWVzIiksZ1EoImVudHJpZXMiKTt2YXIgZVE9e307ZVFbVEEoInRvU3RyaW5nVGFnIildPSJ6Ijt2YXIgb1E9IltvYmplY3Qgel0iPT09U3RyaW5nKGVRKSxyUT1vUSxuUT1kLGFRPVRBKCJ0b1N0cmluZ1RhZyIpLHNRPSJBcmd1bWVudHMiPT1uUShmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGNRPXJRP25ROmZ1bmN0aW9uKEEpe3ZhciBnLEksQjtyZXR1cm4gdm9pZCAwPT09QT8iVW5kZWZpbmVkIjpudWxsPT09QT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihJPWZ1bmN0aW9uKEEsZyl7dHJ5e3JldHVybiBBW2ddfWNhdGNoKEkpe319KGc9T2JqZWN0KEEpLGFRKSk/STpzUT9uUShnKToiT2JqZWN0Ij09KEI9blEoZykpJiYiZnVuY3Rpb24iPT10eXBlb2YgZy5jYWxsZWU/IkFyZ3VtZW50cyI6Qn0saFE9Y1EseVE9b1E/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK2hRKHRoaXMpKyJdIn07b1F8fFlJKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIix5USx7dW5zYWZlOiEwfSk7dmFyIGZRPXtleHBvcnRzOnt9fSx1UT1UQSgiaXRlcmF0b3IiKSxEUT0hMTt0cnl7dmFyIHdRPTAsbFE9e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIXdRKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtEUT0hMH19O2xRW3VRXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKGxRLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2goU2Ype312YXIgZFEsRlE9ZnVuY3Rpb24oQSxnKXtpZighZyYmIURRKXJldHVybiExO3ZhciBJPSExO3RyeXt2YXIgQj17fTtCW3VRXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ST0hMH19fX0sQShCKX1jYXRjaChTZil7fXJldHVybiBJfSxHUT0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3LFJRPUdRLFVRPUgsa1E9TSxTUT1MLHBRPWhBLE5RPWNRLE1RPWdBLFlRPVlJLEhRPXYuZix2UT15QixMUT1LQixKUT1UQSxLUT11QSxtUT1rUS5JbnQ4QXJyYXkseFE9bVEmJm1RLnByb3RvdHlwZSxxUT1rUS5VaW50OENsYW1wZWRBcnJheSxiUT1xUSYmcVEucHJvdG90eXBlLFRRPW1RJiZ2UShtUSksT1E9eFEmJnZRKHhRKSxQUT1PYmplY3QucHJvdG90eXBlLFdRPVBRLmlzUHJvdG90eXBlT2YsWlE9SlEoInRvU3RyaW5nVGFnIiksalE9S1EoIlRZUEVEX0FSUkFZX1RBRyIpLFhRPVJRJiYhIUxRJiYiT3BlcmEiIT09TlEoa1Eub3BlcmEpLFZRPSExLHpRPXtJbnQ4QXJyYXk6MSxVaW50OEFycmF5OjEsVWludDhDbGFtcGVkQXJyYXk6MSxJbnQxNkFycmF5OjIsVWludDE2QXJyYXk6MixJbnQzMkFycmF5OjQsVWludDMyQXJyYXk6NCxGbG9hdDMyQXJyYXk6NCxGbG9hdDY0QXJyYXk6OH0sX1E9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSwkUT1mdW5jdGlvbihBKXtpZighU1EoQSkpcmV0dXJuITE7dmFyIGc9TlEoQSk7cmV0dXJuIHBRKHpRLGcpfHxwUShfUSxnKX07Zm9yKGRRIGluIHpRKWtRW2RRXXx8KFhRPSExKTtpZigoIVhRfHwiZnVuY3Rpb24iIT10eXBlb2YgVFF8fFRRPT09RnVuY3Rpb24ucHJvdG90eXBlKSYmKFRRPWZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxYUSkpZm9yKGRRIGluIHpRKWtRW2RRXSYmTFEoa1FbZFFdLFRRKTtpZigoIVhRfHwhT1F8fE9RPT09UFEpJiYoT1E9VFEucHJvdG90eXBlLFhRKSlmb3IoZFEgaW4gelEpa1FbZFFdJiZMUShrUVtkUV0ucHJvdG90eXBlLE9RKTtpZihYUSYmdlEoYlEpIT09T1EmJkxRKGJRLE9RKSxVUSYmIXBRKE9RLFpRKSlmb3IoZFEgaW4gVlE9ITAsSFEoT1EsWlEse2dldDpmdW5jdGlvbigpe3JldHVybiBTUSh0aGlzKT90aGlzW2pRXTp2b2lkIDB9fSkselEpa1FbZFFdJiZNUShrUVtkUV0salEsZFEpO3ZhciBBQz17TkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzpYUSxUWVBFRF9BUlJBWV9UQUc6VlEmJmpRLGFUeXBlZEFycmF5OmZ1bmN0aW9uKEEpe2lmKCRRKEEpKXJldHVybiBBO3Rocm93IFR5cGVFcnJvcigiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24oQSl7aWYoTFEpe2lmKFdRLmNhbGwoVFEsQSkpcmV0dXJuIEF9ZWxzZSBmb3IodmFyIGcgaW4gelEpaWYocFEoelEsZFEpKXt2YXIgST1rUVtnXTtpZihJJiYoQT09PUl8fFdRLmNhbGwoSSxBKSkpcmV0dXJuIEF9dGhyb3cgVHlwZUVycm9yKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihBLGcsSSl7aWYoVVEpe2lmKEkpZm9yKHZhciBCIGluIHpRKXt2YXIgUT1rUVtCXTtpZihRJiZwUShRLnByb3RvdHlwZSxBKSl0cnl7ZGVsZXRlIFEucHJvdG90eXBlW0FdfWNhdGNoKFNmKXt9fU9RW0FdJiYhSXx8WVEoT1EsQSxJP2c6WFEmJnhRW0FdfHxnKX19LGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFE7aWYoVVEpe2lmKExRKXtpZihJKWZvcihCIGluIHpRKWlmKChRPWtRW0JdKSYmcFEoUSxBKSl0cnl7ZGVsZXRlIFFbQV19Y2F0Y2goU2Ype31pZihUUVtBXSYmIUkpcmV0dXJuO3RyeXtyZXR1cm4gWVEoVFEsQSxJP2c6WFEmJlRRW0FdfHxnKX1jYXRjaChTZil7fX1mb3IoQiBpbiB6USkhKFE9a1FbQl0pfHxRW0FdJiYhSXx8WVEoUSxBLGcpfX0saXNWaWV3OmZ1bmN0aW9uKEEpe2lmKCFTUShBKSlyZXR1cm4hMTt2YXIgZz1OUShBKTtyZXR1cm4iRGF0YVZpZXciPT09Z3x8cFEoelEsZyl8fHBRKF9RLGcpfSxpc1R5cGVkQXJyYXk6JFEsVHlwZWRBcnJheTpUUSxUeXBlZEFycmF5UHJvdG90eXBlOk9RfSxnQz1NLElDPXcsQkM9RlEsUUM9QUMuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyxDQz1nQy5BcnJheUJ1ZmZlcixFQz1nQy5JbnQ4QXJyYXksdEM9IVFDfHwhSUMoKGZ1bmN0aW9uKCl7RUMoMSl9KSl8fCFJQygoZnVuY3Rpb24oKXtuZXcgRUMoLTEpfSkpfHwhQkMoKGZ1bmN0aW9uKEEpe25ldyBFQyxuZXcgRUMobnVsbCksbmV3IEVDKDEuNSksbmV3IEVDKEEpfSksITApfHxJQygoZnVuY3Rpb24oKXtyZXR1cm4gMSE9PW5ldyBFQyhuZXcgQ0MoMiksMSx2b2lkIDApLmxlbmd0aH0pKSxpQz1ZSSxlQz1mdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCIGluIGcpaUMoQSxCLGdbQl0sSSk7cmV0dXJuIEF9LG9DPWZ1bmN0aW9uKEEsZyxJKXtpZighKEEgaW5zdGFuY2VvZiBnKSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCAiKyhJP0krIiAiOiIiKSsiaW52b2NhdGlvbiIpO3JldHVybiBBfSxyQz1XQSxuQz1YQSxhQz1mdW5jdGlvbihBKXtpZih2b2lkIDA9PT1BKXJldHVybiAwO3ZhciBnPXJDKEEpLEk9bkMoZyk7aWYoZyE9PUkpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIG9yIGluZGV4Iik7cmV0dXJuIEl9LHNDPU1hdGguYWJzLGNDPU1hdGgucG93LGhDPU1hdGguZmxvb3IseUM9TWF0aC5sb2csZkM9TWF0aC5MTjIsdUM9YUEsREM9JEEsd0M9WEEsbEM9ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPXVDKHRoaXMpLEk9d0MoZy5sZW5ndGgpLEI9YXJndW1lbnRzLmxlbmd0aCxRPURDKEI+MT9hcmd1bWVudHNbMV06dm9pZCAwLEkpLEM9Qj4yP2FyZ3VtZW50c1syXTp2b2lkIDAsRT12b2lkIDA9PT1DP0k6REMoQyxJKTtFPlE7KWdbUSsrXT1BO3JldHVybiBnfSxkQz1NLEZDPUgsR0M9R1EsUkM9Z0EsVUM9ZUMsa0M9dyxTQz1vQyxwQz1XQSxOQz1YQSxNQz1hQyxZQz17cGFjazpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxDLEU9bmV3IEFycmF5KEkpLHQ9OCpJLWctMSxpPSgxPDx0KS0xLGU9aT4+MSxvPTIzPT09Zz9jQygyLC0yNCktY0MoMiwtNzcpOjAscj1BPDB8fDA9PT1BJiYxL0E8MD8xOjAsbj0wO2ZvcigoQT1zQyhBKSkhPUF8fEE9PT0xLzA/KFE9QSE9QT8xOjAsQj1pKTooQj1oQyh5QyhBKS9mQyksQSooQz1jQygyLC1CKSk8MSYmKEItLSxDKj0yKSwoQSs9QitlPj0xP28vQzpvKmNDKDIsMS1lKSkqQz49MiYmKEIrKyxDLz0yKSxCK2U+PWk/KFE9MCxCPWkpOkIrZT49MT8oUT0oQSpDLTEpKmNDKDIsZyksQis9ZSk6KFE9QSpjQygyLGUtMSkqY0MoMixnKSxCPTApKTtnPj04O0VbbisrXT0yNTUmUSxRLz0yNTYsZy09OCk7Zm9yKEI9Qjw8Z3xRLHQrPWc7dD4wO0VbbisrXT0yNTUmQixCLz0yNTYsdC09OCk7cmV0dXJuIEVbLS1uXXw9MTI4KnIsRX0sdW5wYWNrOmZ1bmN0aW9uKEEsZyl7dmFyIEksQj1BLmxlbmd0aCxRPTgqQi1nLTEsQz0oMTw8USktMSxFPUM+PjEsdD1RLTcsaT1CLTEsZT1BW2ktLV0sbz0xMjcmZTtmb3IoZT4+PTc7dD4wO289MjU2Km8rQVtpXSxpLS0sdC09OCk7Zm9yKEk9byYoMTw8LXQpLTEsbz4+PS10LHQrPWc7dD4wO0k9MjU2KkkrQVtpXSxpLS0sdC09OCk7aWYoMD09PW8pbz0xLUU7ZWxzZXtpZihvPT09QylyZXR1cm4gST9OYU46ZT8tMS8wOjEvMDtJKz1jQygyLGcpLG8tPUV9cmV0dXJuKGU/LTE6MSkqSSpjQygyLG8tZyl9fSxIQz15Qix2Qz1LQixMQz1ISS5mLEpDPXYuZixLQz1sQyxtQz1rQix4Qz1vSS5nZXQscUM9b0kuc2V0LGJDPSJBcnJheUJ1ZmZlciIsVEM9IkRhdGFWaWV3IixPQz0icHJvdG90eXBlIixQQz0iV3JvbmcgaW5kZXgiLFdDPWRDW2JDXSxaQz1XQyxqQz1kQ1tUQ10sWEM9akMmJmpDW09DXSxWQz1PYmplY3QucHJvdG90eXBlLHpDPWRDLlJhbmdlRXJyb3IsX0M9WUMucGFjaywkQz1ZQy51bnBhY2ssQUU9ZnVuY3Rpb24oQSl7cmV0dXJuWzI1NSZBXX0sZ0U9ZnVuY3Rpb24oQSl7cmV0dXJuWzI1NSZBLEE+PjgmMjU1XX0sSUU9ZnVuY3Rpb24oQSl7cmV0dXJuWzI1NSZBLEE+PjgmMjU1LEE+PjE2JjI1NSxBPj4yNCYyNTVdfSxCRT1mdW5jdGlvbihBKXtyZXR1cm4gQVszXTw8MjR8QVsyXTw8MTZ8QVsxXTw8OHxBWzBdfSxRRT1mdW5jdGlvbihBKXtyZXR1cm4gX0MoQSwyMyw0KX0sQ0U9ZnVuY3Rpb24oQSl7cmV0dXJuIF9DKEEsNTIsOCl9LEVFPWZ1bmN0aW9uKEEsZyl7SkMoQVtPQ10sZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHhDKHRoaXMpW2ddfX0pfSx0RT1mdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1NQyhJKSxDPXhDKEEpO2lmKFErZz5DLmJ5dGVMZW5ndGgpdGhyb3cgekMoUEMpO3ZhciBFPXhDKEMuYnVmZmVyKS5ieXRlcyx0PVErQy5ieXRlT2Zmc2V0LGk9RS5zbGljZSh0LHQrZyk7cmV0dXJuIEI/aTppLnJldmVyc2UoKX0saUU9ZnVuY3Rpb24oQSxnLEksQixRLEMpe3ZhciBFPU1DKEkpLHQ9eEMoQSk7aWYoRStnPnQuYnl0ZUxlbmd0aCl0aHJvdyB6QyhQQyk7Zm9yKHZhciBpPXhDKHQuYnVmZmVyKS5ieXRlcyxlPUUrdC5ieXRlT2Zmc2V0LG89QigrUSkscj0wO3I8ZztyKyspaVtlK3JdPW9bQz9yOmctci0xXX07aWYoR0Mpe2lmKCFrQygoZnVuY3Rpb24oKXtXQygxKX0pKXx8IWtDKChmdW5jdGlvbigpe25ldyBXQygtMSl9KSl8fGtDKChmdW5jdGlvbigpe3JldHVybiBuZXcgV0MsbmV3IFdDKDEuNSksbmV3IFdDKE5hTiksV0MubmFtZSE9YkN9KSkpe2Zvcih2YXIgZUUsb0U9KFpDPWZ1bmN0aW9uKEEpe3JldHVybiBTQyh0aGlzLFpDKSxuZXcgV0MoTUMoQSkpfSlbT0NdPVdDW09DXSxyRT1MQyhXQyksbkU9MDtyRS5sZW5ndGg+bkU7KShlRT1yRVtuRSsrXSlpbiBaQ3x8UkMoWkMsZUUsV0NbZUVdKTtvRS5jb25zdHJ1Y3Rvcj1aQ312QyYmSEMoWEMpIT09VkMmJnZDKFhDLFZDKTt2YXIgYUU9bmV3IGpDKG5ldyBaQygyKSksc0U9WEMuc2V0SW50ODthRS5zZXRJbnQ4KDAsMjE0NzQ4MzY0OCksYUUuc2V0SW50OCgxLDIxNDc0ODM2NDkpLCFhRS5nZXRJbnQ4KDApJiZhRS5nZXRJbnQ4KDEpfHxVQyhYQyx7c2V0SW50ODpmdW5jdGlvbihBLGcpe3NFLmNhbGwodGhpcyxBLGc8PDI0Pj4yNCl9LHNldFVpbnQ4OmZ1bmN0aW9uKEEsZyl7c0UuY2FsbCh0aGlzLEEsZzw8MjQ+PjI0KX19LHt1bnNhZmU6ITB9KX1lbHNlIFpDPWZ1bmN0aW9uKEEpe1NDKHRoaXMsWkMsYkMpO3ZhciBnPU1DKEEpO3FDKHRoaXMse2J5dGVzOktDLmNhbGwobmV3IEFycmF5KGcpLDApLGJ5dGVMZW5ndGg6Z30pLEZDfHwodGhpcy5ieXRlTGVuZ3RoPWcpfSxqQz1mdW5jdGlvbihBLGcsSSl7U0ModGhpcyxqQyxUQyksU0MoQSxaQyxUQyk7dmFyIEI9eEMoQSkuYnl0ZUxlbmd0aCxRPXBDKGcpO2lmKFE8MHx8UT5CKXRocm93IHpDKCJXcm9uZyBvZmZzZXQiKTtpZihRKyhJPXZvaWQgMD09PUk/Qi1ROk5DKEkpKT5CKXRocm93IHpDKCJXcm9uZyBsZW5ndGgiKTtxQyh0aGlzLHtidWZmZXI6QSxieXRlTGVuZ3RoOkksYnl0ZU9mZnNldDpRfSksRkN8fCh0aGlzLmJ1ZmZlcj1BLHRoaXMuYnl0ZUxlbmd0aD1JLHRoaXMuYnl0ZU9mZnNldD1RKX0sRkMmJihFRShaQywiYnl0ZUxlbmd0aCIpLEVFKGpDLCJidWZmZXIiKSxFRShqQywiYnl0ZUxlbmd0aCIpLEVFKGpDLCJieXRlT2Zmc2V0IikpLFVDKGpDW09DXSx7Z2V0SW50ODpmdW5jdGlvbihBKXtyZXR1cm4gdEUodGhpcywxLEEpWzBdPDwyND4+MjR9LGdldFVpbnQ4OmZ1bmN0aW9uKEEpe3JldHVybiB0RSh0aGlzLDEsQSlbMF19LGdldEludDE2OmZ1bmN0aW9uKEEpe3ZhciBnPXRFKHRoaXMsMixBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKTtyZXR1cm4oZ1sxXTw8OHxnWzBdKTw8MTY+PjE2fSxnZXRVaW50MTY6ZnVuY3Rpb24oQSl7dmFyIGc9dEUodGhpcywyLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBnWzFdPDw4fGdbMF19LGdldEludDMyOmZ1bmN0aW9uKEEpe3JldHVybiBCRSh0RSh0aGlzLDQsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCkpfSxnZXRVaW50MzI6ZnVuY3Rpb24oQSl7cmV0dXJuIEJFKHRFKHRoaXMsNCxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSk+Pj4wfSxnZXRGbG9hdDMyOmZ1bmN0aW9uKEEpe3JldHVybiAkQyh0RSh0aGlzLDQsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksMjMpfSxnZXRGbG9hdDY0OmZ1bmN0aW9uKEEpe3JldHVybiAkQyh0RSh0aGlzLDgsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksNTIpfSxzZXRJbnQ4OmZ1bmN0aW9uKEEsZyl7aUUodGhpcywxLEEsQUUsZyl9LHNldFVpbnQ4OmZ1bmN0aW9uKEEsZyl7aUUodGhpcywxLEEsQUUsZyl9LHNldEludDE2OmZ1bmN0aW9uKEEsZyl7aUUodGhpcywyLEEsZ0UsZyxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldFVpbnQxNjpmdW5jdGlvbihBLGcpe2lFKHRoaXMsMixBLGdFLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRJbnQzMjpmdW5jdGlvbihBLGcpe2lFKHRoaXMsNCxBLElFLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRVaW50MzI6ZnVuY3Rpb24oQSxnKXtpRSh0aGlzLDQsQSxJRSxnLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0RmxvYXQzMjpmdW5jdGlvbihBLGcpe2lFKHRoaXMsNCxBLFFFLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRGbG9hdDY0OmZ1bmN0aW9uKEEsZyl7aUUodGhpcyw4LEEsQ0UsZyxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9fSk7bUMoWkMsYkMpLG1DKGpDLFRDKTt2YXIgY0U9e0FycmF5QnVmZmVyOlpDLERhdGFWaWV3OmpDfSxoRT1XQSx5RT1mdW5jdGlvbihBKXt2YXIgZz1oRShBKTtpZihnPDApdGhyb3cgUmFuZ2VFcnJvcigiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7cmV0dXJuIGd9LGZFPWZ1bmN0aW9uKEEsZyl7dmFyIEk9eUUoQSk7aWYoSSVnKXRocm93IFJhbmdlRXJyb3IoIldyb25nIG9mZnNldCIpO3JldHVybiBJfSx1RT1jUSxERT1xZyx3RT1UQSgiaXRlcmF0b3IiKSxsRT1mdW5jdGlvbihBKXtpZihudWxsIT1BKXJldHVybiBBW3dFXXx8QVsiQEBpdGVyYXRvciJdfHxERVt1RShBKV19LGRFPXFnLEZFPVRBKCJpdGVyYXRvciIpLEdFPUFycmF5LnByb3RvdHlwZSxSRT1mdW5jdGlvbihBKXtyZXR1cm4gdm9pZCAwIT09QSYmKGRFLkFycmF5PT09QXx8R0VbRkVdPT09QSl9LFVFPWZ1bmN0aW9uKEEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBBKXRocm93IFR5cGVFcnJvcihTdHJpbmcoQSkrIiBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiBBfSxrRT1VRSxTRT1mdW5jdGlvbihBLGcsSSl7aWYoa0UoQSksdm9pZCAwPT09ZylyZXR1cm4gQTtzd2l0Y2goSSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmNhbGwoZyl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24oSSl7cmV0dXJuIEEuY2FsbChnLEkpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKEksQil7cmV0dXJuIEEuY2FsbChnLEksQil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oSSxCLFEpe3JldHVybiBBLmNhbGwoZyxJLEIsUSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KGcsYXJndW1lbnRzKX19LHBFPWFBLE5FPVhBLE1FPWxFLFlFPVJFLEhFPVNFLHZFPUFDLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsTEU9ZCxKRT1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihBKXtyZXR1cm4iQXJyYXkiPT1MRShBKX0sS0U9TCxtRT1KRSx4RT1UQSgic3BlY2llcyIpLHFFPWZ1bmN0aW9uKEEsZyl7dmFyIEk7cmV0dXJuIG1FKEEpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKEk9QS5jb25zdHJ1Y3Rvcil8fEkhPT1BcnJheSYmIW1FKEkucHJvdG90eXBlKT9LRShJKSYmbnVsbD09PShJPUlbeEVdKSYmKEk9dm9pZCAwKTpJPXZvaWQgMCksbmV3KHZvaWQgMD09PUk/QXJyYXk6SSkoMD09PWc/MDpnKX0sYkU9U0UsVEU9UixPRT1hQSxQRT1YQSxXRT1xRSxaRT1bXS5wdXNoLGpFPWZ1bmN0aW9uKEEpe3ZhciBnPTE9PUEsST0yPT1BLEI9Mz09QSxRPTQ9PUEsQz02PT1BLEU9Nz09QSx0PTU9PUF8fEM7cmV0dXJuIGZ1bmN0aW9uKGksZSxvLHIpe2Zvcih2YXIgbixhLHM9T0UoaSksYz1URShzKSxoPWJFKGUsbywzKSx5PVBFKGMubGVuZ3RoKSxmPTAsdT1yfHxXRSxEPWc/dShpLHkpOkl8fEU/dShpLDApOnZvaWQgMDt5PmY7ZisrKWlmKCh0fHxmIGluIGMpJiYoYT1oKG49Y1tmXSxmLHMpLEEpKWlmKGcpRFtmXT1hO2Vsc2UgaWYoYSlzd2l0Y2goQSl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gbjtjYXNlIDY6cmV0dXJuIGY7Y2FzZSAyOlpFLmNhbGwoRCxuKX1lbHNlIHN3aXRjaChBKXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OlpFLmNhbGwoRCxuKX1yZXR1cm4gQz8tMTpCfHxRP1E6RH19LFhFPXtmb3JFYWNoOmpFKDApLG1hcDpqRSgxKSxmaWx0ZXI6akUoMiksc29tZTpqRSgzKSxldmVyeTpqRSg0KSxmaW5kOmpFKDUpLGZpbmRJbmRleDpqRSg2KSxmaWx0ZXJPdXQ6akUoNyl9LFZFPWRBLHpFPXYsX0U9SCwkRT1UQSgic3BlY2llcyIpLEF0PWZ1bmN0aW9uKEEpe3ZhciBnPVZFKEEpLEk9ekUuZjtfRSYmZyYmIWdbJEVdJiZJKGcsJEUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX0sZ3Q9TCxJdD1LQixCdD1mdW5jdGlvbihBLGcsSSl7dmFyIEIsUTtyZXR1cm4gSXQmJiJmdW5jdGlvbiI9PXR5cGVvZihCPWcuY29uc3RydWN0b3IpJiZCIT09SSYmZ3QoUT1CLnByb3RvdHlwZSkmJlEhPT1JLnByb3RvdHlwZSYmSXQoQSxRKSxBfSxRdD1vQixDdD1NLEV0PUgsdHQ9dEMsaXQ9QUMsZXQ9Y0Usb3Q9b0MscnQ9XyxudD1nQSxhdD1YQSxzdD1hQyxjdD1mRSxodD1XLHl0PWhBLGZ0PWNRLHV0PUwsRHQ9dmcsd3Q9S0IsbHQ9SEkuZixkdD1mdW5jdGlvbihBKXt2YXIgZyxJLEIsUSxDLEUsdD1wRShBKSxpPWFyZ3VtZW50cy5sZW5ndGgsZT1pPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxvPXZvaWQgMCE9PWUscj1NRSh0KTtpZihudWxsIT1yJiYhWUUocikpZm9yKEU9KEM9ci5jYWxsKHQpKS5uZXh0LHQ9W107IShRPUUuY2FsbChDKSkuZG9uZTspdC5wdXNoKFEudmFsdWUpO2ZvcihvJiZpPjImJihlPUhFKGUsYXJndW1lbnRzWzJdLDIpKSxJPU5FKHQubGVuZ3RoKSxCPW5ldyh2RSh0aGlzKSkoSSksZz0wO0k+ZztnKyspQltnXT1vP2UodFtnXSxnKTp0W2ddO3JldHVybiBCfSxGdD1YRS5mb3JFYWNoLEd0PUF0LFJ0PXYsVXQ9ckksa3Q9QnQsU3Q9b0kuZ2V0LHB0PW9JLnNldCxOdD1SdC5mLE10PVV0LmYsWXQ9TWF0aC5yb3VuZCxIdD1DdC5SYW5nZUVycm9yLHZ0PWV0LkFycmF5QnVmZmVyLEx0PWV0LkRhdGFWaWV3LEp0PWl0Lk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MsS3Q9aXQuVFlQRURfQVJSQVlfVEFHLG10PWl0LlR5cGVkQXJyYXkseHQ9aXQuVHlwZWRBcnJheVByb3RvdHlwZSxxdD1pdC5hVHlwZWRBcnJheUNvbnN0cnVjdG9yLGJ0PWl0LmlzVHlwZWRBcnJheSxUdD0iQllURVNfUEVSX0VMRU1FTlQiLE90PSJXcm9uZyBsZW5ndGgiLFB0PWZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPTAsQj1nLmxlbmd0aCxRPW5ldyhxdChBKSkoQik7Qj5JOylRW0ldPWdbSSsrXTtyZXR1cm4gUX0sV3Q9ZnVuY3Rpb24oQSxnKXtOdChBLGcse2dldDpmdW5jdGlvbigpe3JldHVybiBTdCh0aGlzKVtnXX19KX0sWnQ9ZnVuY3Rpb24oQSl7dmFyIGc7cmV0dXJuIEEgaW5zdGFuY2VvZiB2dHx8IkFycmF5QnVmZmVyIj09KGc9ZnQoQSkpfHwiU2hhcmVkQXJyYXlCdWZmZXIiPT1nfSxqdD1mdW5jdGlvbihBLGcpe3JldHVybiBidChBKSYmInN5bWJvbCIhPXR5cGVvZiBnJiZnIGluIEEmJlN0cmluZygrZyk9PVN0cmluZyhnKX0sWHQ9ZnVuY3Rpb24oQSxnKXtyZXR1cm4ganQoQSxnPWh0KGcsITApKT9ydCgyLEFbZ10pOk10KEEsZyl9LFZ0PWZ1bmN0aW9uKEEsZyxJKXtyZXR1cm4hKGp0KEEsZz1odChnLCEwKSkmJnV0KEkpJiZ5dChJLCJ2YWx1ZSIpKXx8eXQoSSwiZ2V0Iil8fHl0KEksInNldCIpfHxJLmNvbmZpZ3VyYWJsZXx8eXQoSSwid3JpdGFibGUiKSYmIUkud3JpdGFibGV8fHl0KEksImVudW1lcmFibGUiKSYmIUkuZW51bWVyYWJsZT9OdChBLGcsSSk6KEFbZ109SS52YWx1ZSxBKX07RXQ/KEp0fHwoVXQuZj1YdCxSdC5mPVZ0LFd0KHh0LCJidWZmZXIiKSxXdCh4dCwiYnl0ZU9mZnNldCIpLFd0KHh0LCJieXRlTGVuZ3RoIiksV3QoeHQsImxlbmd0aCIpKSxRdCh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFKdH0se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpYdCxkZWZpbmVQcm9wZXJ0eTpWdH0pLGZRLmV4cG9ydHM9ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPUEubWF0Y2goL1xkKyQvKVswXS84LFE9QSsoST8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsQz0iZ2V0IitBLEU9InNldCIrQSx0PUN0W1FdLGk9dCxlPWkmJmkucHJvdG90eXBlLG89e30scj1mdW5jdGlvbihBLGcpe050KEEsZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKEEsZyl7dmFyIEk9U3QoQSk7cmV0dXJuIEkudmlld1tDXShnKkIrSS5ieXRlT2Zmc2V0LCEwKX0odGhpcyxnKX0sc2V0OmZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihBLGcsUSl7dmFyIEM9U3QoQSk7SSYmKFE9KFE9WXQoUSkpPDA/MDpRPjI1NT8yNTU6MjU1JlEpLEMudmlld1tFXShnKkIrQy5ieXRlT2Zmc2V0LFEsITApfSh0aGlzLGcsQSl9LGVudW1lcmFibGU6ITB9KX07SnQ/dHQmJihpPWcoKGZ1bmN0aW9uKEEsZyxJLEMpe3JldHVybiBvdChBLGksUSksa3QodXQoZyk/WnQoZyk/dm9pZCAwIT09Qz9uZXcgdChnLGN0KEksQiksQyk6dm9pZCAwIT09ST9uZXcgdChnLGN0KEksQikpOm5ldyB0KGcpOmJ0KGcpP1B0KGksZyk6ZHQuY2FsbChpLGcpOm5ldyB0KHN0KGcpKSxBLGkpfSkpLHd0JiZ3dChpLG10KSxGdChsdCh0KSwoZnVuY3Rpb24oQSl7QSBpbiBpfHxudChpLEEsdFtBXSl9KSksaS5wcm90b3R5cGU9ZSk6KGk9ZygoZnVuY3Rpb24oQSxnLEksQyl7b3QoQSxpLFEpO3ZhciBFLHQsZSxvPTAsbj0wO2lmKHV0KGcpKXtpZighWnQoZykpcmV0dXJuIGJ0KGcpP1B0KGksZyk6ZHQuY2FsbChpLGcpO0U9ZyxuPWN0KEksQik7dmFyIGE9Zy5ieXRlTGVuZ3RoO2lmKHZvaWQgMD09PUMpe2lmKGElQil0aHJvdyBIdChPdCk7aWYoKHQ9YS1uKTwwKXRocm93IEh0KE90KX1lbHNlIGlmKCh0PWF0KEMpKkIpK24+YSl0aHJvdyBIdChPdCk7ZT10L0J9ZWxzZSBlPXN0KGcpLEU9bmV3IHZ0KHQ9ZSpCKTtmb3IocHQoQSx7YnVmZmVyOkUsYnl0ZU9mZnNldDpuLGJ5dGVMZW5ndGg6dCxsZW5ndGg6ZSx2aWV3Om5ldyBMdChFKX0pO288ZTspcihBLG8rKyl9KSksd3QmJnd0KGksbXQpLGU9aS5wcm90b3R5cGU9RHQoeHQpKSxlLmNvbnN0cnVjdG9yIT09aSYmbnQoZSwiY29uc3RydWN0b3IiLGkpLEt0JiZudChlLEt0LFEpLG9bUV09aSxRdCh7Z2xvYmFsOiEwLGZvcmNlZDppIT10LHNoYW06IUp0fSxvKSxUdCBpbiBpfHxudChpLFR0LEIpLFR0IGluIGV8fG50KGUsVHQsQiksR3QoUSl9KTpmUS5leHBvcnRzPWZ1bmN0aW9uKCl7fTt2YXIgenQ9ZlEuZXhwb3J0czt6dCgiVWludDgiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKTt2YXIgX3Q9YUEsJHQ9JEEsQWk9WEEsZ2k9TWF0aC5taW4sSWk9W10uY29weVdpdGhpbnx8ZnVuY3Rpb24oQSxnKXt2YXIgST1fdCh0aGlzKSxCPUFpKEkubGVuZ3RoKSxRPSR0KEEsQiksQz0kdChnLEIpLEU9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsdD1naSgodm9pZCAwPT09RT9COiR0KEUsQikpLUMsQi1RKSxpPTE7Zm9yKEM8USYmUTxDK3QmJihpPS0xLEMrPXQtMSxRKz10LTEpO3QtLSA+MDspQyBpbiBJP0lbUV09SVtDXTpkZWxldGUgSVtRXSxRKz1pLEMrPWk7cmV0dXJuIEl9LEJpPUlpLFFpPUFDLmFUeXBlZEFycmF5OygwLEFDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJjb3B5V2l0aGluIiwoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQmkuY2FsbChRaSh0aGlzKSxBLGcsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSkpO3ZhciBDaT1YRS5ldmVyeSxFaT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZXZlcnkiLChmdW5jdGlvbihBKXtyZXR1cm4gQ2koRWkodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIHRpPWxDLGlpPUFDLmFUeXBlZEFycmF5OygwLEFDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaWxsIiwoZnVuY3Rpb24oQSl7cmV0dXJuIHRpLmFwcGx5KGlpKHRoaXMpLGFyZ3VtZW50cyl9KSk7dmFyIGVpPU8sb2k9VUUscmk9VEEoInNwZWNpZXMiKSxuaT1mdW5jdGlvbihBLGcpe3ZhciBJLEI9ZWkoQSkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PUJ8fG51bGw9PShJPWVpKEIpW3JpXSk/ZzpvaShJKX0sYWk9QUMuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixzaT1uaSxjaT1YRS5maWx0ZXIsaGk9ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9c2koQSxBLmNvbnN0cnVjdG9yKSxCPTAsUT1nLmxlbmd0aCxDPW5ldyhhaShJKSkoUSk7UT5COylDW0JdPWdbQisrXTtyZXR1cm4gQ30seWk9QUMuYVR5cGVkQXJyYXk7KDAsQUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlciIsKGZ1bmN0aW9uKEEpe3ZhciBnPWNpKHlpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBoaSh0aGlzLGcpfSkpO3ZhciBmaT1YRS5maW5kLHVpPUFDLmFUeXBlZEFycmF5OygwLEFDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZpKHVpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBEaT1YRS5maW5kSW5kZXgsd2k9QUMuYVR5cGVkQXJyYXk7KDAsQUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRJbmRleCIsKGZ1bmN0aW9uKEEpe3JldHVybiBEaSh3aSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgbGk9WEUuZm9yRWFjaCxkaT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZm9yRWFjaCIsKGZ1bmN0aW9uKEEpe2xpKGRpKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBGaT1RZy5pbmNsdWRlcyxHaT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiaW5jbHVkZXMiLChmdW5jdGlvbihBKXtyZXR1cm4gRmkoR2kodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIFJpPVFnLmluZGV4T2YsVWk9QUMuYVR5cGVkQXJyYXk7KDAsQUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImluZGV4T2YiLChmdW5jdGlvbihBKXtyZXR1cm4gUmkoVWkodGhpcyksQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIGtpPU0sU2k9QUMscGk9aVEsTmk9VEEoIml0ZXJhdG9yIiksTWk9a2kuVWludDhBcnJheSxZaT1waS52YWx1ZXMsSGk9cGkua2V5cyx2aT1waS5lbnRyaWVzLExpPVNpLmFUeXBlZEFycmF5LEppPVNpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsS2k9TWkmJk1pLnByb3RvdHlwZVtOaV0sbWk9ISFLaSYmKCJ2YWx1ZXMiPT1LaS5uYW1lfHxudWxsPT1LaS5uYW1lKSx4aT1mdW5jdGlvbigpe3JldHVybiBZaS5jYWxsKExpKHRoaXMpKX07SmkoImVudHJpZXMiLChmdW5jdGlvbigpe3JldHVybiB2aS5jYWxsKExpKHRoaXMpKX0pKSxKaSgia2V5cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEhpLmNhbGwoTGkodGhpcykpfSkpLEppKCJ2YWx1ZXMiLHhpLCFtaSksSmkoTmkseGksIW1pKTt2YXIgcWk9QUMuYVR5cGVkQXJyYXksYmk9W10uam9pbjsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiam9pbiIsKGZ1bmN0aW9uKEEpe3JldHVybiBiaS5hcHBseShxaSh0aGlzKSxhcmd1bWVudHMpfSkpO3ZhciBUaT13LE9pPWZ1bmN0aW9uKEEsZyl7dmFyIEk9W11bQV07cmV0dXJuISFJJiZUaSgoZnVuY3Rpb24oKXtJLmNhbGwobnVsbCxnfHxmdW5jdGlvbigpe3Rocm93IDF9LDEpfSkpfSxQaT1wLFdpPVdBLFppPVhBLGppPU9pLFhpPU1hdGgubWluLFZpPVtdLmxhc3RJbmRleE9mLHppPSEhVmkmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDAsX2k9amkoImxhc3RJbmRleE9mIiksJGk9eml8fCFfaT9mdW5jdGlvbihBKXtpZih6aSlyZXR1cm4gVmkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBnPVBpKHRoaXMpLEk9WmkoZy5sZW5ndGgpLEI9SS0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihCPVhpKEIsV2koYXJndW1lbnRzWzFdKSkpLEI8MCYmKEI9SStCKTtCPj0wO0ItLSlpZihCIGluIGcmJmdbQl09PT1BKXJldHVybiBCfHwwO3JldHVybi0xfTpWaSxBZT0kaSxnZT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgibGFzdEluZGV4T2YiLChmdW5jdGlvbihBKXtyZXR1cm4gQWUuYXBwbHkoZ2UodGhpcyksYXJndW1lbnRzKX0pKTt2YXIgSWU9WEUubWFwLEJlPW5pLFFlPUFDLmFUeXBlZEFycmF5LENlPUFDLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7KDAsQUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoIm1hcCIsKGZ1bmN0aW9uKEEpe3JldHVybiBJZShRZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLChmdW5jdGlvbihBLGcpe3JldHVybiBuZXcoQ2UoQmUoQSxBLmNvbnN0cnVjdG9yKSkpKGcpfSkpfSkpO3ZhciBFZT1VRSx0ZT1hQSxpZT1SLGVlPVhBLG9lPWZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQixRKXtFZShJKTt2YXIgQz10ZShnKSxFPWllKEMpLHQ9ZWUoQy5sZW5ndGgpLGk9QT90LTE6MCxlPUE/LTE6MTtpZihCPDIpZm9yKDs7KXtpZihpIGluIEUpe1E9RVtpXSxpKz1lO2JyZWFrfWlmKGkrPWUsQT9pPDA6dDw9aSl0aHJvdyBUeXBlRXJyb3IoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO0E/aT49MDp0Pmk7aSs9ZSlpIGluIEUmJihRPUkoUSxFW2ldLGksQykpO3JldHVybiBRfX0scmU9e2xlZnQ6b2UoITEpLHJpZ2h0Om9lKCEwKX0sbmU9cmUubGVmdCxhZT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgicmVkdWNlIiwoZnVuY3Rpb24oQSl7cmV0dXJuIG5lKGFlKHRoaXMpLEEsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIHNlPXJlLnJpZ2h0LGNlPUFDLmFUeXBlZEFycmF5OygwLEFDLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJyZWR1Y2VSaWdodCIsKGZ1bmN0aW9uKEEpe3JldHVybiBzZShjZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBoZT1BQy5hVHlwZWRBcnJheSx5ZT1BQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGZlPU1hdGguZmxvb3I7eWUoInJldmVyc2UiLChmdW5jdGlvbigpe2Zvcih2YXIgQSxnPXRoaXMsST1oZShnKS5sZW5ndGgsQj1mZShJLzIpLFE9MDtRPEI7KUE9Z1tRXSxnW1ErK109Z1stLUldLGdbSV09QTtyZXR1cm4gZ30pKTt2YXIgdWU9WEEsRGU9ZkUsd2U9YUEsbGU9QUMuYVR5cGVkQXJyYXk7KDAsQUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNldCIsKGZ1bmN0aW9uKEEpe2xlKHRoaXMpO3ZhciBnPURlKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLEk9dGhpcy5sZW5ndGgsQj13ZShBKSxRPXVlKEIubGVuZ3RoKSxDPTA7aWYoUStnPkkpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIik7Zm9yKDtDPFE7KXRoaXNbZytDXT1CW0MrK119KSx3KChmdW5jdGlvbigpe25ldyBJbnQ4QXJyYXkoMSkuc2V0KHt9KX0pKSk7dmFyIGRlPW5pLEZlPUFDLmFUeXBlZEFycmF5LEdlPUFDLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsUmU9W10uc2xpY2U7KDAsQUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNsaWNlIiwoZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9UmUuY2FsbChGZSh0aGlzKSxBLGcpLEI9ZGUodGhpcyx0aGlzLmNvbnN0cnVjdG9yKSxRPTAsQz1JLmxlbmd0aCxFPW5ldyhHZShCKSkoQyk7Qz5ROylFW1FdPUlbUSsrXTtyZXR1cm4gRX0pLHcoKGZ1bmN0aW9uKCl7bmV3IEludDhBcnJheSgxKS5zbGljZSgpfSkpKTt2YXIgVWU9WEUuc29tZSxrZT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29tZSIsKGZ1bmN0aW9uKEEpe3JldHVybiBVZShrZSh0aGlzKSxBLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgU2U9QUMuYVR5cGVkQXJyYXkscGU9W10uc29ydDsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29ydCIsKGZ1bmN0aW9uKEEpe3JldHVybiBwZS5jYWxsKFNlKHRoaXMpLEEpfSkpO3ZhciBOZT1YQSxNZT0kQSxZZT1uaSxIZT1BQy5hVHlwZWRBcnJheTsoMCxBQy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic3ViYXJyYXkiLChmdW5jdGlvbihBLGcpe3ZhciBJPUhlKHRoaXMpLEI9SS5sZW5ndGgsUT1NZShBLEIpO3JldHVybiBuZXcoWWUoSSxJLmNvbnN0cnVjdG9yKSkoSS5idWZmZXIsSS5ieXRlT2Zmc2V0K1EqSS5CWVRFU19QRVJfRUxFTUVOVCxOZSgodm9pZCAwPT09Zz9COk1lKGcsQikpLVEpKX0pKTt2YXIgdmU9QUMsTGU9dyxKZT1NLkludDhBcnJheSxLZT12ZS5hVHlwZWRBcnJheSxtZT12ZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kLHhlPVtdLnRvTG9jYWxlU3RyaW5nLHFlPVtdLnNsaWNlLGJlPSEhSmUmJkxlKChmdW5jdGlvbigpe3hlLmNhbGwobmV3IEplKDEpKX0pKTttZSgidG9Mb2NhbGVTdHJpbmciLChmdW5jdGlvbigpe3JldHVybiB4ZS5hcHBseShiZT9xZS5jYWxsKEtlKHRoaXMpKTpLZSh0aGlzKSxhcmd1bWVudHMpfSksTGUoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IEplKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhTGUoKGZ1bmN0aW9uKCl7SmUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKTt2YXIgVGU9QUMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxPZT13LFBlPU0uVWludDhBcnJheSxXZT1QZSYmUGUucHJvdG90eXBlfHx7fSxaZT1bXS50b1N0cmluZyxqZT1bXS5qb2luO09lKChmdW5jdGlvbigpe1plLmNhbGwoe30pfSkpJiYoWmU9ZnVuY3Rpb24oKXtyZXR1cm4gamUuY2FsbCh0aGlzKX0pO3ZhciBYZT1XZS50b1N0cmluZyE9WmU7VGUoInRvU3RyaW5nIixaZSxYZSk7dmFyIFZlPVUsemU9IltcdFxuXHZcZlxyIMKg4ZqA4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI5XHVmZWZmXSIsX2U9UmVnRXhwKCJeIit6ZSt6ZSsiKiIpLCRlPVJlZ0V4cCh6ZSt6ZSsiKiQiKSxBbz1mdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyl7dmFyIEk9U3RyaW5nKFZlKGcpKTtyZXR1cm4gMSZBJiYoST1JLnJlcGxhY2UoX2UsIiIpKSwyJkEmJihJPUkucmVwbGFjZSgkZSwiIikpLEl9fSxnbz17c3RhcnQ6QW8oMSksZW5kOkFvKDIpLHRyaW06QW8oMyl9LElvPUgsQm89TSxRbz1JQixDbz1ZSSxFbz1oQSx0bz1kLGlvPUJ0LGVvPVcsb289dyxybz12Zyxubz1ISS5mLGFvPXJJLmYsc289di5mLGNvPWdvLnRyaW0saG89Ik51bWJlciIseW89Qm9baG9dLGZvPXlvLnByb3RvdHlwZSx1bz10byhybyhmbykpPT1obyxEbz1mdW5jdGlvbihBKXt2YXIgZyxJLEIsUSxDLEUsdCxpLGU9ZW8oQSwhMSk7aWYoInN0cmluZyI9PXR5cGVvZiBlJiZlLmxlbmd0aD4yKWlmKDQzPT09KGc9KGU9Y28oZSkpLmNoYXJDb2RlQXQoMCkpfHw0NT09PWcpe2lmKDg4PT09KEk9ZS5jaGFyQ29kZUF0KDIpKXx8MTIwPT09SSlyZXR1cm4gTmFOfWVsc2UgaWYoNDg9PT1nKXtzd2l0Y2goZS5jaGFyQ29kZUF0KDEpKXtjYXNlIDY2OmNhc2UgOTg6Qj0yLFE9NDk7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpCPTgsUT01NTticmVhaztkZWZhdWx0OnJldHVybitlfWZvcihFPShDPWUuc2xpY2UoMikpLmxlbmd0aCx0PTA7dDxFO3QrKylpZigoaT1DLmNoYXJDb2RlQXQodCkpPDQ4fHxpPlEpcmV0dXJuIE5hTjtyZXR1cm4gcGFyc2VJbnQoQyxCKX1yZXR1cm4rZX07aWYoUW8oaG8sIXlvKCIgMG8xIil8fCF5bygiMGIxIil8fHlvKCIrMHgxIikpKXtmb3IodmFyIHdvLGxvPWZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg8MT8wOkEsST10aGlzO3JldHVybiBJIGluc3RhbmNlb2YgbG8mJih1bz9vbygoZnVuY3Rpb24oKXtmby52YWx1ZU9mLmNhbGwoSSl9KSk6dG8oSSkhPWhvKT9pbyhuZXcgeW8oRG8oZykpLEksbG8pOkRvKGcpfSxGbz1Jbz9ubyh5byk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyLGZyb21TdHJpbmcscmFuZ2UiLnNwbGl0KCIsIiksR289MDtGby5sZW5ndGg+R287R28rKylFbyh5byx3bz1Gb1tHb10pJiYhRW8obG8sd28pJiZzbyhsbyx3byxhbyh5byx3bykpO2xvLnByb3RvdHlwZT1mbyxmby5jb25zdHJ1Y3Rvcj1sbyxDbyhCbyxobyxsbyl9dmFyIFJvPVcsVW89dixrbz1fLFNvPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1SbyhnKTtCIGluIEE/VW8uZihBLEIsa28oMCxJKSk6QVtCXT1JfSxwbz13LE5vPXBBLE1vPVRBKCJzcGVjaWVzIiksWW89ZnVuY3Rpb24oQSl7cmV0dXJuIE5vPj01MXx8IXBvKChmdW5jdGlvbigpe3ZhciBnPVtdO3JldHVybihnLmNvbnN0cnVjdG9yPXt9KVtNb109ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09Z1tBXShCb29sZWFuKS5mb299KSl9LEhvPW9CLHZvPUwsTG89SkUsSm89JEEsS289WEEsbW89cCx4bz1Tbyxxbz1UQSxibz1Zbygic2xpY2UiKSxUbz1xbygic3BlY2llcyIpLE9vPVtdLnNsaWNlLFBvPU1hdGgubWF4O0hvKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWJvfSx7c2xpY2U6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsQz1tbyh0aGlzKSxFPUtvKEMubGVuZ3RoKSx0PUpvKEEsRSksaT1Kbyh2b2lkIDA9PT1nP0U6ZyxFKTtpZihMbyhDKSYmKCJmdW5jdGlvbiIhPXR5cGVvZihJPUMuY29uc3RydWN0b3IpfHxJIT09QXJyYXkmJiFMbyhJLnByb3RvdHlwZSk/dm8oSSkmJm51bGw9PT0oST1JW1RvXSkmJihJPXZvaWQgMCk6ST12b2lkIDAsST09PUFycmF5fHx2b2lkIDA9PT1JKSlyZXR1cm4gT28uY2FsbChDLHQsaSk7Zm9yKEI9bmV3KHZvaWQgMD09PUk/QXJyYXk6SSkoUG8oaS10LDApKSxRPTA7dDxpO3QrKyxRKyspdCBpbiBDJiZ4byhCLFEsQ1t0XSk7cmV0dXJuIEIubGVuZ3RoPVEsQn19KTt2YXIgV289SCxabz13LGpvPXNnLFhvPUpJLFZvPW5JLHpvPWFBLF9vPVIsJG89T2JqZWN0LmFzc2lnbixBcj1PYmplY3QuZGVmaW5lUHJvcGVydHksZ3I9ISRvfHxabygoZnVuY3Rpb24oKXtpZihXbyYmMSE9PSRvKHtiOjF9LCRvKEFyKHt9LCJhIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtBcih0aGlzLCJiIix7dmFsdWU6MyxlbnVtZXJhYmxlOiExfSl9fSkse2I6Mn0pKS5iKXJldHVybiEwO3ZhciBBPXt9LGc9e30sST1TeW1ib2woKSxCPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIEFbSV09NyxCLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbihBKXtnW0FdPUF9KSksNyE9JG8oe30sQSlbSV18fGpvKCRvKHt9LGcpKS5qb2luKCIiKSE9Qn0pKT9mdW5jdGlvbihBLGcpe2Zvcih2YXIgST16byhBKSxCPWFyZ3VtZW50cy5sZW5ndGgsUT0xLEM9WG8uZixFPVZvLmY7Qj5ROylmb3IodmFyIHQsaT1fbyhhcmd1bWVudHNbUSsrXSksZT1DP2pvKGkpLmNvbmNhdChDKGkpKTpqbyhpKSxvPWUubGVuZ3RoLHI9MDtvPnI7KXQ9ZVtyKytdLFdvJiYhRS5jYWxsKGksdCl8fChJW3RdPWlbdF0pO3JldHVybiBJfTokbyxJcj1ncjtvQih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOk9iamVjdC5hc3NpZ24hPT1Jcn0se2Fzc2lnbjpJcn0pO3ZhciBCcj1PLFFyPWZ1bmN0aW9uKCl7dmFyIEE9QnIodGhpcyksZz0iIjtyZXR1cm4gQS5nbG9iYWwmJihnKz0iZyIpLEEuaWdub3JlQ2FzZSYmKGcrPSJpIiksQS5tdWx0aWxpbmUmJihnKz0ibSIpLEEuZG90QWxsJiYoZys9InMiKSxBLnVuaWNvZGUmJihnKz0idSIpLEEuc3RpY2t5JiYoZys9InkiKSxnfSxDcj17fSxFcj13O2Z1bmN0aW9uIHRyKEEsZyl7cmV0dXJuIFJlZ0V4cChBLGcpfUNyLlVOU1VQUE9SVEVEX1k9RXIoKGZ1bmN0aW9uKCl7dmFyIEE9dHIoImEiLCJ5Iik7cmV0dXJuIEEubGFzdEluZGV4PTIsbnVsbCE9QS5leGVjKCJhYmNkIil9KSksQ3IuQlJPS0VOX0NBUkVUPUVyKChmdW5jdGlvbigpe3ZhciBBPXRyKCJeciIsImd5Iik7cmV0dXJuIEEubGFzdEluZGV4PTIsbnVsbCE9QS5leGVjKCJzdHIiKX0pKTt2YXIgaXIsZXIsb3I9UXIscnI9Q3IsbnI9ckEsYXI9UmVnRXhwLnByb3RvdHlwZS5leGVjLHNyPW5yKCJuYXRpdmUtc3RyaW5nLXJlcGxhY2UiLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksY3I9YXIsaHI9KGlyPS9hLyxlcj0vYiovZyxhci5jYWxsKGlyLCJhIiksYXIuY2FsbChlciwiYSIpLDAhPT1pci5sYXN0SW5kZXh8fDAhPT1lci5sYXN0SW5kZXgpLHlyPXJyLlVOU1VQUE9SVEVEX1l8fHJyLkJST0tFTl9DQVJFVCxmcj12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KGhyfHxmcnx8eXIpJiYoY3I9ZnVuY3Rpb24oQSl7dmFyIGcsSSxCLFEsQz10aGlzLEU9eXImJkMuc3RpY2t5LHQ9b3IuY2FsbChDKSxpPUMuc291cmNlLGU9MCxvPUE7cmV0dXJuIEUmJigtMT09PSh0PXQucmVwbGFjZSgieSIsIiIpKS5pbmRleE9mKCJnIikmJih0Kz0iZyIpLG89U3RyaW5nKEEpLnNsaWNlKEMubGFzdEluZGV4KSxDLmxhc3RJbmRleD4wJiYoIUMubXVsdGlsaW5lfHxDLm11bHRpbGluZSYmIlxuIiE9PUFbQy5sYXN0SW5kZXgtMV0pJiYoaT0iKD86ICIraSsiKSIsbz0iICIrbyxlKyspLEk9bmV3IFJlZ0V4cCgiXig/OiIraSsiKSIsdCkpLGZyJiYoST1uZXcgUmVnRXhwKCJeIitpKyIkKD8hXFxzKSIsdCkpLGhyJiYoZz1DLmxhc3RJbmRleCksQj1hci5jYWxsKEU/STpDLG8pLEU/Qj8oQi5pbnB1dD1CLmlucHV0LnNsaWNlKGUpLEJbMF09QlswXS5zbGljZShlKSxCLmluZGV4PUMubGFzdEluZGV4LEMubGFzdEluZGV4Kz1CWzBdLmxlbmd0aCk6Qy5sYXN0SW5kZXg9MDpociYmQiYmKEMubGFzdEluZGV4PUMuZ2xvYmFsP0IuaW5kZXgrQlswXS5sZW5ndGg6ZyksZnImJkImJkIubGVuZ3RoPjEmJnNyLmNhbGwoQlswXSxJLChmdW5jdGlvbigpe2ZvcihRPTE7UTxhcmd1bWVudHMubGVuZ3RoLTI7USsrKXZvaWQgMD09PWFyZ3VtZW50c1tRXSYmKEJbUV09dm9pZCAwKX0pKSxCfSk7dmFyIHVyPWNyO29CKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09dXJ9LHtleGVjOnVyfSk7dmFyIERyPVlJLHdyPXVyLGxyPXcsZHI9VEEsRnI9Z0EsR3I9ZHIoInNwZWNpZXMiKSxScj1SZWdFeHAucHJvdG90eXBlLFVyPSFscigoZnVuY3Rpb24oKXt2YXIgQT0vLi87cmV0dXJuIEEuZXhlYz1mdW5jdGlvbigpe3ZhciBBPVtdO3JldHVybiBBLmdyb3Vwcz17YToiNyJ9LEF9LCI3IiE9PSIiLnJlcGxhY2UoQSwiJDxhPiIpfSkpLGtyPSIkMCI9PT0iYSIucmVwbGFjZSgvLi8sIiQwIiksU3I9ZHIoInJlcGxhY2UiKSxwcj0hIS8uL1tTcl0mJiIiPT09Ly4vW1NyXSgiYSIsIiQwIiksTnI9IWxyKChmdW5jdGlvbigpe3ZhciBBPS8oPzopLyxnPUEuZXhlYztBLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBJPSJhYiIuc3BsaXQoQSk7cmV0dXJuIDIhPT1JLmxlbmd0aHx8ImEiIT09SVswXXx8ImIiIT09SVsxXX0pKSxNcj1mdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1kcihBKSxDPSFscigoZnVuY3Rpb24oKXt2YXIgZz17fTtyZXR1cm4gZ1tRXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT0iIltBXShnKX0pKSxFPUMmJiFscigoZnVuY3Rpb24oKXt2YXIgZz0hMSxJPS9hLztyZXR1cm4ic3BsaXQiPT09QSYmKChJPXt9KS5jb25zdHJ1Y3Rvcj17fSxJLmNvbnN0cnVjdG9yW0dyXT1mdW5jdGlvbigpe3JldHVybiBJfSxJLmZsYWdzPSIiLElbUV09Ly4vW1FdKSxJLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZz0hMCxudWxsfSxJW1FdKCIiKSwhZ30pKTtpZighQ3x8IUV8fCJyZXBsYWNlIj09PUEmJighVXJ8fCFrcnx8cHIpfHwic3BsaXQiPT09QSYmIU5yKXt2YXIgdD0vLi9bUV0saT1JKFEsIiJbQV0sKGZ1bmN0aW9uKEEsZyxJLEIsUSl7dmFyIEU9Zy5leGVjO3JldHVybiBFPT09d3J8fEU9PT1Sci5leGVjP0MmJiFRP3tkb25lOiEwLHZhbHVlOnQuY2FsbChnLEksQil9Ontkb25lOiEwLHZhbHVlOkEuY2FsbChJLGcsQil9Ontkb25lOiExfX0pLHtSRVBMQUNFX0tFRVBTXyQwOmtyLFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFOnByfSksZT1pWzBdLG89aVsxXTtEcihTdHJpbmcucHJvdG90eXBlLEEsZSksRHIoUnIsUSwyPT1nP2Z1bmN0aW9uKEEsZyl7cmV0dXJuIG8uY2FsbChBLHRoaXMsZyl9OmZ1bmN0aW9uKEEpe3JldHVybiBvLmNhbGwoQSx0aGlzKX0pfUImJkZyKFJyW1FdLCJzaGFtIiwhMCl9LFlyPVdBLEhyPVUsdnI9ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSl7dmFyIEIsUSxDPVN0cmluZyhIcihnKSksRT1ZcihJKSx0PUMubGVuZ3RoO3JldHVybiBFPDB8fEU+PXQ/QT8iIjp2b2lkIDA6KEI9Qy5jaGFyQ29kZUF0KEUpKTw1NTI5Nnx8Qj41NjMxOXx8RSsxPT09dHx8KFE9Qy5jaGFyQ29kZUF0KEUrMSkpPDU2MzIwfHxRPjU3MzQzP0E/Qy5jaGFyQXQoRSk6QjpBP0Muc2xpY2UoRSxFKzIpOlEtNTYzMjArKEItNTUyOTY8PDEwKSs2NTUzNn19LExyPXtjb2RlQXQ6dnIoITEpLGNoYXJBdDp2cighMCl9LmNoYXJBdCxKcj1mdW5jdGlvbihBLGcsSSl7cmV0dXJuIGcrKEk/THIoQSxnKS5sZW5ndGg6MSl9LEtyPWFBLG1yPU1hdGguZmxvb3IseHI9IiIucmVwbGFjZSxxcj0vXCQoWyQmJ2BdfFxkezEsMn18PFtePl0qPikvZyxicj0vXCQoWyQmJ2BdfFxkezEsMn0pL2csVHI9ZCxPcj11cixQcj1mdW5jdGlvbihBLGcpe3ZhciBJPUEuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2YgSSl7dmFyIEI9SS5jYWxsKEEsZyk7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXRocm93IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIEJ9aWYoIlJlZ0V4cCIhPT1UcihBKSl0aHJvdyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gT3IuY2FsbChBLGcpfSxXcj1Ncixacj1PLGpyPVhBLFhyPVdBLFZyPVUsenI9SnIsX3I9ZnVuY3Rpb24oQSxnLEksQixRLEMpe3ZhciBFPUkrQS5sZW5ndGgsdD1CLmxlbmd0aCxpPWJyO3JldHVybiB2b2lkIDAhPT1RJiYoUT1LcihRKSxpPXFyKSx4ci5jYWxsKEMsaSwoZnVuY3Rpb24oQyxpKXt2YXIgZTtzd2l0Y2goaS5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIEE7Y2FzZSJgIjpyZXR1cm4gZy5zbGljZSgwLEkpO2Nhc2UiJyI6cmV0dXJuIGcuc2xpY2UoRSk7Y2FzZSI8IjplPVFbaS5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgbz0raTtpZigwPT09bylyZXR1cm4gQztpZihvPnQpe3ZhciByPW1yKG8vMTApO3JldHVybiAwPT09cj9DOnI8PXQ/dm9pZCAwPT09QltyLTFdP2kuY2hhckF0KDEpOkJbci0xXStpLmNoYXJBdCgxKTpDfWU9QltvLTFdfXJldHVybiB2b2lkIDA9PT1lPyIiOmV9KSl9LCRyPVByLEFuPU1hdGgubWF4LGduPU1hdGgubWluO1dyKCJyZXBsYWNlIiwyLChmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1CLlJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFLEM9Qi5SRVBMQUNFX0tFRVBTXyQwLEU9UT8iJCI6IiQwIjtyZXR1cm5bZnVuY3Rpb24oSSxCKXt2YXIgUT1Wcih0aGlzKSxDPW51bGw9PUk/dm9pZCAwOklbQV07cmV0dXJuIHZvaWQgMCE9PUM/Qy5jYWxsKEksUSxCKTpnLmNhbGwoU3RyaW5nKFEpLEksQil9LGZ1bmN0aW9uKEEsQil7aWYoIVEmJkN8fCJzdHJpbmciPT10eXBlb2YgQiYmLTE9PT1CLmluZGV4T2YoRSkpe3ZhciB0PUkoZyxBLHRoaXMsQik7aWYodC5kb25lKXJldHVybiB0LnZhbHVlfXZhciBpPVpyKEEpLGU9U3RyaW5nKHRoaXMpLG89ImZ1bmN0aW9uIj09dHlwZW9mIEI7b3x8KEI9U3RyaW5nKEIpKTt2YXIgcj1pLmdsb2JhbDtpZihyKXt2YXIgbj1pLnVuaWNvZGU7aS5sYXN0SW5kZXg9MH1mb3IodmFyIGE9W107Oyl7dmFyIHM9JHIoaSxlKTtpZihudWxsPT09cylicmVhaztpZihhLnB1c2gocyksIXIpYnJlYWs7IiI9PT1TdHJpbmcoc1swXSkmJihpLmxhc3RJbmRleD16cihlLGpyKGkubGFzdEluZGV4KSxuKSl9Zm9yKHZhciBjLGg9IiIseT0wLGY9MDtmPGEubGVuZ3RoO2YrKyl7cz1hW2ZdO2Zvcih2YXIgdT1TdHJpbmcoc1swXSksRD1BbihnbihYcihzLmluZGV4KSxlLmxlbmd0aCksMCksdz1bXSxsPTE7bDxzLmxlbmd0aDtsKyspdy5wdXNoKHZvaWQgMD09PShjPXNbbF0pP2M6U3RyaW5nKGMpKTt2YXIgZD1zLmdyb3VwcztpZihvKXt2YXIgRj1bdV0uY29uY2F0KHcsRCxlKTt2b2lkIDAhPT1kJiZGLnB1c2goZCk7dmFyIEc9U3RyaW5nKEIuYXBwbHkodm9pZCAwLEYpKX1lbHNlIEc9X3IodSxlLEQsdyxkLEIpO0Q+PXkmJihoKz1lLnNsaWNlKHksRCkrRyx5PUQrdS5sZW5ndGgpfXJldHVybiBoK2Uuc2xpY2UoeSl9XX0pKSx6dCgiSW50OCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLHp0KCJJbnQxNiIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLHp0KCJJbnQzMiIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpLHp0KCJVaW50MTYiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKSx6dCgiVWludDMyIiwoZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSxCKXtyZXR1cm4gQSh0aGlzLGcsSSxCKX19KSksenQoIkZsb2F0MzIiLChmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJLEIpe3JldHVybiBBKHRoaXMsZyxJLEIpfX0pKSx6dCgiRmxvYXQ2NCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSkpO3ZhciBJbixCbj1MLFFuPWQsQ249VEEoIm1hdGNoIiksRW49ZnVuY3Rpb24oQSl7dmFyIGc7cmV0dXJuIEJuKEEpJiYodm9pZCAwIT09KGc9QVtDbl0pPyEhZzoiUmVnRXhwIj09UW4oQSkpfSx0bj1Fbixlbj1mdW5jdGlvbihBKXtpZih0bihBKSl0aHJvdyBUeXBlRXJyb3IoIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9ucyIpO3JldHVybiBBfSxvbj1UQSgibWF0Y2giKSxybj1mdW5jdGlvbihBKXt2YXIgZz0vLi87dHJ5eyIvLi8iW0FdKGcpfWNhdGNoKEkpe3RyeXtyZXR1cm4gZ1tvbl09ITEsIi8uLyJbQV0oZyl9Y2F0Y2goQil7fX1yZXR1cm4hMX0sbm49b0IsYW49ckkuZixzbj1YQSxjbj1lbixobj1VLHluPXJuLGZuPSIiLnN0YXJ0c1dpdGgsdW49TWF0aC5taW4sRG49eW4oInN0YXJ0c1dpdGgiKTtubih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohIShEbnx8KEluPWFuKFN0cmluZy5wcm90b3R5cGUsInN0YXJ0c1dpdGgiKSwhSW58fEluLndyaXRhYmxlKSkmJiFEbn0se3N0YXJ0c1dpdGg6ZnVuY3Rpb24oQSl7dmFyIGc9U3RyaW5nKGhuKHRoaXMpKTtjbihBKTt2YXIgST1zbih1bihhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxnLmxlbmd0aCkpLEI9U3RyaW5nKEEpO3JldHVybiBmbj9mbi5jYWxsKGcsQixJKTpnLnNsaWNlKEksSStCLmxlbmd0aCk9PT1CfX0pO3ZhciB3bixsbixkbixGbj1NLlByb21pc2UsR249TyxSbj1PLFVuPVJFLGtuPVhBLFNuPVNFLHBuPWxFLE5uPWZ1bmN0aW9uKEEpe3ZhciBnPUEucmV0dXJuO2lmKHZvaWQgMCE9PWcpcmV0dXJuIEduKGcuY2FsbChBKSkudmFsdWV9LE1uPWZ1bmN0aW9uKEEsZyl7dGhpcy5zdG9wcGVkPUEsdGhpcy5yZXN1bHQ9Z30sWW49Lyg/OmlwaG9uZXxpcG9kfGlwYWQpLiphcHBsZXdlYmtpdC9pLnRlc3QoRkEpLEhuPSJwcm9jZXNzIj09ZChNLnByb2Nlc3MpLHZuPU0sTG49dyxKbj1TRSxLbj11Zyxtbj14LHhuPVluLHFuPUhuLGJuPXZuLmxvY2F0aW9uLFRuPXZuLnNldEltbWVkaWF0ZSxPbj12bi5jbGVhckltbWVkaWF0ZSxQbj12bi5wcm9jZXNzLFduPXZuLk1lc3NhZ2VDaGFubmVsLFpuPXZuLkRpc3BhdGNoLGpuPTAsWG49e30sVm49Im9ucmVhZHlzdGF0ZWNoYW5nZSIsem49ZnVuY3Rpb24oQSl7aWYoWG4uaGFzT3duUHJvcGVydHkoQSkpe3ZhciBnPVhuW0FdO2RlbGV0ZSBYbltBXSxnKCl9fSxfbj1mdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oKXt6bihBKX19LCRuPWZ1bmN0aW9uKEEpe3puKEEuZGF0YSl9LEFhPWZ1bmN0aW9uKEEpe3ZuLnBvc3RNZXNzYWdlKEErIiIsYm4ucHJvdG9jb2wrIi8vIitibi5ob3N0KX07VG4mJk9ufHwoVG49ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPVtdLEk9MTthcmd1bWVudHMubGVuZ3RoPkk7KWcucHVzaChhcmd1bWVudHNbSSsrXSk7cmV0dXJuIFhuWysram5dPWZ1bmN0aW9uKCl7KCJmdW5jdGlvbiI9PXR5cGVvZiBBP0E6RnVuY3Rpb24oQSkpLmFwcGx5KHZvaWQgMCxnKX0sd24oam4pLGpufSxPbj1mdW5jdGlvbihBKXtkZWxldGUgWG5bQV19LHFuP3duPWZ1bmN0aW9uKEEpe1BuLm5leHRUaWNrKF9uKEEpKX06Wm4mJlpuLm5vdz93bj1mdW5jdGlvbihBKXtabi5ub3coX24oQSkpfTpXbiYmIXhuPyhkbj0obG49bmV3IFduKS5wb3J0Mixsbi5wb3J0MS5vbm1lc3NhZ2U9JG4sd249Sm4oZG4ucG9zdE1lc3NhZ2UsZG4sMSkpOnZuLmFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIXZuLmltcG9ydFNjcmlwdHMmJmJuJiYiZmlsZToiIT09Ym4ucHJvdG9jb2wmJiFMbihBYSk/KHduPUFhLHZuLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCRuLCExKSk6d249Vm4gaW4gbW4oInNjcmlwdCIpP2Z1bmN0aW9uKEEpe0tuLmFwcGVuZENoaWxkKG1uKCJzY3JpcHQiKSlbVm5dPWZ1bmN0aW9uKCl7S24ucmVtb3ZlQ2hpbGQodGhpcyksem4oQSl9fTpmdW5jdGlvbihBKXtzZXRUaW1lb3V0KF9uKEEpLDApfSk7dmFyIGdhLElhLEJhLFFhLENhLEVhLHRhLGlhLGVhPXtzZXQ6VG4sY2xlYXI6T259LG9hPS93ZWIwcyg/IS4qY2hyb21lKS9pLnRlc3QoRkEpLHJhPU0sbmE9ckkuZixhYT1lYS5zZXQsc2E9WW4sY2E9b2EsaGE9SG4seWE9cmEuTXV0YXRpb25PYnNlcnZlcnx8cmEuV2ViS2l0TXV0YXRpb25PYnNlcnZlcixmYT1yYS5kb2N1bWVudCx1YT1yYS5wcm9jZXNzLERhPXJhLlByb21pc2Usd2E9bmEocmEsInF1ZXVlTWljcm90YXNrIiksbGE9d2EmJndhLnZhbHVlO2xhfHwoZ2E9ZnVuY3Rpb24oKXt2YXIgQSxnO2ZvcihoYSYmKEE9dWEuZG9tYWluKSYmQS5leGl0KCk7SWE7KXtnPUlhLmZuLElhPUlhLm5leHQ7dHJ5e2coKX1jYXRjaChTZil7dGhyb3cgSWE/UWEoKTpCYT12b2lkIDAsU2Z9fUJhPXZvaWQgMCxBJiZBLmVudGVyKCl9LHNhfHxoYXx8Y2F8fCF5YXx8IWZhP0RhJiZEYS5yZXNvbHZlPygodGE9RGEucmVzb2x2ZSh2b2lkIDApKS5jb25zdHJ1Y3Rvcj1EYSxpYT10YS50aGVuLFFhPWZ1bmN0aW9uKCl7aWEuY2FsbCh0YSxnYSl9KTpRYT1oYT9mdW5jdGlvbigpe3VhLm5leHRUaWNrKGdhKX06ZnVuY3Rpb24oKXthYS5jYWxsKHJhLGdhKX06KENhPSEwLEVhPWZhLmNyZWF0ZVRleHROb2RlKCIiKSxuZXcgeWEoZ2EpLm9ic2VydmUoRWEse2NoYXJhY3RlckRhdGE6ITB9KSxRYT1mdW5jdGlvbigpe0VhLmRhdGE9Q2E9IUNhfSkpO3ZhciBkYT1sYXx8ZnVuY3Rpb24oQSl7dmFyIGc9e2ZuOkEsbmV4dDp2b2lkIDB9O0JhJiYoQmEubmV4dD1nKSxJYXx8KElhPWcsUWEoKSksQmE9Z30sRmE9e30sR2E9VUUsUmE9ZnVuY3Rpb24oQSl7dmFyIGcsSTt0aGlzLnByb21pc2U9bmV3IEEoKGZ1bmN0aW9uKEEsQil7aWYodm9pZCAwIT09Z3x8dm9pZCAwIT09SSl0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7Zz1BLEk9Qn0pKSx0aGlzLnJlc29sdmU9R2EoZyksdGhpcy5yZWplY3Q9R2EoSSl9O0ZhLmY9ZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBSYShBKX07dmFyIFVhLGthLFNhLHBhLE5hPU8sTWE9TCxZYT1GYSxIYT1NLHZhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93LExhPW9CLEphPU0sS2E9ZEEsbWE9Rm4seGE9WUkscWE9ZUMsYmE9S0IsVGE9a0IsT2E9QXQsUGE9TCxXYT1VRSxaYT1vQyxqYT1aZyxYYT1mdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxDLEUsdCxpLGUsbz1JJiZJLnRoYXQscj0hKCFJfHwhSS5BU19FTlRSSUVTKSxuPSEoIUl8fCFJLklTX0lURVJBVE9SKSxhPSEoIUl8fCFJLklOVEVSUlVQVEVEKSxzPVNuKGcsbywxK3IrYSksYz1mdW5jdGlvbihBKXtyZXR1cm4gQiYmTm4oQiksbmV3IE1uKCEwLEEpfSxoPWZ1bmN0aW9uKEEpe3JldHVybiByPyhSbihBKSxhP3MoQVswXSxBWzFdLGMpOnMoQVswXSxBWzFdKSk6YT9zKEEsYyk6cyhBKX07aWYobilCPUE7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YoUT1wbihBKSkpdGhyb3cgVHlwZUVycm9yKCJUYXJnZXQgaXMgbm90IGl0ZXJhYmxlIik7aWYoVW4oUSkpe2ZvcihDPTAsRT1rbihBLmxlbmd0aCk7RT5DO0MrKylpZigodD1oKEFbQ10pKSYmdCBpbnN0YW5jZW9mIE1uKXJldHVybiB0O3JldHVybiBuZXcgTW4oITEpfUI9US5jYWxsKEEpfWZvcihpPUIubmV4dDshKGU9aS5jYWxsKEIpKS5kb25lOyl7dHJ5e3Q9aChlLnZhbHVlKX1jYXRjaChTZil7dGhyb3cgTm4oQiksU2Z9aWYoIm9iamVjdCI9PXR5cGVvZiB0JiZ0JiZ0IGluc3RhbmNlb2YgTW4pcmV0dXJuIHR9cmV0dXJuIG5ldyBNbighMSl9LFZhPUZRLHphPW5pLF9hPWVhLnNldCwkYT1kYSxBcz1mdW5jdGlvbihBLGcpe2lmKE5hKEEpLE1hKGcpJiZnLmNvbnN0cnVjdG9yPT09QSlyZXR1cm4gZzt2YXIgST1ZYS5mKEEpO3JldHVybigwLEkucmVzb2x2ZSkoZyksSS5wcm9taXNlfSxncz1mdW5jdGlvbihBLGcpe3ZhciBJPUhhLmNvbnNvbGU7SSYmSS5lcnJvciYmKDE9PT1hcmd1bWVudHMubGVuZ3RoP0kuZXJyb3IoQSk6SS5lcnJvcihBLGcpKX0sSXM9RmEsQnM9ZnVuY3Rpb24oQSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTpBKCl9fWNhdGNoKFNmKXtyZXR1cm57ZXJyb3I6ITAsdmFsdWU6U2Z9fX0sUXM9b0ksQ3M9SUIsRXM9dmEsdHM9SG4saXM9cEEsZXM9VEEoInNwZWNpZXMiKSxvcz0iUHJvbWlzZSIscnM9UXMuZ2V0LG5zPVFzLnNldCxhcz1Rcy5nZXR0ZXJGb3Iob3MpLHNzPW1hJiZtYS5wcm90b3R5cGUsY3M9bWEsaHM9c3MseXM9SmEuVHlwZUVycm9yLGZzPUphLmRvY3VtZW50LHVzPUphLnByb2Nlc3MsRHM9SXMuZix3cz1Ecyxscz0hIShmcyYmZnMuY3JlYXRlRXZlbnQmJkphLmRpc3BhdGNoRXZlbnQpLGRzPSJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQsRnM9InVuaGFuZGxlZHJlamVjdGlvbiIsR3M9ITEsUnM9Q3Mob3MsKGZ1bmN0aW9uKCl7dmFyIEE9amEoY3MpIT09U3RyaW5nKGNzKTtpZighQSYmNjY9PT1pcylyZXR1cm4hMDtpZihpcz49NTEmJi9uYXRpdmUgY29kZS8udGVzdChjcykpcmV0dXJuITE7dmFyIGc9bmV3IGNzKChmdW5jdGlvbihBKXtBKDEpfSkpLEk9ZnVuY3Rpb24oQSl7QSgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24oKXt9KSl9O3JldHVybihnLmNvbnN0cnVjdG9yPXt9KVtlc109SSwhKEdzPWcudGhlbigoZnVuY3Rpb24oKXt9KSlpbnN0YW5jZW9mIEkpfHwhQSYmRXMmJiFkc30pKSxVcz1Sc3x8IVZhKChmdW5jdGlvbihBKXtjcy5hbGwoQSkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfSkpLGtzPWZ1bmN0aW9uKEEpe3ZhciBnO3JldHVybiEoIVBhKEEpfHwiZnVuY3Rpb24iIT10eXBlb2YoZz1BLnRoZW4pKSYmZ30sU3M9ZnVuY3Rpb24oQSxnKXtpZighQS5ub3RpZmllZCl7QS5ub3RpZmllZD0hMDt2YXIgST1BLnJlYWN0aW9uczskYSgoZnVuY3Rpb24oKXtmb3IodmFyIEI9QS52YWx1ZSxRPTE9PUEuc3RhdGUsQz0wO0kubGVuZ3RoPkM7KXt2YXIgRSx0LGksZT1JW0MrK10sbz1RP2Uub2s6ZS5mYWlsLHI9ZS5yZXNvbHZlLG49ZS5yZWplY3QsYT1lLmRvbWFpbjt0cnl7bz8oUXx8KDI9PT1BLnJlamVjdGlvbiYmWXMoQSksQS5yZWplY3Rpb249MSksITA9PT1vP0U9QjooYSYmYS5lbnRlcigpLEU9byhCKSxhJiYoYS5leGl0KCksaT0hMCkpLEU9PT1lLnByb21pc2U/bih5cygiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToodD1rcyhFKSk/dC5jYWxsKEUscixuKTpyKEUpKTpuKEIpfWNhdGNoKFNmKXthJiYhaSYmYS5leGl0KCksbihTZil9fUEucmVhY3Rpb25zPVtdLEEubm90aWZpZWQ9ITEsZyYmIUEucmVqZWN0aW9uJiZOcyhBKX0pKX19LHBzPWZ1bmN0aW9uKEEsZyxJKXt2YXIgQixRO2xzPygoQj1mcy5jcmVhdGVFdmVudCgiRXZlbnQiKSkucHJvbWlzZT1nLEIucmVhc29uPUksQi5pbml0RXZlbnQoQSwhMSwhMCksSmEuZGlzcGF0Y2hFdmVudChCKSk6Qj17cHJvbWlzZTpnLHJlYXNvbjpJfSwhZHMmJihRPUphWyJvbiIrQV0pP1EoQik6QT09PUZzJiZncygiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixJKX0sTnM9ZnVuY3Rpb24oQSl7X2EuY2FsbChKYSwoZnVuY3Rpb24oKXt2YXIgZyxJPUEuZmFjYWRlLEI9QS52YWx1ZTtpZihNcyhBKSYmKGc9QnMoKGZ1bmN0aW9uKCl7dHM/dXMuZW1pdCgidW5oYW5kbGVkUmVqZWN0aW9uIixCLEkpOnBzKEZzLEksQil9KSksQS5yZWplY3Rpb249dHN8fE1zKEEpPzI6MSxnLmVycm9yKSl0aHJvdyBnLnZhbHVlfSkpfSxNcz1mdW5jdGlvbihBKXtyZXR1cm4gMSE9PUEucmVqZWN0aW9uJiYhQS5wYXJlbnR9LFlzPWZ1bmN0aW9uKEEpe19hLmNhbGwoSmEsKGZ1bmN0aW9uKCl7dmFyIGc9QS5mYWNhZGU7dHM/dXMuZW1pdCgicmVqZWN0aW9uSGFuZGxlZCIsZyk6cHMoInJlamVjdGlvbmhhbmRsZWQiLGcsQS52YWx1ZSl9KSl9LEhzPWZ1bmN0aW9uKEEsZyxJKXtyZXR1cm4gZnVuY3Rpb24oQil7QShnLEIsSSl9fSx2cz1mdW5jdGlvbihBLGcsSSl7QS5kb25lfHwoQS5kb25lPSEwLEkmJihBPUkpLEEudmFsdWU9ZyxBLnN0YXRlPTIsU3MoQSwhMCkpfSxMcz1mdW5jdGlvbihBLGcsSSl7aWYoIUEuZG9uZSl7QS5kb25lPSEwLEkmJihBPUkpO3RyeXtpZihBLmZhY2FkZT09PWcpdGhyb3cgeXMoIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmIik7dmFyIEI9a3MoZyk7Qj8kYSgoZnVuY3Rpb24oKXt2YXIgST17ZG9uZTohMX07dHJ5e0IuY2FsbChnLEhzKExzLEksQSksSHModnMsSSxBKSl9Y2F0Y2goU2Ype3ZzKEksU2YsQSl9fSkpOihBLnZhbHVlPWcsQS5zdGF0ZT0xLFNzKEEsITEpKX1jYXRjaChTZil7dnMoe2RvbmU6ITF9LFNmLEEpfX19O2lmKFJzJiYoaHM9KGNzPWZ1bmN0aW9uKEEpe1phKHRoaXMsY3Msb3MpLFdhKEEpLFVhLmNhbGwodGhpcyk7dmFyIGc9cnModGhpcyk7dHJ5e0EoSHMoTHMsZyksSHModnMsZykpfWNhdGNoKFNmKXt2cyhnLFNmKX19KS5wcm90b3R5cGUsKFVhPWZ1bmN0aW9uKEEpe25zKHRoaXMse3R5cGU6b3MsZG9uZTohMSxub3RpZmllZDohMSxwYXJlbnQ6ITEscmVhY3Rpb25zOltdLHJlamVjdGlvbjohMSxzdGF0ZTowLHZhbHVlOnZvaWQgMH0pfSkucHJvdG90eXBlPXFhKGhzLHt0aGVuOmZ1bmN0aW9uKEEsZyl7dmFyIEk9YXModGhpcyksQj1Ecyh6YSh0aGlzLGNzKSk7cmV0dXJuIEIub2s9ImZ1bmN0aW9uIiE9dHlwZW9mIEF8fEEsQi5mYWlsPSJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnLEIuZG9tYWluPXRzP3VzLmRvbWFpbjp2b2lkIDAsSS5wYXJlbnQ9ITAsSS5yZWFjdGlvbnMucHVzaChCKSwwIT1JLnN0YXRlJiZTcyhJLCExKSxCLnByb21pc2V9LGNhdGNoOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLEEpfX0pLGthPWZ1bmN0aW9uKCl7dmFyIEE9bmV3IFVhLGc9cnMoQSk7dGhpcy5wcm9taXNlPUEsdGhpcy5yZXNvbHZlPUhzKExzLGcpLHRoaXMucmVqZWN0PUhzKHZzLGcpfSxJcy5mPURzPWZ1bmN0aW9uKEEpe3JldHVybiBBPT09Y3N8fEE9PT1TYT9uZXcga2EoQSk6d3MoQSl9LCJmdW5jdGlvbiI9PXR5cGVvZiBtYSYmc3MhPT1PYmplY3QucHJvdG90eXBlKSl7cGE9c3MudGhlbixHc3x8KHhhKHNzLCJ0aGVuIiwoZnVuY3Rpb24oQSxnKXt2YXIgST10aGlzO3JldHVybiBuZXcgY3MoKGZ1bmN0aW9uKEEsZyl7cGEuY2FsbChJLEEsZyl9KSkudGhlbihBLGcpfSkse3Vuc2FmZTohMH0pLHhhKHNzLCJjYXRjaCIsaHMuY2F0Y2gse3Vuc2FmZTohMH0pKTt0cnl7ZGVsZXRlIHNzLmNvbnN0cnVjdG9yfWNhdGNoKFNmKXt9YmEmJmJhKHNzLGhzKX1MYSh7Z2xvYmFsOiEwLHdyYXA6ITAsZm9yY2VkOlJzfSx7UHJvbWlzZTpjc30pLFRhKGNzLG9zLCExKSxPYShvcyksU2E9S2Eob3MpLExhKHt0YXJnZXQ6b3Msc3RhdDohMCxmb3JjZWQ6UnN9LHtyZWplY3Q6ZnVuY3Rpb24oQSl7dmFyIGc9RHModGhpcyk7cmV0dXJuIGcucmVqZWN0LmNhbGwodm9pZCAwLEEpLGcucHJvbWlzZX19KSxMYSh7dGFyZ2V0Om9zLHN0YXQ6ITAsZm9yY2VkOlJzfSx7cmVzb2x2ZTpmdW5jdGlvbihBKXtyZXR1cm4gQXModGhpcyxBKX19KSxMYSh7dGFyZ2V0Om9zLHN0YXQ6ITAsZm9yY2VkOlVzfSx7YWxsOmZ1bmN0aW9uKEEpe3ZhciBnPXRoaXMsST1EcyhnKSxCPUkucmVzb2x2ZSxRPUkucmVqZWN0LEM9QnMoKGZ1bmN0aW9uKCl7dmFyIEk9V2EoZy5yZXNvbHZlKSxDPVtdLEU9MCx0PTE7WGEoQSwoZnVuY3Rpb24oQSl7dmFyIGk9RSsrLGU9ITE7Qy5wdXNoKHZvaWQgMCksdCsrLEkuY2FsbChnLEEpLnRoZW4oKGZ1bmN0aW9uKEEpe2V8fChlPSEwLENbaV09QSwtLXR8fEIoQykpfSksUSl9KSksLS10fHxCKEMpfSkpO3JldHVybiBDLmVycm9yJiZRKEMudmFsdWUpLEkucHJvbWlzZX0scmFjZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLEk9RHMoZyksQj1JLnJlamVjdCxRPUJzKChmdW5jdGlvbigpe3ZhciBRPVdhKGcucmVzb2x2ZSk7WGEoQSwoZnVuY3Rpb24oQSl7US5jYWxsKGcsQSkudGhlbihJLnJlc29sdmUsQil9KSl9KSk7cmV0dXJuIFEuZXJyb3ImJkIoUS52YWx1ZSksSS5wcm9taXNlfX0pO3ZhciBKcz14ZztvQih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtjb3B5V2l0aGluOklpfSksSnMoImNvcHlXaXRoaW4iKTt2YXIgS3M9WEUuZm9yRWFjaCxtcz1PaSgiZm9yRWFjaCIpP1tdLmZvckVhY2g6ZnVuY3Rpb24oQSl7cmV0dXJuIEtzKHRoaXMsQSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LHhzPU0scXM9e0NTU1J1bGVMaXN0OjAsQ1NTU3R5bGVEZWNsYXJhdGlvbjowLENTU1ZhbHVlTGlzdDowLENsaWVudFJlY3RMaXN0OjAsRE9NUmVjdExpc3Q6MCxET01TdHJpbmdMaXN0OjAsRE9NVG9rZW5MaXN0OjEsRGF0YVRyYW5zZmVySXRlbUxpc3Q6MCxGaWxlTGlzdDowLEhUTUxBbGxDb2xsZWN0aW9uOjAsSFRNTENvbGxlY3Rpb246MCxIVE1MRm9ybUVsZW1lbnQ6MCxIVE1MU2VsZWN0RWxlbWVudDowLE1lZGlhTGlzdDowLE1pbWVUeXBlQXJyYXk6MCxOYW1lZE5vZGVNYXA6MCxOb2RlTGlzdDoxLFBhaW50UmVxdWVzdExpc3Q6MCxQbHVnaW46MCxQbHVnaW5BcnJheTowLFNWR0xlbmd0aExpc3Q6MCxTVkdOdW1iZXJMaXN0OjAsU1ZHUGF0aFNlZ0xpc3Q6MCxTVkdQb2ludExpc3Q6MCxTVkdTdHJpbmdMaXN0OjAsU1ZHVHJhbnNmb3JtTGlzdDowLFNvdXJjZUJ1ZmZlckxpc3Q6MCxTdHlsZVNoZWV0TGlzdDowLFRleHRUcmFja0N1ZUxpc3Q6MCxUZXh0VHJhY2tMaXN0OjAsVG91Y2hMaXN0OjB9LGJzPW1zLFRzPWdBO2Zvcih2YXIgT3MgaW4gcXMpe3ZhciBQcz14c1tPc10sV3M9UHMmJlBzLnByb3RvdHlwZTtpZihXcyYmV3MuZm9yRWFjaCE9PWJzKXRyeXtUcyhXcywiZm9yRWFjaCIsYnMpfWNhdGNoKFNmKXtXcy5mb3JFYWNoPWJzfX12YXIgWnM9SCxqcz1NLFhzPUlCLFZzPUJ0LHpzPXYuZixfcz1ISS5mLCRzPUVuLEFjPVFyLGdjPUNyLEljPVlJLEJjPXcsUWM9b0kuZW5mb3JjZSxDYz1BdCxFYz1UQSgibWF0Y2giKSx0Yz1qcy5SZWdFeHAsaWM9dGMucHJvdG90eXBlLGVjPS9hL2csb2M9L2EvZyxyYz1uZXcgdGMoZWMpIT09ZWMsbmM9Z2MuVU5TVVBQT1JURURfWTtpZihacyYmWHMoIlJlZ0V4cCIsIXJjfHxuY3x8QmMoKGZ1bmN0aW9uKCl7cmV0dXJuIG9jW0VjXT0hMSx0YyhlYykhPWVjfHx0YyhvYyk9PW9jfHwiL2EvaSIhPXRjKGVjLCJpIil9KSkpKXtmb3IodmFyIGFjPWZ1bmN0aW9uKEEsZyl7dmFyIEksQj10aGlzIGluc3RhbmNlb2YgYWMsUT0kcyhBKSxDPXZvaWQgMD09PWc7aWYoIUImJlEmJkEuY29uc3RydWN0b3I9PT1hYyYmQylyZXR1cm4gQTtyYz9RJiYhQyYmKEE9QS5zb3VyY2UpOkEgaW5zdGFuY2VvZiBhYyYmKEMmJihnPUFjLmNhbGwoQSkpLEE9QS5zb3VyY2UpLG5jJiYoST0hIWcmJmcuaW5kZXhPZigieSIpPi0xKSYmKGc9Zy5yZXBsYWNlKC95L2csIiIpKTt2YXIgRT1WcyhyYz9uZXcgdGMoQSxnKTp0YyhBLGcpLEI/dGhpczppYyxhYyk7bmMmJkkmJihRYyhFKS5zdGlja3k9ITApO3JldHVybiBFfSxzYz1mdW5jdGlvbihBKXtBIGluIGFjfHx6cyhhYyxBLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRjW0FdfSxzZXQ6ZnVuY3Rpb24oZyl7dGNbQV09Z319KX0sY2M9X3ModGMpLGhjPTA7Y2MubGVuZ3RoPmhjOylzYyhjY1toYysrXSk7aWMuY29uc3RydWN0b3I9YWMsYWMucHJvdG90eXBlPWljLEljKGpzLCJSZWdFeHAiLGFjKX1DYygiUmVnRXhwIik7dmFyIHljPVlJLGZjPU8sdWM9dyxEYz1Rcix3Yz0idG9TdHJpbmciLGxjPVJlZ0V4cC5wcm90b3R5cGUsZGM9bGNbd2NdLEZjPXVjKChmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9ZGMuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKSxHYz1kYy5uYW1lIT13YzsoRmN8fEdjKSYmeWMoUmVnRXhwLnByb3RvdHlwZSx3YywoZnVuY3Rpb24oKXt2YXIgQT1mYyh0aGlzKSxnPVN0cmluZyhBLnNvdXJjZSksST1BLmZsYWdzO3JldHVybiIvIitnKyIvIitTdHJpbmcodm9pZCAwPT09SSYmQSBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gbGMpP0RjLmNhbGwoQSk6SSl9KSx7dW5zYWZlOiEwfSk7dmFyIFJjPVFnLmluY2x1ZGVzLFVjPXhnO29CKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiBSYyh0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLFVjKCJpbmNsdWRlcyIpO3ZhciBrYz1lbixTYz1VO29CKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFybigiaW5jbHVkZXMiKX0se2luY2x1ZGVzOmZ1bmN0aW9uKEEpe3JldHVybiEhflN0cmluZyhTYyh0aGlzKSkuaW5kZXhPZihrYyhBKSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIHBjPUE9PmZ1bmN0aW9uKEEsZyl7aWYoZy5zdGFydHNXaXRoKCJkYXRhOiIpKXt2YXIgSSxCPWcucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sIiIpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBCdWZmZXIuZnJvbSlJPUJ1ZmZlci5mcm9tKEIsImJhc2U2NCIpO2Vsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGF0b2IpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gZGVjb2RlIGJhc2U2NC1lbmNvZGVkIGRhdGEgVVJMLCBCdWZmZXIgYW5kIGF0b2IgYXJlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgUT1hdG9iKEIpO0k9bmV3IFVpbnQ4QXJyYXkoUS5sZW5ndGgpO2Zvcih2YXIgQz0wO0M8US5sZW5ndGg7QysrKUlbQ109US5jaGFyQ29kZUF0KEMpfXJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShJLEEpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBLmluc3RhbmNlfSkpfXZhciBFPXZvaWQgMCx0PXZvaWQgMDtyZXR1cm4gZmV0Y2goZykudGhlbigoZnVuY3Rpb24oZyl7cmV0dXJuIHQ9KEU9ZykuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpfHwiIiwiaW5zdGFudGlhdGVTdHJlYW1pbmciaW4gV2ViQXNzZW1ibHkmJnQuc3RhcnRzV2l0aCgiYXBwbGljYXRpb24vd2FzbSIpP1dlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKEUsQSk6RS5hcnJheUJ1ZmZlcigpfSkpLnRoZW4oKGZ1bmN0aW9uKGcpe3JldHVybiBnIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZyxBKTpnfSkpLnRoZW4oKGZ1bmN0aW9uKEEpe3JldHVybiBBLmluc3RhbmNlfSkpfShBLCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LEFHRnpiUUVBQUFBQi9BSXVZQUYvQVg5Z0FYOEFZQUovZndGL1lBSi9md0JnQTM5L2Z3Ri9ZQVovZjM5L2YzOEJmMkFGZjM5L2YzOEJmMkFEZjM5L0FHQUVmMzkvZndCZ0JuOS9mMzkvZndCZ0JYOS9mMzkvQUdBRWYzOS9md0YvWUFoL2YzOS9mMzkvZndGL1lBZC9mMzkvZjM5L0FYOWdCWDkrZm41K0FHQUFBR0FIZjM5L2YzOS9md0JnQkg5L2YzOEJmbUFGZjM5L2YzNEJmMkFBQVg5Z0JIOStmbjhBWUFKL2ZnQmdCWDkvZm45L0FHQUtmMzkvZjM5L2YzOS9md0YvWUF4L2YzOS9mMzkvZjM5L2YzOEJmMkFJZjM5L2YzOS9mMzhBWUE5L2YzOS9mMzkvZjM5L2YzOS9mMzhBWUFwL2YzOS9mMzkvZjM5L0FHQUxmMzkvZjM5L2YzOS9mMzhCZjJBR2YzeC9mMzkvQVg5Z0IzOS9mMzkvZm40QmYyQUdmMzkvZjM1K0FYOWdCWDkvZjM5OEFYOWdBbjk4QUdBRWZuNStmZ0YvWUFKK2Z3Ri9ZQUorZmdGOFlBRi9BWHhnQTM1K2ZnRi9ZQU4vZjM4QmZHQURmMzkvQVgxZ0JIOS9mMzRCZm1BQ2ZIOEJmR0FEZjM5K0FHQUNmbjRCZldBQ2YzOEJmZ0l4Q0FGaEFXRUFEd0ZoQVdJQUJnRmhBV01BQWdGaEFXUUFBZ0ZoQVdVQUFBRmhBV1lBQkFGaEFXY0FCd0ZoQVdnQUFBUExCTWtFQWdBQUFnTUFBUU1CQUFBQUF3TVREdzRBQUFFREFRUUFBUUFBQVFBQUFnTUNBZ2NPQmdnS0ZBTUNBQU1EQUFJREFBTURBQTRDQkFRQUF3UUFCQUFFQUFBQUF3TURBd1FBQUFFQ0ZRSUhCUU1HQmdzQ0FDRUNBQXdNQlFnQ0FBQUFBd01EQXdBSUFBZ0FCd0FBQUFNQ0FnTURBaUlVQUFBRUF3SUFBQU1BQndJQ0FBQVhBQmNBSXdNQUFBTUFBUUFCQndJSENBQURBZ0lLQXdJQkJBTUFCd0lEQUFBREF4QUVFQUlOQWcwTEFnc0FBQUlWQUFBRUNBSUFDUWNJQWdjRENnRUFCQVlEQVFBQUF3UVlDZ1FZQ2dnUkFnQUVKQTRsSmdBQkFRQUFDZzhBQUFjQkF4VUJCQWdDQWdvWkFBY0hHUUFCQXdjQ0F3RUNFd0VJQndvQUFBQUJBQVlIREFBQkF3RUFBQU1CQVFFQUJCb2JHaHNBQWdBQUFnTWNBd0lBQUFjREhBTURBZ0lEQ1FjS0NRa0tDUWtBRUFRUUF3SUZCd1FBQ0Njb0VRc0ZDeEVMQUFJSEVTa0FDd0FCQXdJQ0FnY0VBQVlxQWdBQ0FnUXJMQzBJRGdJT0ZBNEFBUUlDQUFBQUJ3TURCd01EQVFBQUFnTUNBQUFDQVFBQ0FBRUJBZ1FBQUFRSUZnUUJBUUFBQVJNQkFRQUpDUWtLQ2dvQUNBZ0lCQThCQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFNREF3TURBd0FBQVFFR0RBd0dEQXdBQmdBR0RBd0JCZ1lFQ3dRQ0JBSUJCZ1FMQkFJRUFnc0xDd1FCQVFFQkNRa0ZIZ1VlRFEwTkRRME5EQVVGQlFVRkJ3d0ZCUVVGQlFZZklCSUdFZ2NHQmdZZklCSUdFZ2tHQmdVRkJRVUZCUVVGQlFVRkJRVUZBQVVGQlFrRkJBZ0dCQWdJQmdRREhRUUJBUUFCQUFnQkZnSUNBQUFCQVFBQUFRQUJBUUFFQkFjQmNBSEJBc0VDQlFZQkFUQ0FnQUlHQ0FGL0FVR2cxd0VMQjBnUEFXa0NBQUZxQU9jQkFXc0FHUUZzQUJBQmJRRGFBZ0Z1QUxRRUFXOEFyZ1FCY0FDWkJBRnhBSkFFQVhJQXJBRUJjd0NEQkFGMEFRQUJkUUNWQXdGMkFKUURBWGNBa3dNSnh3UUJBRUVCQzhBQ3pRU3FCTUVCdkFHUUE2d0Jqd09PQTQwRFQwK01BNHNEaWdPSUE5QUVpQVBsQVljRHp3VE9CT1FCK1FMTUJNc0V1QUhqQWNvRXlBVEpCTWNFMEFIQkJNSUV3QVRGQk1RRXd3UitrUU9LQWVJQnZ3UytCTDBFdkFUaEFic0V1Z1M1QkxnRXR3UVF5UUh2QSswRHdBTytBN3dEdWdPNEE3WUR0QU95QTdBRHJnT3NBNm9EcUFPbUE1TUM4QVB1QTQ0QzRRUGdBOThEM2dQZEE2OEMzQVBiQTlvRG1BTFlBOWNEMWdQVkE5UURUOU1EMGdPSEFzc0R5UVBJQThjRHhRUERBNFlDeWdQR0JKSUR4Z1BFQThJRFppQWc3QVByQStvRDZRUG9BK2NENWdQbEE2OEM1QVBqQStJRElJMENqUUxNQWIwQnZRSFpBNzBCSU5FRDBBUE1BVTlQendPSUFpRE9BODBEekFGUFQ4d0RpQUptSUxZRXRRU3pCR1lnc2dTeEJMQUVJSzhFclFTc0JLc0V5QUxJQXFrRXFBU25CS1lFcFFRZ3BBU2pCS0lFb1FTL0FyOENvQVNmQko0RW5RU2NCQ0NiQkpvRW1BU1hCSllFbFFTVUJKTUVJSklFa1FTUEJJNEVqUVNNQklzRWlnUm1JTGtDaVFTSUJJY0VoZ1NGQklRRXdRTzlBN2tEclFPcEE3VURzUU5tSUxrQ2dnU0JCSUFFL3dQK0EvMER2d083QTdjRHF3T25BN01EcndQS0FZSUMvQVBLQVlJQyt3TWdxd0dyQVd0cmE2MENUMnBxSUtzQnF3RnJhMnV0QWs5cWFpQ3FBYW9CYTZrQnFRR3NBazlxYWlDcUFhb0JhNmtCcVFHc0FrOXFhaUQ2QS9rRElQZ0Q5d01nOWdQMUF5RDBBL01ESUprQzhnT3NBU0NaQXZFRHJBRm1wUU9rQTJZZ3lRSEpBYU1EbVFPY0E2SURJSm9EblFPaEF5Q2JBNTREb0FObUlKZ0Rsd09mQTVZRENxVGZCOGtFQndBZ0FDQUJlQXNVQUNBQUVEVUVRQ0FBS0FJRUR3c2dBQzBBQ3dzZEFRRi9JQUFRTlFSQUlBQW9BZ0FoQVNBQUVIMGFJQUVRRUFzZ0FBc0pBQ0FBRUEwZ0FXb0wwZ0VCQkg4Q1FDQUJJQUFRQ1NJRFN3UkFJd0JCRUdzaUFpUUFJQUVnQTJzaUF3UkFJQUFRRXlFRUlBQVFDU0lCSUFOcUlRVWdBeUFFSUFGclN3UkFJQUFnQkNBRklBUnJJQUVnQVJESUFRc2dBU0FBRUEwaUJHb2dBMEVBRVBjQklBQWdCUkI0SUFKQkFEb0FEeUFFSUFWcUlBSkJEMm9RTkFzTUFRc2pBRUVRYXlJQ0pBQUNRQ0FBRURVRVFDQUFLQUlBSVFNZ0FrRUFPZ0FQSUFFZ0Eyb2dBa0VQYWhBMElBQWdBUkE1REFFTElBSkJBRG9BRGlBQUlBRnFJQUpCRG1vUU5DQUFJQUVRT2dzTElBSkJFR29rQUFzUkFDQUFFRFVFUUNBQUtBSUFEd3NnQUFzS0FDQUFLQUlBRUtNQkN3d0FJQUFnQVVFY2FoQ1FBZ3ZNREFFSGZ3SkFJQUJGRFFBZ0FFRUlheUlESUFCQkJHc29BZ0FpQVVGNGNTSUFhaUVGQWtBZ0FVRUJjUTBBSUFGQkEzRkZEUUVnQXlBREtBSUFJZ0ZySWdOQjZJRUJLQUlBU1EwQklBQWdBV29oQUNBRFFleUJBU2dDQUVjRVFDQUJRZjhCVFFSQUlBTW9BZ2dpQWlBQlFRTjJJZ1JCQTNSQmdJSUJha1lhSUFJZ0F5Z0NEQ0lCUmdSQVFkaUJBVUhZZ1FFb0FnQkJmaUFFZDNFMkFnQU1Bd3NnQWlBQk5nSU1JQUVnQWpZQ0NBd0NDeUFES0FJWUlRWUNRQ0FESUFNb0Fnd2lBVWNFUUNBREtBSUlJZ0lnQVRZQ0RDQUJJQUkyQWdnTUFRc0NRQ0FEUVJScUlnSW9BZ0FpQkEwQUlBTkJFR29pQWlnQ0FDSUVEUUJCQUNFQkRBRUxBMEFnQWlFSElBUWlBVUVVYWlJQ0tBSUFJZ1FOQUNBQlFSQnFJUUlnQVNnQ0VDSUVEUUFMSUFkQkFEWUNBQXNnQmtVTkFRSkFJQU1nQXlnQ0hDSUNRUUowUVlpRUFXb2lCQ2dDQUVZRVFDQUVJQUUyQWdBZ0FRMEJRZHlCQVVIY2dRRW9BZ0JCZmlBQ2QzRTJBZ0FNQXdzZ0JrRVFRUlFnQmlnQ0VDQURSaHRxSUFFMkFnQWdBVVVOQWdzZ0FTQUdOZ0lZSUFNb0FoQWlBZ1JBSUFFZ0FqWUNFQ0FDSUFFMkFoZ0xJQU1vQWhRaUFrVU5BU0FCSUFJMkFoUWdBaUFCTmdJWURBRUxJQVVvQWdRaUFVRURjVUVEUncwQVFlQ0JBU0FBTmdJQUlBVWdBVUYrY1RZQ0JDQURJQUJCQVhJMkFnUWdBQ0FEYWlBQU5nSUFEd3NnQXlBRlR3MEFJQVVvQWdRaUFVRUJjVVVOQUFKQUlBRkJBbkZGQkVBZ0JVSHdnUUVvQWdCR0JFQkI4SUVCSUFNMkFnQkI1SUVCUWVTQkFTZ0NBQ0FBYWlJQU5nSUFJQU1nQUVFQmNqWUNCQ0FEUWV5QkFTZ0NBRWNOQTBIZ2dRRkJBRFlDQUVIc2dRRkJBRFlDQUE4TElBVkI3SUVCS0FJQVJnUkFRZXlCQVNBRE5nSUFRZUNCQVVIZ2dRRW9BZ0FnQUdvaUFEWUNBQ0FESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBRHdzZ0FVRjRjU0FBYWlFQUFrQWdBVUgvQVUwRVFDQUZLQUlJSWdJZ0FVRURkaUlFUVFOMFFZQ0NBV3BHR2lBQ0lBVW9BZ3dpQVVZRVFFSFlnUUZCMklFQktBSUFRWDRnQkhkeE5nSUFEQUlMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BUXNnQlNnQ0dDRUdBa0FnQlNBRktBSU1JZ0ZIQkVBZ0JTZ0NDQ0lDUWVpQkFTZ0NBRWthSUFJZ0FUWUNEQ0FCSUFJMkFnZ01BUXNDUUNBRlFSUnFJZ0lvQWdBaUJBMEFJQVZCRUdvaUFpZ0NBQ0lFRFFCQkFDRUJEQUVMQTBBZ0FpRUhJQVFpQVVFVWFpSUNLQUlBSWdRTkFDQUJRUkJxSVFJZ0FTZ0NFQ0lFRFFBTElBZEJBRFlDQUFzZ0JrVU5BQUpBSUFVZ0JTZ0NIQ0lDUVFKMFFZaUVBV29pQkNnQ0FFWUVRQ0FFSUFFMkFnQWdBUTBCUWR5QkFVSGNnUUVvQWdCQmZpQUNkM0UyQWdBTUFnc2dCa0VRUVJRZ0JpZ0NFQ0FGUmh0cUlBRTJBZ0FnQVVVTkFRc2dBU0FHTmdJWUlBVW9BaEFpQWdSQUlBRWdBallDRUNBQ0lBRTJBaGdMSUFVb0FoUWlBa1VOQUNBQklBSTJBaFFnQWlBQk5nSVlDeUFESUFCQkFYSTJBZ1FnQUNBRGFpQUFOZ0lBSUFOQjdJRUJLQUlBUncwQlFlQ0JBU0FBTmdJQUR3c2dCU0FCUVg1eE5nSUVJQU1nQUVFQmNqWUNCQ0FBSUFOcUlBQTJBZ0FMSUFCQi93Rk5CRUFnQUVFRGRpSUJRUU4wUVlDQ0FXb2hBQUovUWRpQkFTZ0NBQ0lDUVFFZ0FYUWlBWEZGQkVCQjJJRUJJQUVnQW5JMkFnQWdBQXdCQ3lBQUtBSUlDeUVDSUFBZ0F6WUNDQ0FDSUFNMkFnd2dBeUFBTmdJTUlBTWdBallDQ0E4TFFSOGhBaUFEUWdBM0FoQWdBRUgvLy84SFRRUkFJQUJCQ0hZaUFTQUJRWUQrUDJwQkVIWkJDSEVpQVhRaUFpQUNRWURnSDJwQkVIWkJCSEVpQW5RaUJDQUVRWUNBRDJwQkVIWkJBbkVpQkhSQkQzWWdBU0FDY2lBRWNtc2lBVUVCZENBQUlBRkJGV3AyUVFGeGNrRWNhaUVDQ3lBRElBSTJBaHdnQWtFQ2RFR0loQUZxSVFFQ1FBSkFBa0JCM0lFQktBSUFJZ1JCQVNBQ2RDSUhjVVVFUUVIY2dRRWdCQ0FIY2pZQ0FDQUJJQU0yQWdBZ0F5QUJOZ0lZREFFTElBQkJBRUVaSUFKQkFYWnJJQUpCSDBZYmRDRUNJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBSkJIWFloQVNBQ1FRRjBJUUlnQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUROZ0lRSUFNZ0JEWUNHQXNnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFFS0FJSUlnQWdBellDRENBRUlBTTJBZ2dnQTBFQU5nSVlJQU1nQkRZQ0RDQURJQUEyQWdnTFFmaUJBVUg0Z1FFb0FnQkJBV3NpQUVGL0lBQWJOZ0lBQ3dza0FRRi9Jd0JCRUdzaUFTUUFJQUJDQURjQ0FDQUFRUUEyQWdnZ0FVRVFhaVFBSUFBTGl3SUNBMzhDZmdKQUlBQXBBM0FpQkZCRklBUWdBQ2tEZUNBQUtBSUVJZ0VnQUNnQ0xDSUNhNng4SWdWWGNVVUVRQ01BUVJCcklnSWtBRUYvSVFFQ1FDQUFFT2tCRFFBZ0FDQUNRUTlxUVFFZ0FDZ0NJQkVFQUVFQlJ3MEFJQUl0QUE4aEFRc2dBa0VRYWlRQUlBRWlBMEVBVGcwQklBQW9BZ1FoQVNBQUtBSXNJUUlMSUFCQ2Z6Y0RjQ0FBSUFFMkFtZ2dBQ0FGSUFJZ0FXdXNmRGNEZUVGL0R3c2dCVUlCZkNFRklBQW9BZ1FoQVNBQUtBSUlJUUlDUUNBQUtRTndJZ1JRRFFBZ0JDQUZmU0lFSUFJZ0FXdXNXUTBBSUFFZ0JLZHFJUUlMSUFBZ0FqWUNhQ0FBSUFVZ0FDZ0NMQ0lBSUFGcnJIdzNBM2dnQUNBQlR3UkFJQUZCQVdzZ0F6b0FBQXNnQXdzWkFRRi9RUW9oQVNBQUVEVUVmeUFBRUgxQkFXc0ZJQUVMQytNQkFRWi9JQUVRMHdJaEF5TUFRUkJySWdVa0FBSkFJQU1nQUNJRUVNOEJJZ0JOQkVBZ0JCQU5JZ1loQWlBRElnQUVmd0pBSUFFZ0FrWU5BQ0FDSUFGcklBQkJBblJQQkVBZ0FFVU5BUU5BSUFJZ0FTZ0NBRFlDQUNBQ1FRUnFJUUlnQVVFRWFpRUJJQUJCQVdzaUFBMEFDd3dCQ3lBQVJRMEFBMEFnQWlBQVFRRnJJZ0JCQW5RaUIyb2dBU0FIYWlnQ0FEWUNBQ0FBRFFBTEMwRUFCU0FDQ3hvZ0JVRUFOZ0lNSUFZZ0EwRUNkR29nQlVFTWFoQXpJQVFnQXhCNERBRUxJQVFnQUNBRElBQnJJQVFRQ1NJQVFRQWdBQ0FESUFFUTlBRUxJQVZCRUdva0FBdHpBUU4vSUFFUWtnRWhBaU1BUVJCcklnUWtBQUpBSUFJZ0FCQVRJZ05OQkVBZ0FCQU5JUU1nQWdSQUlBTWdBU0FDRU9vQkN5QUVRUUE2QUE4Z0FpQURhaUFFUVE5cUVEUWdBQ0FDRUhnTUFRc2dBQ0FESUFJZ0Eyc2dBQkFKSWdCQkFDQUFJQUlnQVJENEFRc2dCRUVRYWlRQUMrMENBUVIvQWtCQjNJZ0JMUUFBUVFGeERRQkIzSWdCRUNSRkRRQWpBRUVnYXlJQ0pBQUNRQUpBQTBBZ0FrRUlhaUFBUVFKMGFnSi9RUUVnQUhSQi8vLy8vd2R4SWdOQkFYSkZCRUFnQUVFQ2RDZ0NBQXdCQ3lBQVFab2VRYVFmSUFNYkVPQUNDeUlETmdJQUlBTkJmMGNFUUNBQVFRRnFJZ0JCQmtZTkFnd0JDd3NNQVF0QkFCRGZBa1VFUUVISUxTRUJJQUpCQ0dwQnlDMFFud0ZGRFFGQjRDMGhBU0FDUVFocVFlQXRFSjhCUlEwQlFRQWhBRUd3aHdFdEFBQkZCRUFEUUNBQVFRSjBRWUNIQVdvZ0FFR2tIeERnQWpZQ0FDQUFRUUZxSWdCQkJrY05BQXRCc0ljQlFRRTZBQUJCbUljQlFZQ0hBU2dDQURZQ0FBdEJnSWNCSVFFZ0FrRUlha0dBaHdFUW53RkZEUUZCbUljQklRRWdBa0VJYWtHWWh3RVFud0ZGRFFGQkdCQVpJZ0ZGRFFFTElBRWdBaWtEQ0RjQ0FDQUJJQUlwQXhnM0FoQWdBU0FDS1FNUU53SUlDeUFDUVNCcUpBQkIySWdCSUFFMkFnQkIzSWdCRUNNTFFkaUlBU2dDQUFzRkFCQUFBQXZmQ2dJRmZ3OStJd0JCNEFCcklnVWtBQ0FFUXYvLy8vLy8veitESWcxQ0Q0WWdBMEl4aUlRaERpQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRElRb2dBa0wvLy8vLy8vOC9neUlMUWlDSUlROGdEVUlSaUNFUUlBUkNNSWluUWYvL0FYRWhCd0pBQWtBZ0FrSXdpS2RCLy84QmNTSUpRUUZyUWYzL0FVMEVRQ0FIUVFGclFmNy9BVWtOQVFzZ0FWQWdBa0wvLy8vLy8vLy8vLzhBZ3lJTVFvQ0FnSUNBZ01ELy93QlVJQXhDZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQUpDZ0lDQWdJQ0FJSVFoQ2d3Q0N5QURVQ0FFUXYvLy8vLy8vLy8vL3dDRElnSkNnSUNBZ0lDQXdQLy9BRlFnQWtLQWdJQ0FnSURBLy84QVVSdEZCRUFnQkVLQWdJQ0FnSUFnaENFS0lBTWhBUXdDQ3lBQklBeENnSUNBZ0lDQXdQLy9BSVdFVUFSQUlBSWdBNFJRQkVCQ2dJQ0FnSUNBNFAvL0FDRUtRZ0FoQVF3REN5QUtRb0NBZ0lDQWdNRC8vd0NFSVFwQ0FDRUJEQUlMSUFNZ0FrS0FnSUNBZ0lEQS8vOEFoWVJRQkVBZ0FTQU1oQ0VDUWdBaEFTQUNVQVJBUW9DQWdJQ0FnT0QvL3dBaENnd0RDeUFLUW9DQWdJQ0FnTUQvL3dDRUlRb01BZ3NnQVNBTWhGQUVRRUlBSVFFTUFnc2dBaUFEaEZBRVFFSUFJUUVNQWdzZ0RFTC8vLy8vLy84L1dBUkFJQVZCMEFCcUlBRWdDeUFCSUFzZ0MxQWlCaHQ1SUFaQkJuU3RmS2NpQmtFUGF4QXZRUkFnQm1zaEJpQUZLUU5ZSWd0Q0lJZ2hEeUFGS1FOUUlRRUxJQUpDLy8vLy8vLy9QMVlOQUNBRlFVQnJJQU1nRFNBRElBMGdEVkFpQ0J0NUlBaEJCblN0ZktjaUNFRVBheEF2SUFZZ0NHdEJFR29oQmlBRktRTklJZ0pDRDRZZ0JTa0RRQ0lEUWpHSWhDRU9JQUpDRVlnaEVBc2dBMElQaGtLQWdQNy9ENE1pQWlBQlFpQ0lJZ1IrSWhJZ0EwSVJpRUwvLy8vL0Q0TWlEQ0FCUXYvLy8vOFBneUlCZm53aUVVSWdoaUlOSUFFZ0FuNThJZ01nRFZTdElBSWdDMEwvLy8vL0Q0TWlDMzRpRlNBRUlBeCtmQ0lUSUE1Qy8vLy8vdytESWcwZ0FYNThJaFFnRVNBU1ZLMUNJSVlnRVVJZ2lJUjhJaEVnQWlBUFFvQ0FCSVFpRG40aUZpQUxJQXgrZkNJUElBUWdEWDU4SWhJZ0VFTC8vLy8vQjROQ2dJQ0FnQWlFSWdJZ0FYNThJaEJDSUlaOEloZDhJUUVnQnlBSmFpQUdha0gvL3dCcklRWUNRQ0FMSUExK0loZ2dEQ0FPZm53aURDQVlWSzBnRENBQ0lBUitmQ0lFSUF4VXJYd2dBaUFPZm53Z0JDQUVJQk1nRlZTdElCTWdGRmF0Zkh3aUJGYXRmQ0FDSUF0K0lnc2dEU0FPZm53aUFpQUxWSzFDSUlZZ0FrSWdpSVI4SUFRZ0FrSWdobndpQWlBRVZLMThJQUlnQWlBUUlCSlVyU0FQSUJaVXJTQVBJQkpXclh4OFFpQ0dJQkJDSUlpRWZDSUNWcTE4SUFJZ0FpQVJJQlJVclNBUklCZFdyWHg4SWdKV3JYd2lCRUtBZ0lDQWdJREFBSU5RUlFSQUlBWkJBV29oQmd3QkN5QURRaitJSVFzZ0JFSUJoaUFDUWorSWhDRUVJQUpDQVlZZ0FVSS9pSVFoQWlBRFFnR0dJUU1nQ3lBQlFnR0doQ0VCQ3lBR1FmLy9BVTRFUUNBS1FvQ0FnSUNBZ01ELy93Q0VJUXBDQUNFQkRBRUxBbjRnQmtFQVRBUkFRUUVnQm1zaUIwR0FBVThFUUVJQUlRRU1Bd3NnQlVFd2FpQURJQUVnQmtIL0FHb2lCaEF2SUFWQklHb2dBaUFFSUFZUUx5QUZRUkJxSUFNZ0FTQUhFSHdnQlNBQ0lBUWdCeEI4SUFVcEF6QWdCU2tET0lSQ0FGS3RJQVVwQXlBZ0JTa0RFSVNFSVFNZ0JTa0RLQ0FGS1FNWWhDRUJJQVVwQXdBaEFpQUZLUU1JREFFTElBUkMvLy8vLy8vL1A0TWdCcTFDTUlhRUN5QUtoQ0VLSUFOUUlBRkNBRmtnQVVLQWdJQ0FnSUNBZ0lCL1VSdEZCRUFnQ2lBQ1FnRjhJZ0VnQWxTdGZDRUtEQUVMSUFNZ0FVS0FnSUNBZ0lDQWdJQi9oWVJRUlFSQUlBSWhBUXdCQ3lBS0lBSWdBa0lCZzN3aUFTQUNWSzE4SVFvTElBQWdBVGNEQUNBQUlBbzNBd2dnQlVIZ0FHb2tBQXVBTGdFTGZ5TUFRUkJySWdza0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUVIMEFVMEVRRUhZZ1FFb0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCMEVEZGlJQ2RpSUJRUU54QkVBZ0FVRi9jMEVCY1NBQ2FpSURRUU4wSWdGQmlJSUJhaWdDQUNJRVFRaHFJUUFDUUNBRUtBSUlJZ0lnQVVHQWdnRnFJZ0ZHQkVCQjJJRUJJQVpCZmlBRGQzRTJBZ0FNQVFzZ0FpQUJOZ0lNSUFFZ0FqWUNDQXNnQkNBRFFRTjBJZ0ZCQTNJMkFnUWdBU0FFYWlJQklBRW9BZ1JCQVhJMkFnUU1EQXNnQjBIZ2dRRW9BZ0FpQ2swTkFTQUJCRUFDUUVFQ0lBSjBJZ0JCQUNBQWEzSWdBU0FDZEhFaUFFRUFJQUJyY1VFQmF5SUFJQUJCREhaQkVIRWlBbllpQVVFRmRrRUljU0lBSUFKeUlBRWdBSFlpQVVFQ2RrRUVjU0lBY2lBQklBQjJJZ0ZCQVhaQkFuRWlBSElnQVNBQWRpSUJRUUYyUVFGeElnQnlJQUVnQUhacUlnTkJBM1FpQUVHSWdnRnFLQUlBSWdRb0FnZ2lBU0FBUVlDQ0FXb2lBRVlFUUVIWWdRRWdCa0YrSUFOM2NTSUdOZ0lBREFFTElBRWdBRFlDRENBQUlBRTJBZ2dMSUFSQkNHb2hBQ0FFSUFkQkEzSTJBZ1FnQkNBSGFpSUNJQU5CQTNRaUFTQUhheUlEUVFGeU5nSUVJQUVnQkdvZ0F6WUNBQ0FLQkVBZ0NrRURkaUlCUVFOMFFZQ0NBV29oQlVIc2dRRW9BZ0FoQkFKL0lBWkJBU0FCZENJQmNVVUVRRUhZZ1FFZ0FTQUdjallDQUNBRkRBRUxJQVVvQWdnTElRRWdCU0FFTmdJSUlBRWdCRFlDRENBRUlBVTJBZ3dnQkNBQk5nSUlDMEhzZ1FFZ0FqWUNBRUhnZ1FFZ0F6WUNBQXdNQzBIY2dRRW9BZ0FpQ1VVTkFTQUpRUUFnQ1d0eFFRRnJJZ0FnQUVFTWRrRVFjU0lDZGlJQlFRVjJRUWh4SWdBZ0FuSWdBU0FBZGlJQlFRSjJRUVJ4SWdCeUlBRWdBSFlpQVVFQmRrRUNjU0lBY2lBQklBQjJJZ0ZCQVhaQkFYRWlBSElnQVNBQWRtcEJBblJCaUlRQmFpZ0NBQ0lCS0FJRVFYaHhJQWRySVFNZ0FTRUNBMEFDUUNBQ0tBSVFJZ0JGQkVBZ0FpZ0NGQ0lBUlEwQkN5QUFLQUlFUVhoeElBZHJJZ0lnQXlBQ0lBTkpJZ0liSVFNZ0FDQUJJQUliSVFFZ0FDRUNEQUVMQ3lBQktBSVlJUWdnQVNBQktBSU1JZ1JIQkVBZ0FTZ0NDQ0lBUWVpQkFTZ0NBRWthSUFBZ0JEWUNEQ0FFSUFBMkFnZ01Dd3NnQVVFVWFpSUNLQUlBSWdCRkJFQWdBU2dDRUNJQVJRMERJQUZCRUdvaEFnc0RRQ0FDSVFVZ0FDSUVRUlJxSWdJb0FnQWlBQTBBSUFSQkVHb2hBaUFFS0FJUUlnQU5BQXNnQlVFQU5nSUFEQW9MUVg4aEJ5QUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUhRZHlCQVNnQ0FDSUpSUTBBUVFBZ0Iyc2hBd0pBQWtBQ1FBSi9RUUFnQjBHQUFra05BQnBCSHlBSFFmLy8vd2RMRFFBYUlBQkJDSFlpQUNBQVFZRCtQMnBCRUhaQkNIRWlBblFpQUNBQVFZRGdIMnBCRUhaQkJIRWlBWFFpQUNBQVFZQ0FEMnBCRUhaQkFuRWlBSFJCRDNZZ0FTQUNjaUFBY21zaUFFRUJkQ0FISUFCQkZXcDJRUUZ4Y2tFY2Fnc2lCa0VDZEVHSWhBRnFLQUlBSWdKRkJFQkJBQ0VBREFFTFFRQWhBQ0FIUVFCQkdTQUdRUUYyYXlBR1FSOUdHM1FoQVFOQUFrQWdBaWdDQkVGNGNTQUhheUlGSUFOUERRQWdBaUVFSUFVaUF3MEFRUUFoQXlBQ0lRQU1Bd3NnQUNBQ0tBSVVJZ1VnQlNBQ0lBRkJIWFpCQkhGcUtBSVFJZ0pHR3lBQUlBVWJJUUFnQVVFQmRDRUJJQUlOQUFzTElBQWdCSEpGQkVCQkFDRUVRUUlnQm5RaUFFRUFJQUJyY2lBSmNTSUFSUTBESUFCQkFDQUFhM0ZCQVdzaUFDQUFRUXgyUVJCeElnSjJJZ0ZCQlhaQkNIRWlBQ0FDY2lBQklBQjJJZ0ZCQW5aQkJIRWlBSElnQVNBQWRpSUJRUUYyUVFKeElnQnlJQUVnQUhZaUFVRUJka0VCY1NJQWNpQUJJQUIyYWtFQ2RFR0loQUZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUhheUlCSUFOSklRSWdBU0FESUFJYklRTWdBQ0FFSUFJYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUWVDQkFTZ0NBQ0FIYTA4TkFDQUVLQUlZSVFZZ0JDQUVLQUlNSWdGSEJFQWdCQ2dDQ0NJQVFlaUJBU2dDQUVrYUlBQWdBVFlDRENBQklBQTJBZ2dNQ1FzZ0JFRVVhaUlDS0FJQUlnQkZCRUFnQkNnQ0VDSUFSUTBESUFSQkVHb2hBZ3NEUUNBQ0lRVWdBQ0lCUVJScUlnSW9BZ0FpQUEwQUlBRkJFR29oQWlBQktBSVFJZ0FOQUFzZ0JVRUFOZ0lBREFnTElBZEI0SUVCS0FJQUlnSk5CRUJCN0lFQktBSUFJUU1DUUNBQ0lBZHJJZ0ZCRUU4RVFFSGdnUUVnQVRZQ0FFSHNnUUVnQXlBSGFpSUFOZ0lBSUFBZ0FVRUJjallDQkNBQ0lBTnFJQUUyQWdBZ0F5QUhRUU55TmdJRURBRUxRZXlCQVVFQU5nSUFRZUNCQVVFQU5nSUFJQU1nQWtFRGNqWUNCQ0FDSUFOcUlnQWdBQ2dDQkVFQmNqWUNCQXNnQTBFSWFpRUFEQW9MSUFkQjVJRUJLQUlBSWdoSkJFQkI1SUVCSUFnZ0Iyc2lBVFlDQUVId2dRRkI4SUVCS0FJQUlnSWdCMm9pQURZQ0FDQUFJQUZCQVhJMkFnUWdBaUFIUVFOeU5nSUVJQUpCQ0dvaEFBd0tDMEVBSVFBZ0IwRXZhaUlKQW45QnNJVUJLQUlBQkVCQnVJVUJLQUlBREFFTFFieUZBVUovTndJQVFiU0ZBVUtBb0lDQWdJQUVOd0lBUWJDRkFTQUxRUXhxUVhCeFFkaXExYW9GY3pZQ0FFSEVoUUZCQURZQ0FFR1VoUUZCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdWeElnSWdCMDBOQ1VHUWhRRW9BZ0FpQkFSQVFZaUZBU2dDQUNJRElBSnFJZ0VnQTAwZ0FTQUVTM0lOQ2d0QmxJVUJMUUFBUVFSeERRUUNRQUpBUWZDQkFTZ0NBQ0lEQkVCQm1JVUJJUUFEUUNBRElBQW9BZ0FpQVU4RVFDQUJJQUFvQWdScUlBTkxEUU1MSUFBb0FnZ2lBQTBBQ3d0QkFCQnlJZ0ZCZjBZTkJTQUNJUVpCdElVQktBSUFJZ05CQVdzaUFDQUJjUVJBSUFJZ0FXc2dBQ0FCYWtFQUlBTnJjV29oQmdzZ0JpQUhUU0FHUWY3Ly8vOEhTM0lOQlVHUWhRRW9BZ0FpQkFSQVFZaUZBU2dDQUNJRElBWnFJZ0FnQTAwZ0FDQUVTM0lOQmdzZ0JoQnlJZ0FnQVVjTkFRd0hDeUFHSUFocklBVnhJZ1pCL3YvLy93ZExEUVFnQmhCeUlnRWdBQ2dDQUNBQUtBSUVha1lOQXlBQklRQUxJQUJCZjBZZ0IwRXdhaUFHVFhKRkJFQkJ1SVVCS0FJQUlnRWdDU0FHYTJwQkFDQUJhM0VpQVVIKy8vLy9CMHNFUUNBQUlRRU1Cd3NnQVJCeVFYOUhCRUFnQVNBR2FpRUdJQUFoQVF3SEMwRUFJQVpyRUhJYURBUUxJQUFpQVVGL1J3MEZEQU1MUVFBaEJBd0hDMEVBSVFFTUJRc2dBVUYvUncwQ0MwR1VoUUZCbElVQktBSUFRUVJ5TmdJQUN5QUNRZjcvLy84SFN3MEJJQUlRY2lJQlFYOUdRUUFRY2lJQVFYOUdjaUFBSUFGTmNnMEJJQUFnQVdzaUJpQUhRU2hxVFEwQkMwR0loUUZCaUlVQktBSUFJQVpxSWdBMkFnQkJqSVVCS0FJQUlBQkpCRUJCaklVQklBQTJBZ0FMQWtBQ1FBSkFRZkNCQVNnQ0FDSUZCRUJCbUlVQklRQURRQ0FCSUFBb0FnQWlBeUFBS0FJRUlnSnFSZzBDSUFBb0FnZ2lBQTBBQ3d3Q0MwSG9nUUVvQWdBaUFFRUFJQUFnQVUwYlJRUkFRZWlCQVNBQk5nSUFDMEVBSVFCQm5JVUJJQVkyQWdCQm1JVUJJQUUyQWdCQitJRUJRWDgyQWdCQi9JRUJRYkNGQVNnQ0FEWUNBRUdraFFGQkFEWUNBQU5BSUFCQkEzUWlBMEdJZ2dGcUlBTkJnSUlCYWlJQ05nSUFJQU5CaklJQmFpQUNOZ0lBSUFCQkFXb2lBRUVnUncwQUMwSGtnUUVnQmtFb2F5SURRWGdnQVd0QkIzRkJBQ0FCUVFocVFRZHhHeUlBYXlJQ05nSUFRZkNCQVNBQUlBRnFJZ0EyQWdBZ0FDQUNRUUZ5TmdJRUlBRWdBMnBCS0RZQ0JFSDBnUUZCd0lVQktBSUFOZ0lBREFJTElBQXRBQXhCQ0hFZ0F5QUZTM0lnQVNBRlRYSU5BQ0FBSUFJZ0JtbzJBZ1JCOElFQklBVkJlQ0FGYTBFSGNVRUFJQVZCQ0dwQkIzRWJJZ0JxSWdJMkFnQkI1SUVCUWVTQkFTZ0NBQ0FHYWlJQklBQnJJZ0EyQWdBZ0FpQUFRUUZ5TmdJRUlBRWdCV3BCS0RZQ0JFSDBnUUZCd0lVQktBSUFOZ0lBREFFTFFlaUJBU2dDQUNBQlN3UkFRZWlCQVNBQk5nSUFDeUFCSUFacUlRSkJtSVVCSVFBQ1FBSkFBa0FDUUFKQUFrQURRQ0FDSUFBb0FnQkhCRUFnQUNnQ0NDSUFEUUVNQWdzTElBQXRBQXhCQ0hGRkRRRUxRWmlGQVNFQUEwQWdCU0FBS0FJQUlnSlBCRUFnQWlBQUtBSUVhaUlFSUFWTERRTUxJQUFvQWdnaEFBd0FDd0FMSUFBZ0FUWUNBQ0FBSUFBb0FnUWdCbW8yQWdRZ0FVRjRJQUZyUVFkeFFRQWdBVUVJYWtFSGNSdHFJZ2tnQjBFRGNqWUNCQ0FDUVhnZ0FtdEJCM0ZCQUNBQ1FRaHFRUWR4RzJvaUJpQUhJQWxxSWdocklRSWdCU0FHUmdSQVFmQ0JBU0FJTmdJQVFlU0JBVUhrZ1FFb0FnQWdBbW9pQURZQ0FDQUlJQUJCQVhJMkFnUU1Bd3NnQmtIc2dRRW9BZ0JHQkVCQjdJRUJJQWcyQWdCQjRJRUJRZUNCQVNnQ0FDQUNhaUlBTmdJQUlBZ2dBRUVCY2pZQ0JDQUFJQWhxSUFBMkFnQU1Bd3NnQmlnQ0JDSUFRUU54UVFGR0JFQWdBRUY0Y1NFRkFrQWdBRUgvQVUwRVFDQUdLQUlJSWdNZ0FFRURkaUlBUVFOMFFZQ0NBV3BHR2lBRElBWW9BZ3dpQVVZRVFFSFlnUUZCMklFQktBSUFRWDRnQUhkeE5nSUFEQUlMSUFNZ0FUWUNEQ0FCSUFNMkFnZ01BUXNnQmlnQ0dDRUhBa0FnQmlBR0tBSU1JZ0ZIQkVBZ0JpZ0NDQ0lBSUFFMkFnd2dBU0FBTmdJSURBRUxBa0FnQmtFVWFpSUFLQUlBSWdNTkFDQUdRUkJxSWdBb0FnQWlBdzBBUVFBaEFRd0JDd05BSUFBaEJDQURJZ0ZCRkdvaUFDZ0NBQ0lERFFBZ0FVRVFhaUVBSUFFb0FoQWlBdzBBQ3lBRVFRQTJBZ0FMSUFkRkRRQUNRQ0FHSUFZb0Fod2lBMEVDZEVHSWhBRnFJZ0FvQWdCR0JFQWdBQ0FCTmdJQUlBRU5BVUhjZ1FGQjNJRUJLQUlBUVg0Z0EzZHhOZ0lBREFJTElBZEJFRUVVSUFjb0FoQWdCa1liYWlBQk5nSUFJQUZGRFFFTElBRWdCellDR0NBR0tBSVFJZ0FFUUNBQklBQTJBaEFnQUNBQk5nSVlDeUFHS0FJVUlnQkZEUUFnQVNBQU5nSVVJQUFnQVRZQ0dBc2dCU0FHYWlFR0lBSWdCV29oQWdzZ0JpQUdLQUlFUVg1eE5nSUVJQWdnQWtFQmNqWUNCQ0FDSUFocUlBSTJBZ0FnQWtIL0FVMEVRQ0FDUVFOMklnQkJBM1JCZ0lJQmFpRUNBbjlCMklFQktBSUFJZ0ZCQVNBQWRDSUFjVVVFUUVIWWdRRWdBQ0FCY2pZQ0FDQUNEQUVMSUFJb0FnZ0xJUUFnQWlBSU5nSUlJQUFnQ0RZQ0RDQUlJQUkyQWd3Z0NDQUFOZ0lJREFNTFFSOGhBQ0FDUWYvLy93ZE5CRUFnQWtFSWRpSUFJQUJCZ1A0L2FrRVFka0VJY1NJRGRDSUFJQUJCZ09BZmFrRVFka0VFY1NJQmRDSUFJQUJCZ0lBUGFrRVFka0VDY1NJQWRFRVBkaUFCSUFOeUlBQnlheUlBUVFGMElBSWdBRUVWYW5aQkFYRnlRUnhxSVFBTElBZ2dBRFlDSENBSVFnQTNBaEFnQUVFQ2RFR0loQUZxSVFRQ1FFSGNnUUVvQWdBaUEwRUJJQUIwSWdGeFJRUkFRZHlCQVNBQklBTnlOZ0lBSUFRZ0NEWUNBQ0FJSUFRMkFoZ01BUXNnQWtFQVFSa2dBRUVCZG1zZ0FFRWZSaHQwSVFBZ0JDZ0NBQ0VCQTBBZ0FTSURLQUlFUVhoeElBSkdEUU1nQUVFZGRpRUJJQUJCQVhRaEFDQURJQUZCQkhGcUlnUW9BaEFpQVEwQUN5QUVJQWcyQWhBZ0NDQUROZ0lZQ3lBSUlBZzJBZ3dnQ0NBSU5nSUlEQUlMUWVTQkFTQUdRU2hySWdOQmVDQUJhMEVIY1VFQUlBRkJDR3BCQjNFYklnQnJJZ0kyQWdCQjhJRUJJQUFnQVdvaUFEWUNBQ0FBSUFKQkFYSTJBZ1FnQVNBRGFrRW9OZ0lFUWZTQkFVSEFoUUVvQWdBMkFnQWdCU0FFUVNjZ0JHdEJCM0ZCQUNBRVFTZHJRUWR4RzJwQkwyc2lBQ0FBSUFWQkVHcEpHeUlDUVJzMkFnUWdBa0dnaFFFcEFnQTNBaEFnQWtHWWhRRXBBZ0EzQWdoQm9JVUJJQUpCQ0dvMkFnQkJuSVVCSUFZMkFnQkJtSVVCSUFFMkFnQkJwSVVCUVFBMkFnQWdBa0VZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29oQVNBQVFRUnFJUUFnQVNBRVNRMEFDeUFDSUFWR0RRTWdBaUFDS0FJRVFYNXhOZ0lFSUFVZ0FpQUZheUlFUVFGeU5nSUVJQUlnQkRZQ0FDQUVRZjhCVFFSQUlBUkJBM1lpQUVFRGRFR0FnZ0ZxSVFJQ2YwSFlnUUVvQWdBaUFVRUJJQUIwSWdCeFJRUkFRZGlCQVNBQUlBRnlOZ0lBSUFJTUFRc2dBaWdDQ0FzaEFDQUNJQVUyQWdnZ0FDQUZOZ0lNSUFVZ0FqWUNEQ0FGSUFBMkFnZ01CQXRCSHlFQUlBVkNBRGNDRUNBRVFmLy8vd2ROQkVBZ0JFRUlkaUlBSUFCQmdQNC9ha0VRZGtFSWNTSUNkQ0lBSUFCQmdPQWZha0VRZGtFRWNTSUJkQ0lBSUFCQmdJQVBha0VRZGtFQ2NTSUFkRUVQZGlBQklBSnlJQUJ5YXlJQVFRRjBJQVFnQUVFVmFuWkJBWEZ5UVJ4cUlRQUxJQVVnQURZQ0hDQUFRUUowUVlpRUFXb2hBd0pBUWR5QkFTZ0NBQ0lDUVFFZ0FIUWlBWEZGQkVCQjNJRUJJQUVnQW5JMkFnQWdBeUFGTmdJQUlBVWdBellDR0F3QkN5QUVRUUJCR1NBQVFRRjJheUFBUVI5R0czUWhBQ0FES0FJQUlRRURRQ0FCSWdJb0FnUkJlSEVnQkVZTkJDQUFRUjEySVFFZ0FFRUJkQ0VBSUFJZ0FVRUVjV29pQXlnQ0VDSUJEUUFMSUFNZ0JUWUNFQ0FGSUFJMkFoZ0xJQVVnQlRZQ0RDQUZJQVUyQWdnTUF3c2dBeWdDQ0NJQUlBZzJBZ3dnQXlBSU5nSUlJQWhCQURZQ0dDQUlJQU0yQWd3Z0NDQUFOZ0lJQ3lBSlFRaHFJUUFNQlFzZ0FpZ0NDQ0lBSUFVMkFnd2dBaUFGTmdJSUlBVkJBRFlDR0NBRklBSTJBZ3dnQlNBQU5nSUlDMEhrZ1FFb0FnQWlBQ0FIVFEwQVFlU0JBU0FBSUFkcklnRTJBZ0JCOElFQlFmQ0JBU2dDQUNJQ0lBZHFJZ0EyQWdBZ0FDQUJRUUZ5TmdJRUlBSWdCMEVEY2pZQ0JDQUNRUWhxSVFBTUF3dEIxSUVCUVRBMkFnQkJBQ0VBREFJTEFrQWdCa1VOQUFKQUlBUW9BaHdpQWtFQ2RFR0loQUZxSWdBb0FnQWdCRVlFUUNBQUlBRTJBZ0FnQVEwQlFkeUJBU0FKUVg0Z0FuZHhJZ2syQWdBTUFnc2dCa0VRUVJRZ0JpZ0NFQ0FFUmh0cUlBRTJBZ0FnQVVVTkFRc2dBU0FHTmdJWUlBUW9BaEFpQUFSQUlBRWdBRFlDRUNBQUlBRTJBaGdMSUFRb0FoUWlBRVVOQUNBQklBQTJBaFFnQUNBQk5nSVlDd0pBSUFOQkQwMEVRQ0FFSUFNZ0Iyb2lBRUVEY2pZQ0JDQUFJQVJxSWdBZ0FDZ0NCRUVCY2pZQ0JBd0JDeUFFSUFkQkEzSTJBZ1FnQkNBSGFpSUZJQU5CQVhJMkFnUWdBeUFGYWlBRE5nSUFJQU5CL3dGTkJFQWdBMEVEZGlJQVFRTjBRWUNDQVdvaEFnSi9RZGlCQVNnQ0FDSUJRUUVnQUhRaUFIRkZCRUJCMklFQklBQWdBWEkyQWdBZ0Fnd0JDeUFDS0FJSUN5RUFJQUlnQlRZQ0NDQUFJQVUyQWd3Z0JTQUNOZ0lNSUFVZ0FEWUNDQXdCQzBFZklRQWdBMEgvLy84SFRRUkFJQU5CQ0hZaUFDQUFRWUQrUDJwQkVIWkJDSEVpQW5RaUFDQUFRWURnSDJwQkVIWkJCSEVpQVhRaUFDQUFRWUNBRDJwQkVIWkJBbkVpQUhSQkQzWWdBU0FDY2lBQWNtc2lBRUVCZENBRElBQkJGV3AyUVFGeGNrRWNhaUVBQ3lBRklBQTJBaHdnQlVJQU53SVFJQUJCQW5SQmlJUUJhaUVCQWtBQ1FDQUpRUUVnQUhRaUFuRkZCRUJCM0lFQklBSWdDWEkyQWdBZ0FTQUZOZ0lBREFFTElBTkJBRUVaSUFCQkFYWnJJQUJCSDBZYmRDRUFJQUVvQWdBaEJ3TkFJQWNpQVNnQ0JFRjRjU0FEUmcwQ0lBQkJIWFloQWlBQVFRRjBJUUFnQVNBQ1FRUnhhaUlDS0FJUUlnY05BQXNnQWlBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFSQkNHb2hBQXdCQ3dKQUlBaEZEUUFDUUNBQktBSWNJZ0pCQW5SQmlJUUJhaUlBS0FJQUlBRkdCRUFnQUNBRU5nSUFJQVFOQVVIY2dRRWdDVUYrSUFKM2NUWUNBQXdDQ3lBSVFSQkJGQ0FJS0FJUUlBRkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBZzJBaGdnQVNnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBU2dDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBRWdBeUFIYWlJQVFRTnlOZ0lFSUFBZ0FXb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBRWdCMEVEY2pZQ0JDQUJJQWRxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0NnUkFJQXBCQTNZaUFFRURkRUdBZ2dGcUlRVkI3SUVCS0FJQUlRUUNmMEVCSUFCMElnQWdCbkZGQkVCQjJJRUJJQUFnQm5JMkFnQWdCUXdCQ3lBRktBSUlDeUVBSUFVZ0JEWUNDQ0FBSUFRMkFnd2dCQ0FGTmdJTUlBUWdBRFlDQ0F0QjdJRUJJQUkyQWdCQjRJRUJJQU0yQWdBTElBRkJDR29oQUFzZ0MwRVFhaVFBSUFBTHB3RUJCSDhqQUVFZ2F5SUJKQUFnQVVFQU5nSU1JQUZCTnpZQ0NDQUJJQUVwQXdnM0F3QWdBVUVRYWlJRElBRXBBZ0EzQWdRZ0F5QUFOZ0lBSXdCQkVHc2lBaVFBSUFBb0FnQkJmMGNFUUNBQ1FRaHFJZ1FnQXhCNkdpQUNJQVFRZWhvRFFDQUFLQUlBUVFGR0RRQUxJQUFvQWdCRkJFQWdBRUVCTmdJQUlBSkJPQkVCQUNBQVFYODJBZ0FMQ3lBQ1FSQnFKQUFnQUNnQ0JDRUFJQUZCSUdva0FDQUFRUUZyQ3hzQUlBQkJBRFlDQkNBQVFkajhBRFlDQUNBQVFaaldBRFlDQUF1WUJnRUpmeU1BUVJCcklnZ2tBQ0FBRU00Qkl3QkJFR3NpQWlRQUlBSWdBRFlDRENBSVFRaHFJZ1VnQWtFTWFoQXpJQUpCRUdva0FFR3dsUUVRVUNBQlRRUkFBa0JCc0pVQkVGQWlBaUFCUVFGcUlnQkpCRUFqQUVFZ2F5SUpKQUFDUUNBQUlBSnJJZ1pCc0pVQkVFTW9BZ0JCdEpVQktBSUFhMEVDZFUwRVFDQUdFSmNDREFFTFFiQ1ZBUkIwSVFjZ0NVRUlhaUVDQW45QnNKVUJFRkFnQm1vaEJDTUFRUkJySWdBa0FDQUFJQVEyQWd3Z0JCQ0JBaUlEVFFSQVFiQ1ZBUkJ6SWdRZ0EwRUJka2tFUUNBQUlBUkJBWFEyQWdnZ0FFRUlhaUFBUVF4cUVIWW9BZ0FoQXdzZ0FFRVFhaVFBSUFNTUFRc1FGd0FMSVFCQnNKVUJFRkFoQ2tFQUlRTWpBRUVRYXlJRUpBQWdCRUVBTmdJTUlBSkJER29nQkVFTWFpQUhFSVFDSUFBRVFDQUNLQUlRSUFBUWdBSWhBd3NnQWlBRE5nSUFJQUlnQXlBS1FRSjBhaUlITmdJSUlBSWdCellDQkNBQ0VJTUJJQU1nQUVFQ2RHbzJBZ0FnQkVFUWFpUUFJd0JCRUdzaUFDUUFJQUFnQWlnQ0NEWUNBQ0FDS0FJSUlRTWdBQ0FDUVFocU5nSUlJQUFnQXlBR1FRSjBhallDQkNBQUtBSUFJUU1EUUNBQUtBSUVJQU5IQkVBZ0FpZ0NFQ0FBS0FJQUVQNEJJQUFnQUNnQ0FFRUVhaUlETmdJQURBRUxDeUFBS0FJSUlBQW9BZ0EyQWdBZ0FFRVFhaVFBUWJDVkFSQ1JBa0d3bFFFUWRFR3dsUUVvQWdCQnRKVUJLQUlBSUFKQkJHb2lBQkNEQWtHd2xRRWdBQkIxUWJTVkFTQUNRUWhxRUhWQnNKVUJFRU1nQWhDREFSQjFJQUlnQWlnQ0JEWUNBRUd3bFFFUVVCRC9BU0FDS0FJRUlRQURRQ0FBSUFJb0FnaEhCRUFnQWlnQ0VCb2dBaUFDS0FJSVFRUnJOZ0lJREFFTEN5QUNLQUlBQkVBZ0FpZ0NFQ0FDS0FJQUlBSVFnd0VvQWdBZ0FpZ0NBR3RCQW5VUS9BRUxDeUFKUVNCcUpBQU1BUXNnQUNBQ1NRUkFRYkNWQVNnQ0FDQUFRUUowYWlFQVFiQ1ZBUkJRSVFKQnNKVUJJQUFRK3dGQnNKVUJJQUlRbEFJTEN3dEJzSlVCSUFFUWR5Z0NBQVJBUWJDVkFTQUJFSGNvQWdBUW93RUxJQVVRcGdFaEFFR3dsUUVnQVJCM0lBQTJBZ0FnQlNnQ0FDRUFJQVZCQURZQ0FDQUFCRUFnQUJDakFRc2dDRUVRYWlRQUN3Z0FJQUJCQUJBbkN5OEJBWDhqQUVFUWF5SURKQUFnQXlBQk5nSU1JQUFnQTBFTWFoQXpJQUJCQkdvZ0FoQXpJQU5CRUdva0FDQUFDeEFBSUFBb0FnQVFnQU5CR0hSQkdIVUxCZ0FnQUJBUUN3b0FJQUFvQWdBUSt3SUxEUUFnQUNnQ0FCRC9BaG9nQUF0TEFRSi9Jd0JCRUdzaUFTUUFJQUVnQUJEeUFTRUFJd0JCRUdzaUFpUUFJQUpCQ0dvZ0FDZ0NCQkI2S0FJQVFRRTZBQUFnQUNnQ0NFRUJPZ0FBSUFKQkVHb2tBQ0FCUVJCcUpBQUxkd0VEZnlNQVFSQnJJZ0lrQUNBQ0lBQVE4Z0VoQUNNQVFSQnJJZ01rQUNBRFFRaHFJQUFvQWdRUWVpZ0NBQzBBQUVVRVFBSi9Ba0FnQUNnQ0NDSUFMUUFBSWdGQkFVY0VmeUFCUVFKeERRRWdBRUVDT2dBQVFRRUZRUUFMREFFTEVCY0FDeUVCQ3lBRFFSQnFKQUFnQWtFUWFpUUFJQUVMRFFBZ0FDZ0NBQkQ2QWhvZ0FBc0pBQ0FBSUFFUWdRTUxKQUVCZnlBQUtBSUFJUUlnQUNBQk5nSUFJQUlFUUNBQ0lBQVFsZ0VvQWdBUkFRQUxDd2tBSUFBZ0FSRDhBZ3NSQUNBQUlBRWdBQ2dDQUNnQ0hCRUNBQXUvQVFFRGZ5QUFMUUFBUVNCeFJRUkFBa0FnQVNFREFrQWdBaUFBSWdFb0FoQWlBQVIvSUFBRklBRVE2QUVOQVNBQktBSVFDeUFCS0FJVUlnVnJTd1JBSUFFZ0F5QUNJQUVvQWlRUkJBQWFEQUlMQWtBZ0FTZ0NVRUVBU0EwQUlBSWhBQU5BSUFBaUJFVU5BU0FESUFSQkFXc2lBR290QUFCQkNrY05BQXNnQVNBRElBUWdBU2dDSkJFRUFDQUVTUTBCSUFNZ0JHb2hBeUFDSUFScklRSWdBU2dDRkNFRkN5QUZJQU1nQWhCQ0dpQUJJQUVvQWhRZ0FtbzJBaFFMQ3dzTGRRRUJmaUFBSUFFZ0JINGdBaUFEZm53Z0EwSWdpQ0lDSUFGQ0lJZ2lCSDU4SUFOQy8vLy8vdytESWdNZ0FVTC8vLy8vRDRNaUFYNGlCVUlnaUNBRElBUitmQ0lEUWlDSWZDQUJJQUorSUFOQy8vLy8vdytEZkNJQlFpQ0lmRGNEQ0NBQUlBVkMvLy8vL3crRElBRkNJSWFFTndNQUMwTUJBWDhqQUVFUWF5SUZKQUFnQlNBQ05nSU1JQVVnQkRZQ0NDQUZJQVZCREdvUVVpRUNJQUFnQVNBRElBVW9BZ2dRdFFFaEFDQUNFRkVnQlVFUWFpUUFJQUFMb1FFQkFuOENRQ0FBRUFsRklBSWdBV3RCQlVoeURRQWdBU0FDRUswQklBSkJCR3NoQkNBQUVBMGlBaUFBRUFscUlRVUNRQU5BQWtBZ0Fpd0FBQ0VBSUFFZ0JFOE5BQ0FBUVFCTUlBQkIvd0JPY2tVRVFDQUJLQUlBSUFJc0FBQkhEUU1MSUFGQkJHb2hBU0FDSUFVZ0FtdEJBVXBxSVFJTUFRc0xJQUJCQUV3Z0FFSC9BRTV5RFFFZ0Fpd0FBQ0FFS0FJQVFRRnJTdzBCQ3lBRFFRUTJBZ0FMQzIwQkFYOGpBRUdBQW1zaUJTUUFJQVJCZ01BRWNTQUNJQU5NY2tVRVFDQUZJQUZCL3dGeElBSWdBMnNpQWtHQUFpQUNRWUFDU1NJQkd4QkdHaUFCUlFSQUEwQWdBQ0FGUVlBQ0VDb2dBa0dBQW1zaUFrSC9BVXNOQUFzTElBQWdCU0FDRUNvTElBVkJnQUpxSkFBTFVBRUJmZ0pBSUFOQndBQnhCRUFnQVNBRFFVQnFyWVloQWtJQUlRRU1BUXNnQTBVTkFDQUNJQU90SWdTR0lBRkJ3QUFnQTJ1dGlJUWhBaUFCSUFTR0lRRUxJQUFnQVRjREFDQUFJQUkzQXdnTFZRRUNmeU1BUVJCcklnSWtBQ0FBRURVRVFDQUFLQUlBSVFNZ0FCQjlHaUFERUJBTElBQWdBU2dDQ0RZQ0NDQUFJQUVwQWdBM0FnQWdBVUVBRURvZ0FrRUFPZ0FQSUFFZ0FrRVBhaEEwSUFKQkVHb2tBQXNNQUNBQUlBRVFnUU5CQVhNTENnQWdBRUdFaVFFUVpBc01BQ0FBSUFFb0FnQTJBZ0FMREFBZ0FDQUJMUUFBT2dBQUN3b0FJQUF0QUF0QkIzWUxEQUFnQUNBQkVQd0NRUUZ6Q3hFQUlBQWdBU0FCS0FJQUtBSVVFUU1BQ3c4QUlBQWdBQ2dDQUNnQ0VCRUFBQXNKQUNBQUlBRTJBZ1FMQ1FBZ0FDQUJPZ0FMQ3dvQUlBQkIvSWdCRUdRTDBRa0NCSDhFZmlNQVFmQUFheUlGSkFBZ0JFTC8vLy8vLy8vLy8vOEFneUVLQWtBQ1FDQUJRZ0Y5SWd0Q2YxRWdBa0wvLy8vLy8vLy8vLzhBZ3lJSklBRWdDMWF0ZkVJQmZTSUxRdi8vLy8vLy83Ly8vd0JXSUF0Qy8vLy8vLy8vdi8vL0FGRWJSUVJBSUFOQ0FYMGlDMEovVWlBS0lBTWdDMWF0ZkVJQmZTSUxRdi8vLy8vLy83Ly8vd0JVSUF0Qy8vLy8vLy8vdi8vL0FGRWJEUUVMSUFGUUlBbENnSUNBZ0lDQXdQLy9BRlFnQ1VLQWdJQ0FnSURBLy84QVVSdEZCRUFnQWtLQWdJQ0FnSUFnaENFRUlBRWhBd3dDQ3lBRFVDQUtRb0NBZ0lDQWdNRC8vd0JVSUFwQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFSQ2dJQ0FnSUNBSUlRaEJBd0NDeUFCSUFsQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUW9DQWdJQ0FnT0QvL3dBZ0FpQUJJQU9GSUFJZ0JJVkNnSUNBZ0lDQWdJQ0FmNFdFVUNJR0d5RUVRZ0FnQVNBR0d5RUREQUlMSUFNZ0NrS0FnSUNBZ0lEQS8vOEFoWVJRRFFFZ0FTQUpoRkFFUUNBRElBcUVRZ0JTRFFJZ0FTQURneUVESUFJZ0JJTWhCQXdDQ3lBRElBcUVVRVVOQUNBQklRTWdBaUVFREFFTElBTWdBU0FCSUFOVUlBa2dDbFFnQ1NBS1VSc2lCeHNoQ2lBRUlBSWdCeHNpQzBMLy8vLy8vLzgvZ3lFSklBSWdCQ0FIR3lJQ1FqQ0lwMEgvL3dGeElRZ2dDMEl3aUtkQi8vOEJjU0lHUlFSQUlBVkI0QUJxSUFvZ0NTQUtJQWtnQ1ZBaUJodDVJQVpCQm5TdGZLY2lCa0VQYXhBdklBVXBBMmdoQ1NBRktRTmdJUXBCRUNBR2F5RUdDeUFCSUFNZ0J4c2hBeUFDUXYvLy8vLy8veitESVFRZ0NFVUVRQ0FGUWRBQWFpQURJQVFnQXlBRUlBUlFJZ2NiZVNBSFFRWjByWHluSWdkQkQyc1FMMEVRSUFkcklRZ2dCU2tEV0NFRUlBVXBBMUFoQXdzZ0JFSURoaUFEUWoySWhFS0FnSUNBZ0lDQUJJUWhCQ0FKUWdPR0lBcENQWWlFSVFrZ0FpQUxoU0VNQW40Z0EwSURoaUlCSUFZZ0NHc2lCMFVOQUJvZ0IwSC9BRXNFUUVJQUlRUkNBUXdCQ3lBRlFVQnJJQUVnQkVHQUFTQUhheEF2SUFWQk1Hb2dBU0FFSUFjUWZDQUZLUU00SVFRZ0JTa0RNQ0FGS1FOQUlBVXBBMGlFUWdCU3JZUUxJUUlnQ1VLQWdJQ0FnSUNBQklRaENTQUtRZ09HSVFNQ1FDQU1RZ0JUQkVBZ0F5QUNmU0lCSUFrZ0JIMGdBaUFEVnExOUlnU0VVQVJBUWdBaEEwSUFJUVFNQXdzZ0JFTC8vLy8vLy8vL0ExWU5BU0FGUVNCcUlBRWdCQ0FCSUFRZ0JGQWlCeHQ1SUFkQkJuU3RmS2RCREdzaUJ4QXZJQVlnQjJzaEJpQUZLUU1vSVFRZ0JTa0RJQ0VCREFFTElBSWdBM3dpQVNBQ1ZLMGdCQ0FKZkh3aUJFS0FnSUNBZ0lDQUNJTlFEUUFnQVVJQmd5QUVRaitHSUFGQ0FZaUVoQ0VCSUFaQkFXb2hCaUFFUWdHSUlRUUxJQXRDZ0lDQWdJQ0FnSUNBZjRNaEFpQUdRZi8vQVU0RVFDQUNRb0NBZ0lDQWdNRC8vd0NFSVFSQ0FDRUREQUVMUVFBaEJ3SkFJQVpCQUVvRVFDQUdJUWNNQVFzZ0JVRVFhaUFCSUFRZ0JrSC9BR29RTHlBRklBRWdCRUVCSUFackVId2dCU2tEQUNBRktRTVFJQVVwQXhpRVFnQlNyWVFoQVNBRktRTUlJUVFMSUFHblFRZHhJZ1pCQkV1dElBUkNQWVlnQVVJRGlJUWlBWHdpQXlBQlZLMGdCRUlEaUVMLy8vLy8vLzgvZ3lBSHJVSXdob1FnQW9SOElRUUNRQ0FHUVFSR0JFQWdCQ0FEUWdHRElnRWdBM3dpQXlBQlZLMThJUVFNQVFzZ0JrVU5BUXNMSUFBZ0F6Y0RBQ0FBSUFRM0F3Z2dCVUh3QUdva0FBc1JBQ0FBSUFFZ0FDZ0NBQ2dDTEJFQ0FBc3RBQ0FDUlFSQUlBQW9BZ1FnQVNnQ0JFWVBDeUFBSUFGR0JFQkJBUThMSUFBb0FnUWdBU2dDQkJDMkFVVUxZd0FnQWlnQ0JFR3dBWEVpQWtFZ1JnUkFJQUVQQ3dKQUlBSkJFRWNOQUFKQUFrQWdBQzBBQUNJQ1FTdHJEZ01BQVFBQkN5QUFRUUZxRHdzZ0FrRXdSeUFCSUFCclFRSkljZzBBSUFBdEFBRkJJSEpCK0FCSERRQWdBRUVDYWlFQUN5QUFDeVlCQVg4akFFRVFheUlCSkFBZ0FVRUlhaUFBRUEwUWVpZ0NBQ0VBSUFGQkVHb2tBQ0FBQzM0Q0FuOEJmaU1BUVJCcklnTWtBQ0FBQW40Z0FVVUVRRUlBREFFTElBTWdBU0FCUVI5MUlnSnFJQUp6SWdLdFFnQWdBbWNpQWtIUkFHb1FMeUFES1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQW11dFFqQ0dmQ0FCUVlDQWdJQjRjYTFDSUlhRUlRUWdBeWtEQUFzM0F3QWdBQ0FFTndNSUlBTkJFR29rQUF1REJBRURmeUFDUVlBRVR3UkFJQUFnQVNBQ0VBVWFJQUFQQ3lBQUlBSnFJUU1DUUNBQUlBRnpRUU54UlFSQUFrQWdBRUVEY1VVRVFDQUFJUUlNQVFzZ0FrRUFUQVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDd0pBSUFOQmZIRWlCRUhBQUVrTkFDQUNJQVJCUUdvaUJVc05BQU5BSUFJZ0FTZ0NBRFlDQUNBQ0lBRW9BZ1EyQWdRZ0FpQUJLQUlJTmdJSUlBSWdBU2dDRERZQ0RDQUNJQUVvQWhBMkFoQWdBaUFCS0FJVU5nSVVJQUlnQVNnQ0dEWUNHQ0FDSUFFb0FodzJBaHdnQWlBQktBSWdOZ0lnSUFJZ0FTZ0NKRFlDSkNBQ0lBRW9BaWcyQWlnZ0FpQUJLQUlzTmdJc0lBSWdBU2dDTURZQ01DQUNJQUVvQWpRMkFqUWdBaUFCS0FJNE5nSTRJQUlnQVNnQ1BEWUNQQ0FCUVVCcklRRWdBa0ZBYXlJQ0lBVk5EUUFMQ3lBQ0lBUlBEUUVEUUNBQ0lBRW9BZ0EyQWdBZ0FVRUVhaUVCSUFKQkJHb2lBaUFFU1EwQUN3d0JDeUFEUVFSSkJFQWdBQ0VDREFFTElBQWdBMEVFYXlJRVN3UkFJQUFoQWd3QkN5QUFJUUlEUUNBQ0lBRXRBQUE2QUFBZ0FpQUJMUUFCT2dBQklBSWdBUzBBQWpvQUFpQUNJQUV0QUFNNkFBTWdBVUVFYWlFQklBSkJCR29pQWlBRVRRMEFDd3NnQWlBRFNRUkFBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSWdBMGNOQUFzTElBQUxCd0FnQUVFSWFnc25BUUYvSUFKQkFFNEVmeUFBS0FJSUlBSkIvd0Z4UVFGMGFpOEJBQ0FCY1VFQVJ3VWdBd3NMQ2dBZ0FFRXdhMEVLU1F2eUFnSUNmd0YrQWtBZ0FrVU5BQ0FBSUFFNkFBQWdBQ0FDYWlJRFFRRnJJQUU2QUFBZ0FrRURTUTBBSUFBZ0FUb0FBaUFBSUFFNkFBRWdBMEVEYXlBQk9nQUFJQU5CQW1zZ0FUb0FBQ0FDUVFkSkRRQWdBQ0FCT2dBRElBTkJCR3NnQVRvQUFDQUNRUWxKRFFBZ0FFRUFJQUJyUVFOeElnUnFJZ01nQVVIL0FYRkJnWUtFQ0d3aUFUWUNBQ0FESUFJZ0JHdEJmSEVpQkdvaUFrRUVheUFCTmdJQUlBUkJDVWtOQUNBRElBRTJBZ2dnQXlBQk5nSUVJQUpCQ0dzZ0FUWUNBQ0FDUVF4cklBRTJBZ0FnQkVFWlNRMEFJQU1nQVRZQ0dDQURJQUUyQWhRZ0F5QUJOZ0lRSUFNZ0FUWUNEQ0FDUVJCcklBRTJBZ0FnQWtFVWF5QUJOZ0lBSUFKQkdHc2dBVFlDQUNBQ1FSeHJJQUUyQWdBZ0JDQURRUVJ4UVJoeUlnUnJJZ0pCSUVrTkFDQUJyVUtCZ0lDQUVINGhCU0FESUFScUlRRURRQ0FCSUFVM0F4Z2dBU0FGTndNUUlBRWdCVGNEQ0NBQklBVTNBd0FnQVVFZ2FpRUJJQUpCSUdzaUFrRWZTdzBBQ3dzZ0FBczNBUUovSXdCQkVHc2lBaVFBQTBBZ0FVRURSd1JBSUFBZ0FVRUNkR3BCQURZQ0FDQUJRUUZxSVFFTUFRc0xJQUpCRUdva0FDQUFDdzhBSUFBZ0FDZ0NBQ2dDREJFQUFBc0hBQ0FBRUFsRkN4RUFJQUFnQVNBQktBSUFLQUljRVFNQUN4RUFJQUFnQVNBQktBSUFLQUlZRVFNQUN4QUFJQUFnQVVHQWdJQ0FlSEkyQWdnTENRQWdBQ0FCTmdJQUN4TUFJQUFnQVNBQ0lBQW9BZ0FvQWd3UkJBQUxCQUJCQUFzUUFDQUFLQUlFSUFBb0FnQnJRUUoxQ3hJQUlBQW9BZ0FpQUFSQUlBQVEwUUlhQ3dzUkFDQUFJQUVvQWdBUTBRSTJBZ0FnQUF0QkFRRi9JQUFnQVRjRGNDQUFJQUFvQWl3Z0FDZ0NCQ0lDYTZ3M0EzZ2dBQ0FCVUNBQUtBSUlJZ0FnQW11c0lBRlhjZ1IvSUFBRklBSWdBYWRxQ3pZQ2FBc2lBUUYvSXdCQkVHc2lBaVFBSUFBZ0FTQUJFSklCRVBZQklBSkJFR29rQUNBQUN4QUFJQUlFUUNBQUlBRWdBaEJDR2dzTG5RRUJCSDhqQUVFUWF5SUhKQUFDUUNBQVJRMEFJQVFvQWd3aEJpQUNJQUZySWdoQkFFb0VRQ0FBSUFFZ0NCQi9JQWhIRFFFTElBWWdBeUFCYXlJQmEwRUFJQUVnQmtnYklnRkJBRW9FUUNBQUlBY2dBU0FGRU84QklnVVFEU0FCRUg4aEJpQUZFQW9hSUFFZ0JrY05BUXNnQXlBQ2F5SUJRUUJLQkVBZ0FDQUNJQUVRZnlBQlJ3MEJDeUFFRU80QklBQWhDUXNnQjBFUWFpUUFJQWtMVlFFQ2Z5TUFRUkJySWdJa0FDQUFFRFVFUUNBQUtBSUFJUU1nQUJCOUdpQURFQkFMSUFBZ0FTZ0NDRFlDQ0NBQUlBRXBBZ0EzQWdBZ0FVRUFFRG9nQWtFQU5nSU1JQUVnQWtFTWFoQXpJQUpCRUdva0FBdThBUUVEZnlNQVFSQnJJZ1VrQUNBRklBRTJBZ2hCQUNFQlFRWWhCZ0pBQWtBZ0FDQUZRUWhxRUNnTkFFRUVJUVlnQTBHQUVDQUFFQ0VpQnhCT1JRMEFJQU1nQnhDSEFTRUJBMEFDUUNBQUVDVWFJQUZCTUdzaEFTQUFJQVZCQ0dvUU5rVWdCRUVDU0hJTkFDQURRWUFRSUFBUUlTSUdFRTVGRFFNZ0JFRUJheUVFSUFNZ0JoQ0hBU0FCUVFwc2FpRUJEQUVMQzBFQ0lRWWdBQ0FGUVFocUVDaEZEUUVMSUFJZ0FpZ0NBQ0FHY2pZQ0FBc2dCVUVRYWlRQUlBRUx2QUVCQTM4akFFRVFheUlGSkFBZ0JTQUJOZ0lJUVFBaEFVRUdJUVlDUUFKQUlBQWdCVUVJYWhBbURRQkJCQ0VHSUFOQmdCQWdBQkFmSWdjUVJFVU5BQ0FESUFjUWlBRWhBUU5BQWtBZ0FCQWlHaUFCUVRCcklRRWdBQ0FGUVFocUVERkZJQVJCQWtoeURRQWdBMEdBRUNBQUVCOGlCaEJFUlEwRElBUkJBV3NoQkNBRElBWVFpQUVnQVVFS2JHb2hBUXdCQ3d0QkFpRUdJQUFnQlVFSWFoQW1SUTBCQ3lBQ0lBSW9BZ0FnQm5JMkFnQUxJQVZCRUdva0FDQUJDNW9CQVFOL0l3QkJFR3NpQkNRQUlBUWdBVFlDRENBRUlBTTJBZ2dnQkNBRVFReHFFRkloQmlBRUtBSUlJUU1qQUVFUWF5SUJKQUFnQVNBRE5nSU1JQUVnQXpZQ0NFRi9JUVVDUUVFQVFRQWdBaUFERUxVQklnTkJBRWdOQUNBQUlBTkJBV29pQXhBWklnQTJBZ0FnQUVVTkFDQUFJQU1nQWlBQktBSU1FTFVCSVFVTElBRkJFR29rQUNBRklRQWdCaEJSSUFSQkVHb2tBQ0FBQ3cwQUlBQW9BZ0FnQVNnQ0FFY0xMZ0FDUUNBQUtBSUVRY29BY1NJQUJFQWdBRUhBQUVZRVFFRUlEd3NnQUVFSVJ3MEJRUkFQQzBFQUR3dEJDZ3Y1QVFJRGZnSi9Jd0JCRUdzaUJTUUFBbjRnQWIwaUEwTC8vLy8vLy8vLy8vOEFneUlDUW9DQWdJQ0FnSUFJZlVMLy8vLy8vLy8vNy84QVdBUkFJQUpDUElZaEJDQUNRZ1NJUW9DQWdJQ0FnSUNBUEh3TUFRc2dBa0tBZ0lDQWdJQ0ErUDhBV2dSQUlBTkNQSVloQkNBRFFnU0lRb0NBZ0lDQWdNRC8vd0NFREFFTElBSlFCRUJDQUF3QkN5QUZJQUpDQUNBRHAyZEJJR29nQWtJZ2lLZG5JQUpDZ0lDQWdCQlVHeUlHUVRGcUVDOGdCU2tEQUNFRUlBVXBBd2hDZ0lDQWdJQ0F3QUNGUVl6NEFDQUdhNjFDTUlhRUN5RUNJQUFnQkRjREFDQUFJQUlnQTBLQWdJQ0FnSUNBZ0lCL2c0UTNBd2dnQlVFUWFpUUFDd2NBSUFBZ0FVWUxNd0VCZnlBQVFRRWdBQnNoQUFKQUEwQWdBQkFaSWdFTkFVR1lsd0VvQWdBaUFRUkFJQUVSRHdBTUFRc0xFQUFBQ3lBQkM4UURBUU4vSXdCQklHc2lDQ1FBSUFnZ0FqWUNFQ0FJSUFFMkFoZ2dDRUVJYWlJQklBTVFEeUFCRURzaENTQUJFQTRnQkVFQU5nSUFRUUFoQWdKQUEwQWdCaUFIUmlBQ2NnMEJBa0FnQ0VFWWFpQUlRUkJxRUNnTkFBSkFJQWtnQmlnQ0FCQ0hBVUVsUmdSQUlBWkJCR29pQWlBSFJnMENRUUFoQ2dKL0lBa2dBaWdDQUJDSEFTSUJRY1VBUmlBQlFmOEJjVUV3Um5KRkJFQWdCaUVDSUFFTUFRc2dCa0VJYWlBSFJnMERJQUVoQ2lBSklBWW9BZ2dRaHdFTElRRWdDQ0FBSUFnb0FoZ2dDQ2dDRUNBRElBUWdCU0FCSUFvZ0FDZ0NBQ2dDSkJFTUFEWUNHQ0FDUVFocUlRWU1BUXNnQ1VHQXdBQWdCaWdDQUJCT0JFQURRQUpBSUFjZ0JrRUVhaUlHUmdSQUlBY2hCZ3dCQ3lBSlFZREFBQ0FHS0FJQUVFNE5BUXNMQTBBZ0NFRVlhaUFJUVJCcUVEWkZEUUlnQ1VHQXdBQWdDRUVZYWhBaEVFNUZEUUlnQ0VFWWFoQWxHZ3dBQ3dBTElBa2dDRUVZYWhBaEVDa2dDU0FHS0FJQUVDbEdCRUFnQmtFRWFpRUdJQWhCR0dvUUpSb01BUXNnQkVFRU5nSUFDeUFFS0FJQUlRSU1BUXNMSUFSQkJEWUNBQXNnQ0VFWWFpQUlRUkJxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFnb0FoZ2hBQ0FJUVNCcUpBQWdBQXZHQXdFRGZ5TUFRU0JySWdna0FDQUlJQUkyQWhBZ0NDQUJOZ0lZSUFoQkNHb2lBU0FERUE4Z0FSQXlJUWtnQVJBT0lBUkJBRFlDQUVFQUlRSUNRQU5BSUFZZ0IwWWdBbklOQVFKQUlBaEJHR29nQ0VFUWFoQW1EUUFDUUNBSklBWXNBQUFRaUFGQkpVWUVRQ0FHUVFGcUlnSWdCMFlOQWtFQUlRb0NmeUFKSUFJc0FBQVFpQUVpQVVIRkFFWWdBVUgvQVhGQk1FWnlSUVJBSUFZaEFpQUJEQUVMSUFaQkFtb2dCMFlOQXlBQklRb2dDU0FHTEFBQ0VJZ0JDeUVCSUFnZ0FDQUlLQUlZSUFnb0FoQWdBeUFFSUFVZ0FTQUtJQUFvQWdBb0FpUVJEQUEyQWhnZ0FrRUNhaUVHREFFTElBbEJnTUFBSUFZc0FBQVFSQVJBQTBBQ1FDQUhJQVpCQVdvaUJrWUVRQ0FISVFZTUFRc2dDVUdBd0FBZ0Jpd0FBQkJFRFFFTEN3TkFJQWhCR0dvZ0NFRVFhaEF4UlEwQ0lBbEJnTUFBSUFoQkdHb1FIeEJFUlEwQ0lBaEJHR29RSWhvTUFBc0FDeUFKSUFoQkdHb1FIeEN6QVNBSklBWXNBQUFRc3dGR0JFQWdCa0VCYWlFR0lBaEJHR29RSWhvTUFRc2dCRUVFTmdJQUN5QUVLQUlBSVFJTUFRc0xJQVJCQkRZQ0FBc2dDRUVZYWlBSVFSQnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQWdvQWhnaEFDQUlRU0JxSkFBZ0FBdXFBUUVFZnlNQVFSQnJJZ2drQUFKQUlBQkZEUUFnQkNnQ0RDRUdJQUlnQVdzaUIwRUFTZ1JBSUFBZ0FTQUhRUUoxSWdjUWZ5QUhSdzBCQ3lBR0lBTWdBV3RCQW5VaUFXdEJBQ0FCSUFaSUd5SUJRUUJLQkVBZ0FDQUlJQUVnQlJDN0FpSUZFQTBnQVJCL0lRWWdCUkFLR2lBQklBWkhEUUVMSUFNZ0Ftc2lBVUVBU2dSQUlBQWdBaUFCUVFKMUlnRVFmeUFCUncwQkN5QUVFTzRCSUFBaENRc2dDRUVRYWlRQUlBa0xGZ0FnQUNBQklBSWdBeUFBS0FJQUtBSXdFUXNBR2d0Q0FRRi9JQUFvQWdBaEFpQUJFQm9oQUNBQ1FRaHFJZ0VRVUNBQVN3Ui9JQUVnQUJCM0tBSUFRUUJIQlVFQUMwVUVRQkFYQUFzZ0FrRUlhaUFBRUhjb0FnQUxDQUFnQUVIL0FYRUxCQUFnQUFzUEFDQUFJQUFvQWdBb0FpUVJBQUFMRVFBZ0FDQUJJQUVvQWdBb0FpQVJBd0FMRVFBZ0FDQUJJQUVvQWdBb0Fpd1JBd0FMREFBZ0FFR0Nob0FnTmdBQUN3Y0FJQUFRRVJvTExnRUJmeU1BUVJCcklnRWtBQ0FCUVFocUlBQVFEU0FBRUFsQkFuUnFFSG9vQWdBaEFDQUJRUkJxSkFBZ0FBdXFBUUVCZndKQUlBTkJnQkJ4UlEwQUlBSkZJQU5CeWdCeElnUkJDRVlnQkVIQUFFWnljZzBBSUFCQkt6b0FBQ0FBUVFGcUlRQUxJQU5CZ0FSeEJFQWdBRUVqT2dBQUlBQkJBV29oQUFzRFFDQUJMUUFBSWdRRVFDQUFJQVE2QUFBZ0FFRUJhaUVBSUFGQkFXb2hBUXdCQ3dzZ0FBSi9RZThBSUFOQnlnQnhJZ0ZCd0FCR0RRQWFRZGdBUWZnQUlBTkJnSUFCY1JzZ0FVRUlSZzBBR2tIa0FFSDFBQ0FDR3dzNkFBQUxLd0VCZnlNQVFSQnJJZ0VrQUNBQlFRaHFJQUFRRFNBQUVBbHFFSG9vQWdBaEFDQUJRUkJxSkFBZ0FBc1dBQ0FBSUFFZ0FpQURJQUFvQWdBb0FpQVJDd0FhQ3hBQUlBQkJJRVlnQUVFSmEwRUZTWElMTmdBZ0FnUi9JQUlFUUFOQUlBQWdBU2dDQURZQ0FDQUFRUVJxSVFBZ0FVRUVhaUVCSUFKQkFXc2lBZzBBQ3d0QkFBVWdBQXNhQzFJQkFuOUI4SUFCS0FJQUlnRWdBRUVEYWtGOGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUFRQkVVTkFRdEI4SUFCSUFBMkFnQWdBUThMUWRTQkFVRXdOZ0lBUVg4TEVnQWdBQkJES0FJQUlBQW9BZ0JyUVFKMUN3Y0FJQUJCRUdvTE5RRUJmeU1BUVJCcklnSWtBQ0FDSUFBb0FnQTJBZ3dnQUNBQktBSUFOZ0lBSUFFZ0FrRU1haWdDQURZQ0FDQUNRUkJxSkFBTEpBRUNmeU1BUVJCcklnSWtBQ0FBSUFFUThRRWhBeUFDUVJCcUpBQWdBU0FBSUFNYkN3MEFJQUFvQWdBZ0FVRUNkR29MRmdBZ0FCQTFCRUFnQUNBQkVEa1BDeUFBSUFFUU9nc3NBQUpBSUFBZ0FVWU5BQU5BSUFBZ0FVRUJheUlCVHcwQklBQWdBUkN3QWlBQVFRRnFJUUFNQUFzQUN3c0xBQ0FBSUFFMkFnQWdBQXZiQVFJQmZ3SitRUUVoQkFKQUlBQkNBRklnQVVMLy8vLy8vLy8vLy84QWd5SUZRb0NBZ0lDQWdNRC8vd0JXSUFWQ2dJQ0FnSUNBd1AvL0FGRWJEUUFnQWtJQVVpQURRdi8vLy8vLy8vLy8vd0NESWdaQ2dJQ0FnSUNBd1AvL0FGWWdCa0tBZ0lDQWdJREEvLzhBVVJzTkFDQUFJQUtFSUFVZ0JvU0VVQVJBUVFBUEN5QUJJQU9EUWdCWkJFQkJmeUVFSUFBZ0FsUWdBU0FEVXlBQklBTlJHdzBCSUFBZ0FvVWdBU0FEaFlSQ0FGSVBDMEYvSVFRZ0FDQUNWaUFCSUFOVklBRWdBMUViRFFBZ0FDQUNoU0FCSUFPRmhFSUFVaUVFQ3lBRUMxQUJBWDRDUUNBRFFjQUFjUVJBSUFJZ0EwRkFhcTJJSVFGQ0FDRUNEQUVMSUFORkRRQWdBa0hBQUNBRGE2MkdJQUVnQTYwaUJJaUVJUUVnQWlBRWlDRUNDeUFBSUFFM0F3QWdBQ0FDTndNSUN3NEFJQUFvQWdoQi8vLy8vd2R4Q3dvQUlBQVE0UUVhSUFBTEV3QWdBQ0FCSUFJZ0FDZ0NBQ2dDTUJFRUFBc21BQ0FBSUFBb0FoaEZJQUFvQWhBZ0FYSnlJZ0UyQWhBZ0FDZ0NGQ0FCY1FSQUVCY0FDd3NKQUNBQUlBRVEvUUVMSkFBZ0FFRUNUd1IvSUFCQkJHcEJmSEVpQUNBQVFRRnJJZ0FnQUVFQ1Joc0ZRUUVMQ3djQUlBQkJER29MbFFFQkJYOGpBRUVRYXlJRkpBQWdBUkRUQWlFQ0l3QkJFR3NpQXlRQUFrQWdBa0h2Ly8vL0EwMEVRQUpBSUFKQkFVMEVRQ0FBSUFJUU9pQUFJUVFNQVFzZ0FDQUFJQUlRZ2dGQkFXb2lCaENCQVNJRUVFMGdBQ0FHRUV3Z0FDQUNFRGtMSUFRZ0FTQUNFSEVnQTBFQU5nSU1JQVFnQWtFQ2RHb2dBMEVNYWhBeklBTkJFR29rQUF3QkN4QVhBQXNnQlVFUWFpUUFDdzhBSUFBUVF5Z0NBQ0FBS0FJQWF3dkVBUUVHZnlNQVFSQnJJZ1FrQUNBQUVKWUJLQUlBSVFVQ2Z5QUNLQUlBSUFBb0FnQnJJZ05CLy8vLy93ZEpCRUFnQTBFQmRBd0JDMEYvQ3lJRFFRUWdBeHNoQXlBQktBSUFJUVlnQUNnQ0FDRUhJQVZCTmtZRWYwRUFCU0FBS0FJQUN5QURFSjRCSWdnRVFDQUZRVFpIQkVBZ0FCQ21BUm9MSUFSQk5UWUNCQ0FBSUFSQkNHb2dDQ0FFUVFScUVCNGlCUkNsQWlBRkVCMGdBU0FBS0FJQUlBWWdCMnRxTmdJQUlBSWdBQ2dDQUNBRFFYeHhhallDQUNBRVFSQnFKQUFQQ3hBWEFBc1RBQ0FBSUFGQkFDQUFLQUlBS0FJMEVRUUFDeE1BSUFBZ0FVRUFJQUFvQWdBb0FpUVJCQUFMRFFBZ0FDZ0NCQ0FBS0FJQWF3dERBUUYvSUFCQnJDWW9BZ0FpQVRZQ0FDQUFJQUZCREdzb0FnQnFRY3dtS0FJQU5nSUFJQUJCMENZb0FnQTJBZ2dnQUVFTWFoRFFBUm9nQUVGQWF4QitHaUFBQy9JQ0FRSi9Jd0JCRUdzaUNpUUFJQW9nQURZQ0RBSkFBa0FDUUNBREtBSUFJQUpIRFFCQkt5RUxJQUFnQ1NnQ1lFY0VRRUV0SVFzZ0NTZ0NaQ0FBUncwQkN5QURJQUpCQVdvMkFnQWdBaUFMT2dBQURBRUxJQVlRQ1VVZ0FDQUZSM0pGQkVCQkFDRUFJQWdvQWdBaUFTQUhhMEdmQVVvTkFpQUVLQUlBSVFBZ0NDQUJRUVJxTmdJQUlBRWdBRFlDQUF3QkMwRi9JUUFnQ1NBSlFlZ0FhaUFLUVF4cUVOSUJJQWxySWdaQjNBQktEUUVnQmtFQ2RTRUZBa0FDUUFKQUlBRkJDR3NPQXdBQ0FBRUxJQUVnQlVvTkFRd0RDeUFCUVJCSElBWkIyQUJJY2cwQUlBTW9BZ0FpQVNBQ1JpQUJJQUpyUVFKS2NnMENJQUZCQVdzdEFBQkJNRWNOQWtFQUlRQWdCRUVBTmdJQUlBTWdBVUVCYWpZQ0FDQUJJQVZCNE5BQWFpMEFBRG9BQUF3Q0N5QURJQU1vQWdBaUFFRUJhallDQUNBQUlBVkI0TkFBYWkwQUFEb0FBQ0FFSUFRb0FnQkJBV28yQWdCQkFDRUFEQUVMUVFBaEFDQUVRUUEyQWdBTElBcEJFR29rQUNBQUN3b0FJQUJCdElrQkVHUUw3Z0lCQTM4akFFRVFheUlLSkFBZ0NpQUFPZ0FQQWtBQ1FBSkFJQU1vQWdBZ0FrY05BRUVySVFzZ0FFSC9BWEVpRENBSkxRQVlSd1JBUVMwaEN5QUpMUUFaSUF4SERRRUxJQU1nQWtFQmFqWUNBQ0FDSUFzNkFBQU1BUXNnQmhBSlJTQUFJQVZIY2tVRVFFRUFJUUFnQ0NnQ0FDSUJJQWRyUVo4QlNnMENJQVFvQWdBaEFDQUlJQUZCQkdvMkFnQWdBU0FBTmdJQURBRUxRWDhoQUNBSklBbEJHbW9nQ2tFUGFoRFZBU0FKYXlJRlFSZEtEUUVDUUFKQUFrQWdBVUVJYXc0REFBSUFBUXNnQVNBRlNnMEJEQU1MSUFGQkVFY2dCVUVXU0hJTkFDQURLQUlBSWdFZ0FrWWdBU0FDYTBFQ1NuSU5BaUFCUVFGckxRQUFRVEJIRFFKQkFDRUFJQVJCQURZQ0FDQURJQUZCQVdvMkFnQWdBU0FGUWVEUUFHb3RBQUE2QUFBTUFnc2dBeUFES0FJQUlnQkJBV28yQWdBZ0FDQUZRZURRQUdvdEFBQTZBQUFnQkNBRUtBSUFRUUZxTmdJQVFRQWhBQXdCQzBFQUlRQWdCRUVBTmdJQUN5QUtRUkJxSkFBZ0FBc0tBQ0FBUWF5SkFSQmtDNE1CQWdOL0FYNENRQ0FBUW9DQWdJQVFWQVJBSUFBaEJRd0JDd05BSUFGQkFXc2lBU0FBSUFCQ0NvQWlCVUlLZm4yblFUQnlPZ0FBSUFCQy8vLy8vNThCVmlFQ0lBVWhBQ0FDRFFBTEN5QUZweUlDQkVBRFFDQUJRUUZySWdFZ0FpQUNRUXB1SWdOQkNteHJRVEJ5T2dBQUlBSkJDVXNoQkNBRElRSWdCQTBBQ3dzZ0FRdGpBZ0YvQVg0akFFRVFheUlDSkFBZ0FBSitJQUZGQkVCQ0FBd0JDeUFDSUFHdFFnQWdBV2NpQVVIUkFHb1FMeUFDS1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQVd1dFFqQ0dmQ0VESUFJcEF3QUxOd01BSUFBZ0F6Y0RDQ0FDUVJCcUpBQUxKQUFnQUVFTFR3Ui9JQUJCRUdwQmNIRWlBQ0FBUVFGcklnQWdBRUVMUmhzRlFRb0xDMzhCQTM4Z0FDRUJBa0FnQUVFRGNRUkFBMEFnQVMwQUFFVU5BaUFCUVFGcUlnRkJBM0VOQUFzTEEwQWdBU0lDUVFScUlRRWdBaWdDQUNJRFFYOXpJQU5CZ1lLRUNHdHhRWUNCZ29SNGNVVU5BQXNnQTBIL0FYRkZCRUFnQWlBQWF3OExBMEFnQWkwQUFTRURJQUpCQVdvaUFTRUNJQU1OQUFzTElBRWdBR3NMS1FBZ0FDQUJRUWgwUVlDQS9BZHhJQUZCR0hSeUlBRkJDSFpCZ1A0RGNTQUJRUmgyY25JMkFBQUxLUUFnQUNnQUFDSUFRUmgwSUFCQkNIUkJnSUQ4QjNGeUlBQkJDSFpCZ1A0RGNTQUFRUmgyY25JTER3QWdBQ0FBS0FJQVFRUnFOZ0lBQ3djQUlBQkJCR29MRHdBZ0FDQUFLQUlBUVFGcU5nSUFDemNCQW44akFFRVFheUlESkFBZ0EwRUlhaUlFSUFFUUR5QUNJQVFRakFFaUFSQTROZ0lBSUFBZ0FSQTNJQVFRRGlBRFFSQnFKQUFMTlFFQ2Z5TUFRUkJySWdJa0FDQUNRUWhxSWdNZ0FCQVBJQU1RTzBIZzBBQkIrdEFBSUFFUVl5QURFQTRnQWtFUWFpUUFJQUVMTndFQ2Z5TUFRUkJySWdNa0FDQURRUWhxSWdRZ0FSQVBJQUlnQkJDT0FTSUJFRGc2QUFBZ0FDQUJFRGNnQkJBT0lBTkJFR29rQUFzWEFDQUFJQU0yQWhBZ0FDQUNOZ0lNSUFBZ0FUWUNDQXNLQUNBQVFSaDBRUmgxQzBJQUlBQWdBQ2dDQUNBQktBSUFjellDQUNBQUlBQW9BZ1FnQVNnQ0JITTJBZ1FnQUNBQUtBSUlJQUVvQWdoek5nSUlJQUFnQUNnQ0RDQUJLQUlNY3pZQ0RBdWNDQUVMZnlBQVJRUkFJQUVRR1E4TElBRkJRRThFUUVIVWdRRkJNRFlDQUVFQUR3c0NmMEVRSUFGQkMycEJlSEVnQVVFTFNSc2hCaUFBUVFocklnVW9BZ1FpQ1VGNGNTRUVBa0FnQ1VFRGNVVUVRRUVBSUFaQmdBSkpEUUlhSUFaQkJHb2dCRTBFUUNBRklRSWdCQ0FHYTBHNGhRRW9BZ0JCQVhSTkRRSUxRUUFNQWdzZ0JDQUZhaUVIQWtBZ0JDQUdUd1JBSUFRZ0Jtc2lBMEVRU1EwQklBVWdDVUVCY1NBR2NrRUNjallDQkNBRklBWnFJZ0lnQTBFRGNqWUNCQ0FISUFjb0FnUkJBWEkyQWdRZ0FpQURFT3dCREFFTElBZEI4SUVCS0FJQVJnUkFRZVNCQVNnQ0FDQUVhaUlFSUFaTkRRSWdCU0FKUVFGeElBWnlRUUp5TmdJRUlBVWdCbW9pQXlBRUlBWnJJZ0pCQVhJMkFnUkI1SUVCSUFJMkFnQkI4SUVCSUFNMkFnQU1BUXNnQjBIc2dRRW9BZ0JHQkVCQjRJRUJLQUlBSUFScUlnTWdCa2tOQWdKQUlBTWdCbXNpQWtFUVR3UkFJQVVnQ1VFQmNTQUdja0VDY2pZQ0JDQUZJQVpxSWdRZ0FrRUJjallDQkNBRElBVnFJZ01nQWpZQ0FDQURJQU1vQWdSQmZuRTJBZ1FNQVFzZ0JTQUpRUUZ4SUFOeVFRSnlOZ0lFSUFNZ0JXb2lBaUFDS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUVFMUWV5QkFTQUVOZ0lBUWVDQkFTQUNOZ0lBREFFTElBY29BZ1FpQTBFQ2NRMEJJQU5CZUhFZ0JHb2lDaUFHU1EwQklBb2dCbXNoREFKQUlBTkIvd0ZOQkVBZ0J5Z0NDQ0lFSUFOQkEzWWlBa0VEZEVHQWdnRnFSaG9nQkNBSEtBSU1JZ05HQkVCQjJJRUJRZGlCQVNnQ0FFRitJQUozY1RZQ0FBd0NDeUFFSUFNMkFnd2dBeUFFTmdJSURBRUxJQWNvQWhnaEN3SkFJQWNnQnlnQ0RDSUlSd1JBSUFjb0FnZ2lBa0hvZ1FFb0FnQkpHaUFDSUFnMkFnd2dDQ0FDTmdJSURBRUxBa0FnQjBFVWFpSUVLQUlBSWdJTkFDQUhRUkJxSWdRb0FnQWlBZzBBUVFBaENBd0JDd05BSUFRaEF5QUNJZ2hCRkdvaUJDZ0NBQ0lDRFFBZ0NFRVFhaUVFSUFnb0FoQWlBZzBBQ3lBRFFRQTJBZ0FMSUF0RkRRQUNRQ0FISUFjb0Fod2lBMEVDZEVHSWhBRnFJZ0lvQWdCR0JFQWdBaUFJTmdJQUlBZ05BVUhjZ1FGQjNJRUJLQUlBUVg0Z0EzZHhOZ0lBREFJTElBdEJFRUVVSUFzb0FoQWdCMFliYWlBSU5nSUFJQWhGRFFFTElBZ2dDellDR0NBSEtBSVFJZ0lFUUNBSUlBSTJBaEFnQWlBSU5nSVlDeUFIS0FJVUlnSkZEUUFnQ0NBQ05nSVVJQUlnQ0RZQ0dBc2dERUVQVFFSQUlBVWdDVUVCY1NBS2NrRUNjallDQkNBRklBcHFJZ0lnQWlnQ0JFRUJjallDQkF3QkN5QUZJQWxCQVhFZ0JuSkJBbkkyQWdRZ0JTQUdhaUlESUF4QkEzSTJBZ1FnQlNBS2FpSUNJQUlvQWdSQkFYSTJBZ1FnQXlBTUVPd0JDeUFGSVFJTElBSUxJZ0lFUUNBQ1FRaHFEd3NnQVJBWklnVkZCRUJCQUE4TElBVWdBRUY4UVhnZ0FFRUVheWdDQUNJQ1FRTnhHeUFDUVhoeGFpSUNJQUVnQVNBQ1N4c1FRaG9nQUJBUUlBVUxmUUVEZjBFWUlRSUNRQUpBSUFBZ0FYSkJBM0VOQUFOQUlBQW9BZ0FnQVNnQ0FFY05BU0FCUVFScUlRRWdBRUVFYWlFQUlBSkJCR3NpQWtFRFN3MEFDeUFDUlEwQkN3TkFJQUF0QUFBaUF5QUJMUUFBSWdSR0JFQWdBVUVCYWlFQklBQkJBV29oQUNBQ1FRRnJJZ0lOQVF3Q0N3c2dBeUFFYXc4TFFRQUxTUUVDZnlBQUtBSUVJZ1pCQ0hVaEJTQUdRUUZ4QkVBZ0FpZ0NBQ0FGRU1VQklRVUxJQUFvQWdBaUFDQUJJQUlnQldvZ0EwRUNJQVpCQW5FYklBUWdBQ2dDQUNnQ0dCRUtBQXUyQVFFRGZ5TUFRUkJySWdNa0FDQURJQUU2QUE4Q1FBSkFBa0FDUUNBQUVEVUVRQ0FBRUgwaEFTQUFLQUlFSWdRZ0FVRUJheUlDUmcwQkRBTUxRUW9oQkVFS0lRSWdBQzBBQ3lJQlFRcEhEUUVMSUFBZ0FrRUJJQUlnQWhESUFTQUVJUUVnQUJBMURRRUxJQUFoQWlBQUlBRkJBV29RT2d3QkN5QUFLQUlBSVFJZ0FDQUVRUUZxRURrZ0JDRUJDeUFCSUFKcUlnQWdBMEVQYWhBMElBTkJBRG9BRGlBQVFRRnFJQU5CRG1vUU5DQURRUkJxSkFBTEpBRUNmeU1BUVJCcklnSWtBQ0FCSUFBUThRRWhBeUFDUVJCcUpBQWdBU0FBSUFNYkN4MEFJQUJCQkdvUWtnSkJmMFlFUUNBQUlBQW9BZ0FvQWdnUkFRQUxDeVFBSUFBUStRRWhBQ0FCRVBrQklBQnJJZ0VFUUNBQ0lBQWdBUkRxQVFzZ0FTQUNhZ3NSQUNBQUlBRWdBU2dDQUNnQ0tCRURBQXNVQVFGL0lBQW9BZ0FoQVNBQVFRQTJBZ0FnQVF1ckxBRVJmeUFBS0FMd0FTRVNJQUFvQWdRZ0FTZ0FCQ0lFUVJoMElBUkJDSFJCZ0lEOEIzRnlJQVJCQ0haQmdQNERjU0FFUVJoMmNuSnpJZ1JCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQmlBQUtBSUlJQUVvQUFnaUJVRVlkQ0FGUVFoMFFZQ0EvQWR4Y2lBRlFRaDJRWUQrQTNFZ0JVRVlkbkp5Y3lJRlFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRZ2dBQ2dDRENBQktBQU1JZ05CR0hRZ0EwRUlkRUdBZ1B3SGNYSWdBMEVJZGtHQS9nTnhJQU5CR0haeWNuTWlBMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VISUFWQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaENTQURRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUW9nQUNnQ0FDQUJLQUFBSWdGQkdIUWdBVUVJZEVHQWdQd0hjWElnQVVFSWRrR0EvZ054SUFGQkdIWnljbk1pQVVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFTElBTkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEQ0FCUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVEwZ0JFSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRU9JQUZCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoRHlBRVFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlSQWdCVUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VSSUFBb0FoUWdDeUFLSUFrZ0JFRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUVRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUWtnQUNnQ0dDQU9JQTBnRENBRlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnVkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hDaUFBS0FJY0lCRWdFQ0FQSUFOQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUEwSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRUxJQVZCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoRENBRFFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRMGdBQ2dDRUNBSElBZ2dCaUFCUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdGQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEJpQURRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUWdnQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFSElBUkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hEaUFCUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVE4Z0JFRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRVFJQVZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRVNBQUtBSWtJQVlnRFNBTUlBUkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCRUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VHSUFBb0FpZ2dEaUFISUFnZ0JVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUZRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUWdnQUNnQ0xDQVJJQkFnRHlBRFFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnTkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hCeUFGUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVF3Z0EwRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRU5JQUFvQWlBZ0N5QUtJQWtnQVVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJQlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlRa2dBMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VLSUFGQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaEN5QUVRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUTRnQVVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFUElBUkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hFQ0FGUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVJFZ0FDZ0NOQ0FKSUEwZ0RDQUVRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1JCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQ1NBQUtBSTRJQTRnQ3lBS0lBVkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCVUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VLSUFBb0Fqd2dFU0FRSUE4Z0EwRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SURRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUXNnQlVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFTUlBTkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hEU0FBS0FJd0lBY2dDQ0FHSUFGQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUFVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRUdJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdoQ0NBQlFRWjJRZndIY1VHQUNHb29BZ0JCRUJBSUlRY2dCRUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VPSUFGQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaER5QUVRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUkFnQlVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFUklBQW9Ba1FnQmlBTklBd2dCRUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFZZ0FDZ0NTQ0FPSUFjZ0NDQUZRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1ZCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoQ0NBQUtBSk1JQkVnRUNBUElBTkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VISUFWQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaERDQURRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUTBnQUNnQ1FDQUxJQW9nQ1NBQlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnRkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hDU0FEUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFvZ0FVRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRUxJQVJCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRGlBQlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlROGdCRUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VRSUFWQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEVTQUFLQUpVSUFrZ0RTQU1JQVJCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQkVFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFSklBQW9BbGdnRGlBTElBb2dCVUVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlGUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVFvZ0FDZ0NYQ0FSSUJBZ0R5QURRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ05CL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQ3lBRlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRd2dBMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VOSUFBb0FsQWdCeUFJSUFZZ0FVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUJRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUVlnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFSUlBRkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hCeUFFUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVE0Z0FVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRVBJQVJCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRUNBRlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlSRWdBQ2dDWkNBR0lBMGdEQ0FFUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdSQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaEJpQUFLQUpvSUE0Z0J5QUlJQVZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQlVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFSUlBQW9BbXdnRVNBUUlBOGdBMEVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlEUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVFjZ0JVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRU1JQU5CQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRFNBQUtBSmdJQXNnQ2lBSklBRkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlBVUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDQ0VKSUFOQkRuWkIvQWR4UVlBSWFpZ0NBRUVJRUFnaENpQUJRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUlJUXNnQkVIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFT0lBRkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEeUFFUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVJBZ0JVSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNDRVJJQUFvQW5RZ0NTQU5JQXdnQkVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJRVFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRa2dBQ2dDZUNBT0lBc2dDaUFGUVJaMlFmd0hjVUdBQ0dvb0FnQnpjM056SWdWQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaENpQUFLQUo4SUJFZ0VDQVBJQU5CRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQTBIL0FYRkJBblJCZ0FocUtBSUFRUmdRQ0NFTElBVkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2hEQ0FEUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJSVEwZ0FDZ0NjQ0FISUFnZ0JpQUJRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ0ZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQmlBRFFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRY2dBVUVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VPSUFSQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaER5QUJRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUkFnQkVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFUklBVkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hFeUFBS0FLRUFTQUdJQTBnRENBRVFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnWkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2dBQ2dDZ0FFZ0N5QUtJQWtnQVVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJSVFSWjJRZndIY1VHQUNHb29BZ0J6SUFBb0FvZ0JJQThnRGlBSElBVkJGblpCL0FkeFFZQUlhaWdDQUhOemMzTWlCMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDSE1nQUNnQ2pBRWdFeUFSSUJBZ0EwRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SURRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUljeUFBS0FLUUFYTWhBU0FIUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSUFaQkZuWkIvQWR4UVlBSWFpZ0NBSE1nQTBFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0hNZ0NFSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNITWdBQ2dDbEFGeklRUWdBMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0FIUVJaMlFmd0hjVUdBQ0dvb0FnQnpJQWhCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFaQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFoeklBQW9BcGdCY3lFRkFuOGdDRUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0FEUVJaMlFmd0hjVUdBQ0dvb0FnQnpJQVpCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFkQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFoeklBQW9BcHdCY3lJRElCSkJDMGdOQUJvZ0JFRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRUlJQVZCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoQnlBRFFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlRa2dCVUVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0VHSUFOQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFnaENpQUJRZjhCY1VFQ2RFR0FDR29vQWdCQkdCQUlJUXNnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NFTUlBRkJCblpCL0FkeFFZQUlhaWdDQUVFUUVBZ2hEU0FFUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJSVE0Z0FVRU9ka0g4QjNGQmdBaHFLQUlBUVFnUUNDRVBJQVJCQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWdoRUNBRlFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSUlSRWdBQ2dDcEFFZ0N5QUtJQVlnQkVFV2RrSDhCM0ZCZ0FocUtBSUFjM056Y3lJR1FRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlBQW9BcUFCSUFrZ0J5QUlJQUZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQ0VFV2RrSDhCM0ZCZ0FocUtBSUFjeUFBS0FLb0FTQU9JQTBnRENBRlFSWjJRZndIY1VHQUNHb29BZ0J6YzNOeklnZEJCblpCL0FkeFFZQUlhaWdDQUVFUUVBaHpJQUFvQXF3QklCRWdFQ0FQSUFOQkZuWkIvQWR4UVlBSWFpZ0NBSE56YzNNaUEwSC9BWEZCQW5SQmdBaHFLQUlBUVJnUUNITWdBQ2dDc0FGeklRRWdCMEVPZGtIOEIzRkJnQWhxS0FJQVFRZ1FDQ0FHUVJaMlFmd0hjVUdBQ0dvb0FnQnpJQU5CQm5aQi9BZHhRWUFJYWlnQ0FFRVFFQWh6SUFoQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFoeklBQW9BclFCY3lFRUlBTkJEblpCL0FkeFFZQUlhaWdDQUVFSUVBZ2dCMEVXZGtIOEIzRkJnQWhxS0FJQWN5QUlRUVoyUWZ3SGNVR0FDR29vQWdCQkVCQUljeUFHUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJY3lBQUtBSzRBWE1oQlNBSVFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlBTkJGblpCL0FkeFFZQUlhaWdDQUhNZ0JrRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNITWdCMEgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDSE1nQUNnQ3ZBRnpJZ01nRWtFTlNBMEFHaUFFUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVFnZ0JVRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRUhJQU5CL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoQ1NBRlFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlRWWdBMEVHZGtIOEIzRkJnQWhxS0FJQVFSQVFDQ0VLSUFGQi93RnhRUUowUVlBSWFpZ0NBRUVZRUFnaEN5QURRUTUyUWZ3SGNVR0FDR29vQWdCQkNCQUlJUXdnQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0NFTklBUkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBZ2hEaUFCUVE1MlFmd0hjVUdBQ0dvb0FnQkJDQkFJSVE4Z0JFRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNDRVFJQVZCL3dGeFFRSjBRWUFJYWlnQ0FFRVlFQWdoRVNBQUtBTEVBU0FMSUFvZ0JpQUVRUloyUWZ3SGNVR0FDR29vQWdCemMzTnpJZ1pCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQUNnQ3dBRWdDU0FISUFnZ0FVRVdka0g4QjNGQmdBaHFLQUlBYzNOemN5SUlRUloyUWZ3SGNVR0FDR29vQWdCeklBQW9Bc2dCSUE0Z0RTQU1JQVZCRm5aQi9BZHhRWUFJYWlnQ0FITnpjM01pQjBFR2RrSDhCM0ZCZ0FocUtBSUFRUkFRQ0hNZ0FDZ0N6QUVnRVNBUUlBOGdBMEVXZGtIOEIzRkJnQWhxS0FJQWMzTnpjeUlEUWY4QmNVRUNkRUdBQ0dvb0FnQkJHQkFJY3lBQUtBTFFBWE1oQVNBSFFRNTJRZndIY1VHQUNHb29BZ0JCQ0JBSUlBWkJGblpCL0FkeFFZQUlhaWdDQUhNZ0EwRUdka0g4QjNGQmdBaHFLQUlBUVJBUUNITWdDRUgvQVhGQkFuUkJnQWhxS0FJQVFSZ1FDSE1nQUNnQzFBRnpJUVFnQTBFT2RrSDhCM0ZCZ0FocUtBSUFRUWdRQ0NBSFFSWjJRZndIY1VHQUNHb29BZ0J6SUFoQkJuWkIvQWR4UVlBSWFpZ0NBRUVRRUFoeklBWkIvd0Z4UVFKMFFZQUlhaWdDQUVFWUVBaHpJQUFvQXRnQmN5RUZJQWhCRG5aQi9BZHhRWUFJYWlnQ0FFRUlFQWdnQTBFV2RrSDhCM0ZCZ0FocUtBSUFjeUFHUVFaMlFmd0hjVUdBQ0dvb0FnQkJFQkFJY3lBSFFmOEJjVUVDZEVHQUNHb29BZ0JCR0JBSWN5QUFLQUxjQVhNTElRTWdBaUFBSUJKQkJIUnFJZ0FvQWdBZ0EwSC9BWEZCQW5SQmdBaHFMUUFCSUFGQkZuWkIvQWR4UVlBSWFpZ0NBRUVJZEVHQWdJQjRjU0FFUVE1MlFmd0hjVUdBQ0dvdEFBSkJFSFJ5SUFWQkJuWkIvQWR4UVlBSWFpMEFBVUVJZEhKeWN5SVNRUmgwSUJKQkNIUkJnSUQ4QjNGeUlCSkJDSFpCZ1A0RGNTQVNRUmgyY25JMkFBQWdBaUFBS0FJRUlBRkIvd0Z4UVFKMFFZQUlhaTBBQVNBRVFSWjJRZndIY1VHQUNHb29BZ0JCQ0hSQmdJQ0FlSEVnQlVFT2RrSDhCM0ZCZ0FocUxRQUNRUkIwY2lBRFFRWjJRZndIY1VHQUNHb3RBQUZCQ0hSeWNuTWlFa0VZZENBU1FRaDBRWUNBL0FkeGNpQVNRUWgyUVlEK0EzRWdFa0VZZG5KeU5nQUVJQUlnQUNnQ0NDQUVRZjhCY1VFQ2RFR0FDR290QUFFZ0JVRVdka0g4QjNGQmdBaHFLQUlBUVFoMFFZQ0FnSGh4SUFOQkRuWkIvQWR4UVlBSWFpMEFBa0VRZEhJZ0FVRUdka0g4QjNGQmdBaHFMUUFCUVFoMGNuSnpJaEpCR0hRZ0VrRUlkRUdBZ1B3SGNYSWdFa0VJZGtHQS9nTnhJQkpCR0haeWNqWUFDQ0FDSUFBb0Fnd2dCVUgvQVhGQkFuUkJnQWhxTFFBQklBTkJGblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1NBQlFRNTJRZndIY1VHQUNHb3RBQUpCRUhSeUlBUkJCblpCL0FkeFFZQUlhaTBBQVVFSWRISnljeUlBUVJoMElBQkJDSFJCZ0lEOEIzRnlJQUJCQ0haQmdQNERjU0FBUVJoMmNuSTJBQXdMRGdBZ0FDQUJLQUlBTmdJQUlBQUxCd0FnQUJCSEdnc0lBRUgvLy8vL0J3c0ZBRUgvQUFzREFBRUxLd0FDUUNBQUlBRkdEUUFEUUNBQUlBRkJCR3NpQVU4TkFTQUFJQUVRZFNBQVFRUnFJUUFNQUFzQUN3dlVBd0VJZnlNQVFSQnJJZ29rQUNBR0VEc2hDeUFLSUFZUWpBRWlCaEEzQWtBZ0NoQkpCRUFnQ3lBQUlBSWdBeEJqSUFVZ0F5QUNJQUJyUVFKMGFpSUdOZ0lBREFFTElBVWdBellDQUFKQUFrQWdBQ0lJTFFBQUlnZEJLMnNPQXdBQkFBRUxJQXNnQjBFWWRFRVlkUkE5SVFnZ0JTQUZLQUlBSWdkQkJHbzJBZ0FnQnlBSU5nSUFJQUJCQVdvaENBc0NRQ0FDSUFoclFRSklEUUFnQ0MwQUFFRXdSdzBBSUFndEFBRkJJSEpCK0FCSERRQWdDMEV3RUQwaEJ5QUZJQVVvQWdBaUNVRUVhallDQUNBSklBYzJBZ0FnQ3lBSUxBQUJFRDBoQnlBRklBVW9BZ0FpQ1VFRWFqWUNBQ0FKSUFjMkFnQWdDRUVDYWlFSUN5QUlJQUlRZVVFQUlRa2dCaEE0SVF4QkFDRUhJQWdoQmdOL0lBSWdCazBFZnlBRElBZ2dBR3RCQW5ScUlBVW9BZ0FRclFFZ0JTZ0NBQVVDUUNBS0lBY1FDeTBBQUVVTkFDQUpJQW9nQnhBTExBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFScU5nSUFJQWtnRERZQ0FDQUhJQWNnQ2hBSlFRRnJTV29oQjBFQUlRa0xJQXNnQml3QUFCQTlJUTBnQlNBRktBSUFJZzVCQkdvMkFnQWdEaUFOTmdJQUlBWkJBV29oQmlBSlFRRnFJUWtNQVFzTElRWUxJQVFnQmlBRElBRWdBR3RCQW5ScUlBRWdBa1liTmdJQUlBb1FDaG9nQ2tFUWFpUUFDOUFCQVFKL0lBSkJnQkJ4QkVBZ0FFRXJPZ0FBSUFCQkFXb2hBQXNnQWtHQUNIRUVRQ0FBUVNNNkFBQWdBRUVCYWlFQUN5QUNRWVFDY1NJRFFZUUNSd1JBSUFCQnJ0UUFPd0FBSUFCQkFtb2hBQXNnQWtHQWdBRnhJUUlEUUNBQkxRQUFJZ1FFUUNBQUlBUTZBQUFnQUVFQmFpRUFJQUZCQVdvaEFRd0JDd3NnQUFKL0FrQWdBMEdBQWtjRVFDQURRUVJIRFFGQnhnQkI1Z0FnQWhzTUFndEJ4UUJCNVFBZ0Foc01BUXRCd1FCQjRRQWdBaHNnQTBHRUFrWU5BQnBCeHdCQjV3QWdBaHNMT2dBQUlBTkJoQUpIQzhvREFRaC9Jd0JCRUdzaUNpUUFJQVlRTWlFTElBb2dCaENPQVNJR0VEY0NRQ0FLRUVrRVFDQUxJQUFnQWlBREVHOGdCU0FESUFJZ0FHdHFJZ1kyQWdBTUFRc2dCU0FETmdJQUFrQUNRQ0FBSWdndEFBQWlCMEVyYXc0REFBRUFBUXNnQ3lBSFFSaDBRUmgxRUNraENDQUZJQVVvQWdBaUIwRUJhallDQUNBSElBZzZBQUFnQUVFQmFpRUlDd0pBSUFJZ0NHdEJBa2dOQUNBSUxRQUFRVEJIRFFBZ0NDMEFBVUVnY2tINEFFY05BQ0FMUVRBUUtTRUhJQVVnQlNnQ0FDSUpRUUZxTmdJQUlBa2dCem9BQUNBTElBZ3NBQUVRS1NFSElBVWdCU2dDQUNJSlFRRnFOZ0lBSUFrZ0J6b0FBQ0FJUVFKcUlRZ0xJQWdnQWhCNVFRQWhDU0FHRURnaERFRUFJUWNnQ0NFR0EzOGdBaUFHVFFSL0lBTWdDQ0FBYTJvZ0JTZ0NBQkI1SUFVb0FnQUZBa0FnQ2lBSEVBc3RBQUJGRFFBZ0NTQUtJQWNRQ3l3QUFFY05BQ0FGSUFVb0FnQWlDVUVCYWpZQ0FDQUpJQXc2QUFBZ0J5QUhJQW9RQ1VFQmEwbHFJUWRCQUNFSkN5QUxJQVlzQUFBUUtTRU5JQVVnQlNnQ0FDSU9RUUZxTmdJQUlBNGdEVG9BQUNBR1FRRnFJUVlnQ1VFQmFpRUpEQUVMQ3lFR0N5QUVJQVlnQXlBQklBQnJhaUFCSUFKR0d6WUNBQ0FLRUFvYUlBcEJFR29rQUFzTUFDQUFFQTBnQVVFQ2RHb0xxZ1FCQzM4akFFR0FBV3NpQ2lRQUlBb2dBVFlDZUNBQ0lBTVF6UUloQ0NBS1FUVTJBaEFnQ2tFSWFrRUFJQXBCRUdvaUNSQWVJUkFDUUNBSVFlVUFUd1JBSUFnUUdTSUpSUTBCSUJBZ0NSQW5DeUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFBMEFDUUNBQUlBcEIrQUJxRURaQkFDQUlHMFVFUUNBQUlBcEIrQUJxRUNnRVFDQUZJQVVvQWdCQkFuSTJBZ0FMREFFTElBQVFJU0VPSUFaRkJFQWdCQ0FPRUNraERnc2dERUVCYWlFTlFRQWhEeUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFJQTBoRENBUFJRMERJQUFRSlJvZ0NTRUhJQUloQVNBSUlBdHFRUUpKRFFNRFFDQUJJQU5HQkVBTUJRVUNRQ0FITFFBQVFRSkhEUUFnQVJBSklBMUdEUUFnQjBFQU9nQUFJQXRCQVdzaEN3c2dCMEVCYWlFSElBRkJER29oQVF3QkN3QUxBQVVDUUNBSExRQUFRUUZIRFFBZ0FTQU1FTEVCS0FJQUlSRUNRQ0FHQkg4Z0VRVWdCQ0FSRUNrTElBNUdCRUJCQVNFUElBRVFDU0FOUncwQ0lBZEJBam9BQUNBTFFRRnFJUXNNQVFzZ0IwRUFPZ0FBQ3lBSVFRRnJJUWdMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBTEN3SkFBa0FEUUNBQ0lBTkdEUUVnQ1MwQUFFRUNSd1JBSUFsQkFXb2hDU0FDUVF4cUlRSU1BUXNMSUFJaEF3d0JDeUFGSUFVb0FnQkJCSEkyQWdBTElCQVFIU0FLUVlBQmFpUUFJQU1QQlFKQUlBRVFTVVVFUUNBSFFRRTZBQUFNQVFzZ0IwRUNPZ0FBSUF0QkFXb2hDeUFJUVFGcklRZ0xJQWRCQVdvaEJ5QUJRUXhxSVFFTUFRc0FDd0FMRUJjQUN4RUFJQUFnQVNBQUtBSUFLQUlNRVFJQUM3TUVBUXQvSXdCQmdBRnJJZ29rQUNBS0lBRTJBbmdnQWlBREVNMENJUWdnQ2tFMU5nSVFJQXBCQ0dwQkFDQUtRUkJxSWdrUUhpRVFBa0FnQ0VIbEFFOEVRQ0FJRUJraUNVVU5BU0FRSUFrUUp3c2dDU0VISUFJaEFRTkFJQUVnQTBZRVFBTkFBa0FnQUNBS1FmZ0FhaEF4UVFBZ0NCdEZCRUFnQUNBS1FmZ0FhaEFtQkVBZ0JTQUZLQUlBUVFKeU5nSUFDd3dCQ3lBQUVCOGhEaUFHUlFSQUlBUWdEaEN6QVNFT0N5QU1RUUZxSVExQkFDRVBJQWtoQnlBQ0lRRURRQ0FCSUFOR0JFQWdEU0VNSUE5RkRRTWdBQkFpR2lBSklRY2dBaUVCSUFnZ0MycEJBa2tOQXdOQUlBRWdBMFlFUUF3RkJRSkFJQWN0QUFCQkFrY05BQ0FCRUFrZ0RVWU5BQ0FIUVFBNkFBQWdDMEVCYXlFTEN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FCUUpBSUFjdEFBQkJBVWNOQUNBQklBd1FDeXdBQUNFUkFrQWdEa0gvQVhFZ0JnUi9JQkVGSUFRZ0VSQ3pBUXRCL3dGeFJnUkFRUUVoRHlBQkVBa2dEVWNOQWlBSFFRSTZBQUFnQzBFQmFpRUxEQUVMSUFkQkFEb0FBQXNnQ0VFQmF5RUlDeUFIUVFGcUlRY2dBVUVNYWlFQkRBRUxBQXNBQ3dzQ1FBSkFBMEFnQWlBRFJnMEJJQWt0QUFCQkFrY0VRQ0FKUVFGcUlRa2dBa0VNYWlFQ0RBRUxDeUFDSVFNTUFRc2dCU0FGS0FJQVFRUnlOZ0lBQ3lBUUVCMGdDa0dBQVdva0FDQUREd1VDUUNBQkVFbEZCRUFnQjBFQk9nQUFEQUVMSUFkQkFqb0FBQ0FMUVFGcUlRc2dDRUVCYXlFSUN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FDeEFYQUF2bEF3RURmeU1BUWFBQmF5SUVKQUJCZnlFRklBUWdBVUVCYTBFQUlBRWJOZ0tVQVNBRUlBQWdCRUdlQVdvZ0FSc2lCallDa0FFZ0JFRUFRWkFCRUVZaUFFRi9OZ0pNSUFCQk5EWUNKQ0FBUVg4MkFsQWdBQ0FBUVo4QmFqWUNMQ0FBSUFCQmtBRnFOZ0pVQWtBZ0FVRUFTQVJBUWRTQkFVRTlOZ0lBREFFTElBWkJBRG9BQUVFQUlRUWpBRUhRQVdzaUFTUUFJQUVnQXpZQ3pBRWdBVUdnQVdvaUEwRUFRU2dRUmhvZ0FTQUJLQUxNQVRZQ3lBRUNRRUVBSUFJZ0FVSElBV29nQVVIUUFHb2dBeERjQWtFQVNBUkFRWDhoQWd3QkN5QUFLQUpNUVFCT0lRVWdBQ2dDQUNFRElBQW9Ba2hCQUV3RVFDQUFJQU5CWDNFMkFnQUxBbjhDUUFKQUlBQW9BakJGQkVBZ0FFSFFBRFlDTUNBQVFRQTJBaHdnQUVJQU53TVFJQUFvQWl3aEJDQUFJQUUyQWl3TUFRc2dBQ2dDRUEwQkMwRi9JQUFRNkFFTkFSb0xJQUFnQWlBQlFjZ0JhaUFCUWRBQWFpQUJRYUFCYWhEY0Fnc2hBaUFFQkVBZ0FFRUFRUUFnQUNnQ0pCRUVBQm9nQUVFQU5nSXdJQUFnQkRZQ0xDQUFRUUEyQWh3Z0FFRUFOZ0lRSUFBb0FoUWhCQ0FBUVFBMkFoUWdBa0YvSUFRYklRSUxJQUFnQUNnQ0FDSUVJQU5CSUhGeU5nSUFRWDhnQWlBRVFTQnhHeUVDSUFWRkRRQUxJQUZCMEFGcUpBQWdBaUVGQ3lBQVFhQUJhaVFBSUFVTFNnRUNmd0pBSUFBdEFBQWlBa1VnQWlBQkxRQUFJZ05IY2cwQUEwQWdBUzBBQVNFRElBQXRBQUVpQWtVTkFTQUJRUUZxSVFFZ0FFRUJhaUVBSUFJZ0EwWU5BQXNMSUFJZ0Eyc0w1QUlCQm44akFFRVFheUlISkFBZ0EwSHdoZ0VnQXhzaUJTZ0NBQ0VEQWtBQ1FBSkFJQUZGQkVBZ0F3MEJEQU1MUVg0aEJDQUNSUTBDSUFBZ0IwRU1haUFBR3lFR0FrQWdBd1JBSUFJaEFBd0JDeUFCTFFBQUlnQkJHSFJCR0hVaUEwRUFUZ1JBSUFZZ0FEWUNBQ0FEUVFCSElRUU1CQXNnQVN3QUFDRUFRZGlHQVNnQ0FDZ0NBRVVFUUNBR0lBQkIvNzhEY1RZQ0FFRUJJUVFNQkFzZ0FFSC9BWEZCd2dGcklnQkJNa3NOQVNBQVFRSjBRY0FyYWlnQ0FDRURJQUpCQVdzaUFFVU5BaUFCUVFGcUlRRUxJQUV0QUFBaUNFRURkaUlKUVJCcklBTkJHblVnQ1dweVFRZExEUUFEUUNBQVFRRnJJUUFnQ0VHQUFXc2dBMEVHZEhJaUEwRUFUZ1JBSUFWQkFEWUNBQ0FHSUFNMkFnQWdBaUFBYXlFRURBUUxJQUJGRFFJZ0FVRUJhaUlCTFFBQUlnaEJ3QUZ4UVlBQlJnMEFDd3NnQlVFQU5nSUFRZFNCQVVFWk5nSUFRWDhoQkF3QkN5QUZJQU0yQWdBTElBZEJFR29rQUNBRUN3d0FJQUJCREdvUWZob2dBQXNJQUNBQUtBSVFSUXNvQVFKL0l3QkJFR3NpQWlRQUlBRW9BZ0FnQUNnQ0FFZ2hBeUFDUVJCcUpBQWdBU0FBSUFNYkN4QUFJQUFnQVRjRENDQUFRZ0EzQXdBTEV3QWdBRUc4SHpZQ0FDQUFRUVJxRUE0Z0FBc0VBRUVCQzJVQkEzOGdBa1VFUUVFQUR3c0NRQ0FBTFFBQUlnTkZEUUFEUUFKQUlBRXRBQUFpQlVVTkFDQUNRUUZySWdKRklBTWdCVWR5RFFBZ0FVRUJhaUVCSUFBdEFBRWhBeUFBUVFGcUlRQWdBdzBCREFJTEN5QURJUVFMSUFSQi93RnhJQUV0QUFCckM2NEJBUVIvSXdCQkVHc2lCU1FBSUFFaEJDQUNRUkJQQkVBZ0FrRUVkaUVIQTBBZ0F5QUVFSjBCSUFNZ0FDQUZFTElDSUFNZ0JTa0RDRGNBQ0NBRElBVXBBd0EzQUFBZ0JFRVFhaUVFSUFaQkFXb2lCaUFIUncwQUN3c2dCQ0FCSUFKcUlnRkpCRUFnQlNBRUlBRWdCR3NpQWhCQ0lnRWdBbXBCQUVFUUlBSnJFRVlhSUFNZ0FSQ2RBU0FESUFBZ0FSQ3lBaUFESUFFcEF3ZzNBQWdnQXlBQktRTUFOd0FBQ3lBRlFSQnFKQUFMR2dBZ0FDQUJJQUVvQWdCQkRHc29BZ0JxS0FJWU5nSUFJQUFMS3dFQmZ5QUFRZnovQURZQ0FBSkFJQUFvQWdSQkRHc2lBVUVJYWhDU0FrRUFUZzBBSUFFUUVBc2dBQXRMQVFKL0lBQW9BZ1FpQjBFSWRTRUdJQWRCQVhFRVFDQURLQUlBSUFZUXhRRWhCZ3NnQUNnQ0FDSUFJQUVnQWlBRElBWnFJQVJCQWlBSFFRSnhHeUFGSUFBb0FnQW9BaFFSQ1FBTElBQUNRQ0FBS0FJRUlBRkhEUUFnQUNnQ0hFRUJSZzBBSUFBZ0FqWUNIQXNMbWdFQUlBQkJBVG9BTlFKQUlBQW9BZ1FnQWtjTkFDQUFRUUU2QURRQ1FDQUFLQUlRSWdKRkJFQWdBRUVCTmdJa0lBQWdBellDR0NBQUlBRTJBaEFnQUNnQ01FRUJSdzBDSUFOQkFVWU5BUXdDQ3lBQklBSkdCRUFnQUNnQ0dDSUNRUUpHQkVBZ0FDQUROZ0lZSUFNaEFnc2dBQ2dDTUVFQlJ3MENJQUpCQVVZTkFRd0NDeUFBSUFBb0FpUkJBV28yQWlRTElBQkJBVG9BTmdzTENnQWdBQ0FCYWlnQ0FBdGRBUUYvSUFBb0FoQWlBMFVFUUNBQVFRRTJBaVFnQUNBQ05nSVlJQUFnQVRZQ0VBOExBa0FnQVNBRFJnUkFJQUFvQWhoQkFrY05BU0FBSUFJMkFoZ1BDeUFBUVFFNkFEWWdBRUVDTmdJWUlBQWdBQ2dDSkVFQmFqWUNKQXNMdVFFQkEzOGpBRUVRYXlJREpBQWdBeUFCTmdJTUFrQUNRQUpBQWtBZ0FCQTFCRUFnQUJCOUlRRWdBQ2dDQkNJRUlBRkJBV3NpQWtZTkFRd0RDMEVCSVFSQkFTRUNJQUF0QUFzaUFVRUJSdzBCQ3lBQUlBSkJBU0FDSUFJUTh3RWdCQ0VCSUFBUU5RMEJDeUFBSVFJZ0FDQUJRUUZxRURvTUFRc2dBQ2dDQUNFQ0lBQWdCRUVCYWhBNUlBUWhBUXNnQWlBQlFRSjBhaUlBSUFOQkRHb1FNeUFEUVFBMkFnZ2dBRUVFYWlBRFFRaHFFRE1nQTBFUWFpUUFDNjhCQVFOL0l3QkJFR3NpQlNRQUlBSkJieUlHSUFGclRRUkFJQUFRRFNFSEFuOGdBU0FHUVFGMlFSQnJTUVJBSUFVZ0FVRUJkRFlDQ0NBRklBRWdBbW8yQWd3Z0JVRU1haUFGUVFocUVIWW9BZ0FRa1FFTUFRc2dCa0VCYXd0QkFXb2lCaEJmSVFJZ0JBUkFJQUlnQnlBRUVGVUxJQU1nQkdzaUF3UkFJQUlnQkdvZ0JDQUhhaUFERUZVTElBRkJDa2NFUUNBSEVCQUxJQUFnQWhCTklBQWdCaEJNSUFWQkVHb2tBQThMRUJjQUN3TUFBUXNYQUNBQUtBSUlFQlpIQkVBZ0FDZ0NDQkRVQWdzZ0FBczRBUUYvSXdCQkVHc2lBeVFBSUFNZ0FqWUNEQ0FEUVFocUlBTkJER29RVWlFQ0lBQWdBUkRhQVNFQUlBSVFVU0FEUVJCcUpBQWdBQXNMQUNBRUlBSTJBZ0JCQXdzSkFDQUFRUUEyQWdBTER3QWdBQ0FBS0FJRVFRRnFOZ0lFQ3hrQkFYOUJBU0VCSUFBUU5RUi9JQUFRZlVFQmF3VWdBUXNMR2dBZ0FFRzBJVFlDQUNBQVFTQnFFQW9hSUFBUXZBRWFJQUFMa3dFQkJIOGpBRUVRYXlJREpBQUNRQ0FCRURWRkJFQWdBQ0FCS0FJSU5nSUlJQUFnQVNrQ0FEY0NBQXdCQ3lBQktBSUFJUVFDUUFKQUFrQWdBU2dDQkNJQ1FRcE5CRUFnQUNFQklBQWdBaEE2REFFTElBSkJiMHNOQVNBQUlBSVFrUUZCQVdvaUJSQmZJZ0VRVFNBQUlBVVFUQ0FBSUFJUU9Rc2dBU0FFSUFKQkFXb1FWUXdCQ3hBWEFBc0xJQU5CRUdva0FBc3hBQ0FDS0FJQUlRSURRQUpBSUFBZ0FVY0VmeUFBS0FJQUlBSkhEUUVnQUFVZ0FRc1BDeUFBUVFScUlRQU1BQXNBQy9rREFRRi9Jd0JCRUdzaURDUUFJQXdnQURZQ0RBSkFBa0FnQUNBRlJnUkFJQUV0QUFCRkRRRkJBQ0VBSUFGQkFEb0FBQ0FFSUFRb0FnQWlBVUVCYWpZQ0FDQUJRUzQ2QUFBZ0J4QUpSUTBDSUFrb0FnQWlBU0FJYTBHZkFVb05BaUFLS0FJQUlRSWdDU0FCUVFScU5nSUFJQUVnQWpZQ0FBd0NDd0pBSUFBZ0JrY05BQ0FIRUFsRkRRQWdBUzBBQUVVTkFVRUFJUUFnQ1NnQ0FDSUJJQWhyUVo4QlNnMENJQW9vQWdBaEFDQUpJQUZCQkdvMkFnQWdBU0FBTmdJQVFRQWhBQ0FLUVFBMkFnQU1BZ3RCZnlFQUlBc2dDMEdBQVdvZ0RFRU1haERTQVNBTGF5SUZRZndBU2cwQklBVkJBblZCNE5BQWFpMEFBQ0VHQWtBQ1FDQUZRWHR4SWdCQjJBQkhCRUFnQUVIZ0FFY05BU0FESUFRb0FnQWlBVWNFUUVGL0lRQWdBVUVCYXkwQUFFSGZBSEVnQWkwQUFFSC9BSEZIRFFVTElBUWdBVUVCYWpZQ0FDQUJJQVk2QUFCQkFDRUFEQVFMSUFKQjBBQTZBQUFNQVFzZ0Fpd0FBQ0lBSUFaQjN3QnhSdzBBSUFJZ0FFR0FBWEk2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnhBSlJRMEFJQWtvQWdBaUFDQUlhMEdmQVVvTkFDQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUFzZ0JDQUVLQUlBSWdCQkFXbzJBZ0FnQUNBR09nQUFRUUFoQUNBRlFkUUFTZzBCSUFvZ0NpZ0NBRUVCYWpZQ0FBd0JDMEYvSVFBTElBeEJFR29rQUNBQUMxQUJBbjhqQUVFUWF5SUdKQUFnQmtFSWFpSUZJQUVRRHlBRkVEdEI0TkFBUVlEUkFDQUNFR01nQXlBRkVJd0JJZ0VRU0RZQ0FDQUVJQUVRT0RZQ0FDQUFJQUVRTnlBRkVBNGdCa0VRYWlRQUN6RUFJQUl0QUFBaEFnTkFBa0FnQUNBQlJ3Ui9JQUF0QUFBZ0FrY05BU0FBQlNBQkN3OExJQUJCQVdvaEFBd0FDd0FMN1FNQkFYOGpBRUVRYXlJTUpBQWdEQ0FBT2dBUEFrQUNRQ0FBSUFWR0JFQWdBUzBBQUVVTkFVRUFJUUFnQVVFQU9nQUFJQVFnQkNnQ0FDSUJRUUZxTmdJQUlBRkJMam9BQUNBSEVBbEZEUUlnQ1NnQ0FDSUJJQWhyUVo4QlNnMENJQW9vQWdBaEFpQUpJQUZCQkdvMkFnQWdBU0FDTmdJQURBSUxBa0FnQUNBR1J3MEFJQWNRQ1VVTkFDQUJMUUFBUlEwQlFRQWhBQ0FKS0FJQUlnRWdDR3RCbndGS0RRSWdDaWdDQUNFQUlBa2dBVUVFYWpZQ0FDQUJJQUEyQWdCQkFDRUFJQXBCQURZQ0FBd0NDMEYvSVFBZ0N5QUxRU0JxSUF4QkQyb1ExUUVnQzJzaUJVRWZTZzBCSUFWQjROQUFhaTBBQUNFR0FrQUNRQUpBQWtBZ0JVRitjVUVXYXc0REFRSUFBZ3NnQXlBRUtBSUFJZ0ZIQkVBZ0FVRUJheTBBQUVIZkFIRWdBaTBBQUVIL0FIRkhEUVVMSUFRZ0FVRUJhallDQUNBQklBWTZBQUJCQUNFQURBUUxJQUpCMEFBNkFBQU1BUXNnQWl3QUFDSUFJQVpCM3dCeFJ3MEFJQUlnQUVHQUFYSTZBQUFnQVMwQUFFVU5BQ0FCUVFBNkFBQWdCeEFKUlEwQUlBa29BZ0FpQUNBSWEwR2ZBVW9OQUNBS0tBSUFJUUVnQ1NBQVFRUnFOZ0lBSUFBZ0FUWUNBQXNnQkNBRUtBSUFJZ0JCQVdvMkFnQWdBQ0FHT2dBQVFRQWhBQ0FGUVJWS0RRRWdDaUFLS0FJQVFRRnFOZ0lBREFFTFFYOGhBQXNnREVFUWFpUUFJQUFMVUFFQ2Z5TUFRUkJySWdZa0FDQUdRUWhxSWdVZ0FSQVBJQVVRTWtIZzBBQkJnTkVBSUFJUWJ5QURJQVVRamdFaUFSQklPZ0FBSUFRZ0FSQTRPZ0FBSUFBZ0FSQTNJQVVRRGlBR1FSQnFKQUFMZmdJQ2Z3SitJd0JCb0FGcklnUWtBQ0FFSUFFMkFqd2dCQ0FCTmdJVUlBUkJmellDR0NBRVFSQnFJZ1ZDQUJCVElBUWdCU0FEUVFFUTVnSWdCQ2tEQ0NFR0lBUXBBd0FoQnlBQ0JFQWdBaUFCSUFRb0FoUWdCQ2dDaUFGcUlBUW9BanhyYWpZQ0FBc2dBQ0FITndNQUlBQWdCamNEQ0NBRVFhQUJhaVFBQ3cwQUlBQWdBU0FDUW44UTBBSUxpUUlBQWtBZ0FBUi9JQUZCL3dCTkRRRUNRRUhZaGdFb0FnQW9BZ0JGQkVBZ0FVR0FmM0ZCZ0w4RFJnMEREQUVMSUFGQi93OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUFTQUFJQUZCQm5aQndBRnlPZ0FBUVFJUEN5QUJRWUJBY1VHQXdBTkhJQUZCZ0xBRFQzRkZCRUFnQUNBQlFUOXhRWUFCY2pvQUFpQUFJQUZCREhaQjRBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUZCQXc4TElBRkJnSUFFYTBILy96OU5CRUFnQUNBQlFUOXhRWUFCY2pvQUF5QUFJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FVRUdka0UvY1VHQUFYSTZBQUlnQUNBQlFReDJRVDl4UVlBQmNqb0FBVUVFRHdzTFFkU0JBVUVaTmdJQVFYOEZRUUVMRHdzZ0FDQUJPZ0FBUVFFTHJ3SUJCSDhDZndKQUlBQWlBVUVEY1FSQUEwQWdBUzBBQUNJQ1JTQUNRVDFHY2cwQ0lBRkJBV29pQVVFRGNRMEFDd3NDUUNBQktBSUFJZ0pCZjNNZ0FrR0Jnb1FJYTNGQmdJR0NoSGh4RFFBRFFDQUNRYjM2OU9rRGN5SUNRWDl6SUFKQmdZS0VDR3R4UVlDQmdvUjRjUTBCSUFFb0FnUWhBaUFCUVFScUlRRWdBa0dCZ29RSWF5QUNRWDl6Y1VHQWdZS0VlSEZGRFFBTEN3TkFJQUVpQWkwQUFDSURCRUFnQWtFQmFpRUJJQU5CUFVjTkFRc0xJQUlNQVFzZ0FRc2dBR3NpQWtVRVFFRUFEd3NDUUNBQUlBSnFMUUFBRFFCQjlJWUJLQUlBSWdGRkRRQWdBU2dDQUNJRFJRMEFBMEFDUUNBQUlBTWdBaEMrQVVVRVFDQUJLQUlBSUFKcUlnTXRBQUJCUFVZTkFRc2dBU2dDQkNFRElBRkJCR29oQVNBRERRRU1BZ3NMSUFOQkFXb2hCQXNnQkF2aEFRRUNmeUFDUVFCSElRTUNRQUpBQWtBZ0FFRURjVVVnQWtWeURRQWdBVUgvQVhFaEJBTkFJQUF0QUFBZ0JFWU5BaUFDUVFGcklnSkJBRWNoQXlBQVFRRnFJZ0JCQTNGRkRRRWdBZzBBQ3dzZ0EwVU5BUXNDUUNBQUxRQUFJQUZCL3dGeFJpQUNRUVJKY2cwQUlBRkIvd0Z4UVlHQ2hBaHNJUU1EUUNBQUtBSUFJQU56SWdSQmYzTWdCRUdCZ29RSWEzRkJnSUdDaEhoeERRRWdBRUVFYWlFQUlBSkJCR3NpQWtFRFN3MEFDd3NnQWtVTkFDQUJRZjhCY1NFQkEwQWdBU0FBTFFBQVJnUkFJQUFQQ3lBQVFRRnFJUUFnQWtFQmF5SUNEUUFMQzBFQUM5Y0RBZ0orQW44akFFRWdheUlFSkFBQ1FDQUJRdi8vLy8vLy8vLy8vd0NESWdOQ2dJQ0FnSUNBd0lBOGZTQURRb0NBZ0lDQWdNRC93d0I5VkFSQUlBRkNCSVlnQUVJOGlJUWhBeUFBUXYvLy8vLy8vLy8vRDRNaUFFS0JnSUNBZ0lDQWdBaGFCRUFnQTBLQmdJQ0FnSUNBZ01BQWZDRUNEQUlMSUFOQ2dJQ0FnSUNBZ0lCQWZTRUNJQUJDZ0lDQWdJQ0FnSUFJaFVJQVVnMEJJQUlnQTBJQmczd2hBZ3dCQ3lBQVVDQURRb0NBZ0lDQWdNRC8vd0JVSUFOQ2dJQ0FnSUNBd1AvL0FGRWJSUVJBSUFGQ0JJWWdBRUk4aUlSQy8vLy8vLy8vL3dPRFFvQ0FnSUNBZ0lEOC93Q0VJUUlNQVF0Q2dJQ0FnSUNBZ1BqL0FDRUNJQU5DLy8vLy8vLy92Ly9EQUZZTkFFSUFJUUlnQTBJd2lLY2lCVUdSOXdCSkRRQWdCRUVRYWlBQUlBRkMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJZ0lnQlVHQjl3QnJFQzhnQkNBQUlBSkJnZmdBSUFWckVId2dCQ2tEQ0VJRWhpQUVLUU1BSWdCQ1BJaUVJUUlnQkNrREVDQUVLUU1ZaEVJQVVxMGdBRUwvLy8vLy8vLy8vdytEaENJQVFvR0FnSUNBZ0lDQUNGb0VRQ0FDUWdGOElRSU1BUXNnQUVLQWdJQ0FnSUNBZ0FpRlFnQlNEUUFnQWtJQmd5QUNmQ0VDQ3lBRVFTQnFKQUFnQWlBQlFvQ0FnSUNBZ0lDQWdIK0RoTDhMUkFFQmZ5TUFRUkJySWdVa0FDQUZJQUVnQWlBRElBUkNnSUNBZ0lDQWdJQ0FmNFVRUENBRktRTUFJUUVnQUNBRktRTUlOd01JSUFBZ0FUY0RBQ0FGUVJCcUpBQUxxUUVCQVh4RUFBQUFBQUFBOEQ4aEFRSkFJQUJCZ0FoT0JFQkVBQUFBQUFBQTRIOGhBU0FBUWY4UFNBUkFJQUJCL3dkcklRQU1BZ3RFQUFBQUFBQUE4SDhoQVNBQVFmMFhJQUJCL1JkSUcwSCtEMnNoQUF3QkN5QUFRWUY0U2cwQVJBQUFBQUFBQUdBRElRRWdBRUc0Y0VvRVFDQUFRY2tIYWlFQURBRUxSQUFBQUFBQUFBQUFJUUVnQUVId2FDQUFRZkJvU2h0QmtnOXFJUUFMSUFFZ0FFSC9CMnF0UWpTR3Y2SUx4QUVDQVg4Q2ZrRi9JUU1DUUNBQVFnQlNJQUZDLy8vLy8vLy8vLy8vQUlNaUJFS0FnSUNBZ0lEQS8vOEFWaUFFUW9DQWdJQ0FnTUQvL3dCUkd3MEFRUUFnQWtMLy8vLy8vLy8vLy84QWd5SUZRb0NBZ0lDQWdNRC8vd0JXSUFWQ2dJQ0FnSUNBd1AvL0FGRWJEUUFnQUNBRUlBV0VoRkFFUUVFQUR3c2dBU0FDZzBJQVdRUkFRUUFnQVNBQ1V5QUJJQUpSR3cwQklBQWdBU0FDaFlSQ0FGSVBDeUFBUWdCU0lBRWdBbFVnQVNBQ1VSc05BQ0FBSUFFZ0FvV0VRZ0JTSVFNTElBTUxhUUVDZnlBQVFid29OZ0lBSUFBb0FpZ2hBUU5BSUFFRVFFRUFJQUFnQVVFQmF5SUJRUUowSWdJZ0FDZ0NKR29vQWdBZ0FDZ0NJQ0FDYWlnQ0FCRUhBQXdCQ3dzZ0FFRWNhaEFPSUFBb0FpQVFFQ0FBS0FJa0VCQWdBQ2dDTUJBUUlBQW9BandRRUNBQUN3a0FJQUFRaWdFUUVBc0pBQ0FBRUxnQkVCQUxEQUFnQUVFRWFoQitHaUFBQ3d3QUlBQkJDR29RZmhvZ0FBdi9Md0VSZnlNQVFTQnJJaE1rQUFKL1FmUUJFQmtpQ0FSL0FrQWdDQ0lHSUFBZ0FVRURkQkNKQXlJQVFRQk1EUUFnQUVFQ2RDRVBBMEFnQmlBUlFRSjBJZ2RxSWdFb0FnQWhDaUFCSUFZZ0QwRUNkQ0lRYWlJQktBSUFOZ0lBSUFFZ0NqWUNBQ0FHSUFkQkJISnFJZ0VvQWdBaENpQUJJQVlnRUVFRWNtb2lBU2dDQURZQ0FDQUJJQW8yQWdBZ0JpQUhRUWh5YWlJQktBSUFJUW9nQVNBR0lCQkJDSEpxSWdFb0FnQTJBZ0FnQVNBS05nSUFJQVlnQjBFTWNtb2lBU2dDQUNFS0lBRWdCaUFRUVF4eWFpSUJLQUlBTmdJQUlBRWdDallDQUNBUlFRUnFJaEVnRDBFRWF5SVBTQTBBQzBFQklSRWdBRUVCVEEwQUEwQWdCa0VRYWlFR1FRQWhEd05BSUFZZ0QwRUNkR29pQVNBQktBSUFJZ0ZCRG5aQi9BZHhRWUFJYWlnQ0FFRUdka0g4QjNGQmdCQnFLQUlBUVFnUUNDQUJRUloyUWZ3SGNVR0FDR29vQWdCQkJuWkIvQWR4UVlBUWFpZ0NBSE1nQVVFR2RrSDhCM0ZCZ0FocUtBSUFRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFCUWY4QmNVRUNkRUdBQ0dvb0FnQkJCblpCL0FkeFFZQVFhaWdDQUVFWUVBaHpOZ0lBSUE5QkFXb2lEMEVFUncwQUN5QVJRUUZxSWhFZ0FFY05BQXNMSUFCQkFFZ0VRQ0FJRUJCQkFBd0NDeUFJSUFBMkF2QUJJQWdGUVFBTEN5SUFCSDhnRXlBQ0tRQUFOd01RSUJNZ0Fpa0FDRGNER0NBRVFSQlBCRUFnQkVFRWRpRVZRUUFoQVFOQUlCTWdBeWtBQURjREFDQVRJQU1wQUFnM0F3Z2dBQ2dDOEFFaEZDQUFLQUlNSUFNb0FBd2lBa0VZZENBQ1FRaDBRWUNBL0FkeGNpQUNRUWgyUVlEK0EzRWdBa0VZZG5KeWN5SVBRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUklnQUNnQ0NDQURLQUFJSWdKQkdIUWdBa0VJZEVHQWdQd0hjWElnQWtFSWRrR0EvZ054SUFKQkdIWnljbk1pRVVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFT0lBQW9BZ1FnQXlnQUJDSUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25KeklnZEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hDU0FBS0FJQUlBTW9BQUFpQWtFWWRDQUNRUWgwUVlDQS9BZHhjaUFDUVFoMlFZRCtBM0VnQWtFWWRuSnljeUlMUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVJBZ0QwRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRUtJQkZCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQmlBSFFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlRZ2dDMEVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VFSUE5Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEFpQVJRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJQTlCRm5aQi9BZHhRWUFRYWlnQ0FITWdCMEVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDSE1nQzBIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0hNZ0FDZ0NISE1pREVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUElBQW9BaGdnQWlBRUlBZ2dFVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlOUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVJFZ0FDZ0NGQ0FHSUFvZ0VDQUhRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ1ZCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQnlBQUtBSVFJQWtnRGlBU0lBdEJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlDMEVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VRSUF4QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaENpQU5RZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUVlnQlVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFSUlBdEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hCQ0FNUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFJZ0RVRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDQU1RUloyUWZ3SGNVR0FFR29vQWdCeklBVkJCblpCL0FkeFFZQVFhaWdDQUVFUUVBaHpJQXRCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWh6SUFBb0FpeHpJZ3hCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRWlBQUtBSW9JQUlnQkNBSUlBMUJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlEVUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VPSUFBb0FpUWdCaUFLSUJBZ0JVRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUZRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUWtnQUNnQ0lDQUhJQkVnRHlBTFFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklndEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2hFQ0FNUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVFvZ0RVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUdJQVZCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoQ0NBTFFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRUWdERUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VDSUExQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnZ0RFRVdka0g4QjNGQmdCQnFLQUlBY3lBRlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSWN5QUxRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUljeUFBS0FJOGN5SU1RUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUThnQUNnQ09DQUNJQVFnQ0NBTlFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnMUJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hFU0FBS0FJMElBWWdDaUFRSUFWQkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUJVSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUhJQUFvQWpBZ0NTQU9JQklnQzBFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJTFFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlSQWdERUVHZGtIOEIzRkJnQkJxS0FJQVFSQVFDQ0VLSUExQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaEJpQUZRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUWdnQzBFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFRUlBeEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hBaUFOUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSUF4QkZuWkIvQWR4UVlBUWFpZ0NBSE1nQlVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0hNZ0MwSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDVEhNaURFRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRVNJQUFvQWtnZ0FpQUVJQWdnRFVFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJTlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRNGdBQ2dDUkNBR0lBb2dFQ0FGUVJaMlFmd0hjVUdBRUdvb0FnQnpjM056SWdWQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFnaENTQUFLQUpBSUFjZ0VTQVBJQXRCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQzBFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUUlBeEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hDaUFOUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFZZ0JVRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRUlJQXRCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQkNBTVFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRSWdEVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FNUVJaMlFmd0hjVUdBRUdvb0FnQnpJQVZCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUF0Qi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BbHh6SWd4QkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaER5QUFLQUpZSUFJZ0JDQUlJQTFCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pRFVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFUklBQW9BbFFnQmlBS0lCQWdCVUVXZGtIOEIzRkJnQkJxS0FJQWMzTnpjeUlGUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFjZ0FDZ0NVQ0FKSUE0Z0VpQUxRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ3RCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRUNBTVFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRb2dEVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VHSUFWQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaENDQUxRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUVFnREVIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFQ0lBMUJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dERUVXZGtIOEIzRkJnQkJxS0FJQWN5QUZRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFMUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBSnNjeUlNUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVJJZ0FDZ0NhQ0FDSUFRZ0NDQU5RUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZzFCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoRGlBQUtBSmtJQVlnQ2lBUUlBVkJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlCVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VKSUFBb0FtQWdCeUFSSUE4Z0MwRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SUxRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJUkFnREVFR2RrSDhCM0ZCZ0JCcUtBSUFRUkFRQ0NFS0lBMUIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hCaUFGUVE1MlFmd0hjVUdBRUdvb0FnQkJDQkFJSVFnZ0MwRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNDRUVJQXhCL3dGeFFRSjBRWUFRYWlnQ0FFRVlFQWdoQWlBTlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBeEJGblpCL0FkeFFZQVFhaWdDQUhNZ0JVRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdDMEgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ2ZITWlERUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VQSUFBb0FuZ2dBaUFFSUFnZ0RVRVdka0g4QjNGQmdCQnFLQUlBYzNOemN5SU5RUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUkVnQUNnQ2RDQUdJQW9nRUNBRlFSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnVkIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBZ2hCeUFBS0FKd0lBa2dEaUFTSUF0QkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaURrRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRVFJQXhCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQ2lBTlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRWWdCVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VJSUE1QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaEJDQU1RZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUUlnRFVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBTVFSWjJRZndIY1VHQUVHb29BZ0J6SUFWQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBNUIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQW93QmN5SUpRUTUyUWZ3SGNVR0FFR29vQWdCQkNCQUlJQUFvQW9BQklBY2dFU0FQSUE1QkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUIwRVdka0g4QjNGQmdCQnFLQUlBY3lBQUtBS0lBU0FDSUFRZ0NDQU5RUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ1JCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFBb0FvUUJJQVlnQ2lBUUlBVkJGblpCL0FkeFFZQVFhaWdDQUhOemMzTWlBa0gvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ2tBRnpJUVVnQjBFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBQ1FSWjJRZndIY1VHQUVHb29BZ0J6SUFsQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBUkIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQXBRQmN5RVNJQUpCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdnQkVFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFIUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJY3lBSlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSWN5QUFLQUtZQVhNaERnSi9JQVJCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdnQ1VFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFDUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJY3lBSFFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSWN5QUFLQUtjQVhNaUNTQVVRUXRJRFFBYUlBbEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2hEeUFPUVFaMlFmd0hjVUdBRUdvb0FnQkJFQkFJSVJFZ0VrSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNDRUhJQVZCRG5aQi9BZHhRWUFRYWlnQ0FFRUlFQWdoRUNBSlFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSUlRb2dEa0gvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDQ0VHSUJKQkRuWkIvQWR4UVlBUWFpZ0NBRUVJRUFnaENDQUZRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUlJUVFnQ1VIL0FYRkJBblJCZ0JCcUtBSUFRUmdRQ0NFQ0lBNUJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dDVUVXZGtIOEIzRkJnQkJxS0FJQWN5QVNRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFGUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBS3NBWE1pQ1VFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBQUtBS2dBU0FISUJFZ0R5QUZRUloyUWZ3SGNVR0FFR29vQWdCemMzTnpJZ2RCRm5aQi9BZHhRWUFRYWlnQ0FITWdBQ2dDcUFFZ0FpQUVJQWdnRGtFV2RrSDhCM0ZCZ0JCcUtBSUFjM056Y3lJRVFRWjJRZndIY1VHQUVHb29BZ0JCRUJBSWN5QUFLQUtrQVNBR0lBb2dFQ0FTUVJaMlFmd0hjVUdBRUdvb0FnQnpjM056SWdKQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BckFCY3lFRklBZEJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dBa0VXZGtIOEIzRkJnQkJxS0FJQWN5QUpRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFFUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBSzBBWE1oRWlBQ1FRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBUkJGblpCL0FkeFFZQVFhaWdDQUhNZ0IwRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdDVUgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQ3VBRnpJUTRnQkVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NBSlFSWjJRZndIY1VHQUVHb29BZ0J6SUFKQkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFoeklBZEIvd0Z4UVFKMFFZQVFhaWdDQUVFWUVBaHpJQUFvQXJ3QmN5SUpJQlJCRFVnTkFCb2dDVUVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0VQSUE1QkJuWkIvQWR4UVlBUWFpZ0NBRUVRRUFnaEVTQVNRZjhCY1VFQ2RFR0FFR29vQWdCQkdCQUlJUWNnQlVFT2RrSDhCM0ZCZ0JCcUtBSUFRUWdRQ0NFUUlBbEJCblpCL0FkeFFZQVFhaWdDQUVFUUVBZ2hDaUFPUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJSVFZZ0VrRU9ka0g4QjNGQmdCQnFLQUlBUVFnUUNDRUlJQVZCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWdoQkNBSlFmOEJjVUVDZEVHQUVHb29BZ0JCR0JBSUlRSWdEa0VPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FKUVJaMlFmd0hjVUdBRUdvb0FnQnpJQkpCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFWQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9Bc3dCY3lJSlFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBQW9Bc0FCSUFjZ0VTQVBJQVZCRm5aQi9BZHhRWUFRYWlnQ0FITnpjM01pQjBFV2RrSDhCM0ZCZ0JCcUtBSUFjeUFBS0FMSUFTQUNJQVFnQ0NBT1FSWjJRZndIY1VHQUVHb29BZ0J6YzNOeklnUkJCblpCL0FkeFFZQVFhaWdDQUVFUUVBaHpJQUFvQXNRQklBWWdDaUFRSUJKQkZuWkIvQWR4UVlBUWFpZ0NBSE56YzNNaUFrSC9BWEZCQW5SQmdCQnFLQUlBUVJnUUNITWdBQ2dDMEFGeklRVWdCMEVPZGtIOEIzRkJnQkJxS0FJQVFRZ1FDQ0FDUVJaMlFmd0hjVUdBRUdvb0FnQnpJQWxCQm5aQi9BZHhRWUFRYWlnQ0FFRVFFQWh6SUFSQi93RnhRUUowUVlBUWFpZ0NBRUVZRUFoeklBQW9BdFFCY3lFU0lBSkJEblpCL0FkeFFZQVFhaWdDQUVFSUVBZ2dCRUVXZGtIOEIzRkJnQkJxS0FJQWN5QUhRUVoyUWZ3SGNVR0FFR29vQWdCQkVCQUljeUFKUWY4QmNVRUNkRUdBRUdvb0FnQkJHQkFJY3lBQUtBTFlBWE1oRGlBRVFRNTJRZndIY1VHQUVHb29BZ0JCQ0JBSUlBbEJGblpCL0FkeFFZQVFhaWdDQUhNZ0FrRUdka0g4QjNGQmdCQnFLQUlBUVJBUUNITWdCMEgvQVhGQkFuUkJnQkJxS0FJQVFSZ1FDSE1nQUNnQzNBRnpDeUVJSUFNZ0FDQVVRUVIwYWlJRUtBSUFJQkpCL3dGeFFZQVlhaTBBQUNBSVFSQjJRZjhCY1VHQUdHb3RBQUJCRUhRZ0JVRVlka0dBR0dvdEFBQkJHSFJ5SUE1QkNIWkIvd0Z4UVlBWWFpMEFBRUVJZEhKeWN5SUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25JMkFBQWdBeUFFS0FJRUlBNUIvd0Z4UVlBWWFpMEFBQ0FGUVJCMlFmOEJjVUdBR0dvdEFBQkJFSFFnRWtFWWRrR0FHR290QUFCQkdIUnlJQWhCQ0haQi93RnhRWUFZYWkwQUFFRUlkSEp5Y3lJQ1FSaDBJQUpCQ0hSQmdJRDhCM0Z5SUFKQkNIWkJnUDREY1NBQ1FSaDJjbkkyQUFRZ0F5QUVLQUlJSUFoQi93RnhRWUFZYWkwQUFDQVNRUkIyUWY4QmNVR0FHR290QUFCQkVIUWdEa0VZZGtHQUdHb3RBQUJCR0hSeUlBVkJDSFpCL3dGeFFZQVlhaTBBQUVFSWRISnljeUlDUVJoMElBSkJDSFJCZ0lEOEIzRnlJQUpCQ0haQmdQNERjU0FDUVJoMmNuSTJBQWdnQXlBRUtBSU1JQVZCL3dGeFFZQVlhaTBBQUNBT1FSQjJRZjhCY1VHQUdHb3RBQUJCRUhRZ0NFRVlka0dBR0dvdEFBQkJHSFJ5SUJKQkNIWkIvd0Z4UVlBWWFpMEFBRUVJZEhKeWN5SUNRUmgwSUFKQkNIUkJnSUQ4QjNGeUlBSkJDSFpCZ1A0RGNTQUNRUmgyY25JMkFBeEJBQ0VDQTBBZ0FpQURhaUlFSUFRdEFBQWdFMEVRYWlBQ2FpMEFBSE02QUFBZ0FrRUJhaUlDUVJCSERRQUxJQk1nRXlrRENEY0RHQ0FUSUJNcEF3QTNBeEFnQTBFUWFpRURJQUZCQVdvaUFTQVZSdzBBQ3dzZ0FCQVFRUUFGUVg4TEdpQVRRU0JxSkFBTGxnRUJBbjhqQUVFUWF5SUFKQUFDUUNBQVFReHFJQUJCQ0dvUUF3MEFRZlNHQVNBQUtBSU1RUUowUVFScUVCa2lBVFlDQUNBQlJRMEFJQUFvQWdnUUdTSUJCRUJCOUlZQktBSUFJQUFvQWd4QkFuUnFRUUEyQWdCQjlJWUJLQUlBSUFFUUFrVU5BUXRCOUlZQlFRQTJBZ0FMSUFCQkVHb2tBRUhJZ1FGQnZSNFFWQnBCMklZQlFlaUZBVFlDQUVHUWhnRkJLallDQUF0WkFRRi9JQUFnQUNnQ1NDSUJRUUZySUFGeU5nSklJQUFvQWdBaUFVRUljUVJBSUFBZ0FVRWdjallDQUVGL0R3c2dBRUlBTndJRUlBQWdBQ2dDTENJQk5nSWNJQUFnQVRZQ0ZDQUFJQUVnQUNnQ01HbzJBaEJCQUF0OEFRSi9JQUFnQUNnQ1NDSUJRUUZySUFGeU5nSklJQUFvQWhRZ0FDZ0NIRWNFUUNBQVFRQkJBQ0FBS0FJa0VRUUFHZ3NnQUVFQU5nSWNJQUJDQURjREVDQUFLQUlBSWdGQkJIRUVRQ0FBSUFGQklISTJBZ0JCZnc4TElBQWdBQ2dDTENBQUtBSXdhaUlDTmdJSUlBQWdBallDQkNBQlFSdDBRUjkxQzlVQ0FRSi9Ba0FnQUNBQlJnMEFJQUVnQUNBQ2FpSUVhMEVBSUFKQkFYUnJUUVJBSUFBZ0FTQUNFRUlhRHdzZ0FDQUJjMEVEY1NFREFrQUNRQ0FBSUFGSkJFQWdBdzBDSUFCQkEzRkZEUUVEUUNBQ1JRMEVJQUFnQVMwQUFEb0FBQ0FCUVFGcUlRRWdBa0VCYXlFQ0lBQkJBV29pQUVFRGNRMEFDd3dCQ3dKQUlBTU5BQ0FFUVFOeEJFQURRQ0FDUlEwRklBQWdBa0VCYXlJQ2FpSURJQUVnQW1vdEFBQTZBQUFnQTBFRGNRMEFDd3NnQWtFRFRRMEFBMEFnQUNBQ1FRUnJJZ0pxSUFFZ0Ftb29BZ0EyQWdBZ0FrRURTdzBBQ3dzZ0FrVU5BZ05BSUFBZ0FrRUJheUlDYWlBQklBSnFMUUFBT2dBQUlBSU5BQXNNQWdzZ0FrRURUUTBBQTBBZ0FDQUJLQUlBTmdJQUlBRkJCR29oQVNBQVFRUnFJUUFnQWtFRWF5SUNRUU5MRFFBTEN5QUNSUTBBQTBBZ0FDQUJMUUFBT2dBQUlBQkJBV29oQUNBQlFRRnFJUUVnQWtFQmF5SUNEUUFMQ3dzVUFDQUFRUXhxSWdBZ0FCQ1VBVUVCYWhDVEFRdUxEQUVHZnlBQUlBRnFJUVVDUUFKQUlBQW9BZ1FpQWtFQmNRMEFJQUpCQTNGRkRRRWdBQ2dDQUNJQ0lBRnFJUUVDUUNBQUlBSnJJZ0JCN0lFQktBSUFSd1JBSUFKQi93Rk5CRUFnQUNnQ0NDSUVJQUpCQTNZaUFrRURkRUdBZ2dGcVJob2dBQ2dDRENJRElBUkhEUUpCMklFQlFkaUJBU2dDQUVGK0lBSjNjVFlDQUF3REN5QUFLQUlZSVFZQ1FDQUFJQUFvQWd3aUEwY0VRQ0FBS0FJSUlnSkI2SUVCS0FJQVNSb2dBaUFETmdJTUlBTWdBallDQ0F3QkN3SkFJQUJCRkdvaUFpZ0NBQ0lFRFFBZ0FFRVFhaUlDS0FJQUlnUU5BRUVBSVFNTUFRc0RRQ0FDSVFjZ0JDSURRUlJxSWdJb0FnQWlCQTBBSUFOQkVHb2hBaUFES0FJUUlnUU5BQXNnQjBFQU5nSUFDeUFHUlEwQ0FrQWdBQ0FBS0FJY0lnUkJBblJCaUlRQmFpSUNLQUlBUmdSQUlBSWdBellDQUNBRERRRkIzSUVCUWR5QkFTZ0NBRUYrSUFSM2NUWUNBQXdFQ3lBR1FSQkJGQ0FHS0FJUUlBQkdHMm9nQXpZQ0FDQURSUTBEQ3lBRElBWTJBaGdnQUNnQ0VDSUNCRUFnQXlBQ05nSVFJQUlnQXpZQ0dBc2dBQ2dDRkNJQ1JRMENJQU1nQWpZQ0ZDQUNJQU0yQWhnTUFnc2dCU2dDQkNJQ1FRTnhRUU5IRFFGQjRJRUJJQUUyQWdBZ0JTQUNRWDV4TmdJRUlBQWdBVUVCY2pZQ0JDQUZJQUUyQWdBUEN5QUVJQU0yQWd3Z0F5QUVOZ0lJQ3dKQUlBVW9BZ1FpQWtFQ2NVVUVRQ0FGUWZDQkFTZ0NBRVlFUUVId2dRRWdBRFlDQUVIa2dRRkI1SUVCS0FJQUlBRnFJZ0UyQWdBZ0FDQUJRUUZ5TmdJRUlBQkI3SUVCS0FJQVJ3MERRZUNCQVVFQU5nSUFRZXlCQVVFQU5nSUFEd3NnQlVIc2dRRW9BZ0JHQkVCQjdJRUJJQUEyQWdCQjRJRUJRZUNCQVNnQ0FDQUJhaUlCTmdJQUlBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQVBDeUFDUVhoeElBRnFJUUVDUUNBQ1FmOEJUUVJBSUFVb0FnZ2lCQ0FDUVFOMklnSkJBM1JCZ0lJQmFrWWFJQVFnQlNnQ0RDSURSZ1JBUWRpQkFVSFlnUUVvQWdCQmZpQUNkM0UyQWdBTUFnc2dCQ0FETmdJTUlBTWdCRFlDQ0F3QkN5QUZLQUlZSVFZQ1FDQUZJQVVvQWd3aUEwY0VRQ0FGS0FJSUlnSkI2SUVCS0FJQVNSb2dBaUFETmdJTUlBTWdBallDQ0F3QkN3SkFJQVZCRkdvaUJDZ0NBQ0lDRFFBZ0JVRVFhaUlFS0FJQUlnSU5BRUVBSVFNTUFRc0RRQ0FFSVFjZ0FpSURRUlJxSWdRb0FnQWlBZzBBSUFOQkVHb2hCQ0FES0FJUUlnSU5BQXNnQjBFQU5nSUFDeUFHUlEwQUFrQWdCU0FGS0FJY0lnUkJBblJCaUlRQmFpSUNLQUlBUmdSQUlBSWdBellDQUNBRERRRkIzSUVCUWR5QkFTZ0NBRUYrSUFSM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQXpZQ0FDQURSUTBCQ3lBRElBWTJBaGdnQlNnQ0VDSUNCRUFnQXlBQ05nSVFJQUlnQXpZQ0dBc2dCU2dDRkNJQ1JRMEFJQU1nQWpZQ0ZDQUNJQU0yQWhnTElBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQWdBRUhzZ1FFb0FnQkhEUUZCNElFQklBRTJBZ0FQQ3lBRklBSkJmbkUyQWdRZ0FDQUJRUUZ5TmdJRUlBQWdBV29nQVRZQ0FBc2dBVUgvQVUwRVFDQUJRUU4ySWdKQkEzUkJnSUlCYWlFQkFuOUIySUVCS0FJQUlnTkJBU0FDZENJQ2NVVUVRRUhZZ1FFZ0FpQURjallDQUNBQkRBRUxJQUVvQWdnTElRSWdBU0FBTmdJSUlBSWdBRFlDRENBQUlBRTJBZ3dnQUNBQ05nSUlEd3RCSHlFQ0lBQkNBRGNDRUNBQlFmLy8vd2ROQkVBZ0FVRUlkaUlDSUFKQmdQNC9ha0VRZGtFSWNTSUVkQ0lDSUFKQmdPQWZha0VRZGtFRWNTSURkQ0lDSUFKQmdJQVBha0VRZGtFQ2NTSUNkRUVQZGlBRElBUnlJQUp5YXlJQ1FRRjBJQUVnQWtFVmFuWkJBWEZ5UVJ4cUlRSUxJQUFnQWpZQ0hDQUNRUUowUVlpRUFXb2hCd0pBQWtCQjNJRUJLQUlBSWdSQkFTQUNkQ0lEY1VVRVFFSGNnUUVnQXlBRWNqWUNBQ0FISUFBMkFnQWdBQ0FITmdJWURBRUxJQUZCQUVFWklBSkJBWFpySUFKQkgwWWJkQ0VDSUFjb0FnQWhBd05BSUFNaUJDZ0NCRUY0Y1NBQlJnMENJQUpCSFhZaEF5QUNRUUYwSVFJZ0JDQURRUVJ4YWlJSFFSQnFLQUlBSWdNTkFBc2dCeUFBTmdJUUlBQWdCRFlDR0FzZ0FDQUFOZ0lNSUFBZ0FEWUNDQThMSUFRb0FnZ2lBU0FBTmdJTUlBUWdBRFlDQ0NBQVFRQTJBaGdnQUNBRU5nSU1JQUFnQVRZQ0NBc0xaQUFnQUNBQlFpaUdRb0NBZ0lDQWdNRC9BSU1nQVVJNGhvUWdBVUlZaGtLQWdJQ0FnT0EvZ3lBQlFnaUdRb0NBZ0lEd0g0T0VoQ0FCUWdpSVFvQ0FnUGdQZ3lBQlFoaUlRb0NBL0FlRGhDQUJRaWlJUW9EK0E0TWdBVUk0aUlTRWhEY0FBQXNQQUNBQUtBSU1HaUFBUVFBMkFnd0xod0VCQkg4akFFRVFheUlGSkFBakFFRVFheUlESkFBQ1FDQUJRVzlOQkVBQ1FDQUJRUXBOQkVBZ0FDQUJFRG9nQUNFRURBRUxJQUFnQVJDUkFVRUJhaUlHRUY4aUJCQk5JQUFnQmhCTUlBQWdBUkE1Q3lBRUlBRWdBaEQzQVNBRFFRQTZBQThnQVNBRWFpQURRUTlxRURRZ0EwRVFhaVFBREFFTEVCY0FDeUFGUVJCcUpBQWdBQXRWQVFKL0lBQW9BZ1FoQkFKL1FRQWdBa1VOQUJvZ0JFRUlkU0lGSUFSQkFYRkZEUUFhSUFJb0FnQWdCUkRGQVFzaEJTQUFLQUlBSWdBZ0FTQUNJQVZxSUFOQkFpQUVRUUp4R3lBQUtBSUFLQUljRVFnQUN3MEFJQUFvQWdBZ0FTZ0NBRWtMSXdBZ0FFRUFOZ0lNSUFBZ0FUWUNCQ0FBSUFFMkFnQWdBQ0FCUVFGcU5nSUlJQUFMdXdFQkEzOGpBRUVRYXlJRkpBQWdBa0h2Ly8vL0F5SUdJQUZyVFFSQUlBQVFEU0VISUFBQ2Z5QUJJQVpCQVhaQkVHdEpCRUFnQlNBQlFRRjBOZ0lJSUFVZ0FTQUNhallDRENBRlFReHFJQVZCQ0dvUWRpZ0NBQkNDQVF3QkN5QUdRUUZyQzBFQmFpSUdFSUVCSVFJZ0JBUkFJQUlnQnlBRUVIRUxJQU1nQkdzaUF3UkFJQVJCQW5RaUJDQUNhaUFFSUFkcUlBTVFjUXNnQVVFQlJ3UkFJQWNRRUFzZ0FDQUNFRTBnQUNBR0VFd2dCVUVRYWlRQUR3c1FGd0FMaEFJQkEzOGpBRUVRYXlJSUpBQWdBa0h2Ly8vL0F5SUpJQUZCZjNOcVRRUkFJQUFRRFNFS0lBQUNmeUFCSUFsQkFYWkJFR3RKQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FkaWdDQUJDQ0FRd0JDeUFKUVFGckMwRUJhaUlKRUlFQklRSWdCQVJBSUFJZ0NpQUVFSEVMSUFZRVFDQUVRUUowSUFKcUlBY2dCaEJ4Q3lBRElBUWdCV3BySWdNRVFDQUVRUUowSWdjZ0Ftb2dCa0VDZEdvZ0J5QUthaUFGUVFKMGFpQURFSEVMSUFGQkFVY0VRQ0FLRUJBTElBQWdBaEJOSUFBZ0NSQk1JQUFnQkNBR2FpQURhaUlBRURrZ0NFRUFOZ0lFSUFJZ0FFRUNkR29nQ0VFRWFoQXpJQWhCRUdva0FBOExFQmNBQzFnQkEzOUJ5SUVCRUEwaEEwSElnUUVRQ1NFQkl3QkJFR3NpQWlRQUlBSWdBRG9BRDBGL0lRQWdBUVJBSUFFRWZ5QURJQUlzQUE4UVpTQUJFTndCQlVFQUN5SUFJQU5yUVg4Z0FCc2hBQXNnQWtFUWFpUUFJQUFMY0FFRGZ5TUFRUkJySWdNa0FDQUNRVzlOQkVBQ1FDQUNRUXBOQkVBZ0FDQUNFRG9nQUNFRURBRUxJQUFnQWhDUkFVRUJhaUlGRUY4aUJCQk5JQUFnQlJCTUlBQWdBaEE1Q3lBRUlBRWdBaEJWSUFOQkFEb0FEeUFDSUFScUlBTkJEMm9RTkNBRFFSQnFKQUFQQ3hBWEFBc1NBQ0FCQkVBZ0FDQUNFR1VnQVJCR0dnc0w3QUVCQTM4akFFRVFheUlJSkFBZ0FrRnZJZ2tnQVVGL2MycE5CRUFnQUJBTklRb0NmeUFCSUFsQkFYWkJFR3RKQkVBZ0NDQUJRUUYwTmdJSUlBZ2dBU0FDYWpZQ0RDQUlRUXhxSUFoQkNHb1FkaWdDQUJDUkFRd0JDeUFKUVFGckMwRUJhaUlKRUY4aEFpQUVCRUFnQWlBS0lBUVFWUXNnQmdSQUlBSWdCR29nQnlBR0VGVUxJQU1nQkNBRmFtc2lBd1JBSUFJZ0JHb2dCbW9nQkNBS2FpQUZhaUFERUZVTElBRkJDa2NFUUNBS0VCQUxJQUFnQWhCTklBQWdDUkJNSUFBZ0JDQUdhaUFEYWlJQUVEa2dDRUVBT2dBSElBQWdBbW9nQ0VFSGFoQTBJQWhCRUdva0FBOExFQmNBQ3lRQkFYOGpBRUVRYXlJQkpBQWdBU0FBTmdJSUlBRW9BZ2doQUNBQlFSQnFKQUFnQUFzSkFDQUFFQlkyQWdBTEt3RUJmeUFBS0FJRUlRSURRQ0FCSUFKSEJFQWdBQkIwR2lBQ1FRUnJJUUlNQVFzTElBQWdBVFlDQkFzcUFDTUFRUkJySWdJa0FBSkFJQUFnQVVZRVFDQUFRUUE2QUhnTUFRc2dBUkFRQ3lBQ1FSQnFKQUFMSEFBZ0FVSC8vLy8vQTBzRVFFSDRIQkNXQWdBTElBRkJBblFRWHdzSkFDQUJRUUEyQWdBTE5nQkJzSlVCS0FJQUdrR3dsUUVvQWdCQnNKVUJFSE5CQW5ScUdrR3dsUUVvQWdCQnNKVUJFSE5CQW5ScUdrR3dsUUVvQWdBYUN6MEJBWDhqQUVFUWF5SUNKQUFDUUNBQUxRQjRJQUZCSGt0eVJRUkFJQUJCQVRvQWVBd0JDeUFDUVFocUlBRVEvUUVoQUFzZ0FrRVFhaVFBSUFBTFJRRUNmeU1BUVJCcklnQWtBRUd3bFFFUWRCb2dBRUgvLy8vL0F6WUNEQ0FBUWYvLy8vOEhOZ0lJSUFCQkRHb2dBRUVJYWhDaUFTZ0NBQ0VCSUFCQkVHb2tBQ0FCQ3drQUlBQVF5Z0VRRUFzbkFDQURJQU1vQWdBZ0FpQUJheUlBYXlJQ05nSUFJQUJCQUVvRVFDQUNJQUVnQUJCQ0dnc0xFQUFnQUNBQkVNMEJJQUFnQWpZQ0JBdklBUUVFZnlNQVFTQnJJZ1VrQUNBRklBRXBBQUEzQXhBZ0JTQUJLUUFJTndNWUFrQWdBMEVRU1FSQUlBSWhBUXdCQ3lBRFFRUjJJUWNnQWlFQkEwQWdBQ0FGUVJCcUlnZ2dCQkNuQVNBRUlBRVFuUUVnQkVFUWFpRUVJQUZCRUdvaEFTQUlFT3NCSUFaQkFXb2lCaUFIUncwQUN3c2dBaUFEYWlBQmF5SUNCRUFnQUNBRlFSQnFJQVVRcHdGQkFDRUdBMEFnQkNBRklBWnFMUUFBSUFFdEFBQnpPZ0FBSUFSQkFXb2hCQ0FCUVFGcUlRRWdCa0VCYWlJR0lBSkhEUUFMQ3lBRlFTQnFKQUFMRlFBZ0FFSDQwd0EyQWdBZ0FFRVFhaEFLR2lBQUN4VUFJQUJCME5NQU5nSUFJQUJCREdvUUNob2dBQXNFQUVFRUN3OEFJQUFvQWdBZ0FDZ0NCRFlDQkF0QUFRSi9Jd0JCRUdzaUFTUUFJQUVnQURZQ0RDQUJRUWhxSUFGQkRHb1FVaUVBUVFSQkFVSFloZ0VvQWdBb0FnQWJJUUlnQUJCUklBRkJFR29rQUNBQ0N6d0JBWDhqQUVFUWF5SUZKQUFnQlNBRU5nSU1JQVZCQ0dvZ0JVRU1haEJTSVFRZ0FDQUJJQUlnQXhDM0FTRUFJQVFRVVNBRlFSQnFKQUFnQUFzTUFDQUJJQUl0QUFBNkFBQUxFZ0FnQkNBQ05nSUFJQWNnQlRZQ0FFRURDeWdCQVg4Z0FFSHMwZ0EyQWdBQ1FDQUFLQUlJSWdGRkRRQWdBQzBBREVVTkFDQUJFQkFMSUFBTDVBa0JBWDhDUUVIMGlBRXRBQUJCQVhFTkFFSDBpQUVRSkVVTkFBSkFRZWlJQVMwQUFFRUJjUTBBUWVpSUFSQWtSUTBBUWFpVkFSQWJRYWlWQVVIWTBnQTJBZ0FqQUVFUWF5SUJKQUJCc0pVQlFnQTNBd0FnQVVFQU5nSU1RYmlWQVNBQlFReHFFTTBCUWJpV0FVRUFPZ0FBSUFGQkVHb2tBQkNCQWtFZVNRUkFFQmNBQzBHd2xRRkJzSlVCRUhSQkhoQ0FBaUlCTmdJQVFiU1ZBU0FCTmdJQVFiQ1ZBUkJESUFGQitBQnFOZ0lBUVFBUS93RkJIaENYQWtIQWxnRkJtaDRRVkJwQnNKVUJFRkFoQVVHd2xRRVFsUUpCc0pVQklBRVFsQUpCOEpJQkVCdEI4SklCUVlUZEFEWUNBRUh3a2dGQnVJY0JFQm9RSEVINGtnRVFHMEg0a2dGQnBOMEFOZ0lBUWZpU0FVSEFod0VRR2hBY1FZQ1RBUkFiUVl5VEFVRUFPZ0FBUVlpVEFVRUFOZ0lBUVlDVEFVSHMwZ0EyQWdCQmlKTUJRYkF5S0FJQU5nSUFRWUNUQVVHRWlRRVFHaEFjUVpDVEFSQWJRWkNUQVVIUTFnQTJBZ0JCa0pNQlFmeUlBUkFhRUJ4Qm1KTUJFQnRCbUpNQlFlVFhBRFlDQUVHWWt3RkJqSWtCRUJvUUhFR2drd0VRRzBHZ2t3RkJvTk1BTmdJQVFhaVRBUkFXTmdJQVFhQ1RBVUdVaVFFUUdoQWNRYkNUQVJBYlFiQ1RBVUg0MkFBMkFnQkJzSk1CUVp5SkFSQWFFQnhCdUpNQkVCdEJ1Sk1CUWV6WkFEWUNBRUc0a3dGQnBJa0JFQm9RSEVIQWt3RVFHMEhJa3dGQnJ0Z0FPd0VBUWNDVEFVSFEwd0EyQWdCQnpKTUJFQkVhUWNDVEFVR3NpUUVRR2hBY1FkaVRBUkFiUWVDVEFVS3VnSUNBd0FVM0FnQkIySk1CUWZqVEFEWUNBRUhva3dFUUVScEIySk1CUWJTSkFSQWFFQnhCK0pNQkVCdEIrSk1CUWNUZEFEWUNBRUg0a3dGQnlJY0JFQm9RSEVHQWxBRVFHMEdBbEFGQnVOOEFOZ0lBUVlDVUFVSFFod0VRR2hBY1FZaVVBUkFiUVlpVUFVR000UUEyQWdCQmlKUUJRZGlIQVJBYUVCeEJrSlFCRUJ0QmtKUUJRZlRpQURZQ0FFR1FsQUZCNEljQkVCb1FIRUdZbEFFUUcwR1lsQUZCek9vQU5nSUFRWmlVQVVHSWlBRVFHaEFjUWFDVUFSQWJRYUNVQVVIZzZ3QTJBZ0JCb0pRQlFaQ0lBUkFhRUJ4QnFKUUJFQnRCcUpRQlFkVHNBRFlDQUVHb2xBRkJtSWdCRUJvUUhFR3dsQUVRRzBHd2xBRkJ5TzBBTmdJQVFiQ1VBVUdnaUFFUUdoQWNRYmlVQVJBYlFiaVVBVUc4N2dBMkFnQkJ1SlFCUWFpSUFSQWFFQnhCd0pRQkVCdEJ3SlFCUWVEdkFEWUNBRUhBbEFGQnNJZ0JFQm9RSEVISWxBRVFHMEhJbEFGQmhQRUFOZ0lBUWNpVUFVRzRpQUVRR2hBY1FkQ1VBUkFiUWRDVUFVR284Z0EyQWdCQjBKUUJRY0NJQVJBYUVCeEIySlFCRUJ0QjRKUUJRWkQ4QURZQ0FFSFlsQUZCdk9RQU5nSUFRZUNVQVVIczVBQTJBZ0JCMkpRQlFlaUhBUkFhRUJ4QjZKUUJFQnRCOEpRQlFiVDhBRFlDQUVIb2xBRkJ4T1lBTmdJQVFmQ1VBVUgwNWdBMkFnQkI2SlFCUWZDSEFSQWFFQnhCK0pRQkVCdEJnSlVCRVBvQlFmaVVBVUd3NkFBMkFnQkIrSlFCUWZpSEFSQWFFQnhCaUpVQkVCdEJrSlVCRVBvQlFZaVZBVUhNNlFBMkFnQkJpSlVCUVlDSUFSQWFFQnhCbUpVQkVCdEJtSlVCUWN6ekFEWUNBRUdZbFFGQnlJZ0JFQm9RSEVHZ2xRRVFHMEdnbFFGQnhQUUFOZ0lBUWFDVkFVSFFpQUVRR2hBY1FlQ0lBVUdvbFFFMkFnQkI1SWdCUWVDSUFUWUNBRUhvaUFFUUl3dEI3SWdCUWVTSUFTZ0NBQkNRQWtId2lBRkI3SWdCTmdJQVFmU0lBUkFqQ3lBQVFmQ0lBU2dDQUNnQ0FDSUFOZ0lBSUFBUXpnRUxFd0FnQUNBQktBSUFJZ0EyQWdBZ0FCRE9BUXN5QUNBQUtBSUFHaUFBS0FJQUlBQVFjMEVDZEdvYUlBQW9BZ0FnQUJCUVFRSjBhaG9nQUNnQ0FDQUFFSE5CQW5ScUdnc1RBQ0FBSUFBb0FnQkJBV3NpQURZQ0FDQUFDMjhCQW44Z0FFSFkwZ0EyQWdBZ0FFRUlhaUVCQTBBZ0FSQlFJQUpMQkVBZ0FTQUNFSGNvQWdBRVFDQUJJQUlRZHlnQ0FCQ2pBUXNnQWtFQmFpRUNEQUVMQ3lBQVFaZ0JhaEFLR2lBQkVKRUNJQUVvQWdBRVFDQUJFSlVDSUFFUWRDQUJLQUlBSUFFUWN4RDhBUXNnQUFzcUFDQUFLQUlBR2lBQUtBSUFJQUFRYzBFQ2RHb2FJQUFvQWdBYUlBQW9BZ0FnQUJCUVFRSjBhaG9MREFBZ0FDQUFLQUlBRVBzQkMySUJBMzlCQ0JBSElnRkIwUDhBTmdJQUlBRkIvUDhBTmdJQUlBQVFrZ0VpQWtFTmFoQmZJZ05CQURZQ0NDQURJQUkyQWdRZ0F5QUNOZ0lBSUFFZ0EwRU1haUFBSUFKQkFXb1FRallDQkNBQlFheUFBVFlDQUNBQlFjeUFBVUVERUFZQUMzSUJBMzhqQUVFUWF5SUJKQUFnQVVHd2xRRTJBZ0FnQVVHMGxRRW9BZ0FpQWpZQ0JDQUJJQUlnQUVFQ2RHbzJBZ2dnQVNJREtBSUVJUUFnQXlnQ0NDRUNBMEFnQUNBQ1JnUkFJQU1RaVFJZ0FVRVFhaVFBQlVHd2xRRVFkQ0FBRVA0QklBTWdBRUVFYWlJQU5nSUVEQUVMQ3dzZ0FDQUFRYURUQURZQ0FDQUFLQUlJRUJaSEJFQWdBQ2dDQ0JEVUFnc2dBQXNFQUVGL0MrSUZBUXAvSXdCQkVHc2lFeVFBSUFJZ0FEWUNBQ0FEUVlBRWNTRVZJQWRCQW5RaEZnTkFJQlJCQkVZRVFDQU5FQWxCQVVzRVFDQVRJQTBRUURZQ0NDQUNJQk5CQ0dwQkFSQ2ZBaUFORUd3Z0FpZ0NBQkNrQVRZQ0FBc2dBMEd3QVhFaUEwRVFSd1JBSUFFZ0EwRWdSZ1IvSUFJb0FnQUZJQUFMTmdJQUN5QVRRUkJxSkFBRkFrQUNRQUpBQWtBQ1FBSkFJQWdnRkdvc0FBQU9CUUFCQXdJRUJRc2dBU0FDS0FJQU5nSUFEQVFMSUFFZ0FpZ0NBRFlDQUNBR1FTQVFQU0VISUFJZ0FpZ0NBQ0lQUVFScU5nSUFJQThnQnpZQ0FBd0RDeUFORUVrTkFpQU5RUUFRc1FFb0FnQWhCeUFDSUFJb0FnQWlEMEVFYWpZQ0FDQVBJQWMyQWdBTUFnc2dEQkJKSUJWRmNnMEJJQUlnREJCQUlBd1FiQ0FDS0FJQUVLUUJOZ0lBREFFTElBSW9BZ0FoRnlBRUlCWnFJZ1FoQndOQUFrQWdCU0FIVFEwQUlBWkJnQkFnQnlnQ0FCQk9SUTBBSUFkQkJHb2hCd3dCQ3dzZ0RpSVBRUUJLQkVBRFFDQVBRUUJNSUFRZ0IwOXlSUVJBSUFkQkJHc2lCeWdDQUNFUUlBSWdBaWdDQUNJUlFRUnFOZ0lBSUJFZ0VEWUNBQ0FQUVFGcklROE1BUXNMSUE5QkFFd0VmMEVBQlNBR1FUQVFQUXNoRVFOQUlBSWdBaWdDQUNJUVFRUnFOZ0lBSUE5QkFFb0VRQ0FRSUJFMkFnQWdEMEVCYXlFUERBRUxDeUFRSUFrMkFnQUxBa0FnQkNBSFJnUkFJQVpCTUJBOUlROGdBaUFDS0FJQUloQkJCR29pQnpZQ0FDQVFJQTgyQWdBTUFRc2dDeEJKQkg5QmZ3VWdDMEVBRUFzc0FBQUxJUkJCQUNFUFFRQWhFZ05BSUFRZ0IwY0VRQUpBSUE4Z0VFY0VRQ0FQSVJFTUFRc2dBaUFDS0FJQUloQkJCR28yQWdBZ0VDQUtOZ0lBUVFBaEVTQUxFQWtnRWtFQmFpSVNUUVJBSUE4aEVBd0JDeUFMSUJJUUN5MEFBRUgvQUVZRVFFRi9JUkFNQVFzZ0N5QVNFQXNzQUFBaEVBc2dCMEVFYXlJSEtBSUFJUThnQWlBQ0tBSUFJaGhCQkdvMkFnQWdHQ0FQTmdJQUlCRkJBV29oRHd3QkN3c2dBaWdDQUNFSEN5QVhJQWNRclFFTElCUkJBV29oRkF3QkN3c0xwUUlCQVg4akFFRVFheUlLSkFBZ0NRSi9JQUFFUUNBQ0VLRUNJUUFDUUNBQkJFQWdDaUFBRUdrZ0F5QUtLQUlBTmdBQUlBb2dBQkJvREFFTElBb2dBQkNsQVNBRElBb29BZ0EyQUFBZ0NpQUFFRW9MSUFnZ0NoQlhJQW9RQ2hvZ0JDQUFFRWcyQWdBZ0JTQUFFRGcyQWdBZ0NpQUFFRGNnQmlBS0VEQWdDaEFLR2lBS0lBQVFTeUFISUFvUVZ5QUtFQW9hSUFBUVp3d0JDeUFDRUtBQ0lRQUNRQ0FCQkVBZ0NpQUFFR2tnQXlBS0tBSUFOZ0FBSUFvZ0FCQm9EQUVMSUFvZ0FCQ2xBU0FESUFvb0FnQTJBQUFnQ2lBQUVFb0xJQWdnQ2hCWElBb1FDaG9nQkNBQUVFZzJBZ0FnQlNBQUVEZzJBZ0FnQ2lBQUVEY2dCaUFLRURBZ0NoQUtHaUFLSUFBUVN5QUhJQW9RVnlBS0VBb2FJQUFRWndzMkFnQWdDa0VRYWlRQUM5UUZBUXAvSXdCQkVHc2lGQ1FBSUFJZ0FEWUNBQ0FEUVlBRWNTRVdBMEFnRlVFRVJnUkFJQTBRQ1VFQlN3UkFJQlFnRFJCQU5nSUlJQUlnRkVFSWFrRUJFS1lDSUEwUWJpQUNLQUlBRUtRQk5nSUFDeUFEUWJBQmNTSURRUkJIQkVBZ0FTQURRU0JHQkg4Z0FpZ0NBQVVnQUFzMkFnQUxJQlJCRUdva0FBOExBa0FDUUFKQUFrQUNRQUpBSUFnZ0ZXb3NBQUFPQlFBQkF3SUVCUXNnQVNBQ0tBSUFOZ0lBREFRTElBRWdBaWdDQURZQ0FDQUdRU0FRS1NFUElBSWdBaWdDQUNJUVFRRnFOZ0lBSUJBZ0R6b0FBQXdEQ3lBTkVFa05BaUFOUVFBUUN5MEFBQ0VQSUFJZ0FpZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFBd0NDeUFNRUVrZ0ZrVnlEUUVnQWlBTUVFQWdEQkJ1SUFJb0FnQVFwQUUyQWdBTUFRc2dBaWdDQUNFWElBUWdCMm9pQkNFUkEwQUNRQ0FGSUJGTkRRQWdCa0dBRUNBUkxBQUFFRVJGRFFBZ0VVRUJhaUVSREFFTEN5QU9JZzlCQUVvRVFBTkFJQTlCQUV3Z0JDQVJUM0pGQkVBZ0VVRUJheUlSTFFBQUlSQWdBaUFDS0FJQUloSkJBV28yQWdBZ0VpQVFPZ0FBSUE5QkFXc2hEd3dCQ3dzZ0QwRUFUQVIvUVFBRklBWkJNQkFwQ3lFU0EwQWdBaUFDS0FJQUloQkJBV28yQWdBZ0QwRUFTZ1JBSUJBZ0Vqb0FBQ0FQUVFGcklROE1BUXNMSUJBZ0NUb0FBQXNDUUNBRUlCRkdCRUFnQmtFd0VDa2hEeUFDSUFJb0FnQWlFRUVCYWpZQ0FDQVFJQTg2QUFBTUFRc2dDeEJKQkg5QmZ3VWdDMEVBRUFzc0FBQUxJUkJCQUNFUFFRQWhFd05BSUFRZ0VVWU5BUUpBSUE4Z0VFY0VRQ0FQSVJJTUFRc2dBaUFDS0FJQUloQkJBV28yQWdBZ0VDQUtPZ0FBUVFBaEVpQUxFQWtnRTBFQmFpSVRUUVJBSUE4aEVBd0JDeUFMSUJNUUN5MEFBRUgvQUVZRVFFRi9JUkFNQVFzZ0N5QVRFQXNzQUFBaEVBc2dFVUVCYXlJUkxRQUFJUThnQWlBQ0tBSUFJaGhCQVdvMkFnQWdHQ0FQT2dBQUlCSkJBV29oRHd3QUN3QUxJQmNnQWlnQ0FCQjVDeUFWUVFGcUlSVU1BQXNBQzZVQ0FRRi9Jd0JCRUdzaUNpUUFJQWtDZnlBQUJFQWdBaENvQWlFQUFrQWdBUVJBSUFvZ0FCQnBJQU1nQ2lnQ0FEWUFBQ0FLSUFBUWFBd0JDeUFLSUFBUXBRRWdBeUFLS0FJQU5nQUFJQW9nQUJCS0N5QUlJQW9RTUNBS0VBb2FJQVFnQUJCSU9nQUFJQVVnQUJBNE9nQUFJQW9nQUJBM0lBWWdDaEF3SUFvUUNob2dDaUFBRUVzZ0J5QUtFREFnQ2hBS0dpQUFFR2NNQVFzZ0FoQ25BaUVBQWtBZ0FRUkFJQW9nQUJCcElBTWdDaWdDQURZQUFDQUtJQUFRYUF3QkN5QUtJQUFRcFFFZ0F5QUtLQUlBTmdBQUlBb2dBQkJLQ3lBSUlBb1FNQ0FLRUFvYUlBUWdBQkJJT2dBQUlBVWdBQkE0T2dBQUlBb2dBQkEzSUFZZ0NoQXdJQW9RQ2hvZ0NpQUFFRXNnQnlBS0VEQWdDaEFLR2lBQUVHY0xOZ0lBSUFwQkVHb2tBQXNJQUNBQUtBSUFSUXMzQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ2dDQURZQ0NDQUNJQUlvQWdnZ0FVRUNkR28yQWdnZ0FpZ0NDQ0VBSUFKQkVHb2tBQ0FBQ3dvQUlBQkJtSWdCRUdRTENnQWdBRUdnaUFFUVpBc0pBQ0FBSUFFUXJnSUxId0VCZnlBQktBSUFFUG9DSVFJZ0FDQUJLQUlBTmdJRUlBQWdBallDQUF2eER3RUtmeU1BUWJBRWF5SUxKQUFnQ3lBS05nS2tCQ0FMSUFFMkFxZ0VJQXRCTmpZQ1lDQUxJQXRCaUFGcUlBdEJrQUZxSUF0QjRBQnFJZ0VRSGlJUEtBSUFJZ28yQW9RQklBc2dDa0dRQTJvMkFvQUJJQUVRRVNFUklBdEIwQUJxRUVjaERpQUxRVUJyRUVjaERDQUxRVEJxRUVjaERTQUxRU0JxRUVjaEVDTUFRUkJySWdFa0FDQUxBbjhnQWdSQUlBRWdBeENoQWlJQ0VHa2dDeUFCS0FJQU5nQjRJQUVnQWhCb0lBMGdBUkJYSUFFUUNob2dBU0FDRUVvZ0RDQUJFRmNnQVJBS0dpQUxJQUlRU0RZQ2RDQUxJQUlRT0RZQ2NDQUJJQUlRTnlBUklBRVFNQ0FCRUFvYUlBRWdBaEJMSUE0Z0FSQlhJQUVRQ2hvZ0FoQm5EQUVMSUFFZ0F4Q2dBaUlDRUdrZ0N5QUJLQUlBTmdCNElBRWdBaEJvSUEwZ0FSQlhJQUVRQ2hvZ0FTQUNFRW9nRENBQkVGY2dBUkFLR2lBTElBSVFTRFlDZENBTElBSVFPRFlDY0NBQklBSVFOeUFSSUFFUU1DQUJFQW9hSUFFZ0FoQkxJQTRnQVJCWElBRVFDaG9nQWhCbkN6WUNIQ0FCUVJCcUpBQWdDU0FJS0FJQU5nSUFJQVJCZ0FSeEloSkJDWFloRTBFQUlRRkJBQ0VDQTBBZ0FpRUtBa0FDUUFKQUFrQWdBVUVFUmcwQUlBQWdDMEdvQkdvUU5rVU5BRUVBSVFRQ1FBSkFBa0FDUUFKQUFrQWdDMEg0QUdvZ0FXb3NBQUFPQlFFQUJBTUZDUXNnQVVFRFJnMEhJQWRCZ01BQUlBQVFJUkJPQkVBZ0MwRVFhaUFBRUtNQ0lCQWdDeWdDRUJESEFRd0NDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVlMSUFGQkEwWU5CZ3NEUUNBQUlBdEJxQVJxRURaRkRRWWdCMEdBd0FBZ0FCQWhFRTVGRFFZZ0MwRVFhaUFBRUtNQ0lCQWdDeWdDRUJESEFRd0FDd0FMSUF3UUNVRUFJQTBRQ1d0R0RRUUNRQ0FNRUFrRVFDQU5FQWtOQVFzZ0RCQUpJUU1nQUJBaElRSWdBd1JBSUF3UURTZ0NBQ0FDUmdSQUlBQVFKUm9nRENBS0lBd1FDVUVCU3hzaEFnd0lDeUFHUVFFNkFBQU1CZ3NnQWlBTkVBMG9BZ0JIRFFVZ0FCQWxHaUFHUVFFNkFBQWdEU0FLSUEwUUNVRUJTeHNoQWd3R0N5QUFFQ0VnREJBTktBSUFSZ1JBSUFBUUpSb2dEQ0FLSUF3UUNVRUJTeHNoQWd3R0N5QUFFQ0VnRFJBTktBSUFSZ1JBSUFBUUpSb2dCa0VCT2dBQUlBMGdDaUFORUFsQkFVc2JJUUlNQmdzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUtJQUZCQWtseVJRUkFRUUFoQWlBVElBRkJBa1lnQ3kwQWUwRUFSM0Z5UlEwRkN5QUxJQTRRUURZQ0NDQUxRUkJxSUF0QkNHb1FxQUVoQWdKQUlBRkZEUUFnQVNBTGFpMEFkMEVCU3cwQUEwQUNRQ0FMSUE0UWJEWUNDQ0FDSUF0QkNHb1FXMFVOQUNBSFFZREFBQ0FDS0FJQUtBSUFFRTVGRFFBZ0FoQ1ZBUXdCQ3dzZ0N5QU9FRUEyQWdnZ0FpZ0NBQ0FMS0FJSWEwRUNkU0lDSUJBUUNVMEVRQ0FMSUJBUWJEWUNDQ0FMUVFocVFRQWdBbXNRbndJaEF5QVFFR3doQkNBT0VFQWhGQ01BUVNCcklnSWtBQ0FDSUFRMkFoQWdBaUFETmdJWUlBSWdGRFlDQ0FOQUFrQWdBa0VZYWlBQ1FSQnFFRnNpQTBVTkFDQUNLQUlZS0FJQUlBSW9BZ2dvQWdCSERRQWdBa0VZYWhDVkFTQUNRUWhxRUpVQkRBRUxDeUFDUVNCcUpBQWdBMEVCY3cwQkN5QUxJQTRRUURZQ0FDQUxRUWhxSUFzUXFBRWFJQXNnQ3lnQ0NEWUNFQXNnQ3lBTEtBSVFOZ0lJQTBBQ1FDQUxJQTRRYkRZQ0FDQUxRUWhxSUFzUVcwVU5BQ0FBSUF0QnFBUnFFRFpGRFFBZ0FCQWhJQXNvQWdnb0FnQkhEUUFnQUJBbEdpQUxRUWhxRUpVQkRBRUxDeUFTUlEwRElBc2dEaEJzTmdJQUlBdEJDR29nQ3hCYlJRMERJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1BZ3NEUUFKQUlBQWdDMEdvQkdvUU5rVU5BQUovSUFkQmdCQWdBQkFoSWdJUVRnUkFJQWtvQWdBaUF5QUxLQUtrQkVZRVFDQUlJQWtnQzBHa0JHb1FoZ0VnQ1NnQ0FDRURDeUFKSUFOQkJHbzJBZ0FnQXlBQ05nSUFJQVJCQVdvTUFRc2dFUkFKUlNBRVJYSU5BU0FDSUFzb0FuQkhEUUVnQ3lnQ2hBRWlBaUFMS0FLQUFVWUVRQ0FQSUF0QmhBRnFJQXRCZ0FGcUVJWUJJQXNvQW9RQklRSUxJQXNnQWtFRWFqWUNoQUVnQWlBRU5nSUFRUUFMSVFRZ0FCQWxHZ3dCQ3dzZ0JFVWdDeWdDaEFFaUFpQVBLQUlBUm5KRkJFQWdDeWdDZ0FFZ0FrWUVRQ0FQSUF0QmhBRnFJQXRCZ0FGcUVJWUJJQXNvQW9RQklRSUxJQXNnQWtFRWFqWUNoQUVnQWlBRU5nSUFDd0pBSUFzb0FoeEJBRXdOQUFKQUlBQWdDMEdvQkdvUUtFVUVRQ0FBRUNFZ0N5Z0NkRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN3TkFJQUFRSlJvZ0N5Z0NIRUVBVEEwQkFrQWdBQ0FMUWFnRWFoQW9SUVJBSUFkQmdCQWdBQkFoRUU0TkFRc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0VDeUFKS0FJQUlBc29BcVFFUmdSQUlBZ2dDU0FMUWFRRWFoQ0dBUXNnQUJBaElRSWdDU0FKS0FJQUlnTkJCR28yQWdBZ0F5QUNOZ0lBSUFzZ0N5Z0NIRUVCYXpZQ0hBd0FDd0FMSUFvaEFpQUlLQUlBSUFrb0FnQkhEUU1nQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdCQ3dKQUlBcEZEUUJCQVNFRUEwQWdDaEFKSUFSTkRRRUNRQ0FBSUF0QnFBUnFFQ2hGQkVBZ0FCQWhJQW9nQkJDeEFTZ0NBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUFFQ1VhSUFSQkFXb2hCQXdBQ3dBTFFRRWhBQ0FQS0FJQUlBc29Bb1FCUmcwQVFRQWhBQ0FMUVFBMkFoQWdFU0FQS0FJQUlBc29Bb1FCSUF0QkVHb1FMU0FMS0FJUUJFQWdCU0FGS0FJQVFRUnlOZ0lBREFFTFFRRWhBQXNnRUJBS0dpQU5FQW9hSUF3UUNob2dEaEFLR2lBUkVBb2FJQThRSFNBTFFiQUVhaVFBSUFBUEN5QUtJUUlMSUFGQkFXb2hBUXdBQ3dBTEh3QWdBQ0FCRUtZQkVDY2dBUkNXQVNnQ0FDRUJJQUFRbGdFZ0FUWUNBQXMwQVFGL0l3QkJFR3NpQWlRQUlBSWdBQ2dDQURZQ0NDQUNJQUlvQWdnZ0FXbzJBZ2dnQWlnQ0NDRUFJQUpCRUdva0FDQUFDd29BSUFCQmlJZ0JFR1FMQ2dBZ0FFR1FpQUVRWkF2QkFRRUdmeU1BUVJCcklnUWtBQ0FBRUpZQktBSUFJUVVDZnlBQ0tBSUFJQUFvQWdCcklnTkIvLy8vL3dkSkJFQWdBMEVCZEF3QkMwRi9DeUlEUVFFZ0F4c2hBeUFCS0FJQUlRWWdBQ2dDQUNFSElBVkJOa1lFZjBFQUJTQUFLQUlBQ3lBREVKNEJJZ2dFUUNBRlFUWkhCRUFnQUJDbUFSb0xJQVJCTlRZQ0JDQUFJQVJCQ0dvZ0NDQUVRUVJxRUI0aUJSQ2xBaUFGRUIwZ0FTQUFLQUlBSUFZZ0IydHFOZ0lBSUFJZ0F5QUFLQUlBYWpZQ0FDQUVRUkJxSkFBUEN4QVhBQXNsQVFGL0lBRW9BZ0FRL3dKQkdIUkJHSFVoQWlBQUlBRW9BZ0EyQWdRZ0FDQUNPZ0FBQzU4UUFRcC9Jd0JCc0FScklnc2tBQ0FMSUFvMkFxUUVJQXNnQVRZQ3FBUWdDMEUyTmdKb0lBc2dDMEdJQVdvZ0MwR1FBV29nQzBIb0FHb2lBUkFlSWc4b0FnQWlDallDaEFFZ0N5QUtRWkFEYWpZQ2dBRWdBUkFSSVJFZ0MwSFlBR29RRVNFT0lBdEJ5QUJxRUJFaERDQUxRVGhxRUJFaERTQUxRU2hxRUJFaEVDTUFRUkJySWdFa0FDQUxBbjhnQWdSQUlBRWdBeENvQWlJQ0VHa2dDeUFCS0FJQU5nQjRJQUVnQWhCb0lBMGdBUkF3SUFFUUNob2dBU0FDRUVvZ0RDQUJFREFnQVJBS0dpQUxJQUlRU0RvQWR5QUxJQUlRT0RvQWRpQUJJQUlRTnlBUklBRVFNQ0FCRUFvYUlBRWdBaEJMSUE0Z0FSQXdJQUVRQ2hvZ0FoQm5EQUVMSUFFZ0F4Q25BaUlDRUdrZ0N5QUJLQUlBTmdCNElBRWdBaEJvSUEwZ0FSQXdJQUVRQ2hvZ0FTQUNFRW9nRENBQkVEQWdBUkFLR2lBTElBSVFTRG9BZHlBTElBSVFPRG9BZGlBQklBSVFOeUFSSUFFUU1DQUJFQW9hSUFFZ0FoQkxJQTRnQVJBd0lBRVFDaG9nQWhCbkN6WUNKQ0FCUVJCcUpBQWdDU0FJS0FJQU5nSUFJQVJCZ0FSeEloSkJDWFloRTBFQUlRRkJBQ0VDQTBBZ0FpRUtBa0FDUUFKQUFrQWdBVUVFUmcwQUlBQWdDMEdvQkdvUU1VVU5BRUVBSVFRQ1FBSkFBa0FDUUFKQUFrQWdDMEg0QUdvZ0FXb3NBQUFPQlFFQUJBTUZDUXNnQVVFRFJnMEhJQWRCZ01BQUlBQVFIeEJFQkVBZ0MwRVlhaUFBRUtvQ0lCQWdDeXdBR0JDaEFRd0NDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVlMSUFGQkEwWU5CZ3NEUUNBQUlBdEJxQVJxRURGRkRRWWdCMEdBd0FBZ0FCQWZFRVJGRFFZZ0MwRVlhaUFBRUtvQ0lCQWdDeXdBR0JDaEFRd0FDd0FMSUF3UUNVRUFJQTBRQ1d0R0RRUUNRQ0FNRUFrRVFDQU5FQWtOQVFzZ0RCQUpJUU1nQUJBZklRSWdBd1JBSUF4QkFCQUxMUUFBSUFKQi93RnhSZ1JBSUFBUUlob2dEQ0FLSUF3UUNVRUJTeHNoQWd3SUN5QUdRUUU2QUFBTUJnc2dEVUVBRUFzdEFBQWdBa0gvQVhGSERRVWdBQkFpR2lBR1FRRTZBQUFnRFNBS0lBMFFDVUVCU3hzaEFnd0dDeUFBRUI5Qi93RnhJQXhCQUJBTExRQUFSZ1JBSUFBUUlob2dEQ0FLSUF3UUNVRUJTeHNoQWd3R0N5QUFFQjlCL3dGeElBMUJBQkFMTFFBQVJnUkFJQUFRSWhvZ0JrRUJPZ0FBSUEwZ0NpQU5FQWxCQVVzYklRSU1CZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdEQ3lBS0lBRkJBa2x5UlFSQVFRQWhBaUFUSUFGQkFrWWdDeTBBZTBFQVIzRnlSUTBGQ3lBTElBNFFRRFlDRUNBTFFSaHFJQXRCRUdvUXFBRWhBZ0pBSUFGRkRRQWdBU0FMYWkwQWQwRUJTdzBBQTBBQ1FDQUxJQTRRYmpZQ0VDQUNJQXRCRUdvUVcwVU5BQ0FIUVlEQUFDQUNLQUlBTEFBQUVFUkZEUUFnQWhDWEFRd0JDd3NnQ3lBT0VFQTJBaEFnQWlnQ0FDQUxLQUlRYXlJQ0lCQVFDVTBFUUNBTElCQVFiallDRUNBTFFSQnFRUUFnQW1zUXBnSWhBeUFRRUc0aEJDQU9FRUFoRkNNQVFTQnJJZ0lrQUNBQ0lBUTJBaEFnQWlBRE5nSVlJQUlnRkRZQ0NBTkFBa0FnQWtFWWFpQUNRUkJxRUZzaUEwVU5BQ0FDS0FJWUxRQUFJQUlvQWdndEFBQkhEUUFnQWtFWWFoQ1hBU0FDUVFocUVKY0JEQUVMQ3lBQ1FTQnFKQUFnQTBFQmN3MEJDeUFMSUE0UVFEWUNDQ0FMUVJCcUlBdEJDR29RcUFFYUlBc2dDeWdDRURZQ0dBc2dDeUFMS0FJWU5nSVFBMEFDUUNBTElBNFFiallDQ0NBTFFSQnFJQXRCQ0dvUVcwVU5BQ0FBSUF0QnFBUnFFREZGRFFBZ0FCQWZRZjhCY1NBTEtBSVFMUUFBUncwQUlBQVFJaG9nQzBFUWFoQ1hBUXdCQ3dzZ0VrVU5BeUFMSUE0UWJqWUNDQ0FMUVJCcUlBdEJDR29RVzBVTkF5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBSUxBMEFDUUNBQUlBdEJxQVJxRURGRkRRQUNmeUFIUVlBUUlBQVFIeUlDRUVRRVFDQUpLQUlBSWdNZ0N5Z0NwQVJHQkVBZ0NDQUpJQXRCcEFScUVLa0NJQWtvQWdBaEF3c2dDU0FEUVFGcU5nSUFJQU1nQWpvQUFDQUVRUUZxREFFTElCRVFDVVVnQkVWeURRRWdDeTBBZGlBQ1FmOEJjVWNOQVNBTEtBS0VBU0lDSUFzb0FvQUJSZ1JBSUE4Z0MwR0VBV29nQzBHQUFXb1FoZ0VnQ3lnQ2hBRWhBZ3NnQ3lBQ1FRUnFOZ0tFQVNBQ0lBUTJBZ0JCQUFzaEJDQUFFQ0lhREFFTEN5QUVSU0FMS0FLRUFTSUNJQThvQWdCR2NrVUVRQ0FMS0FLQUFTQUNSZ1JBSUE4Z0MwR0VBV29nQzBHQUFXb1FoZ0VnQ3lnQ2hBRWhBZ3NnQ3lBQ1FRUnFOZ0tFQVNBQ0lBUTJBZ0FMQWtBZ0N5Z0NKRUVBVEEwQUFrQWdBQ0FMUWFnRWFoQW1SUVJBSUFBUUgwSC9BWEVnQ3kwQWQwWU5BUXNnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdEQ3dOQUlBQVFJaG9nQ3lnQ0pFRUFUQTBCQWtBZ0FDQUxRYWdFYWhBbVJRUkFJQWRCZ0JBZ0FCQWZFRVFOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3RUN5QUpLQUlBSUFzb0FxUUVSZ1JBSUFnZ0NTQUxRYVFFYWhDcEFnc2dBQkFmSVFJZ0NTQUpLQUlBSWdOQkFXbzJBZ0FnQXlBQ09nQUFJQXNnQ3lnQ0pFRUJhellDSkF3QUN3QUxJQW9oQWlBSUtBSUFJQWtvQWdCSERRTWdCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0JDd0pBSUFwRkRRQkJBU0VFQTBBZ0NoQUpJQVJORFFFQ1FDQUFJQXRCcUFScUVDWkZCRUFnQUJBZlFmOEJjU0FLSUFRUUN5MEFBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3REN5QUFFQ0lhSUFSQkFXb2hCQXdBQ3dBTFFRRWhBQ0FQS0FJQUlBc29Bb1FCUmcwQVFRQWhBQ0FMUVFBMkFoZ2dFU0FQS0FJQUlBc29Bb1FCSUF0QkdHb1FMU0FMS0FJWUJFQWdCU0FGS0FJQVFRUnlOZ0lBREFFTFFRRWhBQXNnRUJBS0dpQU5FQW9hSUF3UUNob2dEaEFLR2lBUkVBb2FJQThRSFNBTFFiQUVhaVFBSUFBUEN5QUtJUUlMSUFGQkFXb2hBUXdBQ3dBTERBQWdBRUVCUVMwUXV3SWFDd3dBSUFCQkFVRXRFTzhCR2dzS0FDQUJJQUJyUVFKMUN3UUFJQUVMTlFFQmZ5TUFRUkJySWdJa0FDQUNJQUF0QUFBNkFBOGdBQ0FCTFFBQU9nQUFJQUVnQWtFUGFpMEFBRG9BQUNBQ1FSQnFKQUFMWkFFQmZ5TUFRUkJySWdZa0FDQUdRUUE2QUE4Z0JpQUZPZ0FPSUFZZ0JEb0FEU0FHUVNVNkFBd2dCUVJBSUFaQkRXb2dCa0VPYWhDd0Fnc2dBaUFCSUFFZ0FpZ0NBQkR1QWlBR1FReHFJQU1nQUNnQ0FCQUJJQUZxTmdJQUlBWkJFR29rQUF2eUFRRUZmeU1BUVJCcklnTWtBQ0FDUWdBM0FBQWdBa0lBTndBSUlBTWdBU2tBQ0RjRENDQURJQUVwQUFBM0F3QURRQ0FBSUFWcUlRWkJBQ0VCQTBBZ0JpMEFBRUVISUFGcmRrRUJjUVJBSUFJZ0F4Q2RBUXNnQXkwQUR5RUhJQU5CREdvaUJDQURMUUFMUVI5MElBUVFsQUZCQVhaeUVKTUJJQU5CQ0dvaUJDQURMUUFIUVI5MElBUVFsQUZCQVhaeUVKTUJJQU5CQkdvaUJDQURMUUFEUVI5MElBUVFsQUZCQVhaeUVKTUJJQU1nQXhDVUFVRUJkaENUQVNBSFFRRnhCRUFnQXlBRExRQUFRZUVCY3pvQUFBc2dBVUVCYWlJQlFRaEhEUUFMSUFWQkFXb2lCVUVRUncwQUN5QURRUkJxSkFBTFFRQWdBU0FDSUFNZ0JFRUVFRmdoQVNBRExRQUFRUVJ4UlFSQUlBQWdBVUhRRDJvZ0FVSHNEbW9nQVNBQlFlUUFTQnNnQVVIRkFFZ2JRZXdPYXpZQ0FBc0xRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NCQkVBQUNJQUlBQkJvQUpxSUFVZ0JFRUFFTElCSUFCcklnQkJud0pNQkVBZ0FTQUFRUXh0UVF4dk5nSUFDd3RBQUNBQ0lBTWdBRUVJYWlBQUtBSUlLQUlBRVFBQUlnQWdBRUdvQVdvZ0JTQUVRUUFRc2dFZ0FHc2lBRUduQVV3RVFDQUJJQUJCREcxQkIyODJBZ0FMQzBFQUlBRWdBaUFESUFSQkJCQlpJUUVnQXkwQUFFRUVjVVVFUUNBQUlBRkIwQTlxSUFGQjdBNXFJQUVnQVVIa0FFZ2JJQUZCeFFCSUcwSHNEbXMyQWdBTEMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnUVJBQUFpQUNBQVFhQUNhaUFGSUFSQkFCQzBBU0FBYXlJQVFaOENUQVJBSUFFZ0FFRU1iVUVNYnpZQ0FBc0xRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NBQkVBQUNJQUlBQkJxQUZxSUFVZ0JFRUFFTFFCSUFCcklnQkJwd0ZNQkVBZ0FTQUFRUXh0UVFkdk5nSUFDd3NFQUVFQ0M2OEZBUXAvSXdCQkVHc2lDU1FBSUFZUU95RUtJQWtnQmhDTUFTSU5FRGNnQlNBRE5nSUFBa0FDUUNBQUlnY3RBQUFpQmtFcmF3NERBQUVBQVFzZ0NpQUdRUmgwUVJoMUVEMGhCaUFGSUFVb0FnQWlCMEVFYWpZQ0FDQUhJQVkyQWdBZ0FFRUJhaUVIQ3dKQUFrQWdBaUFISWdaclFRRk1EUUFnQnkwQUFFRXdSdzBBSUFjdEFBRkJJSEpCK0FCSERRQWdDa0V3RUQwaEJpQUZJQVVvQWdBaUNFRUVhallDQUNBSUlBWTJBZ0FnQ2lBSExBQUJFRDBoQmlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFZMkFnQWdCMEVDYWlJSElRWURRQ0FDSUFaTkRRSWdCaXdBQUJBV0VOZ0NSUTBDSUFaQkFXb2hCZ3dBQ3dBTEEwQWdBaUFHVFEwQklBWXNBQUFoQ0JBV0dpQUlFRVZGRFFFZ0JrRUJhaUVHREFBTEFBc0NRQ0FKRUVrRVFDQUtJQWNnQmlBRktBSUFFR01nQlNBRktBSUFJQVlnQjJ0QkFuUnFOZ0lBREFFTElBY2dCaEI1SUEwUU9DRU9JQWNoQ0FOQUlBWWdDRTBFUUNBRElBY2dBR3RCQW5ScUlBVW9BZ0FRclFFRkFrQWdDU0FMRUFzc0FBQkJBRXdOQUNBTUlBa2dDeEFMTEFBQVJ3MEFJQVVnQlNnQ0FDSU1RUVJxTmdJQUlBd2dEallDQUNBTElBc2dDUkFKUVFGclNXb2hDMEVBSVF3TElBb2dDQ3dBQUJBOUlROGdCU0FGS0FJQUloQkJCR28yQWdBZ0VDQVBOZ0lBSUFoQkFXb2hDQ0FNUVFGcUlRd01BUXNMQ3dKQUFrQURRQ0FDSUFaTkRRRWdCaTBBQUNJSFFTNUhCRUFnQ2lBSFFSaDBRUmgxRUQwaEJ5QUZJQVVvQWdBaUNFRUVhallDQUNBSUlBYzJBZ0FnQmtFQmFpRUdEQUVMQ3lBTkVFZ2hCeUFGSUFVb0FnQWlDMEVFYWlJSU5nSUFJQXNnQnpZQ0FDQUdRUUZxSVFZTUFRc2dCU2dDQUNFSUN5QUtJQVlnQWlBSUVHTWdCU0FGS0FJQUlBSWdCbXRCQW5ScUlnVTJBZ0FnQkNBRklBTWdBU0FBYTBFQ2RHb2dBU0FDUmhzMkFnQWdDUkFLR2lBSlFSQnFKQUFMdUFFQkJYOGpBRUVRYXlJSEpBQWpBRUVRYXlJRkpBQUNRQ0FCUWUvLy8vOERUUVJBQWtBZ0FVRUJUUVJBSUFBZ0FSQTZJQUFoQmd3QkN5QUFJQUFnQVJDQ0FVRUJhaUlERUlFQklnWVFUU0FBSUFNUVRDQUFJQUVRT1FzZ0JpRUVJQUVpQXdSL0lBTUVRQU5BSUFRZ0FqWUNBQ0FFUVFScUlRUWdBMEVCYXlJRERRQUxDMEVBQlNBRUN4b2dCVUVBTmdJTUlBWWdBVUVDZEdvZ0JVRU1haEF6SUFWQkVHb2tBQXdCQ3hBWEFBc2dCMEVRYWlRQUlBQUxtUVVCQ244akFFRVFheUlKSkFBZ0JoQXlJUW9nQ1NBR0VJNEJJZzBRTnlBRklBTTJBZ0FDUUFKQUlBQWlCeTBBQUNJR1FTdHJEZ01BQVFBQkN5QUtJQVpCR0hSQkdIVVFLU0VHSUFVZ0JTZ0NBQ0lIUVFGcU5nSUFJQWNnQmpvQUFDQUFRUUZxSVFjTEFrQUNRQ0FDSUFjaUJtdEJBVXdOQUNBSExRQUFRVEJIRFFBZ0J5MEFBVUVnY2tINEFFY05BQ0FLUVRBUUtTRUdJQVVnQlNnQ0FDSUlRUUZxTmdJQUlBZ2dCam9BQUNBS0lBY3NBQUVRS1NFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FIUVFKcUlnY2hCZ05BSUFJZ0JrME5BaUFHTEFBQUVCWVEyQUpGRFFJZ0JrRUJhaUVHREFBTEFBc0RRQ0FDSUFaTkRRRWdCaXdBQUNFSUVCWWFJQWdRUlVVTkFTQUdRUUZxSVFZTUFBc0FDd0pBSUFrUVNRUkFJQW9nQnlBR0lBVW9BZ0FRYnlBRklBVW9BZ0FnQmlBSGEybzJBZ0FNQVFzZ0J5QUdFSGtnRFJBNElRNGdCeUVJQTBBZ0JpQUlUUVJBSUFNZ0J5QUFhMm9nQlNnQ0FCQjVCUUpBSUFrZ0RCQUxMQUFBUVFCTURRQWdDeUFKSUF3UUN5d0FBRWNOQUNBRklBVW9BZ0FpQzBFQmFqWUNBQ0FMSUE0NkFBQWdEQ0FNSUFrUUNVRUJhMGxxSVF4QkFDRUxDeUFLSUFnc0FBQVFLU0VQSUFVZ0JTZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFDQUlRUUZxSVFnZ0MwRUJhaUVMREFFTEN3c0RRQUpBSUFJZ0Jrc0VRQ0FHTFFBQUlnZEJMa2NOQVNBTkVFZ2hCeUFGSUFVb0FnQWlDRUVCYWpZQ0FDQUlJQWM2QUFBZ0JrRUJhaUVHQ3lBS0lBWWdBaUFGS0FJQUVHOGdCU0FGS0FJQUlBSWdCbXRxSWdVMkFnQWdCQ0FGSUFNZ0FTQUFhMm9nQVNBQ1JoczJBZ0FnQ1JBS0dpQUpRUkJxSkFBUEN5QUtJQWRCR0hSQkdIVVFLU0VISUFVZ0JTZ0NBQ0lJUVFGcU5nSUFJQWdnQnpvQUFDQUdRUUZxSVFZTUFBc0FDL1FCQVFsL0lBRVFEU0VFSUFFUUNTRUhJd0JCSUdzaUFTUUFBa0FnQVVFWWFpQUFFSVFESWdndEFBQkZEUUFnQVVFSWFpQUFFTUFCSVFrZ0FDQUFLQUlBUVF4cktBSUFhaUlGS0FJRUlRb0NRRUYvSUFVaUFpZ0NUQkJlUlFSQUlBSW9Ba3doQWd3QkN5QUNBbjhqQUVFUWF5SURKQUFnQTBFSWFpSUdJQUlRRHlBR0VESkJJQkFwSVFJZ0JoQU9JQU5CRUdva0FDQUNDellDVEFzZ0FrRVlkRUVZZFNFQ0lBRWdDU2dDQUNBRUlBUWdCMm9pQXlBRUlBcEJzQUZ4UVNCR0d5QURJQVVnQWhCV05nSVFJQUVvQWhBTkFDQUFJQUFvQWdCQkRHc29BZ0JxUVFVUWdBRUxJQWdRZ2dNZ0FVRWdhaVFBQ3pZQkFuOUI5QUVRR1NJQ0JIOGdBaUFBSUFGQkEzUVFpUU1pQUVFQVNBUkFJQUlRRUVFQUR3c2dBaUFBTmdMd0FTQUNCU0FEQ3d1ZEF3RUNmeU1BUWVBQ2F5SUFKQUFnQUNBQ05nTFFBaUFBSUFFMkF0Z0NJQU1RWENFR0lBTWdBRUhnQVdvUW1RRWhCeUFBUWRBQmFpQURJQUJCekFKcUVKZ0JJQUJCd0FGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dEUUFKQUlBQkIyQUpxSUFCQjBBSnFFRFpGRFFBZ0FDZ0N2QUVnQVJBSklBSnFSZ1JBSUFFUUNTRURJQUVnQVJBSlFRRjBFQXdnQVNBQkVCTVFEQ0FBSUFNZ0FVRUFFQXNpQW1vMkFyd0JDeUFBUWRnQ2FoQWhJQVlnQWlBQVFid0JhaUFBUVFocUlBQW9Bc3dDSUFCQjBBRnFJQUJCRUdvZ0FFRU1haUFIRUlzQkRRQWdBRUhZQW1vUUpSb01BUXNMQWtBZ0FFSFFBV29RQ1VVTkFDQUFLQUlNSWdNZ0FFRVFhbXRCbndGS0RRQWdBQ0FEUVFScU5nSU1JQU1nQUNnQ0NEWUNBQXNnQlNBQ0lBQW9BcndCSUFRZ0JoREhBallDQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkIyQUpxSUFCQjBBSnFFQ2dFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQXRnQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFlQUNhaVFBSUFJTFZBRUNmeU1BUVJCcklnTWtBQ0FEUVFJMkFnd2dBaUFCRUFraUJFc0VRQkFYQUFzZ0FSQU5JUUVnQXlBRUlBSnJOZ0lFSUFBZ0FTQUNhaUFEUVF4cUlBTkJCR29Rb2dFb0FnQVE5Z0VnQTBFUWFpUUFDMElCQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lNSUFNZ0FqWUNDQ0FESUFOQkRHb1FVaUVCSUFCQjh4c2dBeWdDQ0JEaUFpRUFJQUVRVVNBRFFSQnFKQUFnQUFzWUFDQUFJQUFvQWdCQkRHc29BZ0JxUVFJUkFBQWFJQUFMc1FJQ0JINEZmeU1BUVNCcklnZ2tBQUpBQWtBQ1FDQUJJQUpIQkVCQjFJRUJLQUlBSVF4QjFJRUJRUUEyQWdBakFFRVFheUlKSkFBUUZob2pBRUVRYXlJS0pBQWpBRUVRYXlJTEpBQWdDeUFCSUFoQkhHcEJBaERZQVNBTEtRTUFJUVFnQ2lBTEtRTUlOd01JSUFvZ0JEY0RBQ0FMUVJCcUpBQWdDaWtEQUNFRUlBa2dDaWtEQ0RjRENDQUpJQVEzQXdBZ0NrRVFhaVFBSUFrcEF3QWhCQ0FJSUFrcEF3ZzNBeEFnQ0NBRU53TUlJQWxCRUdva0FDQUlLUU1RSVFRZ0NDa0RDQ0VGUWRTQkFTZ0NBQ0lCUlEwQklBZ29BaHdnQWtjTkFpQUZJUVlnQkNFSElBRkJ4QUJIRFFNTUFnc2dBMEVFTmdJQURBSUxRZFNCQVNBTU5nSUFJQWdvQWh3Z0FrWU5BUXNnQTBFRU5nSUFJQVloQlNBSElRUUxJQUFnQlRjREFDQUFJQVEzQXdnZ0NFRWdhaVFBQzdZQkFnSjhBMzhqQUVFUWF5SUZKQUFDUUFKQUFrQWdBQ0FCUndSQVFkU0JBU2dDQUNFSFFkU0JBVUVBTmdJQUVCWWFJd0JCRUdzaUJpUUFJQVlnQUNBRlFReHFRUUVRMkFFZ0Jpa0RBQ0FHS1FNSUVOMEJJUU1nQmtFUWFpUUFRZFNCQVNnQ0FDSUFSUTBCSUFVb0Fnd2dBVWNOQWlBRElRUWdBRUhFQUVjTkF3d0NDeUFDUVFRMkFnQU1BZ3RCMUlFQklBYzJBZ0FnQlNnQ0RDQUJSZzBCQ3lBQ1FRUTJBZ0FnQkNFREN5QUZRUkJxSkFBZ0F3dTJBUUlDZlFOL0l3QkJFR3NpQlNRQUFrQUNRQUpBSUFBZ0FVY0VRRUhVZ1FFb0FnQWhCMEhVZ1FGQkFEWUNBQkFXR2lNQVFSQnJJZ1lrQUNBR0lBQWdCVUVNYWtFQUVOZ0JJQVlwQXdBZ0Jpa0RDQkRrQWlFRElBWkJFR29rQUVIVWdRRW9BZ0FpQUVVTkFTQUZLQUlNSUFGSERRSWdBeUVFSUFCQnhBQkhEUU1NQWdzZ0FrRUVOZ0lBREFJTFFkU0JBU0FITmdJQUlBVW9BZ3dnQVVZTkFRc2dBa0VFTmdJQUlBUWhBd3NnQlVFUWFpUUFJQU1MeGdFQ0EzOEJmaU1BUVJCcklnUWtBQUorQWtBQ1FDQUFJQUZIQkVBQ1FBSkFJQUF0QUFBaUJVRXRSdzBBSUFCQkFXb2lBQ0FCUncwQURBRUxRZFNCQVNnQ0FDRUdRZFNCQVVFQU5nSUFJQUFnQkVFTWFpQURFQllRMlFFaEJ3SkFRZFNCQVNnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBCSUFCQnhBQkdEUVFNQlF0QjFJRUJJQVkyQWdBZ0JDZ0NEQ0FCUmcwRUN3c0xJQUpCQkRZQ0FFSUFEQUlMSUFKQkJEWUNBRUovREFFTFFnQWdCMzBnQnlBRlFTMUdHd3NoQnlBRVFSQnFKQUFnQnd2WEFRSURmd0YrSXdCQkVHc2lCQ1FBQW44Q1FBSkFBa0FnQUNBQlJ3UkFBa0FDUUNBQUxRQUFJZ1ZCTFVjTkFDQUFRUUZxSWdBZ0FVY05BQXdCQzBIVWdRRW9BZ0FoQmtIVWdRRkJBRFlDQUNBQUlBUkJER29nQXhBV0VOa0JJUWNDUUVIVWdRRW9BZ0FpQUFSQUlBUW9BZ3dnQVVjTkFTQUFRY1FBUmcwRkRBUUxRZFNCQVNBR05nSUFJQVFvQWd3Z0FVWU5Bd3NMQ3lBQ1FRUTJBZ0JCQUF3REN5QUhRdi8vLy84UFdBMEJDeUFDUVFRMkFnQkJmd3dCQzBFQUlBZW5JZ0JySUFBZ0JVRXRSaHNMSVFBZ0JFRVFhaVFBSUFBTGtnTUJBWDhqQUVHUUFtc2lBQ1FBSUFBZ0FqWUNnQUlnQUNBQk5nS0lBaUFERUZ3aEJpQUFRZEFCYWlBRElBQkIvd0ZxRUpvQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ0RRQUpBSUFCQmlBSnFJQUJCZ0FKcUVERkZEUUFnQUNnQ3ZBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJ3QkN5QUFRWWdDYWhBZklBWWdBaUFBUWJ3QmFpQUFRUWhxSUFBc0FQOEJJQUJCMEFGcUlBQkJFR29nQUVFTWFrSGcwQUFRalFFTkFDQUFRWWdDYWhBaUdnd0JDd3NDUUNBQVFkQUJhaEFKUlEwQUlBQW9BZ3dpQXlBQVFSQnFhMEdmQVVvTkFDQUFJQU5CQkdvMkFnd2dBeUFBS0FJSU5nSUFDeUFGSUFJZ0FDZ0N2QUVnQkNBR0VNY0NOZ0lBSUFCQjBBRnFJQUJCRUdvZ0FDZ0NEQ0FFRUMwZ0FFR0lBbW9nQUVHQUFtb1FKZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDaUFJaEFpQUJFQW9hSUFCQjBBRnFFQW9hSUFCQmtBSnFKQUFnQWd2Y0FRSURmd0YrSXdCQkVHc2lCQ1FBQW44Q1FBSkFBa0FnQUNBQlJ3UkFBa0FDUUNBQUxRQUFJZ1ZCTFVjTkFDQUFRUUZxSWdBZ0FVY05BQXdCQzBIVWdRRW9BZ0FoQmtIVWdRRkJBRFlDQUNBQUlBUkJER29nQXhBV0VOa0JJUWNDUUVIVWdRRW9BZ0FpQUFSQUlBUW9BZ3dnQVVjTkFTQUFRY1FBUmcwRkRBUUxRZFNCQVNBR05nSUFJQVFvQWd3Z0FVWU5Bd3NMQ3lBQ1FRUTJBZ0JCQUF3REN5QUhRdi8vQTFnTkFRc2dBa0VFTmdJQVFmLy9Bd3dCQzBFQUlBZW5JZ0JySUFBZ0JVRXRSaHNMSVFBZ0JFRVFhaVFBSUFCQi8vOERjUXUyQVFJQmZnSi9Jd0JCRUdzaUJTUUFBa0FDUUNBQUlBRkhCRUJCMUlFQktBSUFJUVpCMUlFQlFRQTJBZ0FnQUNBRlFReHFJQU1RRmhEUEFpRUVBa0JCMUlFQktBSUFJZ0FFUUNBRktBSU1JQUZIRFFFZ0FFSEVBRVlOQXd3RUMwSFVnUUVnQmpZQ0FDQUZLQUlNSUFGR0RRTUxDeUFDUVFRMkFnQkNBQ0VFREFFTElBSkJCRFlDQUNBRVFnQlZCRUJDLy8vLy8vLy8vLy8vQUNFRURBRUxRb0NBZ0lDQWdJQ0FnSDhoQkFzZ0JVRVFhaVFBSUFRTHd3RUNBbjhCZmlNQVFSQnJJZ1FrQUFKL0FrQUNRQ0FBSUFGSEJFQkIxSUVCS0FJQUlRVkIxSUVCUVFBMkFnQWdBQ0FFUVF4cUlBTVFGaERQQWlFR0FrQkIxSUVCS0FJQUlnQUVRQ0FFS0FJTUlBRkhEUUVnQUVIRUFFWU5CQXdEQzBIVWdRRWdCVFlDQUNBRUtBSU1JQUZHRFFJTEN5QUNRUVEyQWdCQkFBd0NDeUFHUW9DQWdJQjRVeUFHUXYvLy8vOEhWWElOQUNBR3B3d0JDeUFDUVFRMkFnQkIvLy8vL3djZ0JrSUFWUTBBR2tHQWdJQ0FlQXNoQUNBRVFSQnFKQUFnQUF2bUFnRUVmeUFBUVVCcklnTkJ2Q2cyQWdBZ0EwSDBJVFlDQUNBQVFmd2xOZ0lBSUFOQnBDWTJBZ0FnQUVHUUpqWUNDQ0FBUWJRbUtBSUFJZ0UyQWdBZ0FDQUJRUXhyS0FJQWFrRzRKaWdDQURZQ0FDQUFRUUEyQWdRZ0FDQUFLQUlBUVF4cktBSUFhaUlDUVFBMkFoUWdBaUFBUVF4cUlnRTJBaGdnQWtFQU5nSU1JQUpDZ3FDQWdPQUFOd0lFSUFJZ0FVVTJBaEFnQWtFZ2FrRUFRU2dRUmhvZ0FrRWNhaENQQWlBQ1FRQTJBa2dnQWtGL05nSk1JQUJCQ0dvaUFrRzhKaWdDQUNJRU5nSUFJQUlnQkVFTWF5Z0NBR3BCd0NZb0FnQTJBZ0FnQUVHd0ppZ0NBQ0lDTmdJQUlBQWdBa0VNYXlnQ0FHcEJ4Q1lvQWdBMkFnQWdBRUhJSmlnQ0FEWUNDQ0FBUWZ3bE5nSUFJQU5CcENZMkFnQWdBRUdRSmpZQ0NDQUJRYndmTmdJQUlBRkJCR29RandJZ0FVSUFOd0lZSUFGQ0FEY0NFQ0FCUWdBM0FnZ2dBVUcwSVRZQ0FDQUJRU0JxRUJFYUlBRkJHRFlDTUNBQlFRQTJBaXdnQUFzS0FDQUJJQUJyUVF4dEM1UUJBUVIvSXdCQkVHc2lCU1FBSUFFZ0FoQ2lBaUlFUWUvLy8vOERUUVJBQWtBZ0JFRUJUUVJBSUFBZ0JCQTZJQUFoQXd3QkN5QUFJQUFnQkJDQ0FVRUJhaUlHRUlFQklnTVFUU0FBSUFZUVRDQUFJQVFRT1FzRFFDQUJJQUpIQkVBZ0F5QUJFRE1nQTBFRWFpRURJQUZCQkdvaEFRd0JDd3NnQlVFQU5nSU1JQU1nQlVFTWFoQXpJQVZCRUdva0FBOExFQmNBQ3hZQUlBQWdBU0FDUW9DQWdJQ0FnSUNBZ0g4UTBBSUxrZ1FDQjM4RWZpTUFRUkJySWdna0FBSkFBa0FDUUNBQ1FTUk1CRUFnQUMwQUFDSUZEUUVnQUNFRURBSUxRZFNCQVVFY05nSUFRZ0FoQXd3Q0N5QUFJUVFDUUFOQUlBVkJHSFJCR0hVUWNFVU5BU0FFTFFBQklRVWdCRUVCYWlFRUlBVU5BQXNNQVFzQ1FDQUVMUUFBSWdWQksyc09Bd0FCQUFFTFFYOUJBQ0FGUVMxR0d5RUhJQVJCQVdvaEJBc0Nmd0pBSUFKQmIzRU5BQ0FFTFFBQVFUQkhEUUJCQVNFSklBUXRBQUZCM3dGeFFkZ0FSZ1JBSUFSQkFtb2hCRUVRREFJTElBUkJBV29oQkNBQ1FRZ2dBaHNNQVFzZ0FrRUtJQUliQ3lJS3JDRU1RUUFoQWdOQUFrQkJVQ0VGQWtBZ0JDd0FBQ0lHUVRCclFmOEJjVUVLU1EwQVFhbC9JUVVnQmtIaEFHdEIvd0Z4UVJwSkRRQkJTU0VGSUFaQndRQnJRZjhCY1VFWlN3MEJDeUFGSUFacUlnWWdDazROQUNBSUlBeENBQ0FMUWdBUUswRUJJUVVDUUNBSUtRTUlRZ0JTRFFBZ0N5QU1maUlOSUFhc0lnNUNmNFZXRFFBZ0RTQU9mQ0VMUVFFaENTQUNJUVVMSUFSQkFXb2hCQ0FGSVFJTUFRc0xJQUVFUUNBQklBUWdBQ0FKR3pZQ0FBc0NRQUpBSUFJRVFFSFVnUUZCeEFBMkFnQWdCMEVBSUFOQ0FZTWlERkFiSVFjZ0F5RUxEQUVMSUFNZ0MxWU5BU0FEUWdHRElRd0xJQXluSUFkeVJRUkFRZFNCQVVIRUFEWUNBQ0FEUWdGOUlRTU1BZ3NnQXlBTFdnMEFRZFNCQVVIRUFEWUNBQXdCQ3lBTElBZXNJZ09GSUFOOUlRTUxJQWhCRUdva0FDQURDekVCQVg5QjJJWUJLQUlBSVFFZ0FBUkFRZGlHQVVIb2hRRWdBQ0FBUVg5R0d6WUNBQXRCZnlBQklBRkI2SVVCUmhzTHJRZ0JCWDhnQVNnQ0FDRUVBa0FDUUFKQUFrQUNRQUpBQWtBQ2Z3SkFBa0FDUUFKQUlBTkZEUUFnQXlnQ0FDSUdSUTBBSUFCRkJFQWdBaUVEREFNTElBTkJBRFlDQUNBQ0lRTU1BUXNDUUVIWWhnRW9BZ0FvQWdCRkJFQWdBRVVOQVNBQ1JRME1JQUloQmdOQUlBUXNBQUFpQXdSQUlBQWdBMEgvdndOeE5nSUFJQUJCQkdvaEFDQUVRUUZxSVFRZ0JrRUJheUlHRFFFTURnc0xJQUJCQURZQ0FDQUJRUUEyQWdBZ0FpQUdhdzhMSUFJaEF5QUFSUTBEREFVTElBUVFrZ0VQQzBFQklRVU1Bd3RCQUF3QkMwRUJDeUVGQTBBZ0JVVUVRQ0FFTFFBQVFRTjJJZ1ZCRUdzZ0JrRWFkU0FGYW5KQkIwc05Bd0ovSUFSQkFXb2lCU0FHUVlDQWdCQnhSUTBBR2lBRkxRQUFRY0FCY1VHQUFVY0VRQ0FFUVFGcklRUU1Cd3NnQkVFQ2FpSUZJQVpCZ0lBZ2NVVU5BQm9nQlMwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBY0xJQVJCQTJvTElRUWdBMEVCYXlFRFFRRWhCUXdCQ3dOQUFrQWdCRUVEY1NBRUxRQUFJZ1pCQVd0Qi9nQkxjZzBBSUFRb0FnQWlCa0dCZ29RSWF5QUdja0dBZ1lLRWVIRU5BQU5BSUFOQkJHc2hBeUFFS0FJRUlRWWdCRUVFYWlFRUlBWWdCa0dCZ29RSWEzSkJnSUdDaEhoeFJRMEFDd3NnQmtIL0FYRWlCVUVCYTBIK0FFMEVRQ0FEUVFGcklRTWdCRUVCYWlFRURBRUxDeUFGUWNJQmF5SUZRVEpMRFFNZ0JFRUJhaUVFSUFWQkFuUkJ3Q3RxS0FJQUlRWkJBQ0VGREFBTEFBc0RRQ0FGUlFSQUlBTkZEUWNEUUFKQUFrQUNRQ0FFTFFBQUlnVkJBV3NpQjBIK0FFc0VRQ0FGSVFZTUFRc2dCRUVEY1NBRFFRVkpjZzBCQWtBRFFDQUVLQUlBSWdaQmdZS0VDR3NnQm5KQmdJR0NoSGh4RFFFZ0FDQUdRZjhCY1RZQ0FDQUFJQVF0QUFFMkFnUWdBQ0FFTFFBQ05nSUlJQUFnQkMwQUF6WUNEQ0FBUVJCcUlRQWdCRUVFYWlFRUlBTkJCR3NpQTBFRVN3MEFDeUFFTFFBQUlRWUxJQVpCL3dGeElnVkJBV3NoQndzZ0IwSCtBRXNOQVFzZ0FDQUZOZ0lBSUFCQkJHb2hBQ0FFUVFGcUlRUWdBMEVCYXlJRERRRU1DUXNMSUFWQndnRnJJZ1ZCTWtzTkF5QUVRUUZxSVFRZ0JVRUNkRUhBSzJvb0FnQWhCa0VCSVFVTUFRc2dCQzBBQUNJRlFRTjJJZ2RCRUdzZ0J5QUdRUnAxYW5KQkIwc05BUUpBQWtBQ2Z5QUVRUUZxSWdjZ0JVR0FBV3NnQmtFR2RISWlCVUVBVGcwQUdpQUhMUUFBUVlBQmF5SUhRVDlMRFFFZ0JFRUNhaUlJSUFjZ0JVRUdkSElpQlVFQVRnMEFHaUFJTFFBQVFZQUJheUlIUVQ5TERRRWdCeUFGUVFaMGNpRUZJQVJCQTJvTElRUWdBQ0FGTmdJQUlBTkJBV3NoQXlBQVFRUnFJUUFNQVF0QjFJRUJRUmsyQWdBZ0JFRUJheUVFREFVTFFRQWhCUXdBQ3dBTElBUkJBV3NoQkNBR0RRRWdCQzBBQUNFR0N5QUdRZjhCY1EwQUlBQUVRQ0FBUVFBMkFnQWdBVUVBTmdJQUN5QUNJQU5yRHd0QjFJRUJRUmsyQWdBZ0FFVU5BUXNnQVNBRU5nSUFDMEYvRHdzZ0FTQUVOZ0lBSUFJTEl3RUNmeUFBSVFFRFFDQUJJZ0pCQkdvaEFTQUNLQUlBRFFBTElBSWdBR3RCQW5VTERnQWdBQkRmQWdSQUlBQVFFQXNMVXdFRWZ3SkFJQUZCQUV3TkFDQUJRUUZySWdSRkRRQURRQ0FBSUFKcUlnTXRBQUFoQlNBRElBQWdBa0VCY21vaUF5MEFBRG9BQUNBRElBVTZBQUFnQWtFQ2FpSUNJQUZPRFFFZ0FpQUVSdzBBQ3dzTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhrQUVIdUhDQUJFTFVCSVFBZ0FrRVFhaVFBSUFBTEtRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUgwSENBQkVPSUNJUUFnQWtFUWFpUUFJQUFMRmdBZ0FCQkZRUUJISUFCQklISkI0UUJyUVFaSmNndThBZ0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRkJDV3NPRWdBSUNRb0lDUUVDQXdRS0NRb0tDQWtGQmdjTElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FTZ0NBRFlDQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUSUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUTUJBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUQUFBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FURUFBRGNEQUE4TElBSWdBaWdDQUVFSGFrRjRjU0lCUVFocU5nSUFJQUFnQVNzREFEa0RBQThMSUFBZ0FrRXpFUU1BQ3c4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUUUNBRGNEQUE4TElBSWdBaWdDQUNJQlFRUnFOZ0lBSUFBZ0FUVUNBRGNEQUE4TElBSWdBaWdDQUVFSGFrRjRjU0lCUVFocU5nSUFJQUFnQVNrREFEY0RBQXYrRkFFT2Z5TUFRVUJxSWdNa0FDQURRUUEyQWhBZ0EwRUFOZ0lNSUFOQkFEWUNDQ0FEUVFBMkFnUWdBeUFEUVJCcUlnUTJBaFFnQXlBRFFReHFJZ2cyQWhnZ0F5Z0NGQm9nQXlBRFFRaHFJZ28yQWh3Z0F5Z0NHQm9nQXlBRFFRUnFJZ1kyQWlBZ0F5Z0NIQm9nQXlnQ0lCb2pBRUVRYXlJSEpBQWdCaUFBTFFBQ0lBQXRBQUVnQUMwQUFITnpRUmgwUVJoMUlnVkJNSE1nQlVFQmRFR2ZmM0pxUVFGcUlnVTJBZ0FnQ2lBRlFYOXpJQUZ4SUFVZ0FVRi9jeUlNY1dzaUJVRitjaUFGUVg1eGFrRUJhaUlGTmdJQUlBUWdCUkFaTmdJQUlBZ2dCaWdDQUNJSkVCazJBZ0FEUUFKQVFiM3UrYUYrSVFVRFFBSkFBa0FnQlVHODd2bWhma3dFUUNBRlFlM3NoT041UmcwQklBVkJpYTNOMjN4R0RRSWdCVUdJaFlMY2ZFY05BeUFIUVJCcUpBQU1CQXNnQlVIMmpvYlZCRWNFUUNBRlFacWVvOGtEUmdSQVFRQWhDMEh0N0lUamVTRUZEQVFMSUFWQnZlNzVvWDVIRFFNZ0J5QUpOZ0lJUWZhT2h0VUVRWnFlbzhrRElBY29BZ2hCQUVvYklRVU1Bd3NnQmlnQ0FDSUZRWDl6SUFGeElBVWdESEZySWdsQmZuTWdDVUVCZEVGOGNXb2dBR290QUFFaERTQUlLQUlBSUFVZ0J5Z0NDR3RxSUFBZ0J5Z0NDQ0lGUVg5eklBRnhRUUYwSUFFZ0JYTnJhaTBBQUNBQUlBbHFRUUpyTFFBQUlBMXpjem9BQUNBSEtBSUlRUUZySVFrTUJBc2dCeUFMTmdJTVFZbXR6ZHQ4UVlpRmd0eDhJQW9vQWdBZ0J5Z0NERW9iSVFVTUFRc2dCQ2dDQUNBSEtBSU1haUFBSUFjb0FneEJBV29pQzJvdEFBQTZBQUJCN2V5RTQza2hCUXdBQ3dBTEN5QURJQU1vQWd4QnJ4NGdBeWdDQkJDK0FUWUNKRUhOdXZhZUJTRUFBMEFDUUFKQUFrQUNRQUpBQWtBQ1FDQUFRY3J3cWFJQlRBUkFJQUJCL2JYYTczNU1CRUFnQUVHUjFZdVVlMFlOQnlBQVFjMlY2OXA3UmcwRElBQkJnTkhuL1h4SERRbEJrZFdMbEhzaEFFRUFJUUVNQ1FzZ0FFSCt0ZHJ2ZmtZTkJDQUFRYTZtMC9ZQVJnMEJJQUJCMGFDNUdFY05DQ0FES0FJUUVCQWdBeWdDREJBUUlBTW9BaUFhSUFNb0Fod2FJQU1vQWhnYUlBTW9BaFFhSUFNb0Fpd2hBQ0FEUVVCckpBQWdBQThMSUFCQjc0VHI5UUpNQkVBZ0FFSEw4S21pQVVZTkJ5QUFRWXpBeW9BQ1J3MElJQU1vQWhBaENDQURLQUlJSVE1QkFDRUpRUUFoQ2tFQUlRVkJBQ0VIUVFBaEN5TUFRUkJySWdRa0FFR1NtT3pEQlVHNzdMeUlCQ0FDR3lFR1FkVUFJUXhCK2dFaERRTkFBa0JCNXFxZmVpRUFBMEFDUUFKQUFrQUNRQUpBSUFCQnBOV0Q5Z0ZNQkVBZ0FFSG95cEM1ZkV3RVFDQUFRZmkxK1B0NVJnMEdJQUJCNU5DV3QzcEdEUVVnQUVHWTllM09lVWNOQnlBRVFSQnFKQUFNQ0FzZ0FFSHB5cEM1ZkVZTkFTQUFRZWFxbjNwSERRWWdCQ0FKTmdJRUlBUWdEVG9BQ3lBRUlBdzZBQXhCNmNxUXVYeEJtUFh0em5rZ0JDZ0NCQ0FPU0JzaEFBd0dDeUFBUWJEdGlya0VUQVJBSUFCQnBkV0Q5Z0ZHRFFJZ0FFRzc3THlJQkVjTkJrSDR0Zmo3ZVNFQUlBUXNBQTBnQkNnQ0JCRG9BaUVLREFZTElBQkJzZTJLdVFSR0RRSWdBRUdTbU96REJVY05CVUg0dGZqN2VTRUFJQVFzQUEwZ0JDZ0NCQkRoQWlFS0RBVUxRYVhWZy9ZQlFiSHRpcmtFSUFRb0FnUkJBbTlCQVVZYklRQU1CQXNnQ0NBRUtBSUVhaTBBQUNJRklBUXRBQXh6SVFkQjVOQ1d0M29oQUNBRUxRQUxJUXNNQXdzZ0NDQUVLQUlFYWkwQUFDSUxJQVF0QUF0eklRZEI1TkNXdDNvaEFDQUVMUUFNSVFVTUFnc2dCQ0FMT2dBT0lBUWdCem9BRFNBRUlBVTZBQThnQmlFQURBRUxDeUFJSUFRb0FnUnFJQW82QUFBZ0JDZ0NCRUVCYWlFSklBUXRBQThoRENBRUxRQU9JUTBNQVFzTFFmQ0U2L1VDSVFBTUNBc2dBRUh3aE92MUFrWU5BaUFBUVpqWHFwRURSZzBFSUFCQnpicjJuZ1ZIRFFkQnJxYlQ5Z0JCelpYcjJuc2dBeWdDSkJzaEFBd0hDMEdNd01xQUFrSE5sZXZhZXlBREtBSU1RYlllSUFNb0FnUVF2Z0ViSVFBTUJnc2dBeWdDRUNFSUlBTW9BZ2doQlVFQUlRcEJBQ0VOUVFBaEIwRUFJUXRCQUNFSlFRQWhEQ01BUVJCcklnUWtBQ0FJSUFVUTFRSkJzcWJiaXdSQnV2K0RvbmtnQWhzaEJrSFZBQ0VPUWZvQklROERRQUpBUWJTVzBib0NJUUFEUUFKQUFrQUNRQ0FBUWJPVzBib0NUQVJBSUFCQnBmSGEyMzFNQkVBZ0FFRzYvNE9pZVVZTkJDQUFRWi9VbnBoN1JnMERJQUJCMCtpNjQzaEhEUVVnQ0NBRkVOVUNJQVJCRUdva0FBd0dDeUFBUWFieDJ0dDlSZzBCSUFCQmc2YVpyUUZIRFFSQmw0WGN2Z1JCcHZIYTIzMGdCQ2dDQkVFQ2IwRUJSaHNoQUF3RUN3SkFBa0FnQUVHV2hkeStCRXdFUUNBQVFiU1cwYm9DUmcwQklBQkJzcWJiaXdSSERRWkIvN0xsbHdVaEFDQUVMQUFOSUFRb0FnUVE0UUloQ2d3R0N5QUFRWmVGM0w0RVJnMEJJQUJCLzdMbGx3VkhEUVVnQ0NBRUtBSUVhaUFFTFFBTUlnQWdDbk1nQUNBS1FYOXpjVUVCZEdzNkFBQWdCQ2dDQkVFQmFpRU5JQVF0QUE4aERpQUVMUUFPSVE4TUJ3c2dCQ0FOTmdJRUlBUWdEem9BQ2lBRUlBNDZBQXRCZzZhWnJRRkIwK2k2NDNnZ0JDZ0NCQ0FGU0JzaEFBd0VDeUFJSUFRb0FnUnFMUUFBSWdjZ0JDMEFDM01oQzBHZjFKNllleUVBSUFRdEFBb2hDU0FFTFFBS0lRd01Bd3NnQ0NBRUtBSUVhaTBBQUNJSklBUXRBQXB6SVF0Qm45U2VtSHNoQUNBRUxRQUxJUWNnQkMwQUN5RU1EQUlMSUFRZ0N6b0FEU0FFSUF3NkFBd2dCQ0FKT2dBT0lBUWdCem9BRHlBR0lRQU1BUXRCLzdMbGx3VWhBQ0FFTEFBTklBUW9BZ1FRNkFJaENnd0FDd0FMQzBId2hPdjFBaUVBREFVTElBTUNmMEVBSVFRakFFRVFheUlHSUFNb0FoQXNBQUEyQWdnZ0JpQUdLQUlJUVM5S09nQU9JQVlnQmlnQ0NFRTZTRG9BRDBHTTRKU0NlaUVBQTBBQ1FDQUFRYXpjaDRoN1RBUkFJQUJCbGVyQnVuaEdCRUJCL3dFaEJFR3QzSWVJZXlFQURBTUxJQUJCak9DVWducEdEUUVnQUVHOG9PZkxla2NOQWlBR0tBSUlJZ0JCNFFCeklBQkJBWFJCdlg1eWFrRUJhaUlBUVFGMFFSUnhJQUJCQ25OcUlRUkJyZHlIaUhzaEFBd0NDeUFBUWEzY2g0aDdSd1JBSUFCQm1xWDQ2d0pIQkVBZ0FFSEE0ckRDQTBjTkF5QUdLQUlJSWdCQnp3RnlJQUJCendGeGFrRUJhaUVFUWEzY2g0aDdJUUFNQXd0QnZLRG55M3BCbGVyQnVuZ2dCaWdDQ0VIN0FFZ2JRWlhxd2JwNElBWW9BZ2hCNEFCS0d5RUFEQUlMSUFSQkdIUkJHSFVNQWd0QndPS3d3Z05CbXFYNDZ3SWdCaTBBRDBFQmNSdEJtcVg0NndJZ0JpMEFEa0VCY1JzaEFBd0FDd0FMSWdBMkFnUWdBeUFES0FJSUlnWWdBRUYvYzNFZ0FDQUdRWDl6Y1dzaUJrRitjaUFHUVg1eGFrRUJhallDS0NBRElBWVFHVFlDTENBRElBQkJBWFJCQW5FZ0FFRUJjMm9RR1RZQ01FRUFJUkFnQXlnQ0tDQURLQUlzYWtFQU9nQUFJQU1vQWdRZ0F5Z0NNR3BCQURvQUFFSCt0ZHJ2ZmlFQURBUUxJQU1nRURZQ09FR1kxNnFSQTBHQTBlZjlmQ0FES0FJb0lBTW9BamhLR3lFQURBTUxJQU1vQWl3Z0F5Z0NPR29nQXlnQ09DSUFRUUYwUVFKeUlBQkJmbk5xUVFGcUloQWdBeWdDRUdvdEFBQTZBQUJCL3JYYTczNGhBQXdDQ3lBRElBTW9BZ1EyQWpRZ0F5QUJOZ0k4UWN2d3FhSUJRZEdndVJnZ0F5Z0NOQ0FES0FJOFNoc2hBQXdCQ3lBREtBSXdJQU1vQWp4cUlBTW9BaEFnQXlnQ0NDQURLQUkwYXlJQUlBTW9BandpQVhKQkFYUWdBQ0FCYzJ0cUxRQUFPZ0FBSUFNb0FqeEJBV29oQVVHUjFZdVVleUVBREFBTEFBdHJBUVIvSUFBb0FnQXNBQUFRUlVVRVFFRUFEd3NEUUNBQUtBSUFJUU5CZnlFQklBSkJ6Sm16NWdCTkJFQkJmeUFETEFBQVFUQnJJZ1FnQWtFS2JDSUJhaUFFUWYvLy8vOEhJQUZyU2hzaEFRc2dBQ0FEUVFGcU5nSUFJQUVoQWlBRExBQUJFRVVOQUFzZ0FRdjBFZ0lSZndGK0l3QkIwQUJySWdVa0FDQUZJQUUyQWt3Z0JVRTNhaUVVSUFWQk9Hb2hFRUVBSVFFQ1FBSkFBa0FDUUFOQUlBRkIvLy8vL3djZ0MydEtEUUVnQVNBTGFpRUxJQVVvQWt3aUNpRUJBa0FDUUFKQUlBb3RBQUFpQ1FSQUEwQUNRQUpBSUFsQi93RnhJZ1pGQkVBZ0FTRUpEQUVMSUFaQkpVY05BU0FCSVFrRFFDQUJMUUFCUVNWSERRRWdCU0FCUVFKcUlnWTJBa3dnQ1VFQmFpRUpJQUV0QUFJaENDQUdJUUVnQ0VFbFJnMEFDd3NnQ1NBS2F5SUJRZi8vLy84SElBdHJJaFZLRFFjZ0FBUkFJQUFnQ2lBQkVDb0xJQUVOQmtGL0lRNUJBU0VHSUFVb0Frd3NBQUVRUlNFQklBVW9Ba3doQ0FKQUlBRkZEUUFnQ0MwQUFrRWtSdzBBSUFnc0FBRkJNR3NoRGtFQklSSkJBeUVHQ3lBRklBWWdDR29pQVRZQ1RFRUFJUXdDUUNBQkxBQUFJaEZCSUdzaUNFRWZTd1JBSUFFaEJnd0JDeUFCSVFaQkFTQUlkQ0lIUVluUkJIRkZEUUFEUUNBRklBRkJBV29pQmpZQ1RDQUhJQXh5SVF3Z0FTd0FBU0lSUVNCcklnaEJJRThOQVNBR0lRRkJBU0FJZENJSFFZblJCSEVOQUFzTEFrQWdFVUVxUmdSQUlBVUNmd0pBSUFZc0FBRVFSVVVOQUNBRktBSk1JZ0V0QUFKQkpFY05BQ0FCTEFBQlFRSjBJQVJxUWNBQmEwRUtOZ0lBSUFFc0FBRkJBM1FnQTJwQmdBTnJLQUlBSVExQkFTRVNJQUZCQTJvTUFRc2dFZzBHUVFBaEVrRUFJUTBnQUFSQUlBSWdBaWdDQUNJQlFRUnFOZ0lBSUFFb0FnQWhEUXNnQlNnQ1RFRUJhZ3NpQVRZQ1RDQU5RUUJPRFFGQkFDQU5heUVOSUF4QmdNQUFjaUVNREFFTElBVkJ6QUJxRU5zQ0lnMUJBRWdOQ0NBRktBSk1JUUVMUVFBaEJrRi9JUWNDZjBFQUlBRXRBQUJCTGtjTkFCb2dBUzBBQVVFcVJnUkFJQVVDZndKQUlBRXNBQUlRUlVVTkFDQUZLQUpNSWdFdEFBTkJKRWNOQUNBQkxBQUNRUUowSUFScVFjQUJhMEVLTmdJQUlBRXNBQUpCQTNRZ0EycEJnQU5yS0FJQUlRY2dBVUVFYWd3QkN5QVNEUVlnQUFSL0lBSWdBaWdDQUNJQlFRUnFOZ0lBSUFFb0FnQUZRUUFMSVFjZ0JTZ0NURUVDYWdzaUFUWUNUQ0FIUVg5elFSOTJEQUVMSUFVZ0FVRUJhallDVENBRlFjd0FhaERiQWlFSElBVW9Ba3doQVVFQkN5RVRBMEFnQmlFUFFSd2hDU0FCTEFBQVFjRUFhMEU1U3cwSklBVWdBVUVCYWlJUk5nSk1JQUVzQUFBaEJpQVJJUUVnQmlBUFFUcHNha0dQTG1vdEFBQWlCa0VCYTBFSVNRMEFDd0pBQWtBZ0JrRWJSd1JBSUFaRkRRc2dEa0VBVGdSQUlBUWdEa0VDZEdvZ0JqWUNBQ0FGSUFNZ0RrRURkR29wQXdBM0EwQU1BZ3NnQUVVTkNDQUZRVUJySUFZZ0FoRFpBaUFGS0FKTUlSRU1BZ3NnRGtFQVRnMEtDMEVBSVFFZ0FFVU5Cd3NnREVILy8zdHhJZ2dnRENBTVFZREFBSEViSVFaQkFDRU1RZThhSVE0Z0VDRUpBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBZ0VVRUJheXdBQUNJQlFWOXhJQUVnQVVFUGNVRURSaHNnQVNBUEd5SUJRZGdBYXc0aEJCUVVGQlFVRkJRVURoUVBCZzRPRGhRR0ZCUVVGQUlGQXhRVUNSUUJGQlFFQUFzQ1FDQUJRY0VBYXc0SERoUUxGQTRPRGdBTElBRkIwd0JHRFFrTUV3c2dCU2tEUUNFV1FlOGFEQVVMUVFBaEFRSkFBa0FDUUFKQUFrQUNRQUpBSUE5Qi93RnhEZ2dBQVFJREJCb0ZCaG9MSUFVb0FrQWdDellDQUF3WkN5QUZLQUpBSUFzMkFnQU1HQXNnQlNnQ1FDQUxyRGNEQUF3WEN5QUZLQUpBSUFzN0FRQU1GZ3NnQlNnQ1FDQUxPZ0FBREJVTElBVW9Ba0FnQ3pZQ0FBd1VDeUFGS0FKQUlBdXNOd01BREJNTElBZEJDQ0FIUVFoTEd5RUhJQVpCQ0hJaEJrSDRBQ0VCQ3lBUUlRZ2dBVUVnY1NFUElBVXBBMEFpRmxCRkJFQURRQ0FJUVFGcklnZ2dGcWRCRDNGQm9ESnFMUUFBSUE5eU9nQUFJQlpDRDFZaENpQVdRZ1NJSVJZZ0NnMEFDd3NnQ0NFS0lBWkJDSEZGSUFVcEEwQlFjZzBESUFGQkJIWkI3eHBxSVE1QkFpRU1EQU1MSUJBaEFTQUZLUU5BSWhaUVJRUkFBMEFnQVVFQmF5SUJJQmFuUVFkeFFUQnlPZ0FBSUJaQ0IxWWhDQ0FXUWdPSUlSWWdDQTBBQ3dzZ0FTRUtJQVpCQ0hGRkRRSWdCeUFRSUFwcklnRkJBV29nQVNBSFNCc2hCd3dDQ3lBRktRTkFJaFpDQUZNRVFDQUZRZ0FnRm4waUZqY0RRRUVCSVF4Qjd4b01BUXNnQmtHQUVIRUVRRUVCSVF4QjhCb01BUXRCOFJwQjd4b2dCa0VCY1NJTUd3c2hEaUFXSUJBUWp3RWhDZ3NnRTBFQUlBZEJBRWdiRFE0Z0JrSC8vM3R4SUFZZ0V4c2hCaUFGS1FOQUloWkNBRklnQjNKRkJFQWdFQ0VLUVFBaEJ3d01DeUFISUJaUUlCQWdDbXRxSWdFZ0FTQUhTQnNoQnd3TEN5QUZLQUpBSWdGQmdCOGdBUnNpQ2lJSlFRQkIvLy8vL3djZ0J5QUhRUUJJR3lJR0VOd0JJZ0VnQ1dzZ0JpQUJHeUlCSUFwcUlRa2dCMEVBVGdSQUlBZ2hCaUFCSVFjTUN3c2dDQ0VHSUFFaEJ5QUpMUUFBRFEwTUNnc2dCd1JBSUFVb0FrQU1BZ3RCQUNFQklBQkJJQ0FOUVFBZ0JoQXVEQUlMSUFWQkFEWUNEQ0FGSUFVcEEwQStBZ2dnQlNBRlFRaHFJZ0UyQWtCQmZ5RUhJQUVMSVFsQkFDRUJBa0FEUUNBSktBSUFJZ2hGRFFFZ0JVRUVhaUFJRU40Q0lncEJBRWdpQ0NBS0lBY2dBV3RMY2tVRVFDQUpRUVJxSVFrZ0J5QUJJQXBxSWdGTERRRU1BZ3NMSUFnTkRRdEJQU0VKSUFGQkFFZ05DeUFBUVNBZ0RTQUJJQVlRTGlBQlJRUkFRUUFoQVF3QkMwRUFJUWNnQlNnQ1FDRUpBMEFnQ1NnQ0FDSUlSUTBCSUFWQkJHb2dDQkRlQWlJSUlBZHFJZ2NnQVVzTkFTQUFJQVZCQkdvZ0NCQXFJQWxCQkdvaENTQUJJQWRMRFFBTEN5QUFRU0FnRFNBQklBWkJnTUFBY3hBdUlBMGdBU0FCSUExSUd5RUJEQWdMSUJOQkFDQUhRUUJJR3cwSVFUMGhDU0FBSUFVckEwQWdEU0FISUFZZ0FVRXlFUjBBSWdGQkFFNE5Cd3dKQ3lBRklBVXBBMEE4QURkQkFTRUhJQlFoQ2lBSUlRWU1CQXNnQlNBQlFRRnFJZ1kyQWt3Z0FTMEFBU0VKSUFZaEFRd0FDd0FMSUFBTkJ5QVNSUTBDUVFFaEFRTkFJQVFnQVVFQ2RHb29BZ0FpQUFSQUlBTWdBVUVEZEdvZ0FDQUNFTmtDUVFFaEN5QUJRUUZxSWdGQkNrY05BUXdKQ3d0QkFTRUxJQUZCQ2s4TkJ3TkFJQVFnQVVFQ2RHb29BZ0FOQVNBQlFRRnFJZ0ZCQ2tjTkFBc01Cd3RCSENFSkRBUUxJQWtnQ21zaUR5QUhJQWNnRDBnYklnaEIvLy8vL3djZ0RHdEtEUUpCUFNFSklBZ2dER29pQnlBTklBY2dEVW9iSWdFZ0ZVb05BeUFBUVNBZ0FTQUhJQVlRTGlBQUlBNGdEQkFxSUFCQk1DQUJJQWNnQmtHQWdBUnpFQzRnQUVFd0lBZ2dEMEVBRUM0Z0FDQUtJQThRS2lBQVFTQWdBU0FISUFaQmdNQUFjeEF1REFFTEMwRUFJUXNNQXd0QlBTRUpDMEhVZ1FFZ0NUWUNBQXRCZnlFTEN5QUZRZEFBYWlRQUlBc0xmd0lCZndGK0lBQzlJZ05DTklpblFmOFBjU0lDUWY4UFJ3UjhJQUpGQkVBZ0FTQUFSQUFBQUFBQUFBQUFZUVIvUVFBRklBQkVBQUFBQUFBQThFT2lJQUVRM1FJaEFDQUJLQUlBUVVCcUN6WUNBQ0FBRHdzZ0FTQUNRZjRIYXpZQ0FDQURRdi8vLy8vLy8vK0hnSCtEUW9DQWdJQ0FnSUR3UDRTL0JTQUFDd3NTQUNBQVJRUkFRUUFQQ3lBQUlBRVEyZ0VMSlFBZ0FFRUFSeUFBUWNndFIzRWdBRUhnTFVkeElBQkJnSWNCUjNFZ0FFR1lod0ZIY1F2b0FnRURmd0pBSUFFdEFBQU5BRUdLSGhEYkFTSUJCRUFnQVMwQUFBMEJDeUFBUVF4c1FZQXVhaERiQVNJQkJFQWdBUzBBQUEwQkMwR1JIaERiQVNJQkJFQWdBUzBBQUEwQkMwR25IaUVCQ3dKQUEwQWdBU0FDYWkwQUFDSUVSU0FFUVM5R2NrVUVRRUVYSVFRZ0FrRUJhaUlDUVJkSERRRU1BZ3NMSUFJaEJBdEJweDRoQXdKQUFrQUNRQUpBQWtBZ0FTMEFBQ0lDUVM1R0RRQWdBU0FFYWkwQUFBMEFJQUVoQXlBQ1FjTUFSdzBCQ3lBRExRQUJSUTBCQ3lBRFFhY2VFTFlCUlEwQUlBTkI4UjBRdGdFTkFRc2dBRVVFUUVHa0xTRUNJQU10QUFGQkxrWU5BZ3RCQUE4TFFRQWhBVUg4aGdFb0FnQWlBZ1JBQTBBZ0F5QUNRUWhxRUxZQlJRMENJQUlvQWlBaUFnMEFDd3RCSkJBWklnSUVRQ0FDUWFRdEtRSUFOd0lBSUFKQkNHb2lBU0FESUFRUVFob2dBU0FFYWtFQU9nQUFJQUpCL0lZQktBSUFOZ0lnUWZ5R0FTQUNOZ0lBSUFJaEFRc2dBVUdrTFNBQUlBRnlHeUVDQ3lBQ0N5OEFJQUVRN0FJaUFTQUFRZjhCY1NJQWNVRUJkQ0FBSUFGemFpSUFRUlZ5UVFGMElBQkJGWE5yUVJoMFFSaDFDNDBlQWc5L0JYNGpBRUdRQVdzaUJDUUFJQVJCQUVHUUFSQkdJZ05CZnpZQ1RDQURJQUEyQWl3Z0EwRXhOZ0lnSUFNZ0FEWUNWQ0FCSVFRZ0FpRU9Jd0JCc0FKcklnWWtBQ0FES0FKTUdnSkFBa0FDUUFKQUlBTW9BZ1FOQUNBREVPa0JHaUFES0FJRURRQU1BUXNnQkMwQUFDSUFSUTBDQWtBRFFBSkFBa0FnQUVIL0FYRVFjQVJBQTBBZ0JDSUFRUUZxSVFRZ0FDMEFBUkJ3RFFBTElBTkNBQkJUQTBBQ2Z5QURLQUlFSWdFZ0F5Z0NhRWNFUUNBRElBRkJBV28yQWdRZ0FTMEFBQXdCQ3lBREVCSUxFSEFOQUFzZ0F5Z0NCQ0VFSUFNcEEzQkNBRmtFUUNBRElBUkJBV3NpQkRZQ0JBc2dCQ0FES0FJc2E2d2dBeWtEZUNBVWZId2hGQXdCQ3dKL0FrQUNRQ0FFTFFBQVFTVkdCRUFnQkMwQUFTSUFRU3BHRFFFZ0FFRWxSdzBDQ3lBRFFnQVFVd0pBSUFRdEFBQkJKVVlFUUFOQUFuOGdBeWdDQkNJQUlBTW9BbWhIQkVBZ0F5QUFRUUZxTmdJRUlBQXRBQUFNQVFzZ0F4QVNDeUlBRUhBTkFBc2dCRUVCYWlFRURBRUxJQU1vQWdRaUFDQURLQUpvUndSQUlBTWdBRUVCYWpZQ0JDQUFMUUFBSVFBTUFRc2dBeEFTSVFBTElBUXRBQUFnQUVjRVFDQURLUU53UWdCWkJFQWdBeUFES0FJRVFRRnJOZ0lFQ3lBQVFRQk9EUXBCQUNFTUlBMUZEUWdNQ2dzZ0F5Z0NCQ0FES0FJc2E2d2dBeWtEZUNBVWZId2hGQ0FFSVFBTUF3dEJBQ0VDSUFSQkFtb01BUXNDUUNBQUVFVkZEUUFnQkMwQUFrRWtSdzBBSUFRdEFBRkJNR3NoQUNNQVFSQnJJZ0VnRGpZQ0RDQUJJQTRnQUVFQ2RFRUVhMEVBSUFCQkFVc2JhaUlBUVFScU5nSUlJQUFvQWdBaEFpQUVRUU5xREFFTElBNG9BZ0FoQWlBT1FRUnFJUTRnQkVFQmFnc2hBRUVBSVF4QkFDRUVJQUF0QUFBUVJRUkFBMEFnQUMwQUFDQUVRUXBzYWtFd2F5RUVJQUF0QUFFaEFTQUFRUUZxSVFBZ0FSQkZEUUFMQ3lBQUxRQUFJZ1ZCN1FCSEJIOGdBQVZCQUNFSklBSkJBRWNoRENBQUxRQUJJUVZCQUNFS0lBQkJBV29MSWdGQkFXb2hBRUVESVFjQ1FBSkFBa0FDUUFKQUFrQWdCVUhCQUdzT09nUUpCQWtFQkFRSkNRa0pBd2tKQ1FrSkNRUUpDUWtKQkFrSkJBa0pDUWtKQkFrRUJBUUVCQUFFQlFrQkNRUUVCQWtKQkFJRUNRa0VDUUlKQ3lBQlFRSnFJQUFnQVMwQUFVSG9BRVlpQVJzaEFFRitRWDhnQVJzaEJ3d0VDeUFCUVFKcUlBQWdBUzBBQVVIc0FFWWlBUnNoQUVFRFFRRWdBUnNoQnd3REMwRUJJUWNNQWd0QkFpRUhEQUVMUVFBaEJ5QUJJUUFMUVFFZ0J5QUFMUUFBSWdGQkwzRkJBMFlpQlJzaER3SkFJQUZCSUhJZ0FTQUZHeUlMUWRzQVJnMEFBa0FnQzBIdUFFY0VRQ0FMUWVNQVJ3MEJJQVJCQVNBRVFRRktHeUVFREFJTElBSWdEeUFVRU9NQ0RBSUxJQU5DQUJCVEEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFQklMRUhBTkFBc2dBeWdDQkNFQklBTXBBM0JDQUZrRVFDQURJQUZCQVdzaUFUWUNCQXNnQVNBREtBSXNhNndnQXlrRGVDQVVmSHdoRkFzZ0F5QUVyQ0lTRUZNQ1FDQURLQUlFSWdFZ0F5Z0NhRWNFUUNBRElBRkJBV28yQWdRTUFRc2dBeEFTUVFCSURRUUxJQU1wQTNCQ0FGa0VRQ0FESUFNb0FnUkJBV3MyQWdRTFFSQWhBUUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUxRZGdBYXc0aEJnc0xBZ3NMQ3dzTEFRc0NCQUVCQVFzRkN3c0xDd3NEQmdzTEFnc0VDd3NHQUFzZ0MwSEJBR3NpQVVFR1MwRUJJQUYwUWZFQWNVVnlEUW9MSUFaQkNHb2dBeUFQUVFBUTVnSWdBeWtEZUVJQUlBTW9BZ1FnQXlnQ0xHdXNmVkVORHlBQ1JRMEpJQVlwQXhBaEVpQUdLUU1JSVJNZ0R3NERCUVlIQ1FzZ0MwSHZBWEZCNHdCR0JFQWdCa0VnYWtGL1FZRUNFRVlhSUFaQkFEb0FJQ0FMUWZNQVJ3MElJQVpCQURvQVFTQUdRUUE2QUM0Z0JrRUFOZ0VxREFnTElBWkJJR29nQUMwQUFTSUJRZDRBUmlJRlFZRUNFRVlhSUFaQkFEb0FJQ0FBUVFKcUlBQkJBV29nQlJzaENBSi9Ba0FDUUNBQVFRSkJBU0FGRzJvdEFBQWlBRUV0UndSQUlBQkIzUUJHRFFFZ0FVSGVBRWNoQnlBSURBTUxJQVlnQVVIZUFFY2lCem9BVGd3QkN5QUdJQUZCM2dCSElnYzZBSDRMSUFoQkFXb0xJUUFEUUFKQUlBQXRBQUFpQVVFdFJ3UkFJQUZGRFE4Z0FVSGRBRWNOQVF3S0MwRXRJUUVnQUMwQUFTSUZSU0FGUWQwQVJuSU5BQ0FBUVFGcUlRZ0NRQ0FGSUFCQkFXc3RBQUFpQUUwRVFDQUZJUUVNQVFzRFFDQUFRUUZxSWdBZ0JrRWdhbW9nQnpvQUFDQUFJQWd0QUFBaUFVa05BQXNMSUFnaEFBc2dBU0FHYWlBSE9nQWhJQUJCQVdvaEFBd0FDd0FMUVFnaEFRd0NDMEVLSVFFTUFRdEJBQ0VCQzBJQUlSSkJBQ0VGUVFBaENFRUFJUWNqQUVFUWF5SVFKQUFDUUNBQlFRRkhJQUZCSkUxeFJRUkFRZFNCQVVFY05nSUFEQUVMQTBBQ2Z5QURLQUlFSWdRZ0F5Z0NhRWNFUUNBRElBUkJBV28yQWdRZ0JDMEFBQXdCQ3lBREVCSUxJZ1FRY0EwQUN3SkFBa0FnQkVFcmF3NERBQUVBQVF0QmYwRUFJQVJCTFVZYklRY2dBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFoQkF3QkN5QURFQkloQkFzQ1FBSkFBa0FDUUNBQlFXOXhJQVJCTUVkeVJRUkFBbjhnQXlnQ0JDSUVJQU1vQW1oSEJFQWdBeUFFUVFGcU5nSUVJQVF0QUFBTUFRc2dBeEFTQ3lJRVFWOXhRZGdBUmdSQVFSQWhBUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWdzaUJFR3hLV290QUFCQkVFa05BeUFES1FOd1FnQlpCRUFnQXlBREtBSUVRUUZyTmdJRUN5QURRZ0FRVXd3R0N5QUJEUUZCQ0NFQkRBSUxJQUZCQ2lBQkd5SUJJQVJCc1NscUxRQUFTdzBBSUFNcEEzQkNBRmtFUUNBRElBTW9BZ1JCQVdzMkFnUUxJQU5DQUJCVFFkU0JBVUVjTmdJQURBUUxJQUZCQ2tjTkFDQUVRVEJySWdWQkNVMEVRRUVBSVFFRFFDQUJRUXBzSUFWcUlnRkJtYlBtekFGSkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDeUlFUVRCcklnVkJDVTF4RFFBTElBR3RJUklMQWtBZ0JVRUpTdzBBSUJKQ0NuNGhFeUFGclNFVkEwQUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFQklMSWdSQk1Hc2lCVUVKU3lBVElCVjhJaEpDbXJQbXpKbXo1c3daV25JTkFTQVNRZ3ArSWhNZ0JhMGlGVUovaFZnTkFBdEJDaUVCREFJTFFRb2hBU0FGUVFsTkRRRU1BZ3NnQVNBQlFRRnJjUVJBSUFSQnNTbHFMUUFBSWdnZ0FVa0VRQU5BSUFFZ0JXd2dDR29pQlVISDQvRTRTUUovSUFNb0FnUWlCQ0FES0FKb1J3UkFJQU1nQkVFQmFqWUNCQ0FFTFFBQURBRUxJQU1RRWdzaUJFR3hLV290QUFBaUNDQUJTWEVOQUFzZ0JhMGhFZ3NnQVNBSVRRMEJJQUd0SVJNRFFDQVNJQk4rSWhVZ0NLMUMvd0dESWhaQ2Y0VldEUUlnRlNBV2ZDRVNJQUVDZnlBREtBSUVJZ1FnQXlnQ2FFY0VRQ0FESUFSQkFXbzJBZ1FnQkMwQUFBd0JDeUFERUJJTElnUkJzU2xxTFFBQUlnaE5EUUlnRUNBVFFnQWdFa0lBRUNzZ0VDa0RDRkFOQUFzTUFRc2dBVUVYYkVFRmRrRUhjVUd4SzJvc0FBQWhFU0FFUWJFcGFpMEFBQ0lGSUFGSkJFQURRQ0FJSUJGMElBVnlJZ2hCZ0lDQXdBQkpBbjhnQXlnQ0JDSUVJQU1vQW1oSEJFQWdBeUFFUVFGcU5nSUVJQVF0QUFBTUFRc2dBeEFTQ3lJRVFiRXBhaTBBQUNJRklBRkpjUTBBQ3lBSXJTRVNDeUFCSUFWTkRRQkNmeUFSclNJVGlDSVZJQkpVRFFBRFFDQUZyVUwvQVlNZ0VpQVRob1FoRWlBQkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDeUlFUWJFcGFpMEFBQ0lGVFEwQklCSWdGVmdOQUFzTElBRWdCRUd4S1dvdEFBQk5EUUFEUUNBQkFuOGdBeWdDQkNJRUlBTW9BbWhIQkVBZ0F5QUVRUUZxTmdJRUlBUXRBQUFNQVFzZ0F4QVNDMEd4S1dvdEFBQkxEUUFMUWRTQkFVSEVBRFlDQUVFQUlRZENmeUVTQ3lBREtRTndRZ0JaQkVBZ0F5QURLQUlFUVFGck5nSUVDMEVBSUJKQ2YxRWdCMEVCY2hzRVFFSFVnUUZCeEFBMkFnQkNmaUVTREFFTElCSWdCNndpRTRVZ0UzMGhFZ3NnRUVFUWFpUUFJQU1wQTNoQ0FDQURLQUlFSUFNb0FpeHJySDFSRFFvZ0FrVWdDMEh3QUVkeVJRUkFJQUlnRWo0Q0FBd0ZDeUFDSUE4Z0VoRGpBZ3dFQ3lBQ0lCTWdFaERrQWpnQ0FBd0RDeUFDSUJNZ0VoRGRBVGtEQUF3Q0N5QUNJQk0zQXdBZ0FpQVNOd01JREFFTElBUkJBV3BCSHlBTFFlTUFSaUlGR3lFSEFrQUNRQ0FQUVFGSElnaEZCRUFnQWlFQklBd0VRQ0FIUVFKMEVCa2lBVVVOQmdzZ0JrSUFOd09vQWtFQUlRUURRQ0FCSVFvRFFBSi9JQU1vQWdRaUFTQURLQUpvUndSQUlBTWdBVUVCYWpZQ0JDQUJMUUFBREFFTElBTVFFZ3NpQVNBR2FpMEFJVVVOQXlBR0lBRTZBQnNnQmtFY2FpQUdRUnRxUVFFZ0JrR29BbW9RdHdFaUFVRitSZzBBUVFBaENTQUJRWDlHRFFrZ0NnUkFJQW9nQkVFQ2RHb2dCaWdDSERZQ0FDQUVRUUZxSVFRTElBd2dCQ0FIUm5GRkRRQUxJQW9nQjBFQmRFRUJjaUlIUVFKMEVKNEJJZ0VOQUFzTUJ3c2dEQVJBUVFBaEJDQUhFQmtpQVVVTkJRTkFJQUVoQ1FOQUFuOGdBeWdDQkNJQklBTW9BbWhIQkVBZ0F5QUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0F4QVNDeUlCSUFacUxRQWhSUVJBUVFBaENnd0ZDeUFFSUFscUlBRTZBQUFnQkVFQmFpSUVJQWRIRFFBTFFRQWhDaUFKSUFkQkFYUkJBWElpQnhDZUFTSUJEUUFMREFjTFFRQWhCQ0FDQkVBRFFBSi9JQU1vQWdRaUFTQURLQUpvUndSQUlBTWdBVUVCYWpZQ0JDQUJMUUFBREFFTElBTVFFZ3NpQVNBR2FpMEFJUVJBSUFJZ0JHb2dBVG9BQUNBRVFRRnFJUVFNQVFWQkFDRUtJQUloQ1F3RUN3QUxBQXNEUUFKL0lBTW9BZ1FpQVNBREtBSm9Sd1JBSUFNZ0FVRUJhallDQkNBQkxRQUFEQUVMSUFNUUVnc2dCbW90QUNFTkFBdEJBQ0VKUVFBaENnd0JDMEVBSVFrZ0JrR29BbW9FZnlBR0tBS29BZ1ZCQUFzTkJRc2dBeWdDQkNFQklBTXBBM0JDQUZrRVFDQURJQUZCQVdzaUFUWUNCQXNnQXlrRGVDQUJJQU1vQWl4cnJId2lFMUFnQzBIakFFWWdFaUFUVW5GeURRWUNRQ0FNUlEwQUlBaEZCRUFnQWlBS05nSUFEQUVMSUFJZ0NUWUNBQXNnQlEwQUlBb0VRQ0FLSUFSQkFuUnFRUUEyQWdBTElBbEZCRUJCQUNFSkRBRUxJQVFnQ1dwQkFEb0FBQXNnQXlnQ0JDQURLQUlzYTZ3Z0F5a0RlQ0FVZkh3aEZDQU5JQUpCQUVkcUlRMExJQUJCQVdvaEJDQUFMUUFCSWdBTkFRd0ZDd3RCQUNFSlFRQWhDZ3NnRFEwQkMwRi9JUTBMSUF4RkRRQWdDUkFRSUFvUUVBc2dCa0d3QW1va0FDQU5JUUFnQTBHUUFXb2tBQ0FBQzBNQUFrQWdBRVVOQUFKQUFrQUNRQUpBSUFGQkFtb09CZ0FCQWdJRUF3UUxJQUFnQWp3QUFBOExJQUFnQWowQkFBOExJQUFnQWo0Q0FBOExJQUFnQWpjREFBc0x0QU1DQTM4QmZpTUFRU0JySWdNa0FBSkFJQUZDLy8vLy8vLy8vLy8vQUlNaUJVS0FnSUNBZ0lEQXdEOTlJQVZDZ0lDQWdJQ0F3TC9BQUgxVUJFQWdBVUlaaUtjaEJDQUFVQ0FCUXYvLy93K0RJZ1ZDZ0lDQUNGUWdCVUtBZ0lBSVVSdEZCRUFnQkVHQmdJQ0FCR29oQWd3Q0N5QUVRWUNBZ0lBRWFpRUNJQUFnQlVLQWdJQUloWVJDQUZJTkFTQUNJQVJCQVhGcUlRSU1BUXNnQUZBZ0JVS0FnSUNBZ0lEQS8vOEFWQ0FGUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FCUWhtSXAwSC8vLzhCY1VHQWdJRCtCM0loQWd3QkMwR0FnSUQ4QnlFQ0lBVkMvLy8vLy8vL3Y3L0FBRllOQUVFQUlRSWdCVUl3aUtjaUJFR1IvZ0JKRFFBZ0EwRVFhaUFBSUFGQy8vLy8vLy8vUDROQ2dJQ0FnSUNBd0FDRUlnVWdCRUdCL2dCckVDOGdBeUFBSUFWQmdmOEFJQVJyRUh3Z0F5a0RDQ0lBUWhtSXB5RUNJQU1wQXdBZ0F5a0RFQ0FES1FNWWhFSUFVcTJFSWdWUUlBQkMvLy8vRDRNaUFFS0FnSUFJVkNBQVFvQ0FnQWhSRzBVRVFDQUNRUUZxSVFJTUFRc2dCU0FBUW9DQWdBaUZoRUlBVWcwQUlBSkJBWEVnQW1vaEFnc2dBMEVnYWlRQUlBSWdBVUlnaUtkQmdJQ0FnSGh4Y3I0TGdRUUNBMzhCZmdKQUFrQUNRQUovSUFBb0FnUWlBaUFBS0FKb1J3UkFJQUFnQWtFQmFqWUNCQ0FDTFFBQURBRUxJQUFRRWdzaUEwRXJhdzREQVFBQkFBc2dBMEV3YXlFQkRBRUxJQU5CTFVZaEJBSkFJQUZGQW44Z0FDZ0NCQ0lDSUFBb0FtaEhCRUFnQUNBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQUJBU0N5SUNRVEJySWdGQkNrbHlEUUFnQUNrRGNFSUFVdzBBSUFBZ0FDZ0NCRUVCYXpZQ0JBc2dBaUVEQ3dKQUlBRkJDa2tFUUVFQUlRSURRQ0FESUFKQkNteHFJUUVDZnlBQUtBSUVJZ0lnQUNnQ2FFY0VRQ0FBSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFBRUJJTElRTWdBVUV3YXlFQ0lBSkJ6Sm16NWdCSUlBTkJNR3NpQVVFSlRYRU5BQXNnQXF3aEJRSkFJQUZCQ2s4TkFBTkFJQU90SUFWQ0NuNThRakI5SVFVQ2Z5QUFLQUlFSWdFZ0FDZ0NhRWNFUUNBQUlBRkJBV28yQWdRZ0FTMEFBQXdCQ3lBQUVCSUxJZ05CTUdzaUFVRUpTdzBCSUFWQ3JvK0YxOGZDNjZNQlV3MEFDd3NnQVVFS1NRUkFBMEFDZnlBQUtBSUVJZ0VnQUNnQ2FFY0VRQ0FBSUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFBRUJJTFFUQnJRUXBKRFFBTEN5QUFLUU53UWdCWkJFQWdBQ0FBS0FJRVFRRnJOZ0lFQzBJQUlBVjlJQVVnQkJzaEJRd0JDMEtBZ0lDQWdJQ0FnSUIvSVFVZ0FDa0RjRUlBVXcwQUlBQWdBQ2dDQkVFQmF6WUNCRUtBZ0lDQWdJQ0FnSUIvRHdzZ0JRdWdNZ01RZndkK0FYd2pBRUV3YXlJTUpBQUNRQ0FDUVFKTkJFQWdBa0VDZENJQ1Fad3BhaWdDQUNFUElBSkJrQ2xxS0FJQUlRNERRQUovSUFFb0FnUWlBaUFCS0FKb1J3UkFJQUVnQWtFQmFqWUNCQ0FDTFFBQURBRUxJQUVRRWdzaUFoQndEUUFMUVFFaEJnSkFBa0FnQWtFcmF3NERBQUVBQVF0QmYwRUJJQUpCTFVZYklRWWdBU2dDQkNJQ0lBRW9BbWhIQkVBZ0FTQUNRUUZxTmdJRUlBSXRBQUFoQWd3QkN5QUJFQkloQWdzQ1FBSkFBMEFnQlVHS0dtb3NBQUFnQWtFZ2NrWUVRQUpBSUFWQkJrc05BQ0FCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUNFQ0RBRUxJQUVRRWlFQ0N5QUZRUUZxSWdWQkNFY05BUXdDQ3dzZ0JVRURSd1JBSUFWQkNFWU5BU0FEUlNBRlFRUkpjZzBDSUFWQkNFWU5BUXNnQVNrRGNDSVVRZ0JaQkVBZ0FTQUJLQUlFUVFGck5nSUVDeUFEUlNBRlFRUkpjZzBBSUJSQ0FGTWhBZ05BSUFKRkJFQWdBU0FCS0FJRVFRRnJOZ0lFQ3lBRlFRRnJJZ1ZCQTBzTkFBc0xRZ0FoRkNNQVFSQnJJZ0lrQUFKK0lBYXlRd0FBZ0grVXZDSURRZi8vLy84SGNTSUJRWUNBZ0FSclFmLy8vL2NIVFFSQUlBR3RRaG1HUW9DQWdJQ0FnSURBUDN3TUFRc2dBNjFDR1laQ2dJQ0FnSUNBd1AvL0FJUWdBVUdBZ0lEOEIwOE5BQnBDQUNBQlJRMEFHaUFDSUFHdFFnQWdBV2NpQVVIUkFHb1FMeUFDS1FNQUlSUWdBaWtEQ0VLQWdJQ0FnSURBQUlWQmlmOEFJQUZyclVJd2hvUUxJUlVnRENBVU53TUFJQXdnRlNBRFFZQ0FnSUI0Y2ExQ0lJYUVOd01JSUFKQkVHb2tBQ0FNS1FNSUlSUWdEQ2tEQUNFVkRBSUxBa0FDUUFKQUlBVU5BRUVBSVFVRFFDQUZRY2NjYWl3QUFDQUNRU0J5UncwQkFrQWdCVUVCU3cwQUlBRW9BZ1FpQWlBQktBSm9Sd1JBSUFFZ0FrRUJhallDQkNBQ0xRQUFJUUlNQVFzZ0FSQVNJUUlMSUFWQkFXb2lCVUVEUncwQUN3d0JDd0pBQWtBZ0JRNEVBQUVCQWdFTEFrQWdBa0V3UncwQUFuOGdBU2dDQkNJRklBRW9BbWhIQkVBZ0FTQUZRUUZxTmdJRUlBVXRBQUFNQVFzZ0FSQVNDMEZmY1VIWUFFWUVRQ01BUWJBRGF5SUNKQUFDZnlBQktBSUVJZ1VnQVNnQ2FFY0VRQ0FCSUFWQkFXbzJBZ1FnQlMwQUFBd0JDeUFCRUJJTElRVUNRQUovQTBBZ0JVRXdSd1JBQWtBZ0JVRXVSdzBFSUFFb0FnUWlCU0FCS0FKb1JnMEFJQUVnQlVFQmFqWUNCQ0FGTFFBQURBTUxCU0FCS0FJRUlnVWdBU2dDYUVjRWYwRUJJUW9nQVNBRlFRRnFOZ0lFSUFVdEFBQUZRUUVoQ2lBQkVCSUxJUVVNQVFzTElBRVFFZ3NoQlVFQklRUWdCVUV3UncwQUEwQWdGMElCZlNFWEFuOGdBU2dDQkNJRklBRW9BbWhIQkVBZ0FTQUZRUUZxTmdJRUlBVXRBQUFNQVFzZ0FSQVNDeUlGUVRCR0RRQUxRUUVoQ2d0Q2dJQ0FnSUNBd1A4L0lSVUNRQU5BQWtBZ0JVRWdjaUVMQWtBQ1FDQUZRVEJySWdoQkNra05BQ0FGUVM1SElBdEI0UUJyUVFaUGNRMEVJQVZCTGtjTkFDQUVEUUpCQVNFRUlCUWhGd3dCQ3lBTFFkY0FheUFJSUFWQk9Vb2JJUVVDUUNBVVFnZFhCRUFnQlNBSlFRUjBhaUVKREFFTElCUkNIRmNFUUNBQ1FUQnFJQVVRUVNBQ1FTQnFJQmtnRlVJQVFvQ0FnSUNBZ01EOVB4QVlJQUpCRUdvZ0Fpa0RJQ0laSUFJcEF5Z2lGU0FDS1FNd0lBSXBBemdRR0NBQ0lCWWdHQ0FDS1FNUUlBSXBBeGdRUENBQ0tRTUlJUmdnQWlrREFDRVdEQUVMSUFWRklBZHlEUUFnQWtIUUFHb2dHU0FWUWdCQ2dJQ0FnSUNBZ1A4L0VCZ2dBa0ZBYXlBV0lCZ2dBaWtEVUNBQ0tRTllFRHdnQWlrRFNDRVlRUUVoQnlBQ0tRTkFJUllMSUJSQ0FYd2hGRUVCSVFvTElBRW9BZ1FpQlNBQktBSm9Sd1IvSUFFZ0JVRUJhallDQkNBRkxRQUFCU0FCRUJJTElRVU1BUXNMUVM0aEJRc0NmaUFLUlFSQUFrQUNRQ0FCS1FOd1FnQlpCRUFnQVNBQktBSUVJZ1ZCQVdzMkFnUWdBMFVOQVNBQklBVkJBbXMyQWdRZ0JFVU5BaUFCSUFWQkEyczJBZ1FNQWdzZ0F3MEJDeUFCUWdBUVV3c2dBa0hnQUdvZ0JyZEVBQUFBQUFBQUFBQ2lFRjBnQWlrRFlDRVdJQUlwQTJnTUFRc2dGRUlIVndSQUlCUWhGUU5BSUFsQkJIUWhDU0FWUWdGOEloVkNDRklOQUFzTEFrQUNRQUpBSUFWQlgzRkIwQUJHQkVBZ0FTQURFT1VDSWhWQ2dJQ0FnSUNBZ0lDQWYxSU5BeUFEQkVBZ0FTa0RjRUlBV1EwQ0RBTUxRZ0FoRmlBQlFnQVFVMElBREFRTFFnQWhGU0FCS1FOd1FnQlREUUlMSUFFZ0FTZ0NCRUVCYXpZQ0JBdENBQ0VWQ3lBSlJRUkFJQUpCOEFCcUlBYTNSQUFBQUFBQUFBQUFvaEJkSUFJcEEzQWhGaUFDS1FONERBRUxJQmNnRkNBRUcwSUNoaUFWZkVJZ2ZTSVVRUUFnRDJ1dFZRUkFRZFNCQVVIRUFEWUNBQ0FDUWFBQmFpQUdFRUVnQWtHUUFXb2dBaWtEb0FFZ0Fpa0RxQUZDZjBMLy8vLy8vLysvLy84QUVCZ2dBa0dBQVdvZ0Fpa0RrQUVnQWlrRG1BRkNmMEwvLy8vLy8vKy8vLzhBRUJnZ0Fpa0RnQUVoRmlBQ0tRT0lBUXdCQ3lBUFFlSUJhNndnRkZjRVFDQUpRUUJPQkVBRFFDQUNRYUFEYWlBV0lCaENBRUtBZ0lDQWdJREEvNzkvRUR3Z0ZpQVlRb0NBZ0lDQWdJRC9QeERnQVNFQklBSkJrQU5xSUJZZ0dDQVdJQUlwQTZBRElBRkJBRWdpQXhzZ0dDQUNLUU9vQXlBREd4QThJQlJDQVgwaEZDQUNLUU9ZQXlFWUlBSXBBNUFESVJZZ0NVRUJkQ0FCUVFCT2NpSUpRUUJPRFFBTEN3SitJQlFnRDZ4OVFpQjhJaFduSWdGQkFDQUJRUUJLR3lBT0lCVWdEcTFUR3lJQlFmRUFUZ1JBSUFKQmdBTnFJQVlRUVNBQ0tRT0lBeUVYSUFJcEE0QURJUmxDQUF3QkN5QUNRZUFDYWtHUUFTQUJheERmQVJCZElBSkIwQUpxSUFZUVFTQUNRZkFDYWlBQ0tRUGdBaUFDS1FQb0FpQUNLUVBRQWlJWklBSXBBOWdDSWhjUTZ3SWdBaWtEK0FJaEdpQUNLUVB3QWdzaEZTQUNRY0FDYWlBSklBbEJBWEZGSUJZZ0dFSUFRZ0FRZTBFQVJ5QUJRU0JJY1hFaUFXb1FrQUVnQWtHd0Ftb2dHU0FYSUFJcEE4QUNJQUlwQThnQ0VCZ2dBa0dRQW1vZ0Fpa0RzQUlnQWlrRHVBSWdGU0FhRUR3Z0FrR2dBbXBDQUNBV0lBRWJRZ0FnR0NBQkd5QVpJQmNRR0NBQ1FZQUNhaUFDS1FPZ0FpQUNLUU9vQWlBQ0tRT1FBaUFDS1FPWUFoQThJQUpCOEFGcUlBSXBBNEFDSUFJcEE0Z0NJQlVnR2hEZUFTQUNLUVB3QVNJVklBSXBBL2dCSWhkQ0FFSUFFSHRGQkVCQjFJRUJRY1FBTmdJQUN5QUNRZUFCYWlBVklCY2dGS2NRNmdJZ0Fpa0Q0QUVoRmlBQ0tRUG9BUXdCQzBIVWdRRkJ4QUEyQWdBZ0FrSFFBV29nQmhCQklBSkJ3QUZxSUFJcEE5QUJJQUlwQTlnQlFnQkNnSUNBZ0lDQXdBQVFHQ0FDUWJBQmFpQUNLUVBBQVNBQ0tRUElBVUlBUW9DQWdJQ0FnTUFBRUJnZ0Fpa0RzQUVoRmlBQ0tRTzRBUXNoRkNBTUlCWTNBeEFnRENBVU53TVlJQUpCc0FOcUpBQWdEQ2tER0NFVUlBd3BBeEFoRlF3R0N5QUJLUU53UWdCVERRQWdBU0FCS0FJRVFRRnJOZ0lFQ3lBQklRVWdCaUVKSUFNaENrRUFJUVpCQUNFREl3QkJrTVlBYXlJRUpBQkJBQ0FPSUE5cUloSnJJUk1DUUFKL0EwQWdBa0V3UndSQUFrQWdBa0V1UncwRUlBVW9BZ1FpQVNBRktBSm9SZzBBSUFVZ0FVRUJhallDQkNBQkxRQUFEQU1MQlNBRktBSUVJZ0VnQlNnQ2FFY0VmMEVCSVFZZ0JTQUJRUUZxTmdJRUlBRXRBQUFGUVFFaEJpQUZFQklMSVFJTUFRc0xJQVVRRWdzaEFrRUJJUWNnQWtFd1J3MEFBMEFnRkVJQmZTRVVBbjhnQlNnQ0JDSUJJQVVvQW1oSEJFQWdCU0FCUVFGcU5nSUVJQUV0QUFBTUFRc2dCUkFTQ3lJQ1FUQkdEUUFMUVFFaEJnc2dCRUVBTmdLUUJnSitBa0FDUUFKQUFrQUNRQ0FDUVM1R0lnRkZJQUpCTUdzaUNFRUpTM0ZGQkVBRFFBSkFJQUZCQVhFRVFDQUhSUVJBSUJVaEZFRUJJUWNNQWdzZ0JrVWhBUXdFQ3lBVlFnRjhJUlVnQTBIOEQwd0VRQ0FOSUJXbklBSkJNRVliSVEwZ0JFR1FCbW9nQTBFQ2RHb2lBU0FMQkg4Z0FpQUJLQUlBUVFwc2FrRXdhd1VnQ0FzMkFnQkJBU0VHUVFBZ0MwRUJhaUlCSUFGQkNVWWlBUnNoQ3lBQklBTnFJUU1NQVFzZ0FrRXdSZzBBSUFRZ0JDZ0NnRVpCQVhJMkFvQkdRZHlQQVNFTkN3Si9JQVVvQWdRaUFTQUZLQUpvUndSQUlBVWdBVUVCYWpZQ0JDQUJMUUFBREFFTElBVVFFZ3NpQWtFdVJpSUJJQUpCTUdzaUNFRUtTWElOQUFzTElCUWdGU0FIR3lFVUlBWkZJQUpCWDNGQnhRQkhja1VFUUFKQUlBVWdDaERsQWlJV1FvQ0FnSUNBZ0lDQWdIOVNEUUFnQ2tVTkJVSUFJUllnQlNrRGNFSUFVdzBBSUFVZ0JTZ0NCRUVCYXpZQ0JBc2dCa1VOQXlBVUlCWjhJUlFNQlFzZ0JrVWhBU0FDUVFCSURRRUxJQVVwQTNCQ0FGTU5BQ0FGSUFVb0FnUkJBV3MyQWdRTElBRkZEUUlMUWRTQkFVRWNOZ0lBQzBJQUlSVWdCVUlBRUZOQ0FBd0JDeUFFS0FLUUJpSUJSUVJBSUFRZ0NiZEVBQUFBQUFBQUFBQ2lFRjBnQkNrREFDRVZJQVFwQXdnTUFRc2dGQ0FWVWlBVlFnbFZjaUFPUVI1TVFRQWdBU0FPZGh0eVJRUkFJQVJCTUdvZ0NSQkJJQVJCSUdvZ0FSQ1FBU0FFUVJCcUlBUXBBekFnQkNrRE9DQUVLUU1nSUFRcEF5Z1FHQ0FFS1FNUUlSVWdCQ2tER0F3QkN5QVBRWDV0clNBVVV3UkFRZFNCQVVIRUFEWUNBQ0FFUWVBQWFpQUpFRUVnQkVIUUFHb2dCQ2tEWUNBRUtRTm9RbjlDLy8vLy8vLy92Ly8vQUJBWUlBUkJRR3NnQkNrRFVDQUVLUU5ZUW45Qy8vLy8vLy8vdi8vL0FCQVlJQVFwQTBBaEZTQUVLUU5JREFFTElBOUI0Z0ZyckNBVVZRUkFRZFNCQVVIRUFEWUNBQ0FFUVpBQmFpQUpFRUVnQkVHQUFXb2dCQ2tEa0FFZ0JDa0RtQUZDQUVLQWdJQ0FnSURBQUJBWUlBUkI4QUJxSUFRcEE0QUJJQVFwQTRnQlFnQkNnSUNBZ0lDQXdBQVFHQ0FFS1FOd0lSVWdCQ2tEZUF3QkN5QUxCRUFnQzBFSVRBUkFJQVJCa0FacUlBTkJBblJxSWdFb0FnQWhCUU5BSUFWQkNtd2hCU0FMUVFGcUlndEJDVWNOQUFzZ0FTQUZOZ0lBQ3lBRFFRRnFJUU1MQWtBZ0RTQVVweUlIU2lBTlFRbE9jaUFIUVJGS2NnMEFJQWRCQ1VZRVFDQUVRY0FCYWlBSkVFRWdCRUd3QVdvZ0JDZ0NrQVlRa0FFZ0JFR2dBV29nQkNrRHdBRWdCQ2tEeUFFZ0JDa0RzQUVnQkNrRHVBRVFHQ0FFS1FPZ0FTRVZJQVFwQTZnQkRBSUxJQWRCQ0V3RVFDQUVRWkFDYWlBSkVFRWdCRUdBQW1vZ0JDZ0NrQVlRa0FFZ0JFSHdBV29nQkNrRGtBSWdCQ2tEbUFJZ0JDa0RnQUlnQkNrRGlBSVFHQ0FFUWVBQmFrRUFJQWRyUVFKMFFaQXBhaWdDQUJCQklBUkIwQUZxSUFRcEEvQUJJQVFwQS9nQklBUXBBK0FCSUFRcEErZ0JFT2tDSUFRcEE5QUJJUlVnQkNrRDJBRU1BZ3NnRGlBSFFYMXNha0ViYWlJQlFSNU1RUUFnQkNnQ2tBWWlBaUFCZGhzTkFDQUVRZUFDYWlBSkVFRWdCRUhRQW1vZ0FoQ1FBU0FFUWNBQ2FpQUVLUVBnQWlBRUtRUG9BaUFFS1FQUUFpQUVLUVBZQWhBWUlBUkJzQUpxSUFkQkFuUkJ5Q2hxS0FJQUVFRWdCRUdnQW1vZ0JDa0R3QUlnQkNrRHlBSWdCQ2tEc0FJZ0JDa0R1QUlRR0NBRUtRT2dBaUVWSUFRcEE2Z0NEQUVMQTBBZ0JFR1FCbW9nQXlJQ1FRRnJJZ05CQW5ScUtBSUFSUTBBQzBFQUlRc0NRQ0FIUVFsdklnRkZCRUJCQUNFQkRBRUxJQUVnQVVFSmFpQUhRUUJPR3lFREFrQWdBa1VFUUVFQUlRRkJBQ0VDREFFTFFZQ1U2OXdEUVFBZ0EydEJBblJCa0NscUtBSUFJZ1p0SVFwQkFDRUlRUUFoQlVFQUlRRURRQ0FFUVpBR2FpQUZRUUowYWlJTklBZ2dEU2dDQUNJTklBWnVJaEJxSWdnMkFnQWdBVUVCYWtIL0QzRWdBU0FJUlNBQklBVkdjU0lJR3lFQklBZEJDV3NnQnlBSUd5RUhJQW9nRFNBR0lCQnNhMndoQ0NBRlFRRnFJZ1VnQWtjTkFBc2dDRVVOQUNBRVFaQUdhaUFDUVFKMGFpQUlOZ0lBSUFKQkFXb2hBZ3NnQnlBRGEwRUphaUVIQ3dOQUFrQWdCMEVrVGdSQUlBZEJKRWNOQVNBRVFaQUdhaUFCUVFKMGFpZ0NBRUhSNmZrRVR3MEJDeUFDUWY4UGFpRUdRUUFoQ0FOQUlBaXRJQVJCa0FacUlBWkIvdzl4SWdOQkFuUnFJZ1kxQWdCQ0hZWjhJaFJDZ1pUcjNBTlVCSDlCQUFVZ0ZDQVVRb0NVNjl3RGdDSVZRb0NVNjl3RGZuMGhGQ0FWcHdzaENDQUdJQlNuSWdZMkFnQWdBaUFDSUFJZ0F5QUdHeUFCSUFOR0d5QURJQUpCQVd0Qi93OXhSeHNoQWlBRFFRRnJJUVlnQVNBRFJ3MEFDeUFMUVIxcklRc2dDRVVOQVNBQ0lBRkJBV3RCL3c5eElnRkdCRUFnQkVHUUJtb2lBeUFDUWY0UGFrSC9EM0ZCQW5ScUlnWWdCaWdDQUNBQ1FRRnJRZjhQY1NJQ1FRSjBJQU5xS0FJQWNqWUNBQXNnQjBFSmFpRUhJQVJCa0FacUlBRkJBblJxSUFnMkFnQU1BUXNMQWtBRFFDQUNRUUZxUWY4UGNTRURJQVJCa0FacUlBSkJBV3RCL3c5eFFRSjBhaUVJQTBBZ0FTRUdRUUFoQlFKQUFrQURRQUpBSUFVZ0JtcEIvdzl4SWdFZ0FrWU5BQ0FFUVpBR2FpQUJRUUowYWlnQ0FDSUJJQVZCQW5SQjRDaHFLQUlBSWdwSkRRQWdBU0FLU3cwQ0lBVkJBV29pQlVFRVJ3MEJDd3NnQjBFa1J3MEFRZ0FoRkVFQUlRVkNBQ0VWQTBBZ0FpQUZJQVpxUWY4UGNTSUJSZ1JBSUFKQkFXcEIvdzl4SWdKQkFuUWdCR3BCQURZQ2pBWUxJQVJCZ0FacUlCUWdGVUlBUW9DQWdJRGxtcmVPd0FBUUdDQUVRZkFGYWlBRVFaQUdhaUFCUVFKMGFpZ0NBQkNRQVNBRVFlQUZhaUFFS1FPQUJpQUVLUU9JQmlBRUtRUHdCU0FFS1FQNEJSQThJQVFwQStnRklSVWdCQ2tENEFVaEZDQUZRUUZxSWdWQkJFY05BQXNnQkVIUUJXb2dDUkJCSUFSQndBVnFJQlFnRlNBRUtRUFFCU0FFS1FQWUJSQVlJQVFwQThnRklSVkNBQ0VVSUFRcEE4QUZJUllnQzBIeEFHb2lCeUFQYXlJRFFRQWdBMEVBU2hzZ0RpQURJQTVJSWdVYklnRkI4QUJNRFFFTUJBdEJDVUVCSUFkQkxVb2JJZ29nQzJvaEN5QUdJQUlpQVVZTkFVR0FsT3ZjQXlBS2RpRU5RWDhnQ25SQmYzTWhFRUVBSVFVZ0JpRUJBMEFnQkVHUUJtb2dCa0VDZEdvaUVTQUZJQkVvQWdBaUVTQUtkbW9pQlRZQ0FDQUJRUUZxUWY4UGNTQUJJQVZGSUFFZ0JrWnhJZ1ViSVFFZ0IwRUpheUFISUFVYklRY2dFQ0FSY1NBTmJDRUZJQVpCQVdwQi93OXhJZ1lnQWtjTkFBc2dCVVVOQVNBQklBTkhCRUFnQkVHUUJtb2dBa0VDZEdvZ0JUWUNBQ0FESVFJTUF3c2dDQ0FJS0FJQVFRRnlOZ0lBSUFNaEFRd0JDd3NMSUFSQmtBVnFRZUVCSUFGckVOOEJFRjBnQkVHd0JXb2dCQ2tEa0FVZ0JDa0RtQVVnRmlBVkVPc0NJQVFwQTdnRklSa2dCQ2tEc0FVaEdDQUVRWUFGYWtIeEFDQUJheERmQVJCZElBUkJvQVZxSUJZZ0ZTQUVLUU9BQlNBRUtRT0lCUkRuQWlBRVFmQUVhaUFXSUJVZ0JDa0RvQVVpRkNBRUtRT29CU0lYRU40QklBUkI0QVJxSUJnZ0dTQUVLUVB3QkNBRUtRUDRCQkE4SUFRcEErZ0VJUlVnQkNrRDRBUWhGZ3NDUUNBR1FRUnFRZjhQY1NJS0lBSkdEUUFDUUNBRVFaQUdhaUFLUVFKMGFpZ0NBQ0lLUWYvSnRlNEJUUVJBSUFwRklBWkJCV3BCL3c5eElBSkdjUTBCSUFSQjhBTnFJQW0zUkFBQUFBQUFBTkEvb2hCZElBUkI0QU5xSUJRZ0Z5QUVLUVB3QXlBRUtRUDRBeEE4SUFRcEErZ0RJUmNnQkNrRDRBTWhGQXdCQ3lBS1FZREt0ZTRCUndSQUlBUkIwQVJxSUFtM1JBQUFBQUFBQU9nL29oQmRJQVJCd0FScUlCUWdGeUFFS1FQUUJDQUVLUVBZQkJBOElBUXBBOGdFSVJjZ0JDa0R3QVFoRkF3QkN5QUp0eUViSUFJZ0JrRUZha0gvRDNGR0JFQWdCRUdRQkdvZ0cwUUFBQUFBQUFEZ1A2SVFYU0FFUVlBRWFpQVVJQmNnQkNrRGtBUWdCQ2tEbUFRUVBDQUVLUU9JQkNFWElBUXBBNEFFSVJRTUFRc2dCRUd3QkdvZ0cwUUFBQUFBQUFEb1A2SVFYU0FFUWFBRWFpQVVJQmNnQkNrRHNBUWdCQ2tEdUFRUVBDQUVLUU9vQkNFWElBUXBBNkFFSVJRTElBRkI3d0JLRFFBZ0JFSFFBMm9nRkNBWFFnQkNnSUNBZ0lDQXdQOC9FT2NDSUFRcEE5QURJQVFwQTlnRFFnQkNBQkI3RFFBZ0JFSEFBMm9nRkNBWFFnQkNnSUNBZ0lDQXdQOC9FRHdnQkNrRHlBTWhGeUFFS1FQQUF5RVVDeUFFUWJBRGFpQVdJQlVnRkNBWEVEd2dCRUdnQTJvZ0JDa0RzQU1nQkNrRHVBTWdHQ0FaRU40QklBUXBBNmdESVJVZ0JDa0RvQU1oRmdKQVFYNGdFbXNnQjBILy8vLy9CM0ZPRFFBZ0JDQVZRdi8vLy8vLy8vLy8vd0NETndPWUF5QUVJQlkzQTVBRElBUkJnQU5xSUJZZ0ZVSUFRb0NBZ0lDQWdJRC9QeEFZSUFRcEE1QURJaGdnQkNrRG1BTWlHVUtBZ0lDQWdJQ0F1TUFBRU9BQklRSWdGU0FFS1FPSUF5QUNRUUJJSWdZYklSVWdGaUFFS1FPQUF5QUdHeUVXSUJNZ0N5QUNRUUJPYWlJTFFlNEFhazRFUUNBRklBVWdBU0FEUjNFZ0dDQVpRb0NBZ0lDQWdJQzR3QUFRNEFGQkFFZ2JRUUZIRFFFZ0ZDQVhRZ0JDQUJCN1JRMEJDMEhVZ1FGQnhBQTJBZ0FMSUFSQjhBSnFJQllnRlNBTEVPb0NJQVFwQS9BQ0lSVWdCQ2tEK0FJTElSUWdEQ0FWTndNZ0lBd2dGRGNES0NBRVFaREdBR29rQUNBTUtRTW9JUlFnRENrRElDRVZEQVFMSUFFcEEzQkNBRmtFUUNBQklBRW9BZ1JCQVdzMkFnUUxEQUVMQWtBQ2Z5QUJLQUlFSWdJZ0FTZ0NhRWNFUUNBQklBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQkVCSUxRU2hHQkVCQkFTRUZEQUVMUW9DQWdJQ0FnT0QvL3dBaEZDQUJLUU53UWdCVERRTWdBU0FCS0FJRVFRRnJOZ0lFREFNTEEwQUNmeUFCS0FJRUlnSWdBU2dDYUVjRVFDQUJJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QUJFQklMSWdKQk1HdEJDa2tnQWtIQkFHdEJHa2x5SUFKQjN3Qkdja1VnQWtIaEFHdEJHazl4UlFSQUlBVkJBV29oQlF3QkN3dENnSUNBZ0lDQTRQLy9BQ0VVSUFKQktVWU5BaUFCS1FOd0loZENBRmtFUUNBQklBRW9BZ1JCQVdzMkFnUUxBa0FnQXdSQUlBVU5BUXdFQ3d3QkN3TkFJQVZCQVdzaEJTQVhRZ0JaQkVBZ0FTQUJLQUlFUVFGck5nSUVDeUFGRFFBTERBSUxRZFNCQVVFY05nSUFJQUZDQUJCVEMwSUFJUlFMSUFBZ0ZUY0RBQ0FBSUJRM0F3Z2dERUV3YWlRQUM4b0dBZ1IvQTM0akFFR0FBV3NpQlNRQUFrQUNRQUpBSUFNZ0JFSUFRZ0FRZTBVTkFBSi9JQVJDLy8vLy8vLy9QNE1oQ1FKL0lBUkNNSWluUWYvL0FYRWlCa0gvL3dGSEJFQkJCQ0FHRFFFYVFRSkJBeUFESUFtRVVCc01BZ3NnQXlBSmhGQUxDMFVOQUNBQ1FqQ0lweUlJUWYvL0FYRWlCa0gvL3dGSERRRUxJQVZCRUdvZ0FTQUNJQU1nQkJBWUlBVWdCU2tERUNJQklBVXBBeGdpQWlBQklBSVE2UUlnQlNrRENDRUNJQVVwQXdBaEJBd0JDeUFCSUFKQy8vLy8vLy8vUDRNZ0JxMUNNSWFFSWdvZ0F5QUVRdi8vLy8vLy96K0RJQVJDTUlpblFmLy9BWEVpQjYxQ01JYUVJZ2tRZTBFQVRBUkFJQUVnQ2lBRElBa1Fld1JBSUFFaEJBd0NDeUFGUWZBQWFpQUJJQUpDQUVJQUVCZ2dCU2tEZUNFQ0lBVXBBM0FoQkF3QkN5QUdCSDRnQVFVZ0JVSGdBR29nQVNBS1FnQkNnSUNBZ0lDQXdMdkFBQkFZSUFVcEEyZ2lDa0l3aUtkQitBQnJJUVlnQlNrRFlBc2hCQ0FIUlFSQUlBVkIwQUJxSUFNZ0NVSUFRb0NBZ0lDQWdNQzd3QUFRR0NBRktRTllJZ2xDTUlpblFmZ0FheUVISUFVcEExQWhBd3NnQ1VMLy8vLy8vLzgvZzBLQWdJQ0FnSURBQUlRaENTQUtRdi8vLy8vLy96K0RRb0NBZ0lDQWdNQUFoQ0VLSUFZZ0Iwb0VRQU5BQW40Z0NpQUpmU0FESUFSV3JYMGlDMElBV1FSQUlBc2dCQ0FEZlNJRWhGQUVRQ0FGUVNCcUlBRWdBa0lBUWdBUUdDQUZLUU1vSVFJZ0JTa0RJQ0VFREFVTElBdENBWVlnQkVJL2lJUU1BUXNnQ2tJQmhpQUVRaitJaEFzaENpQUVRZ0dHSVFRZ0JrRUJheUlHSUFkS0RRQUxJQWNoQmdzQ1FDQUtJQWw5SUFNZ0JGYXRmU0lKUWdCVEJFQWdDaUVKREFFTElBa2dCQ0FEZlNJRWhFSUFVZzBBSUFWQk1Hb2dBU0FDUWdCQ0FCQVlJQVVwQXpnaEFpQUZLUU13SVFRTUFRc2dDVUwvLy8vLy8vOC9XQVJBQTBBZ0JFSS9pQ0VCSUFaQkFXc2hCaUFFUWdHR0lRUWdBU0FKUWdHR2hDSUpRb0NBZ0lDQWdNQUFWQTBBQ3dzZ0NFR0FnQUp4SVFjZ0JrRUFUQVJBSUFWQlFHc2dCQ0FKUXYvLy8vLy8veitESUFaQitBQnFJQWR5clVJd2hvUkNBRUtBZ0lDQWdJREF3ejhRR0NBRktRTklJUUlnQlNrRFFDRUVEQUVMSUFsQy8vLy8vLy8vUDRNZ0JpQUhjcTFDTUlhRUlRSUxJQUFnQkRjREFDQUFJQUkzQXdnZ0JVR0FBV29rQUFzeUFDQUFRZjhCY1NJQUlBRVE3QUlpQVVGL2MzRkJBWFFnQUNBQmMyc2lBRUZxY1VFQmRDQUFRUlZ6YTBFWWRFRVlkUXVxRHdJRmZ3NStJd0JCMEFKcklnVWtBQ0FFUXYvLy8vLy8veitESVFzZ0FrTC8vLy8vLy84L2d5RUtJQUlnQklWQ2dJQ0FnSUNBZ0lDQWY0TWhEU0FFUWpDSXAwSC8vd0Z4SVFnQ1FBSkFJQUpDTUlpblFmLy9BWEVpQ1VFQmEwSDkvd0ZOQkVBZ0NFRUJhMEgrL3dGSkRRRUxJQUZRSUFKQy8vLy8vLy8vLy8vL0FJTWlERUtBZ0lDQWdJREEvLzhBVkNBTVFvQ0FnSUNBZ01ELy93QlJHMFVFUUNBQ1FvQ0FnSUNBZ0NDRUlRME1BZ3NnQTFBZ0JFTC8vLy8vLy8vLy8vOEFneUlDUW9DQWdJQ0FnTUQvL3dCVUlBSkNnSUNBZ0lDQXdQLy9BRkViUlFSQUlBUkNnSUNBZ0lDQUlJUWhEU0FESVFFTUFnc2dBU0FNUW9DQWdJQ0FnTUQvL3dDRmhGQUVRQ0FESUFKQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUWdBaEFVS0FnSUNBZ0lEZy8vOEFJUTBNQXdzZ0RVS0FnSUNBZ0lEQS8vOEFoQ0VOUWdBaEFRd0NDeUFESUFKQ2dJQ0FnSUNBd1AvL0FJV0VVQVJBUWdBaEFRd0NDeUFCSUF5RVVBUkFRb0NBZ0lDQWdPRC8vd0FnRFNBQ0lBT0VVQnNoRFVJQUlRRU1BZ3NnQWlBRGhGQUVRQ0FOUW9DQWdJQ0FnTUQvL3dDRUlRMUNBQ0VCREFJTElBeEMvLy8vLy8vL1AxZ0VRQ0FGUWNBQ2FpQUJJQW9nQVNBS0lBcFFJZ1liZVNBR1FRWjByWHluSWdaQkQyc1FMMEVRSUFacklRWWdCU2tEeUFJaENpQUZLUVBBQWlFQkN5QUNRdi8vLy8vLy96OVdEUUFnQlVHd0Ftb2dBeUFMSUFNZ0N5QUxVQ0lIRzNrZ0IwRUdkSzE4cHlJSFFROXJFQzhnQmlBSGFrRVFheUVHSUFVcEE3Z0NJUXNnQlNrRHNBSWhBd3NnQlVHZ0Ftb2dDMEtBZ0lDQWdJREFBSVFpRWtJUGhpQURRakdJaENJQ1FnQkNnSUNBZ0xEbXZJTDFBQ0FDZlNJRVFnQVFLeUFGUVpBQ2FrSUFJQVVwQTZnQ2ZVSUFJQVJDQUJBcklBVkJnQUpxSUFVcEE1Z0NRZ0dHSUFVcEE1QUNRaitJaENJRVFnQWdBa0lBRUNzZ0JVSHdBV29nQkVJQVFnQWdCU2tEaUFKOVFnQVFLeUFGUWVBQmFpQUZLUVA0QVVJQmhpQUZLUVB3QVVJL2lJUWlCRUlBSUFKQ0FCQXJJQVZCMEFGcUlBUkNBRUlBSUFVcEErZ0JmVUlBRUNzZ0JVSEFBV29nQlNrRDJBRkNBWVlnQlNrRDBBRkNQNGlFSWdSQ0FDQUNRZ0FRS3lBRlFiQUJhaUFFUWdCQ0FDQUZLUVBJQVgxQ0FCQXJJQVZCb0FGcUlBSkNBQ0FGS1FPNEFVSUJoaUFGS1FPd0FVSS9pSVJDQVgwaUFrSUFFQ3NnQlVHUUFXb2dBMElQaGtJQUlBSkNBQkFySUFWQjhBQnFJQUpDQUVJQUlBVXBBNmdCSUFVcEE2QUJJZ3dnQlNrRG1BRjhJZ1FnREZTdGZDQUVRZ0ZXclh4OVFnQVFLeUFGUVlBQmFrSUJJQVI5UWdBZ0FrSUFFQ3NnQmlBSklBaHJhaUVHQW44Z0JTa0RjQ0lUUWdHR0lnNGdCU2tEaUFFaUQwSUJoaUFGS1FPQUFVSS9pSVI4SWhCQzUrd0FmU0lVUWlDSUlnSWdDa0tBZ0lDQWdJREFBSVFpRlVJZmlFTC8vLy8vRDRNaUJINGlFU0FCUWdHR0lneENJSWdpQ3lBUUlCUldyU0FPSUJCV3JTQUZLUU40UWdHR0lCTkNQNGlFSUE5Q1A0aDhmSHhDQVgwaUUwSWdpQ0lRZm53aURpQVJWSzBnRGlBT0lCTkMvLy8vL3crREloTWdBVUkvaUNJV0lBcENBWWFFUXYvLy8vOFBneUlLZm53aURsYXRmQ0FFSUJCK2ZDQUVJQk4rSWhFZ0NpQVFmbndpRHlBUlZLMUNJSVlnRDBJZ2lJUjhJQTRnRGlBUFFpQ0dmQ0lPVnExOElBNGdEaUFVUXYvLy8vOFBneUlVSUFwK0loRWdBaUFMZm53aUR5QVJWSzBnRHlBUElCTWdERUwrLy8vL0Q0TWlFWDU4SWc5V3JYeDhJZzVXclh3Z0RpQUVJQlIrSWhjZ0VDQVJmbndpQkNBQ0lBcCtmQ0lLSUFzZ0UzNThJaEJDSUlnZ0NpQVFWcTBnQkNBWFZLMGdCQ0FLVnExOGZFSWdob1I4SWdRZ0RsU3RmQ0FFSUE4Z0FpQVJmaUlDSUFzZ0ZINThJZ3RDSUlnZ0FpQUxWcTFDSUlhRWZDSUNJQTlVclNBQ0lCQkNJSVo4SUFKVXJYeDhJZ0lnQkZTdGZDSUVRdi8vLy8vLy8vOEFXQVJBSUJWQ0FZWWdGb1FoRlNBRlFkQUFhaUFDSUFRZ0F5QVNFQ3NnQVVJeGhpQUZLUU5ZZlNBRktRTlFJZ0ZDQUZLdGZTRUtRZ0FnQVgwaEN5QUdRZjcvQUdvTUFRc2dCVUhnQUdvZ0JFSS9oaUFDUWdHSWhDSUNJQVJDQVlnaUJDQURJQklRS3lBQlFqQ0dJQVVwQTJoOUlBVXBBMkFpREVJQVVxMTlJUXBDQUNBTWZTRUxJQUVoRENBR1FmLy9BR29MSWdaQi8vOEJUZ1JBSUExQ2dJQ0FnSUNBd1AvL0FJUWhEVUlBSVFFTUFRc0NmaUFHUVFCS0JFQWdDa0lCaGlBTFFqK0loQ0VLSUFSQy8vLy8vLy8vUDRNZ0JxMUNNSWFFSVF3Z0MwSUJoZ3dCQ3lBR1FZOS9UQVJBUWdBaEFRd0NDeUFGUVVCcklBSWdCRUVCSUFackVId2dCVUV3YWlBTUlCVWdCa0h3QUdvUUx5QUZRU0JxSUFNZ0VpQUZLUU5BSWdJZ0JTa0RTQ0lNRUNzZ0JTa0RPQ0FGS1FNb1FnR0dJQVVwQXlBaUFVSS9pSVI5SUFVcEF6QWlCQ0FCUWdHR0lnRlVyWDBoQ2lBRUlBRjlDeUVFSUFWQkVHb2dBeUFTUWdOQ0FCQXJJQVVnQXlBU1FnVkNBQkFySUF3Z0FpQUNJQU1nQWtJQmd5SUJJQVI4SWdOVUlBb2dBU0FEVnExOElnRWdFbFlnQVNBU1VSdXRmQ0lDVnExOElnUWdBaUFDSUFSQ2dJQ0FnSUNBd1AvL0FGUWdBeUFGS1FNUVZpQUJJQVVwQXhnaUJGWWdBU0FFVVJ0eHJYd2lBbGF0ZkNJRUlBSWdCRUtBZ0lDQWdJREEvLzhBVkNBRElBVXBBd0JXSUFFZ0JTa0RDQ0lEVmlBQklBTlJHM0d0ZkNJQklBSlVyWHdnRFlRaERRc2dBQ0FCTndNQUlBQWdEVGNEQ0NBRlFkQUNhaVFBQzc4Q0FRRi9Jd0JCMEFCcklnUWtBQUpBSUFOQmdJQUJUZ1JBSUFSQklHb2dBU0FDUWdCQ2dJQ0FnSUNBZ1AvL0FCQVlJQVFwQXlnaEFpQUVLUU1nSVFFZ0EwSC8vd0ZJQkVBZ0EwSC8vd0JySVFNTUFnc2dCRUVRYWlBQklBSkNBRUtBZ0lDQWdJQ0EvLzhBRUJnZ0EwSDkvd0lnQTBIOS93SklHMEgrL3dGcklRTWdCQ2tER0NFQ0lBUXBBeEFoQVF3QkN5QURRWUdBZjBvTkFDQUVRVUJySUFFZ0FrSUFRb0NBZ0lDQWdJQTVFQmdnQkNrRFNDRUNJQVFwQTBBaEFTQURRZlNBZmtvRVFDQURRWTMvQUdvaEF3d0JDeUFFUVRCcUlBRWdBa0lBUW9DQWdJQ0FnSUE1RUJnZ0EwSG9nWDBnQTBIb2dYMUtHMEdhL2dGcUlRTWdCQ2tET0NFQ0lBUXBBekFoQVFzZ0JDQUJJQUpDQUNBRFFmLy9BR3F0UWpDR0VCZ2dBQ0FFS1FNSU53TUlJQUFnQkNrREFEY0RBQ0FFUWRBQWFpUUFDelVBSUFBZ0FUY0RBQ0FBSUFKQy8vLy8vLy8vUDRNZ0JFSXdpS2RCZ0lBQ2NTQUNRakNJcDBILy93RnhjcTFDTUlhRU53TUlDNDRCQVFOL0l3QkJFR3NoQVFOQVFleWNyOThESVFJQ1FBTkFJQUpCM2JiaHZBWkdEUUVnQWtHV3o4SytCRWNFUUNBQ1FleWNyOThEUncwQklBRWdBRFlDRENBQklBTTJBZ2hCbHMvQ3ZnUkIzYmJodkFZZ0FTZ0NEQnNoQWd3QkN3c2dBU2dDQ0NJQVFRRjBRUUp4SUFCQkFYTnFJUU1nQVNnQ0RDQUJLQUlNUVFGcmNTRUFEQUVMQ3lBQktBSUlDeXdBSUFBb0FnQWFJQUFvQWdBZ0FCQ0ZBV29hSUFBb0FnQWdBQkNKQVdvYUlBQW9BZ0FnQUJDRkFXb2FDd2NBSUFFZ0FHc0xDUUFnQUNBQkVPNENDeXNCQVg4Z0FDZ0NBQ0lCQkVBZ0FSRDdBa0YvRUY1RkJFQWdBQ2dDQUVVUEN5QUFRUUEyQWdBTFFRRUxLd0VCZnlBQUtBSUFJZ0VFUUNBQkVJQURRWDhRWGtVRVFDQUFLQUlBUlE4TElBQkJBRFlDQUF0QkFRc05BRUVBSUFBZ0FFRi9FRjRiQzQwQkFRUi9Jd0JCRUdzaUJTUUFJQUVnQWhEdkFpSUVRVzlOQkVBQ1FDQUVRUXBOQkVBZ0FDQUVFRG9nQUNFRERBRUxJQUFnQkJDUkFVRUJhaUlHRUY4aUF4Qk5JQUFnQmhCTUlBQWdCQkE1Q3dOQUlBRWdBa2NFUUNBRElBRVFOQ0FEUVFGcUlRTWdBVUVCYWlFQkRBRUxDeUFGUVFBNkFBOGdBeUFGUVE5cUVEUWdCVUVRYWlRQUR3c1FGd0FMNVFRQkIzOGdBQ2dDQkNBQUVFTW9BZ0JIQkVBakFFRVFheUlDSkFBZ0FpQUFOZ0lBSUFJZ0FDZ0NCQ0lETmdJRUlBSWdBMEVCYWpZQ0NDQUFFRU1nQWlnQ0JDQUJFSXdDSUFJZ0FpZ0NCRUVCYWpZQ0JDQUNFSWtDSUFKQkVHb2tBQThMSXdCQklHc2lCeVFBSUFBUVF5SUlBbjhnQjBFSWFpRUNBbjhnQUJDSkFVRUJhaUVHSXdCQkVHc2lCU1FBSUFVZ0JqWUNEQ01BUVJCcklnUWtBQ0FBRUVNYUlBUkJmellDRENBRVFmLy8vLzhITmdJSUlBUkJER29nQkVFSWFoQ2lBU2dDQUNFRElBUkJFR29rQUNBRElBWlBCRUFnQUJDRkFTSUVJQU5CQVhaSkJFQWdCU0FFUVFGME5nSUlJQVZCQ0dvZ0JVRU1haEIyS0FJQUlRTUxJQVZCRUdva0FDQUREQUVMUWFjYkVKWUNBQXNoQlNBQUVJa0JJUVpCQUNFREl3QkJFR3NpQkNRQUlBUkJBRFlDRENBQ1FReHFJQVJCREdvZ0NCQ0VBaUFGQkVBZ0FpZ0NFQm9nQlJCZklRTUxJQUlnQXpZQ0FDQUNJQU1nQm1vaUJqWUNDQ0FDSUFZMkFnUWdBaENEQVNBRElBVnFOZ0lBSUFSQkVHb2tBQ0FDS0FJSUN5QUJFSXdDSUFJZ0FpZ0NDRUVCYWpZQ0NDQUFFTzBDSUFBUVF5QUFLQUlBSUFBb0FnUWdBa0VFYWlJQkVJTUNJQUFnQVJCMUlBQkJCR29nQWtFSWFoQjFJQUFRUXlBQ0VJTUJFSFVnQWlBQ0tBSUVOZ0lBSUFBUWlRRWFJQUFvQWdBYUlBQW9BZ0FnQUJDRkFXb2FJQUFvQWdBZ0FCQ0ZBV29hSUFBb0FnQWFJQUlvQWdRaUFDQUNLQUlJUndSQUEwQWdBaWdDRUJvZ0FpQUNLQUlJUVFGck5nSUlJQUlvQWdnZ0FFY05BQXNMSUFJb0FnQUVRQ0FDS0FJUUdpQUNLQUlBSVFBZ0FoQ0RBU2dDQUNBQ0tBSUFheG9nQUJBUUN5QUhRU0JxSkFBTER3QWdBQ0FBS0FJWUlBRnFOZ0lZQ3hjQUlBQWdBallDSENBQUlBRTJBaFFnQUNBQk5nSVlDMVlCQW44Q1FDQUFLQUlBSWdKRkRRQUNmeUFDS0FJWUlnTWdBaWdDSEVZRVFDQUNJQUVnQWlnQ0FDZ0NOQkVDQUF3QkN5QUNJQU5CQkdvMkFoZ2dBeUFCTmdJQUlBRUxRWDhRWGtVTkFDQUFRUUEyQWdBTEN5WUJBWDhDUUNBQUtBSUFJZ0pGRFFBZ0FpQUJFUDRDUVg4UVhrVU5BQ0FBUVFBMkFnQUxDd2tBSUFBUTVBRVFFQXN4QVFGL0lBQW9BZ3dpQVNBQUtBSVFSZ1JBSUFBZ0FDZ0NBQ2dDS0JFQUFBOExJQUFnQVVFRWFqWUNEQ0FCS0FJQUN5Y0JBWDhnQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSWtFUUFBRHdzZ0FTZ0NBQXNRQUNBQUVQQUNJQUVROEFKelFRRnpDNHNFQVFaL0l3QkJJR3NpQWlRQUlBSkJBRFlDSENNQVFTQnJJZ1FrQUNBQ1FSaHFJZ1pCQURvQUFDQUFJQUFvQWdCQkRHc29BZ0JxRUxrQklRVWdBQ0FBS0FJQVFReHJLQUlBYWlFREFrQWdCUVJBSUFNb0FrZ0VRQ0FBSUFBb0FnQkJER3NvQWdCcUtBSklFSVlEQ3dKQUlBQWdBQ2dDQUVFTWF5Z0NBR29vQWdSQmdDQnhSUTBBSUFSQkdHb2lBeUFBSUFBb0FnQkJER3NvQWdCcUVBOGdBeEF5SVFjZ0F4QU9JQVJCRUdvZ0FCREFBU0VESUFSQkNHb1FoUU1oQlFOQUFrQWdBeUFGRURGRkRRQWdCMEdBd0FBZ0F4QWZFRVJGRFFBZ0F4QWlHZ3dCQ3dzZ0F5QUZFQ1pGRFFBZ0FDQUFLQUlBUVF4cktBSUFha0VHRUlBQkN5QUdJQUFnQUNnQ0FFRU1heWdDQUdvUXVRRTZBQUFNQVFzZ0EwRUVFSUFCQ3lBRVFTQnFKQUFnQmkwQUFBUkFJQUpCRUdvaUJDQUFJQUFvQWdCQkRHc29BZ0JxRUE4Z0JFSElod0VRWkNFRElBSkJDR29nQUJEQUFTRUdJQUlRaFFNaEJTQURJQVlvQWdBZ0JTZ0NBQ0FBSUFBb0FnQkJER3NvQWdCcUlBSkJIR29nQWtFVWFpQURLQUlBS0FJUUVRVUFHaUFFRUE0Z0FRSi9JQUlvQWhSQmdJQ0FnSGhJQkVBZ0FpQUNLQUljUVFSeU5nSWNRWUNBZ0lCNERBRUxJQUlvQWhSQi8vLy8vd2RLQkVBZ0FpQUNLQUljUVFSeU5nSWNRZi8vLy84SERBRUxJQUlvQWhRTE5nSUFJQUFnQUNnQ0FFRU1heWdDQUdvZ0FpZ0NIQkNBQVFzZ0FrRWdhaVFBQ3pzQkFYOGdBQ2dDR0NJQ0lBQW9BaHhHQkVBZ0FDQUJFR1VnQUNnQ0FDZ0NOQkVDQUE4TElBQWdBa0VCYWpZQ0dDQUNJQUU2QUFBZ0FSQmxDek1CQVg4Z0FDZ0NEQ0lCSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlvRVFBQUR3c2dBQ0FCUVFGcU5nSU1JQUVzQUFBUVpRc3BBUUYvSUFBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NKQkVBQUE4TElBRXNBQUFRWlFzUUFDQUFFUEVDSUFFUThRSnpRUUZ6QzQwQkFRRi9Ba0FnQUNnQ0JDSUJJQUVvQWdCQkRHc29BZ0JxS0FJWVJRMEFJQUFvQWdRaUFTQUJLQUlBUVF4cktBSUFhaEM1QVVVTkFDQUFLQUlFSWdFZ0FTZ0NBRUVNYXlnQ0FHb29BZ1JCZ01BQWNVVU5BQ0FBS0FJRUlnRWdBU2dDQUVFTWF5Z0NBR29vQWhnUWd3TkJmMGNOQUNBQUtBSUVJZ0FnQUNnQ0FFRU1heWdDQUdwQkFSQ0FBUXNMRHdBZ0FDQUFLQUlBS0FJWUVRQUFDMVVBSUFBZ0FUWUNCQ0FBUVFBNkFBQWdBU0FCS0FJQVFReHJLQUlBYWhDNUFRUkFJQUVnQVNnQ0FFRU1heWdDQUdvb0FrZ0VRQ0FCSUFFb0FnQkJER3NvQWdCcUtBSklFSVlEQ3lBQVFRRTZBQUFMSUFBTEN3QWdBRUVBTmdJQUlBQUxiZ0VDZnlNQVFSQnJJZ0VrQUNBQUlBQW9BZ0JCREdzb0FnQnFLQUlZQkVBQ1FDQUJRUWhxSUFBUWhBTWlBaTBBQUVVTkFDQUFJQUFvQWdCQkRHc29BZ0JxS0FJWUVJTURRWDlIRFFBZ0FDQUFLQUlBUVF4cktBSUFha0VCRUlBQkN5QUNFSUlEQ3lBQlFSQnFKQUFMQ1FBZ0FCRGxBUkFRQ3dRQVFYOEx4Z2dCQm44Z0FDQUJLQUFBSWdOQkdIUWdBMEVJZEVHQWdQd0hjWElnQTBFSWRrR0EvZ054SUFOQkdIWnljaUlGTmdJQUlBQWdBU2dBQkNJRFFSaDBJQU5CQ0hSQmdJRDhCM0Z5SUFOQkNIWkJnUDREY1NBRFFSaDJjbklpQmpZQ0JDQUFJQUVvQUFnaUEwRVlkQ0FEUVFoMFFZQ0EvQWR4Y2lBRFFRaDJRWUQrQTNFZ0EwRVlkbkp5SWdjMkFnZ2dBQ0FCS0FBTUlnTkJHSFFnQTBFSWRFR0FnUHdIY1hJZ0EwRUlka0dBL2dOeElBTkJHSFp5Y2lJRU5nSU1Ba0FnQWtHQUFVWUVRRUVBSVFNRFFDQUFJQVJCRm5aQi9BZHhRWUFJYWkwQUFTQUVRUTUyUWZ3SGNVR0FDR29vQWdCQkNIUkJnSUNBZUhFZ0JYTWdCRUVHZGtIOEIzRkJnQWhxTFFBQ1FSQjBjeUFFUWY4QmNVRUNkRUdBQ0dvdEFBRkJDSFJ6Y3lBRFFZQWFhaTBBQUVFWWRITWlCVFlDRUNBQUlBVWdCbk1pQmpZQ0ZDQUFJQVlnQjNNaUJ6WUNHQ0FBSUFRZ0IzTWlCRFlDSENBQVFSQnFJUUJCQ2lFQklBTkJBV29pQTBFS1J3MEFDd3dCQ3lBQUlBRW9BQkFpQTBFWWRDQURRUWgwUVlDQS9BZHhjaUFEUVFoMlFZRCtBM0VnQTBFWWRuSnlOZ0lRSUFBZ0FTZ0FGQ0lEUVJoMElBTkJDSFJCZ0lEOEIzRnlJQU5CQ0haQmdQNERjU0FEUVJoMmNuSWlBellDRkNBQ1FjQUJSZ1JBUVFBaEFRTkFJQUFnQTBFV2RrSDhCM0ZCZ0FocUxRQUJJQU5CRG5aQi9BZHhRWUFJYWlnQ0FFRUlkRUdBZ0lCNGNTQUZjeUFEUVFaMlFmd0hjVUdBQ0dvdEFBSkJFSFJ6SUFOQi93RnhRUUowUVlBSWFpMEFBVUVJZEhOeklBRkJnQnBxTFFBQVFSaDBjeUlGTmdJWUlBQWdCU0FHY3lJR05nSWNJQUFnQmlBSGN5SUhOZ0lnSUFBZ0JDQUhjeUlFTmdJa0lBRkJCMFlFUUVFTUR3VWdBQ0FBS0FJUUlBUnpJZ0kyQWlnZ0FDQUNJQU56SWdNMkFpd2dBVUVCYWlFQklBQkJHR29oQUF3QkN3QUxBQXNnQUNBQktBQVlJZ05CR0hRZ0EwRUlkRUdBZ1B3SGNYSWdBMEVJZGtHQS9nTnhJQU5CR0haeWNqWUNHQ0FBSUFFb0FCd2lBVUVZZENBQlFRaDBRWUNBL0FkeGNpQUJRUWgyUVlEK0EzRWdBVUVZZG5KeUlnTTJBaHhCZnlFQklBSkJnQUpIRFFCQkFDRUNRUTRoQVFOQUlBQWdBMEVXZGtIOEIzRkJnQWhxTFFBQklBTkJEblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1NBRmN5QURRUVoyUWZ3SGNVR0FDR290QUFKQkVIUnpJQU5CL3dGeFFRSjBRWUFJYWkwQUFVRUlkSE56SUFKQmdCcHFMUUFBUVJoMGN5SUZOZ0lnSUFBZ0JTQUdjeUlHTmdJa0lBQWdCaUFIY3lJSE5nSW9JQUFnQkNBSGN5SUVOZ0lzSUFKQkJrWU5BU0FBSUFSQi93RnhRUUowUVlBSWFpMEFBU0FBS0FJUUlBUkJGblpCL0FkeFFZQUlhaWdDQUVFSWRFR0FnSUI0Y1hNZ0JFRU9ka0g4QjNGQmdBaHFMUUFDUVJCMGN5QUVRUVoyUWZ3SGNVR0FDR290QUFGQkNIUnpjeUlJTmdJd0lBQWdDQ0FBS0FJVWN5SUlOZ0kwSUFBZ0FDZ0NHQ0FJY3lJSU5nSTRJQUFnQXlBSWN5SUROZ0k4SUFKQkFXb2hBaUFBUVNCcUlRQU1BQXNBQ3lBQkN5NEFJQUFnQUNnQ0FDZ0NKQkVBQUVGL1JnUkFRWDhQQ3lBQUlBQW9BZ3dpQUVFQmFqWUNEQ0FBTEFBQUVHVUxCQUJCZnd1L0FRRUVmeU1BUVJCcklnUWtBQU5BQWtBZ0FpQUZUQTBBQWtBZ0FDZ0NEQ0lESUFBb0FoQWlCa2tFUUNBRVFmLy8vLzhITmdJTUlBUWdCaUFEYXpZQ0NDQUVJQUlnQldzMkFnUWdCRUVNYWlBRVFRaHFJQVJCQkdvUXVnRVF1Z0VoQXlBQklBQW9BZ3dnQXlnQ0FDSURFRlVnQUNBQUtBSU1JQU5xTmdJTURBRUxJQUFnQUNnQ0FDZ0NLQkVBQUNJRFFYOUdEUUVnQVNBREVKd0JPZ0FBUVFFaEF3c2dBU0FEYWlFQklBTWdCV29oQlF3QkN3c2dCRUVRYWlRQUlBVUxDUUFnQUVKL0VMc0JDd2tBSUFCQ2Z4QzdBUXNFQUNBQUN3a0FJQUFRdkFFUUVBc0lBQ0FBRUg0UUVBc0hBQ0FBS0FJTUN4QUFJd0FnQUd0QmNIRWlBQ1FBSUFBTEJnQWdBQ1FBQ3dRQUl3QUxEQUFnQUJEQkFSb2dBQkFRQ3drQUlBQVF3UUVRRUFzRkFFSCtHd3NiQUNBQUlBRW9BZ2dnQlJBK0JFQWdBU0FDSUFNZ0JCREVBUXNMT0FBZ0FDQUJLQUlJSUFVUVBnUkFJQUVnQWlBRElBUVF4QUVQQ3lBQUtBSUlJZ0FnQVNBQ0lBTWdCQ0FGSUFBb0FnQW9BaFFSQ1FBTGxnSUJCbjhnQUNBQktBSUlJQVVRUGdSQUlBRWdBaUFESUFRUXhBRVBDeUFCTFFBMUlRY2dBQ2dDRENFR0lBRkJBRG9BTlNBQkxRQTBJUWdnQVVFQU9nQTBJQUJCRUdvaUNTQUJJQUlnQXlBRUlBVVF3Z0VnQnlBQkxRQTFJZ3B5SVFjZ0NDQUJMUUEwSWd0eUlRZ0NRQ0FHUVFKSURRQWdDU0FHUVFOMGFpRUpJQUJCR0dvaEJnTkFJQUV0QURZTkFRSkFJQXNFUUNBQktBSVlRUUZHRFFNZ0FDMEFDRUVDY1EwQkRBTUxJQXBGRFFBZ0FDMEFDRUVCY1VVTkFnc2dBVUVBT3dFMElBWWdBU0FDSUFNZ0JDQUZFTUlCSUFFdEFEVWlDaUFIY2lFSElBRXRBRFFpQ3lBSWNpRUlJQVpCQ0dvaUJpQUpTUTBBQ3dzZ0FTQUhRZjhCY1VFQVJ6b0FOU0FCSUFoQi93RnhRUUJIT2dBMEM1SUJBQ0FBSUFFb0FnZ2dCQkErQkVBZ0FTQUNJQU1Rd3dFUEN3SkFJQUFnQVNnQ0FDQUVFRDVGRFFBQ1FDQUNJQUVvQWhCSEJFQWdBU2dDRkNBQ1J3MEJDeUFEUVFGSERRRWdBVUVCTmdJZ0R3c2dBU0FDTmdJVUlBRWdBellDSUNBQklBRW9BaWhCQVdvMkFpZ0NRQ0FCS0FJa1FRRkhEUUFnQVNnQ0dFRUNSdzBBSUFGQkFUb0FOZ3NnQVVFRU5nSXNDd3Z6QVFBZ0FDQUJLQUlJSUFRUVBnUkFJQUVnQWlBREVNTUJEd3NDUUNBQUlBRW9BZ0FnQkJBK0JFQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUlnQVVFQk5nSWdEd3NnQVNBRE5nSWdBa0FnQVNnQ0xFRUVSZzBBSUFGQkFEc0JOQ0FBS0FJSUlnQWdBU0FDSUFKQkFTQUVJQUFvQWdBb0FoUVJDUUFnQVMwQU5RUkFJQUZCQXpZQ0xDQUJMUUEwUlEwQkRBTUxJQUZCQkRZQ0xBc2dBU0FDTmdJVUlBRWdBU2dDS0VFQmFqWUNLQ0FCS0FJa1FRRkhEUUVnQVNnQ0dFRUNSdzBCSUFGQkFUb0FOZzhMSUFBb0FnZ2lBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoZ1JDZ0FMQzUwRUFRTi9JQUFnQVNnQ0NDQUVFRDRFUUNBQklBSWdBeEREQVE4TEFrQWdBQ0FCS0FJQUlBUVFQZ1JBQWtBZ0FpQUJLQUlRUndSQUlBRW9BaFFnQWtjTkFRc2dBMEVCUncwQ0lBRkJBVFlDSUE4TElBRWdBellDSUNBQktBSXNRUVJIQkVBZ0FFRVFhaUlGSUFBb0FneEJBM1JxSVFkQkFDRURJQUVDZndKQUEwQUNRQ0FGSUFkUERRQWdBVUVBT3dFMElBVWdBU0FDSUFKQkFTQUVFTUlCSUFFdEFEWU5BQUpBSUFFdEFEVkZEUUFnQVMwQU5BUkFRUUVoQXlBQktBSVlRUUZHRFFSQkFTRUdJQUF0QUFoQkFuRU5BUXdFQzBFQklRWWdBQzBBQ0VFQmNVVU5Bd3NnQlVFSWFpRUZEQUVMQzBFRUlBWkZEUUVhQzBFREN6WUNMQ0FEUVFGeERRSUxJQUVnQWpZQ0ZDQUJJQUVvQWloQkFXbzJBaWdnQVNnQ0pFRUJSdzBCSUFFb0FoaEJBa2NOQVNBQlFRRTZBRFlQQ3lBQUtBSU1JUVVnQUVFUWFpSUdJQUVnQWlBRElBUVFvQUVnQlVFQ1NBMEFJQVlnQlVFRGRHb2hCaUFBUVJocUlRVUNRQ0FBS0FJSUlnQkJBbkZGQkVBZ0FTZ0NKRUVCUncwQkN3TkFJQUV0QURZTkFpQUZJQUVnQWlBRElBUVFvQUVnQlVFSWFpSUZJQVpKRFFBTERBRUxJQUJCQVhGRkJFQURRQ0FCTFFBMkRRSWdBU2dDSkVFQlJnMENJQVVnQVNBQ0lBTWdCQkNnQVNBRlFRaHFJZ1VnQmtrTkFBd0NDd0FMQTBBZ0FTMEFOZzBCSUFFb0FpUkJBVVlFUUNBQktBSVlRUUZHRFFJTElBVWdBU0FDSUFNZ0JCQ2dBU0FGUVFocUlnVWdCa2tOQUFzTEN3Y0FJQUFvQWdRTGJ3RUNmeUFBSUFFb0FnaEJBQkErQkVBZ0FTQUNJQU1ReGdFUEN5QUFLQUlNSVFRZ0FFRVFhaUlGSUFFZ0FpQURFUEFCQWtBZ0JFRUNTQTBBSUFVZ0JFRURkR29oQkNBQVFSaHFJUUFEUUNBQUlBRWdBaUFERVBBQklBRXRBRFlOQVNBQVFRaHFJZ0FnQkVrTkFBc0xDeklBSUFBZ0FTZ0NDRUVBRUQ0RVFDQUJJQUlnQXhER0FROExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFnQUN4a0FJQUFnQVNnQ0NFRUFFRDRFUUNBQklBSWdBeERHQVFzTHVnTUJCWDhqQUVGQWFpSUVKQUFDZjBFQklBQWdBVUVBRUQ0TkFCcEJBQ0FCUlEwQUdpTUFRVUJxSWdNa0FDQUJLQUlBSWdWQkJHc29BZ0FoQmlBRlFRaHJLQUlBSVFjZ0EwRUFOZ0lVSUFOQnJQMEFOZ0lRSUFNZ0FUWUNEQ0FEUWR6OUFEWUNDRUVBSVFVZ0EwRVlha0VBUVNjUVJob2dBU0FIYWlFQkFrQWdCa0hjL1FCQkFCQStCRUFnQTBFQk5nSTRJQVlnQTBFSWFpQUJJQUZCQVVFQUlBWW9BZ0FvQWhRUkNRQWdBVUVBSUFNb0FpQkJBVVliSVFVTUFRc2dCaUFEUVFocUlBRkJBVUVBSUFZb0FnQW9BaGdSQ2dBQ1FBSkFJQU1vQWl3T0FnQUJBZ3NnQXlnQ0hFRUFJQU1vQWloQkFVWWJRUUFnQXlnQ0pFRUJSaHRCQUNBREtBSXdRUUZHR3lFRkRBRUxJQU1vQWlCQkFVY0VRQ0FES0FJd0RRRWdBeWdDSkVFQlJ3MEJJQU1vQWloQkFVY05BUXNnQXlnQ0dDRUZDeUFEUVVCckpBQkJBQ0FGSWdGRkRRQWFJQVJCQ0dvaUEwRUVja0VBUVRRUVJob2dCRUVCTmdJNElBUkJmellDRkNBRUlBQTJBaEFnQkNBQk5nSUlJQUVnQXlBQ0tBSUFRUUVnQVNnQ0FDZ0NIQkVJQUNBRUtBSWdJZ0JCQVVZRVFDQUNJQVFvQWhnMkFnQUxJQUJCQVVZTElRQWdCRUZBYXlRQUlBQUxCUUFRRndBTEF3QUFDd2tBUWR5S0FSQUtHZ3N2QUFKQVFlaUtBUzBBQUVFQmNRMEFRZWlLQVJBa1JRMEFRZHlLQVVIZzFRQVFoQUZCNklvQkVDTUxRZHlLQVFzSkFFSE1pZ0VRQ2hvTExnQUNRRUhZaWdFdEFBQkJBWEVOQUVIWWlnRVFKRVVOQUVITWlnRkI2aHNRVkJwQjJJb0JFQ01MUWN5S0FRc0pBRUc4aWdFUUNob0xMd0FDUUVISWlnRXRBQUJCQVhFTkFFSElpZ0VRSkVVTkFFRzhpZ0ZCak5VQUVJUUJRY2lLQVJBakMwRzhpZ0VMQ1FCQnJJb0JFQW9hQ3k0QUFrQkJ1SW9CTFFBQVFRRnhEUUJCdUlvQkVDUkZEUUJCcklvQlFkd2RFRlFhUWJpS0FSQWpDMEdzaWdFTENRQkJuSW9CRUFvYUN5OEFBa0JCcUlvQkxRQUFRUUZ4RFFCQnFJb0JFQ1JGRFFCQm5Jb0JRZWpVQUJDRUFVR29pZ0VRSXd0Qm5Jb0JDd2tBUVl5S0FSQUtHZ3N1QUFKQVFaaUtBUzBBQUVFQmNRMEFRWmlLQVJBa1JRMEFRWXlLQVVIM0hSQlVHa0dZaWdFUUl3dEJqSW9CQ3drQVFmeUpBUkFLR2dzdkFBSkFRWWlLQVMwQUFFRUJjUTBBUVlpS0FSQWtSUTBBUWZ5SkFVSEUxQUFRaEFGQmlJb0JFQ01MUWZ5SkFRc0pBRUhzaVFFUUNob0xMZ0FDUUVINGlRRXRBQUJCQVhFTkFFSDRpUUVRSkVVTkFFSHNpUUZCNWhvUVZCcEIrSWtCRUNNTFFleUpBUXNiQUVIb2tnRWhBQU5BSUFCQkRHc1FDaUlBUWRDU0FVY05BQXNMZlFBQ1FFSG9pUUV0QUFCQkFYRU5BRUhvaVFFUUpFVU5BQUpBUWVpU0FTMEFBRUVCY1EwQVFlaVNBUkFrUlEwQVFkQ1NBU0VBQTBBZ0FCQkhRUXhxSWdCQjZKSUJSdzBBQzBIb2tnRVFJd3RCMEpJQlFmRDdBQkFVUWR5U0FVSDgrd0FRRkVIa2lRRkIwSklCTmdJQVFlaUpBUkFqQzBIa2lRRW9BZ0FMR3dCQnlKSUJJUUFEUUNBQVFReHJFQW9pQUVHd2tnRkhEUUFMQzNzQUFrQkI0SWtCTFFBQVFRRnhEUUJCNElrQkVDUkZEUUFDUUVISWtnRXRBQUJCQVhFTkFFSElrZ0VRSkVVTkFFR3drZ0VoQUFOQUlBQVFFVUVNYWlJQVFjaVNBVWNOQUF0QnlKSUJFQ01MUWJDU0FVR0hIaEFWUWJ5U0FVR0VIaEFWUWR5SkFVR3drZ0UyQWdCQjRJa0JFQ01MUWR5SkFTZ0NBQXNiQUVHZ2tnRWhBQU5BSUFCQkRHc1FDaUlBUVlDUUFVY05BQXNMMlFJQUFrQkIySWtCTFFBQVFRRnhEUUJCMklrQkVDUkZEUUFDUUVHZ2tnRXRBQUJCQVhFTkFFR2drZ0VRSkVVTkFFR0FrQUVoQUFOQUlBQVFSMEVNYWlJQVFhQ1NBVWNOQUF0Qm9KSUJFQ01MUVlDUUFVSG85d0FRRkVHTWtBRkJpUGdBRUJSQm1KQUJRYXo0QUJBVVFhU1FBVUhFK0FBUUZFR3drQUZCM1BnQUVCUkJ2SkFCUWV6NEFCQVVRY2lRQVVHQStRQVFGRUhVa0FGQmxQa0FFQlJCNEpBQlFiRDVBQkFVUWV5UUFVSFkrUUFRRkVINGtBRkIrUGtBRUJSQmhKRUJRWno2QUJBVVFaQ1JBVUhBK2dBUUZFR2NrUUZCMFBvQUVCUkJxSkVCUWVENkFCQVVRYlNSQVVIdytnQVFGRUhBa1FGQjNQZ0FFQlJCekpFQlFZRDdBQkFVUWRpUkFVR1Erd0FRRkVIa2tRRkJvUHNBRUJSQjhKRUJRYkQ3QUJBVVFmeVJBVUhBK3dBUUZFR0lrZ0ZCMFBzQUVCUkJsSklCUWVEN0FCQVVRZFNKQVVHQWtBRTJBZ0JCMklrQkVDTUxRZFNKQVNnQ0FBc2JBRUh3andFaEFBTkFJQUJCREdzUUNpSUFRZENOQVVjTkFBc0x3UUlBQWtCQjBJa0JMUUFBUVFGeERRQkIwSWtCRUNSRkRRQUNRRUh3andFdEFBQkJBWEVOQUVId2p3RVFKRVVOQUVIUWpRRWhBQU5BSUFBUUVVRU1haUlBUWZDUEFVY05BQXRCOEk4QkVDTUxRZENOQVVHY0doQVZRZHlOQVVHVEdoQVZRZWlOQVVIZ0hCQVZRZlNOQVVIV0hCQVZRWUNPQVVIaUdoQVZRWXlPQVVITEhSQVZRWmlPQVVHa0doQVZRYVNPQVVHVUd4QVZRYkNPQVVHL0d4QVZRYnlPQVVHdUd4QVZRY2lPQVVHMkd4QVZRZFNPQVVISkd4QVZRZUNPQVVITEhCQVZRZXlPQVVIWUhSQVZRZmlPQVVIaUd4QVZRWVNQQVVHakd4QVZRWkNQQVVIaUdoQVZRWnlQQVVINkd4QVZRYWlQQVVIUEhCQVZRYlNQQVVIbUhCQVZRY0NQQVVIbUd4QVZRY3lQQVVHYkd4QVZRZGlQQVVHTUd4QVZRZVNQQVVIVUhSQVZRY3lKQVVIUWpRRTJBZ0JCMElrQkVDTUxRY3lKQVNnQ0FBc2JBRUhJalFFaEFBTkFJQUJCREdzUUNpSUFRYUNNQVVjTkFBc0w5UUVBQWtCQnlJa0JMUUFBUVFGeERRQkJ5SWtCRUNSRkRRQUNRRUhJalFFdEFBQkJBWEVOQUVISWpRRVFKRVVOQUVHZ2pBRWhBQU5BSUFBUVIwRU1haUlBUWNpTkFVY05BQXRCeUkwQkVDTUxRYUNNQVVHVTlRQVFGRUdzakFGQnNQVUFFQlJCdUl3QlFjejFBQkFVUWNTTUFVSHM5UUFRRkVIUWpBRkJsUFlBRUJSQjNJd0JRYmoyQUJBVVFlaU1BVUhVOWdBUUZFSDBqQUZCK1BZQUVCUkJnSTBCUVlqM0FCQVVRWXlOQVVHWTl3QVFGRUdZalFGQnFQY0FFQlJCcEkwQlFiajNBQkFVUWJDTkFVSEk5d0FRRkVHOGpRRkIyUGNBRUJSQnhJa0JRYUNNQVRZQ0FFSElpUUVRSXd0QnhJa0JLQUlBQ3hzQVFaaU1BU0VBQTBBZ0FFRU1heEFLSWdCQjhJb0JSdzBBQ3d2bkFRQUNRRUhBaVFFdEFBQkJBWEVOQUVIQWlRRVFKRVVOQUFKQVFaaU1BUzBBQUVFQmNRMEFRWmlNQVJBa1JRMEFRZkNLQVNFQUEwQWdBQkFSUVF4cUlnQkJtSXdCUncwQUMwR1lqQUVRSXd0QjhJb0JRYzBhRUJWQi9Jb0JRZFFhRUJWQmlJc0JRYklhRUJWQmxJc0JRYm9hRUJWQm9Jc0JRYWthRUJWQnJJc0JRZHNhRUJWQnVJc0JRY1FhRUJWQnhJc0JRZlliRUJWQjBJc0JRY01jRUJWQjNJc0JRY0VkRUJWQjZJc0JRZEFkRUJWQjlJc0JRWkFiRUJWQmdJd0JRZHdjRUJWQmpJd0JRWjhiRUJWQnZJa0JRZkNLQVRZQ0FFSEFpUUVRSXd0QnZJa0JLQUlBQ3dzQUlBQkJyTlFBRUlRQkN3b0FJQUJCeFIwUVZCb0xDd0FnQUVHWTFBQVFoQUVMQ2dBZ0FFRzhIUkJVR2dzTUFDQUFJQUZCRUdvUTBRRUxEQUFnQUNBQlFReHFFTkVCQ3djQUlBQXNBQWtMQndBZ0FDd0FDQXNKQUNBQUVJWUNFQkFMQ1FBZ0FCQ0hBaEFRQytZREFRVi9JQUloQUFOQUFrQWdCQ0FJVFNBQUlBTlBjZzBBSUFBc0FBQWlCa0gvQVhFaEFRSkFJQVpCQUU0RVFFRUJJUVlnQVVILy84TUFUUTBCREFJTElBRkJ3Z0ZKRFFFZ0FVSGZBVTBFUUNBRElBQnJRUUpJRFFJZ0FDMEFBU0lGUWNBQmNVR0FBVWNOQWtFQ0lRWWdCVUUvY1NBQlFRWjBRY0FQY1hKQi8vL0RBRTBOQVF3Q0N3SkFBa0FnQVVIdkFVMEVRQ0FESUFCclFRTklEUVFnQUMwQUFpRUhJQUF0QUFFaEJTQUJRZTBCUmcwQklBRkI0QUZHQkVBZ0JVSGdBWEZCb0FGR0RRTU1CUXNnQlVIQUFYRkJnQUZIRFFRTUFnc2dBeUFBYTBFRVNDQUJRZlFCUzNJTkF5QUFMUUFESVFjZ0FDMEFBaUVKSUFBdEFBRWhCUUpBQWtBQ1FBSkFJQUZCOEFGckRnVUFBZ0lDQVFJTElBVkI4QUJxUWY4QmNVRXdTUTBDREFZTElBVkI4QUZ4UVlBQlJnMEJEQVVMSUFWQndBRnhRWUFCUncwRUN5QUpRY0FCY1VHQUFVY2dCMEhBQVhGQmdBRkhjZzBEUVFRaEJpQUhRVDl4SUFsQkJuUkJ3Qjl4SUFGQkVuUkJnSUR3QUhFZ0JVRS9jVUVNZEhKeWNrSC8vOE1BU3cwRERBSUxJQVZCNEFGeFFZQUJSdzBDQ3lBSFFjQUJjVUdBQVVjTkFVRURJUVlnQjBFL2NTQUJRUXgwUVlEZ0EzRWdCVUUvY1VFR2RISnlRZi8vd3dCTERRRUxJQWhCQVdvaENDQUFJQVpxSVFBTUFRc0xJQUFnQW1zTDRnUUJCWDhqQUVFUWF5SUFKQUFnQUNBQ05nSU1JQUFnQlRZQ0NBSi9JQUFnQWpZQ0RDQUFJQVUyQWdnQ1FBSkFBMEFDUUNBQUtBSU1JZ0lnQTA4TkFDQUFLQUlJSWd3Z0JrOE5BQ0FDTEFBQUlnVkIvd0Z4SVFFQ1FDQUZRUUJPQkVBZ0FVSC8vOE1BVFFSQVFRRWhCUXdDQzBFQ0RBWUxRUUloQ2lBQlFjSUJTUTBESUFGQjN3Rk5CRUFnQXlBQ2EwRUNTQTBGSUFJdEFBRWlDRUhBQVhGQmdBRkhEUVJCQWlFRklBaEJQM0VnQVVFR2RFSEFEM0Z5SWdGQi8vL0RBRTBOQVF3RUN5QUJRZThCVFFSQUlBTWdBbXRCQTBnTkJTQUNMUUFDSVFrZ0FpMEFBU0VJQWtBQ1FDQUJRZTBCUndSQUlBRkI0QUZIRFFFZ0NFSGdBWEZCb0FGR0RRSU1Cd3NnQ0VIZ0FYRkJnQUZHRFFFTUJnc2dDRUhBQVhGQmdBRkhEUVVMSUFsQndBRnhRWUFCUncwRVFRTWhCU0FKUVQ5eElBRkJESFJCZ09BRGNTQUlRVDl4UVFaMGNuSWlBVUgvLzhNQVRRMEJEQVFMSUFGQjlBRkxEUU1nQXlBQ2EwRUVTQTBFSUFJdEFBTWhDU0FDTFFBQ0lRc2dBaTBBQVNFSUFrQUNRQUpBQWtBZ0FVSHdBV3NPQlFBQ0FnSUJBZ3NnQ0VId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQ0VId0FYRkJnQUZHRFFFTUJRc2dDRUhBQVhGQmdBRkhEUVFMSUF0QndBRnhRWUFCUnlBSlFjQUJjVUdBQVVkeURRTkJCQ0VGSUFsQlAzRWdDMEVHZEVIQUgzRWdBVUVTZEVHQWdQQUFjU0FJUVQ5eFFReDBjbkp5SWdGQi8vL0RBRXNOQXdzZ0RDQUJOZ0lBSUFBZ0FpQUZhallDRENBQUlBQW9BZ2hCQkdvMkFnZ01BUXNMSUFJZ0Ewa2hDZ3NnQ2d3QkMwRUJDeUVCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTGpnUUFJd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJSUFBb0Fnd2hBUUpBQTBBZ0FTQURUd1JBUVFBaEFnd0NDMEVDSVFJZ0FTZ0NBQ0lCUVlCd2NVR0FzQU5HSUFGQi8vL0RBRXR5RFFFQ1FBSkFJQUZCL3dCTkJFQkJBU0VDSUFZZ0FDZ0NDQ0lGYTBFQVRBMEVJQUFnQlVFQmFqWUNDQ0FGSUFFNkFBQU1BUXNnQVVIL0QwMEVRQ0FHSUFBb0FnZ2lBbXRCQWtnTkFpQUFJQUpCQVdvMkFnZ2dBaUFCUVFaMlFjQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQURBRUxJQVlnQUNnQ0NDSUNheUVGSUFGQi8vOERUUVJBSUFWQkEwZ05BaUFBSUFKQkFXbzJBZ2dnQWlBQlFReDJRZUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJCblpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFL2NVR0FBWEk2QUFBTUFRc2dCVUVFU0EwQklBQWdBa0VCYWpZQ0NDQUNJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFTWRrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQUN5QUFJQUFvQWd4QkJHb2lBVFlDREF3QkN3dEJBUXdCQ3lBQ0N5RUJJQVFnQUNnQ0REWUNBQ0FISUFBb0FnZzJBZ0FnQUVFUWFpUUFJQUVMN2dNQkJIOGdBaUVBQTBBQ1FDQUVJQVpOSUFBZ0EwOXlEUUFnQUMwQUFDSUJRZi8vd3dCTERRQUNmeUFBUVFGcUlBRkJHSFJCR0hWQkFFNE5BQm9nQVVIQ0FVa05BU0FCUWQ4QlRRUkFJQU1nQUd0QkFrZ05BaUFBTFFBQklnVkJ3QUZ4UVlBQlJ5QUZRVDl4SUFGQkJuUkJ3QTl4Y2tILy84TUFTM0lOQWlBQVFRSnFEQUVMQWtBQ1FDQUJRZThCVFFSQUlBTWdBR3RCQTBnTkJDQUFMUUFDSVFjZ0FDMEFBU0VGSUFGQjdRRkdEUUVnQVVIZ0FVWUVRQ0FGUWVBQmNVR2dBVVlOQXd3RkN5QUZRY0FCY1VHQUFVY05CQXdDQ3lBRElBQnJRUVJJSUFGQjlBRkxjaUFFSUFaclFRSkpjZzBESUFBdEFBTWhCeUFBTFFBQ0lRZ2dBQzBBQVNFRkFrQUNRQUpBQWtBZ0FVSHdBV3NPQlFBQ0FnSUJBZ3NnQlVId0FHcEIvd0Z4UVRCSkRRSU1CZ3NnQlVId0FYRkJnQUZHRFFFTUJRc2dCVUhBQVhGQmdBRkhEUVFMSUFoQndBRnhRWUFCUnlBSFFjQUJjVUdBQVVkeUlBZEJQM0VnQ0VFR2RFSEFIM0VnQVVFU2RFR0FnUEFBY1NBRlFUOXhRUXgwY25KeVFmLy93d0JMY2cwRElBWkJBV29oQmlBQVFRUnFEQUlMSUFWQjRBRnhRWUFCUncwQ0N5QUhRY0FCY1VHQUFVY2dCMEUvY1NBQlFReDBRWURnQTNFZ0JVRS9jVUVHZEhKeVFmLy93d0JMY2cwQklBQkJBMm9MSVFBZ0JrRUJhaUVHREFFTEN5QUFJQUpyQzlNRkFRUi9Jd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJQWtBQ1FBSkFBMEFDUUNBQUtBSU1JZ0VnQTA4TkFDQUFLQUlJSWdVZ0JrOE5BRUVDSVFvZ0FTMEFBQ0lDUWYvL3d3QkxEUVFnQUFKL0lBSkJHSFJCR0hWQkFFNEVRQ0FGSUFJN0FRQWdBVUVCYWd3QkN5QUNRY0lCU1EwRklBSkIzd0ZOQkVBZ0F5QUJhMEVDU0EwRklBRXRBQUVpQ0VIQUFYRkJnQUZIRFFRZ0NFRS9jU0FDUVFaMFFjQVBjWElpQWtILy84TUFTdzBFSUFVZ0Fqc0JBQ0FCUVFKcURBRUxJQUpCN3dGTkJFQWdBeUFCYTBFRFNBMEZJQUV0QUFJaENTQUJMUUFCSVFnQ1FBSkFJQUpCN1FGSEJFQWdBa0hnQVVjTkFTQUlRZUFCY1VHZ0FVWU5BZ3dIQ3lBSVFlQUJjVUdBQVVZTkFRd0dDeUFJUWNBQmNVR0FBVWNOQlFzZ0NVSEFBWEZCZ0FGSERRUWdDVUUvY1NBSVFUOXhRUVowSUFKQkRIUnljaUlDUWYvL0EzRkIvLy9EQUVzTkJDQUZJQUk3QVFBZ0FVRURhZ3dCQ3lBQ1FmUUJTdzBGUVFFaENpQURJQUZyUVFSSURRTWdBUzBBQXlFSklBRXRBQUloQ0NBQkxRQUJJUUVDUUFKQUFrQUNRQ0FDUWZBQmF3NEZBQUlDQWdFQ0N5QUJRZkFBYWtIL0FYRkJNRThOQ0F3Q0N5QUJRZkFCY1VHQUFVY05Cd3dCQ3lBQlFjQUJjVUdBQVVjTkJnc2dDRUhBQVhGQmdBRkhJQWxCd0FGeFFZQUJSM0lOQlNBR0lBVnJRUVJJRFFOQkFpRUtJQWxCUDNFaUNTQUlRUVowSWd0QndCOXhJQUZCREhSQmdPQVBjU0FDUVFkeElnSkJFblJ5Y25KQi8vL0RBRXNOQXlBRklBaEJCSFpCQTNFZ0FVRUNkQ0lCUWNBQmNTQUNRUWgwY2lBQlFUeHhjbkpCd1A4QWFrR0FzQU55T3dFQUlBQWdCVUVDYWpZQ0NDQUZJQXRCd0FkeElBbHlRWUM0QTNJN0FRSWdBQ2dDREVFRWFnczJBZ3dnQUNBQUtBSUlRUUpxTmdJSURBRUxDeUFCSUFOSklRb0xJQW9NQWd0QkFRd0JDMEVDQ3lFQklBUWdBQ2dDRERZQ0FDQUhJQUFvQWdnMkFnQWdBRUVRYWlRQUlBRUwrZ1VCQVg4akFFRVFheUlBSkFBZ0FDQUNOZ0lNSUFBZ0JUWUNDQUovSUFBZ0FqWUNEQ0FBSUFVMkFnZ2dBQ2dDRENFQ0FrQUNRQU5BSUFJZ0EwOEVRRUVBSVFVTUF3dEJBaUVGSUFJdkFRQWlBVUgvLzhNQVN3MENBa0FDUUNBQlFmOEFUUVJBUVFFaEJTQUdJQUFvQWdnaUFtdEJBRXdOQlNBQUlBSkJBV28yQWdnZ0FpQUJPZ0FBREFFTElBRkIvdzlOQkVBZ0JpQUFLQUlJSWdKclFRSklEUVFnQUNBQ1FRRnFOZ0lJSUFJZ0FVRUdka0hBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBQlFmK3ZBMDBFUUNBR0lBQW9BZ2dpQW10QkEwZ05CQ0FBSUFKQkFXbzJBZ2dnQWlBQlFReDJRZUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJCblpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFL2NVR0FBWEk2QUFBTUFRc2dBVUgvdHdOTkJFQkJBU0VGSUFNZ0FtdEJCRWdOQlNBQ0x3RUNJZ2hCZ1BnRGNVR0F1QU5IRFFJZ0JpQUFLQUlJYTBFRVNBMEZJQWhCL3dkeElBRkJDblJCZ1BnRGNTQUJRY0FIY1NJRlFRcDBjbkpCZ0lBRWFrSC8vOE1BU3cwQ0lBQWdBa0VDYWpZQ0RDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBVkJCblpCQVdvaUFrRUNka0h3QVhJNkFBQWdBQ0FBS0FJSUlnVkJBV28yQWdnZ0JTQUNRUVIwUVRCeElBRkJBblpCRDNGeVFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFoQkJuWkJEM0VnQVVFRWRFRXdjWEpCZ0FGeU9nQUFJQUFnQUNnQ0NDSUJRUUZxTmdJSUlBRWdDRUUvY1VHQUFYSTZBQUFNQVFzZ0FVR0F3QU5KRFFRZ0JpQUFLQUlJSWdKclFRTklEUU1nQUNBQ1FRRnFOZ0lJSUFJZ0FVRU1ka0hnQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQUN5QUFJQUFvQWd4QkFtb2lBallDREF3QkN3dEJBZ3dDQzBFQkRBRUxJQVVMSVFFZ0JDQUFLQUlNTmdJQUlBY2dBQ2dDQ0RZQ0FDQUFRUkJxSkFBZ0FRc1ZBQ0FBS0FJSUlnQkZCRUJCQVE4TElBQVFpZ0lMa0FFQkJuOERRQUpBSUFJZ0EwWWdCQ0FJVFhJTkFFRUJJUWNnQUNnQ0NDRUZJd0JCRUdzaUJpUUFJQVlnQlRZQ0RDQUdRUWhxSUFaQkRHb1FVaUVLUVFBZ0FpQURJQUpySUFGQnRJY0JJQUViRUxjQklRVWdDaEJSSUFaQkVHb2tBQUpBQWtBZ0JVRUNhZzREQWdJQkFBc2dCU0VIQ3lBSVFRRnFJUWdnQnlBSmFpRUpJQUlnQjJvaEFnd0JDd3NnQ1F0bUFRTi9JQUFvQWdnaEFpTUFRUkJySWdFa0FDQUJJQUkyQWd3Z0FVRUlhaUFCUVF4cUVGSWhBaU1BUVJCcklnTWtBQ0FEUVJCcUpBQkJBQ0VESUFJUVVTQUJRUkJxSkFBZ0F3Ui9RWDhGSUFBb0FnZ2lBRVVFUUVFQkR3c2dBQkNLQWtFQlJnc0xrZ0VCQVg4akFFRVFheUlGSkFBZ0JDQUNOZ0lBQW45QkFpQUZRUXhxUVFBZ0FDZ0NDQkRMQVNJQVFRRnFRUUpKRFFBYVFRRWdBRUVCYXlJQklBTWdCQ2dDQUd0TERRQWFJQVZCREdvaEFnTi9JQUVFZnlBQ0xRQUFJUUFnQkNBRUtBSUFJZ05CQVdvMkFnQWdBeUFBT2dBQUlBRkJBV3NoQVNBQ1FRRnFJUUlNQVFWQkFBc0xDeUVDSUFWQkVHb2tBQ0FDQzhzR0FReC9Jd0JCRUdzaUVTUUFJQUloQ0FOQUFrQWdBeUFJUmdSQUlBTWhDQXdCQ3lBSUxRQUFSUTBBSUFoQkFXb2hDQXdCQ3dzZ0J5QUZOZ0lBSUFRZ0FqWUNBQU5BQWtBQ2Z3SkFJQUlnQTBZZ0JTQUdSbklOQUNBUklBRXBBZ0EzQXdnZ0FDZ0NDQ0VKSXdCQkVHc2lFQ1FBSUJBZ0NUWUNEQ0FRUVFocUlCQkJER29RVWlFVElBZ2dBbXNoRFVFQUlRb2pBRUdRQ0dzaUN5UUFJQXNnQkNnQ0FDSU9OZ0lNSUFVZ0MwRVFhaUFGR3lFUEFrQUNRQUpBSUE1RklBWWdCV3RCQW5WQmdBSWdCUnNpREVWeURRQURRQ0FOUVFKMklna2dERWtnRFVHREFVMXhEUUlnRHlBTFFReHFJQXdnQ1NBSklBeFBHeUFCRU5JQ0loSkJmMFlFUUVGL0lRcEJBQ0VNSUFzb0Fnd2hEZ3dDQ3lBTVFRQWdFaUFQSUF0QkVHcEdHeUlKYXlFTUlBOGdDVUVDZEdvaER5QU5JQTVxSUFzb0Fnd2lEbXRCQUNBT0d5RU5JQW9nRW1vaENpQU9SUTBCSUF3TkFBc0xJQTVGRFFFTElBeEZJQTFGY2cwQUlBb2hDUU5BQWtBQ1FDQVBJQTRnRFNBQkVMY0JJZ3BCQW1wQkFrMEVRQUpBQWtBZ0NrRUJhZzRDQmdBQkN5QUxRUUEyQWd3TUFnc2dBVUVBTmdJQURBRUxJQXNnQ3lnQ0RDQUthaUlPTmdJTUlBbEJBV29oQ1NBTVFRRnJJZ3dOQVFzZ0NTRUtEQUlMSUE5QkJHb2hEeUFOSUFwcklRMGdDU0VLSUEwTkFBc0xJQVVFUUNBRUlBc29BZ3cyQWdBTElBdEJrQWhxSkFBZ0NpRUpJQk1RVVNBUVFSQnFKQUFDUUFKQUFrQUNRQ0FKUVg5R0JFQURRQUpBSUFjZ0JUWUNBQ0FDSUFRb0FnQkdEUUJCQVNFR0FrQUNRQUpBSUFVZ0FpQUlJQUpySUJGQkNHb2dBQ2dDQ0JDTEFpSUJRUUpxRGdNSUFBSUJDeUFFSUFJMkFnQU1CUXNnQVNFR0N5QUNJQVpxSVFJZ0J5Z0NBRUVFYWlFRkRBRUxDeUFFSUFJMkFnQU1CUXNnQnlBSEtBSUFJQWxCQW5ScUlnVTJBZ0FnQlNBR1JnMERJQVFvQWdBaEFpQURJQWhHQkVBZ0F5RUlEQWdMSUFVZ0FrRUJJQUVnQUNnQ0NCQ0xBa1VOQVF0QkFnd0VDeUFISUFjb0FnQkJCR28yQWdBZ0JDQUVLQUlBUVFGcUlnSTJBZ0FnQWlFSUEwQWdBeUFJUmdSQUlBTWhDQXdHQ3lBSUxRQUFSUTBGSUFoQkFXb2hDQXdBQ3dBTElBUWdBallDQUVFQkRBSUxJQVFvQWdBaEFnc2dBaUFEUndzaEFDQVJRUkJxSkFBZ0FBOExJQWNvQWdBaEJRd0FDd0FMc3dVQkRIOGpBRUVRYXlJTkpBQWdBaUVJQTBBQ1FDQURJQWhHQkVBZ0F5RUlEQUVMSUFnb0FnQkZEUUFnQ0VFRWFpRUlEQUVMQ3lBSElBVTJBZ0FnQkNBQ05nSUFBMEFDUUFKQUlBSWdBMFlnQlNBR1JuSUVmeUFDQlNBTklBRXBBZ0EzQXdoQkFTRVFJQUFvQWdnaENTTUFRUkJySWc0a0FDQU9JQWsyQWd3Z0RrRUlhaUFPUVF4cUVGSWhFeUFHSUFVaUNXc2hDa0VBSVE4akFFRVFheUlSSkFBQ1FDQUVLQUlBSWd0RklBZ2dBbXRCQW5VaUVrVnlEUUFnQ2tFQUlBa2JJUW9EUUNBUlFReHFJQWtnQ2tFRVNSc2dDeWdDQUJEYUFTSU1RWDlHQkVCQmZ5RVBEQUlMSUFrRWZ5QUtRUU5OQkVBZ0NpQU1TUTBESUFrZ0VVRU1haUFNRUVJYUN5QUtJQXhySVFvZ0NTQU1hZ1ZCQUFzaENTQUxLQUlBUlFSQVFRQWhDd3dDQ3lBTUlBOXFJUThnQzBFRWFpRUxJQkpCQVdzaUVnMEFDd3NnQ1FSQUlBUWdDellDQUFzZ0VVRVFhaVFBSUE4aENTQVRFRkVnRGtFUWFpUUFBa0FDUUFKQUFrQUNRQ0FKUVFGcURnSUFCZ0VMSUFjZ0JUWUNBQU5BQWtBZ0FpQUVLQUlBUmcwQUlBVWdBaWdDQUNBQUtBSUlFTXNCSWdGQmYwWU5BQ0FISUFjb0FnQWdBV29pQlRZQ0FDQUNRUVJxSVFJTUFRc0xJQVFnQWpZQ0FBd0JDeUFISUFjb0FnQWdDV29pQlRZQ0FDQUZJQVpHRFFJZ0F5QUlSZ1JBSUFRb0FnQWhBaUFESVFnTUJ3c2dEVUVFYWtFQUlBQW9BZ2dReXdFaUNFRi9SdzBCQzBFQ0lSQU1Bd3NnRFVFRWFpRUNJQVlnQnlnQ0FHc2dDRWtOQWdOQUlBZ0VRQ0FDTFFBQUlRVWdCeUFIS0FJQUlnbEJBV28yQWdBZ0NTQUZPZ0FBSUFoQkFXc2hDQ0FDUVFGcUlRSU1BUXNMSUFRZ0JDZ0NBRUVFYWlJQ05nSUFJQUloQ0FOQUlBTWdDRVlFUUNBRElRZ01CUXNnQ0NnQ0FFVU5CQ0FJUVFScUlRZ01BQXNBQ3lBRUtBSUFDeUFEUnlFUUN5QU5RUkJxSkFBZ0VBOExJQWNvQWdBaEJRd0FDd0FMQ1FBZ0FCQ1lBaEFRQ3pjQUl3QkJFR3NpQUNRQUlBQWdCRFlDRENBQUlBTWdBbXMyQWdnZ0FFRU1haUFBUVFocUVLSUJLQUlBSVFFZ0FFRVFhaVFBSUFFTE5BQURRQ0FCSUFKR1JRUkFJQVFnQVN3QUFDSUFJQU1nQUVFQVRoczZBQUFnQkVFQmFpRUVJQUZCQVdvaEFRd0JDd3NnQWdzTUFDQUJJQUlnQVVFQVRoc0xLZ0FEUUNBQklBSkdSUVJBSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJEQUVMQ3lBQ0MwQUFBMEFnQVNBQ1J3UkFJQUVnQVN3QUFDSUFRUUJPQkg5QjBNUUFLQUlBSUFFc0FBQkJBblJxS0FJQUJTQUFDem9BQUNBQlFRRnFJUUVNQVFzTElBSUxKd0FnQVVFQVRnUi9RZERFQUNnQ0FDQUJRZjhCY1VFQ2RHb29BZ0FGSUFFTFFSaDBRUmgxQ3o4QUEwQWdBU0FDUndSQUlBRWdBU3dBQUNJQVFRQk9CSDlCd0Rnb0FnQWdBU3dBQUVFQ2RHb29BZ0FGSUFBTE9nQUFJQUZCQVdvaEFRd0JDd3NnQWdzbUFDQUJRUUJPQkg5QndEZ29BZ0FnQVVIL0FYRkJBblJxS0FJQUJTQUJDMEVZZEVFWWRRc0pBQ0FBRUk0Q0VCQUxOUUFEUUNBQklBSkdSUVJBSUFRZ0FTZ0NBQ0lBSUFNZ0FFR0FBVWtiT2dBQUlBUkJBV29oQkNBQlFRUnFJUUVNQVFzTElBSUxFd0FnQVNBQ0lBRkJnQUZKRzBFWWRFRVlkUXNxQUFOQUlBRWdBa1pGQkVBZ0F5QUJMQUFBTmdJQUlBTkJCR29oQXlBQlFRRnFJUUVNQVFzTElBSUxRUUFEUUNBQklBSkhCRUFnQVNBQktBSUFJZ0JCL3dCTkJIOUIwTVFBS0FJQUlBRW9BZ0JCQW5ScUtBSUFCU0FBQ3pZQ0FDQUJRUVJxSVFFTUFRc0xJQUlMSGdBZ0FVSC9BRTBFZjBIUXhBQW9BZ0FnQVVFQ2RHb29BZ0FGSUFFTEMwQUFBMEFnQVNBQ1J3UkFJQUVnQVNnQ0FDSUFRZjhBVFFSL1FjQTRLQUlBSUFFb0FnQkJBblJxS0FJQUJTQUFDellDQUNBQlFRUnFJUUVNQVFzTElBSUxIUUFnQVVIL0FFMEVmMEhBT0NnQ0FDQUJRUUowYWlnQ0FBVWdBUXNMUkFBQ1FBTkFJQUlnQTBZTkFRSkFJQUlvQWdCQi93QkxEUUJCc0RJb0FnQWdBaWdDQUVFQmRHb3ZBUUFnQVhGRkRRQWdBa0VFYWlFQ0RBRUxDeUFDSVFNTElBTUxRd0FEUUFKQUlBSWdBMGNFZnlBQ0tBSUFRZjhBU3cwQlFiQXlLQUlBSUFJb0FnQkJBWFJxTHdFQUlBRnhSUTBCSUFJRklBTUxEd3NnQWtFRWFpRUNEQUFMQUF0RkFBTkFJQUVnQWtjRVFDQURJQUVvQWdCQi93Qk5CSDlCc0RJb0FnQWdBU2dDQUVFQmRHb3ZBUUFGUVFBTE93RUFJQU5CQW1vaEF5QUJRUVJxSVFFTUFRc0xJQUlMSXdBZ0FrSC9BRTBFZjBHd01pZ0NBQ0FDUVFGMGFpOEJBQ0FCY1VFQVJ3VkJBQXNMUUFFQ2Z5QUFLQUlBS0FJQUlnQW9BZ0FnQUNnQ0NDSUNRUUYxYWlFQklBQW9BZ1FoQUNBQklBSkJBWEVFZnlBQktBSUFJQUJxS0FJQUJTQUFDeEVCQUFzUEFDQUFJQUFvQWdBb0FnUVJBUUFMSHdBZ0FBSi9RZmlJQVVINGlBRW9BZ0JCQVdvaUFEWUNBQ0FBQ3pZQ0JBc0pBQ0FBRUpNQ0VCQUxtQUVBSXdCQkVHc2lBeVFBQWtBZ0JSQTFSUVJBSUFBZ0JTZ0NDRFlDQ0NBQUlBVXBBZ0EzQWdBTUFRc2dCU2dDQUNFRUFrQUNRQUpBSUFVb0FnUWlBa0VCVFFSQUlBQWhBU0FBSUFJUU9nd0JDeUFDUWUvLy8vOERTdzBCSUFBZ0FDQUNFSUlCUVFGcUlnVVFnUUVpQVJCTklBQWdCUkJNSUFBZ0FoQTVDeUFCSUFRZ0FrRUJhaEJ4REFFTEVCY0FDd3NnQTBFUWFpUUFDd2tBSUFBZ0JSRFJBUXVHQXdFSWZ5TUFRZkFEYXlJQUpBQWdBRUhvQTJvaUJpQURFQThnQmhBN0lRb2dCUkFKQkVBZ0JVRUFFTEVCS0FJQUlBcEJMUkE5UmlFTEN5QUNJQXNnQUVIb0Eyb2dBRUhnQTJvZ0FFSGNBMm9nQUVIWUEyb2dBRUhJQTJvUUVTSU1JQUJCdUFOcUVFY2lCaUFBUWFnRGFoQkhJZ2NnQUVHa0Eyb1Ftd0lnQUVFMU5nSVFJQUJCQ0dwQkFDQUFRUkJxSWdJUUhpRUlBa0FDZnlBRkVBa2dBQ2dDcEFOS0JFQWdCUkFKSVFrZ0FDZ0NwQU1oRFNBSEVBa2dDU0FOYTBFQmRHb2dCaEFKYWlBQUtBS2tBMnBCQVdvTUFRc2dCeEFKSUFZUUNXb2dBQ2dDcEFOcVFRSnFDeUlKUWVVQVNRMEFJQWdnQ1VFQ2RCQVpFQ2NnQ0NnQ0FDSUNEUUFRRndBTElBSWdBRUVFYWlBQUlBTW9BZ1FnQlJBTklBVVFEU0FGRUFsQkFuUnFJQW9nQ3lBQVFlQURhaUFBS0FMY0F5QUFLQUxZQXlBTUlBWWdCeUFBS0FLa0F4Q2FBaUFCSUFJZ0FDZ0NCQ0FBS0FJQUlBTWdCQkJpSVFFZ0NCQWRJQWNRQ2hvZ0JoQUtHaUFNRUFvYUlBQkI2QU5xRUE0Z0FFSHdBMm9rQUNBQkM3c0VBUXQvSXdCQnNBaHJJZ0FrQUNBQUlBVTNBeEFnQUNBR053TVlJQUFnQUVIQUIyb2lCellDdkFjZ0J5QUFRUkJxRU5ZQ0lRY2dBRUUxTmdLZ0JDQUFRWmdFYWtFQUlBQkJvQVJxSWdrUUhpRU9JQUJCTlRZQ29BUWdBRUdRQkdwQkFDQUpFQjRoQ2dKQUlBZEI1QUJQQkVBUUZpRUhJQUFnQlRjREFDQUFJQVkzQXdnZ0FFRzhCMm9nQjBIdUhDQUFFRm9pQjBGL1JnMEJJQTRnQUNnQ3ZBY1FKeUFLSUFkQkFuUVFHUkFuSUFvUW5nSU5BU0FLS0FJQUlRa0xJQUJCaUFScUlnZ2dBeEFQSUFnUU95SVJJQUFvQXJ3SElnZ2dCeUFJYWlBSkVHTWdCMEVBU2dSQUlBQW9BcndITFFBQVFTMUdJUThMSUFJZ0R5QUFRWWdFYWlBQVFZQUVhaUFBUWZ3RGFpQUFRZmdEYWlBQVFlZ0RhaEFSSWhBZ0FFSFlBMm9RUnlJSUlBQkJ5QU5xRUVjaUN5QUFRY1FEYWhDYkFpQUFRVFUyQWpBZ0FFRW9ha0VBSUFCQk1Hb2lBaEFlSVF3Q2Z5QUFLQUxFQXlJTklBZElCRUFnQ3hBSklBY2dEV3RCQVhScUlBZ1FDV29nQUNnQ3hBTnFRUUZxREFFTElBc1FDU0FJRUFscUlBQW9Bc1FEYWtFQ2Fnc2lEVUhsQUU4RVFDQU1JQTFCQW5RUUdSQW5JQXdvQWdBaUFrVU5BUXNnQWlBQVFTUnFJQUJCSUdvZ0F5Z0NCQ0FKSUFrZ0IwRUNkR29nRVNBUElBQkJnQVJxSUFBb0F2d0RJQUFvQXZnRElCQWdDQ0FMSUFBb0FzUURFSm9DSUFFZ0FpQUFLQUlrSUFBb0FpQWdBeUFFRUdJaEFTQU1FQjBnQ3hBS0dpQUlFQW9hSUJBUUNob2dBRUdJQkdvUURpQUtFQjBnRGhBZElBQkJzQWhxSkFBZ0FROExFQmNBQy80Q0FRaC9Jd0JCd0FGcklnQWtBQ0FBUWJnQmFpSUdJQU1RRHlBR0VESWhDaUFGRUFrRVFDQUZRUUFRQ3kwQUFDQUtRUzBRS1VIL0FYRkdJUXNMSUFJZ0N5QUFRYmdCYWlBQVFiQUJhaUFBUWE4QmFpQUFRYTRCYWlBQVFhQUJhaEFSSWd3Z0FFR1FBV29RRVNJR0lBQkJnQUZxRUJFaUJ5QUFRZndBYWhDZEFpQUFRVFUyQWhBZ0FFRUlha0VBSUFCQkVHb2lBaEFlSVFnQ1FBSi9JQVVRQ1NBQUtBSjhTZ1JBSUFVUUNTRUpJQUFvQW53aERTQUhFQWtnQ1NBTmEwRUJkR29nQmhBSmFpQUFLQUo4YWtFQmFnd0JDeUFIRUFrZ0JoQUphaUFBS0FKOGFrRUNhZ3NpQ1VIbEFFa05BQ0FJSUFrUUdSQW5JQWdvQWdBaUFnMEFFQmNBQ3lBQ0lBQkJCR29nQUNBREtBSUVJQVVRRFNBRkVBMGdCUkFKYWlBS0lBc2dBRUd3QVdvZ0FDd0Fyd0VnQUN3QXJnRWdEQ0FHSUFjZ0FDZ0NmQkNjQWlBQklBSWdBQ2dDQkNBQUtBSUFJQU1nQkJCV0lRRWdDQkFkSUFjUUNob2dCaEFLR2lBTUVBb2FJQUJCdUFGcUVBNGdBRUhBQVdva0FDQUJDN0lFQVF0L0l3QkIwQU5ySWdBa0FDQUFJQVUzQXhBZ0FDQUdOd01ZSUFBZ0FFSGdBbW9pQnpZQzNBSWdCeUFBUVJCcUVOWUNJUWNnQUVFMU5nTHdBU0FBUWVnQmFrRUFJQUJCOEFGcUlna1FIaUVPSUFCQk5UWUM4QUVnQUVIZ0FXcEJBQ0FKRUI0aENnSkFJQWRCNUFCUEJFQVFGaUVISUFBZ0JUY0RBQ0FBSUFZM0F3Z2dBRUhjQW1vZ0IwSHVIQ0FBRUZvaUIwRi9SZzBCSUE0Z0FDZ0MzQUlRSnlBS0lBY1FHUkFuSUFvUW5nSU5BU0FLS0FJQUlRa0xJQUJCMkFGcUlnZ2dBeEFQSUFnUU1pSVJJQUFvQXR3Q0lnZ2dCeUFJYWlBSkVHOGdCMEVBU2dSQUlBQW9BdHdDTFFBQVFTMUdJUThMSUFJZ0R5QUFRZGdCYWlBQVFkQUJhaUFBUWM4QmFpQUFRYzRCYWlBQVFjQUJhaEFSSWhBZ0FFR3dBV29RRVNJSUlBQkJvQUZxRUJFaUN5QUFRWndCYWhDZEFpQUFRVFUyQWpBZ0FFRW9ha0VBSUFCQk1Hb2lBaEFlSVF3Q2Z5QUFLQUtjQVNJTklBZElCRUFnQ3hBSklBY2dEV3RCQVhScUlBZ1FDV29nQUNnQ25BRnFRUUZxREFFTElBc1FDU0FJRUFscUlBQW9BcHdCYWtFQ2Fnc2lEVUhsQUU4RVFDQU1JQTBRR1JBbklBd29BZ0FpQWtVTkFRc2dBaUFBUVNScUlBQkJJR29nQXlnQ0JDQUpJQWNnQ1dvZ0VTQVBJQUJCMEFGcUlBQXNBTThCSUFBc0FNNEJJQkFnQ0NBTElBQW9BcHdCRUp3Q0lBRWdBaUFBS0FJa0lBQW9BaUFnQXlBRUVGWWhBU0FNRUIwZ0N4QUtHaUFJRUFvYUlCQVFDaG9nQUVIWUFXb1FEaUFLRUIwZ0RoQWRJQUJCMEFOcUpBQWdBUThMRUJjQUM2Y0ZBUU4vSXdCQndBTnJJZ0FrQUNBQUlBSTJBckFESUFBZ0FUWUN1QU1nQUVFMk5nSVVJQUJCR0dvZ0FFRWdhaUFBUVJScUlnY1FIaUVKSUFCQkVHb2lBU0FFRUE4Z0FSQTdJUWdnQUVFQU9nQVBJQUJCdUFOcUlBSWdBeUFCSUFRb0FnUWdCU0FBUVE5cUlBZ2dDU0FISUFCQnNBTnFFS1FDQkVBakFFRVFheUlCSkFBQ1FDQUdFRFVFUUNBR0tBSUFJUUlnQVVFQU5nSU1JQUlnQVVFTWFoQXpJQVpCQUJBNURBRUxJQUZCQURZQ0NDQUdJQUZCQ0dvUU15QUdRUUFRT2dzZ0FVRVFhaVFBSUFBdEFBOEVRQ0FHSUFoQkxSQTlFTWNCQ3lBSVFUQVFQU0VCSUFrb0FnQWhCQ0FBS0FJVUlnaEJCR3NoQWdOQUFrQWdBaUFFVFEwQUlBUW9BZ0FnQVVjTkFDQUVRUVJxSVFRTUFRc0xJd0JCRUdzaUFTUUFJQVlRQ1NFQ0lBWVF6d0VoQXdKQUlBUWdDQkNpQWlJSFJRMEFJQVlRRFNBRVRRUi9JQVFnQmhBTklBWVFDVUVDZEdwTkJVRUFDMFVFUUNBSElBTWdBbXRMQkVBZ0JpQURJQUlnQjJvZ0Eyc2dBaUFDRVBNQkN5QUdFQTBnQWtFQ2RHb2hBd05BSUFRZ0NFY0VRQ0FESUFRUU15QUVRUVJxSVFRZ0EwRUVhaUVEREFFTEN5QUJRUUEyQWdBZ0F5QUJFRE1nQmlBQ0lBZHFFSGdNQVFzakFFRVFheUlDSkFBZ0FTQUVJQWdRemdJZ0FrRVFhaVFBSUFFUURTRUlJQUVRQ1NFQ0l3QkJFR3NpQkNRQUFrQWdBaUFHRU04QklnY2dCaEFKSWdOclRRUkFJQUpGRFFFZ0JoQU5JZ2NnQTBFQ2RHb2dDQ0FDRUhFZ0JpQUNJQU5xSWdJUWVDQUVRUUEyQWd3Z0J5QUNRUUowYWlBRVFReHFFRE1NQVFzZ0JpQUhJQUlnQTJvZ0Iyc2dBeUFEUVFBZ0FpQUlFUFFCQ3lBRVFSQnFKQUFnQVJBS0dnc2dBVUVRYWlRQUN5QUFRYmdEYWlBQVFiQURhaEFvQkVBZ0JTQUZLQUlBUVFKeU5nSUFDeUFBS0FLNEF5RUJJQUJCRUdvUURpQUpFQjBnQUVIQUEyb2tBQ0FCQzljREFRSi9Jd0JCOEFScklnQWtBQ0FBSUFJMkF1QUVJQUFnQVRZQzZBUWdBRUUyTmdJUUlBQkJ5QUZxSUFCQjBBRnFJQUJCRUdvUUhpRUJJQUJCd0FGcUlnY2dCQkFQSUFjUU95RUlJQUJCQURvQXZ3RUNRQ0FBUWVnRWFpQUNJQU1nQnlBRUtBSUVJQVVnQUVHL0FXb2dDQ0FCSUFCQnhBRnFJQUJCNEFScUVLUUNSUTBBSUFCQm94NG9BQUEyQUxjQklBQkJuQjRwQUFBM0E3QUJJQWdnQUVHd0FXb2dBRUc2QVdvZ0FFR0FBV29RWXlBQVFUVTJBaEFnQUVFSWFrRUFJQUJCRUdvaUFoQWVJUU1DUUNBQUtBTEVBU0FCS0FJQWEwR0pBMDRFUUNBRElBQW9Bc1FCSUFFb0FnQnJRUUoxUVFKcUVCa1FKeUFES0FJQVJRMEJJQU1vQWdBaEFnc2dBQzBBdndFRVFDQUNRUzA2QUFBZ0FrRUJhaUVDQ3lBQktBSUFJUVFEUUNBQUtBTEVBU0FFVFFSQUFrQWdBa0VBT2dBQUlBQWdCallDQUNBQVFSQnFJQUFRMXdKQkFVY05BQ0FERUIwTUJBc0ZJQUlnQUVHd0FXb2dBRUdBQVdvaUJ5QUhRU2hxSUFRUTBnRWdCMnRCQW5WcUxRQUFPZ0FBSUFKQkFXb2hBaUFFUVFScUlRUU1BUXNMRUJjQUN4QVhBQXNnQUVIb0JHb2dBRUhnQkdvUUtBUkFJQVVnQlNnQ0FFRUNjallDQUFzZ0FDZ0M2QVFoQWlBQVFjQUJhaEFPSUFFUUhTQUFRZkFFYWlRQUlBSUxwQVVCQTM4akFFR2dBV3NpQUNRQUlBQWdBallDa0FFZ0FDQUJOZ0tZQVNBQVFUWTJBaFFnQUVFWWFpQUFRU0JxSUFCQkZHb2lCeEFlSVFrZ0FFRVFhaUlCSUFRUUR5QUJFREloQ0NBQVFRQTZBQThnQUVHWUFXb2dBaUFESUFFZ0JDZ0NCQ0FGSUFCQkQyb2dDQ0FKSUFjZ0FFR0VBV29RcXdJRVFDTUFRUkJySWdFa0FBSkFJQVlRTlFSQUlBWW9BZ0FoQWlBQlFRQTZBQThnQWlBQlFROXFFRFFnQmtFQUVEa01BUXNnQVVFQU9nQU9JQVlnQVVFT2FoQTBJQVpCQUJBNkN5QUJRUkJxSkFBZ0FDMEFEd1JBSUFZZ0NFRXRFQ2tRb1FFTElBaEJNQkFwSVFFZ0NTZ0NBQ0VFSUFBb0FoUWlDRUVCYXlFQ0lBRkIvd0Z4SVFFRFFBSkFJQUlnQkUwTkFDQUVMUUFBSUFGSERRQWdCRUVCYWlFRURBRUxDeU1BUVJCcklnRWtBQ0FHRUFraEFpQUdFQk1oQXdKQUlBUWdDQkR2QWlJSFJRMEFJQVlRRFNBRVRRUi9JQVFnQmhBTklBWVFDV3BOQlVFQUMwVUVRQ0FISUFNZ0FtdExCRUFnQmlBRElBSWdCMm9nQTJzZ0FpQUNFTWdCQ3lBR0VBMGdBbW9oQXdOQUlBUWdDRWNFUUNBRElBUVFOQ0FFUVFGcUlRUWdBMEVCYWlFRERBRUxDeUFCUVFBNkFBOGdBeUFCUVE5cUVEUWdCaUFDSUFkcUVIZ01BUXNqQUVFUWF5SUNKQUFnQVNBRUlBZ1E4d0lnQWtFUWFpUUFJQUVRRFNFSUlBRVFDU0VDSXdCQkVHc2lCQ1FBQWtBZ0FpQUdFQk1pQnlBR0VBa2lBMnROQkVBZ0FrVU5BU0FHRUEwaUJ5QURhaUFJSUFJUVZTQUdJQUlnQTJvaUFoQjRJQVJCQURvQUR5QUNJQWRxSUFSQkQyb1FOQXdCQ3lBR0lBY2dBaUFEYWlBSGF5QURJQU5CQUNBQ0lBZ1ErQUVMSUFSQkVHb2tBQ0FCRUFvYUN5QUJRUkJxSkFBTElBQkJtQUZxSUFCQmtBRnFFQ1lFUUNBRklBVW9BZ0JCQW5JMkFnQUxJQUFvQXBnQklRRWdBRUVRYWhBT0lBa1FIU0FBUWFBQmFpUUFJQUVMelFNQkFuOGpBRUdnQW1zaUFDUUFJQUFnQWpZQ2tBSWdBQ0FCTmdLWUFpQUFRVFkyQWhBZ0FFR1lBV29nQUVHZ0FXb2dBRUVRYWhBZUlRRWdBRUdRQVdvaUJ5QUVFQThnQnhBeUlRZ2dBRUVBT2dDUEFRSkFJQUJCbUFKcUlBSWdBeUFISUFRb0FnUWdCU0FBUVk4QmFpQUlJQUVnQUVHVUFXb2dBRUdFQW1vUXF3SkZEUUFnQUVHakhpZ0FBRFlBaHdFZ0FFR2NIaWtBQURjRGdBRWdDQ0FBUVlBQmFpQUFRWW9CYWlBQVFmWUFhaEJ2SUFCQk5UWUNFQ0FBUVFocVFRQWdBRUVRYWlJQ0VCNGhBd0pBSUFBb0FwUUJJQUVvQWdCclFlTUFUZ1JBSUFNZ0FDZ0NsQUVnQVNnQ0FHdEJBbW9RR1JBbklBTW9BZ0JGRFFFZ0F5Z0NBQ0VDQ3lBQUxRQ1BBUVJBSUFKQkxUb0FBQ0FDUVFGcUlRSUxJQUVvQWdBaEJBTkFJQUFvQXBRQklBUk5CRUFDUUNBQ1FRQTZBQUFnQUNBR05nSUFJQUJCRUdvZ0FCRFhBa0VCUncwQUlBTVFIUXdFQ3dVZ0FpQUFRZllBYWlJSElBZEJDbW9nQkJEVkFTQUFheUFBYWkwQUNqb0FBQ0FDUVFGcUlRSWdCRUVCYWlFRURBRUxDeEFYQUFzUUZ3QUxJQUJCbUFKcUlBQkJrQUpxRUNZRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0FwZ0NJUUlnQUVHUUFXb1FEaUFCRUIwZ0FFR2dBbW9rQUNBQ0M1Z0NBUUovSXdCQm9BTnJJZ2drQUNBSUlBaEJvQU5xSWdNMkFnd2pBRUdRQVdzaUJ5UUFJQWNnQjBHRUFXbzJBaHdnQUVFSWFpQUhRU0JxSWdJZ0IwRWNhaUFFSUFVZ0JoQ3hBaUFIUWdBM0F4QWdCeUFDTmdJTUlBaEJFR29pQWlBSUtBSU1FSzRDSVFRZ0FDZ0NDQ0VGSXdCQkVHc2lBQ1FBSUFBZ0JUWUNEQ0FBUVFocUlBQkJER29RVWlFRklBSWdCMEVNYWlBRUlBZEJFR29RMGdJaEJDQUZFRkVnQUVFUWFpUUFJQVJCZjBZRVFCQVhBQXNnQ0NBQ0lBUkJBblJxTmdJTUlBZEJrQUZxSkFBZ0NDZ0NEQ0VFSXdCQkVHc2lBQ1FBSUFBZ0FUWUNDQU5BSUFJZ0JFY0VRQ0FBUVFocUlBSW9BZ0FROXdJZ0FrRUVhaUVDREFFTEN5QUFLQUlJSVFFZ0FFRVFhaVFBSUFNa0FDQUJDNFVCQUNNQVFZQUJheUlDSkFBZ0FpQUNRZlFBYWpZQ0RDQUFRUWhxSUFKQkVHb2lBQ0FDUVF4cUlBUWdCU0FHRUxFQ0lBQWhCQ0FDS0FJTUlRTWpBRUVRYXlJQUpBQWdBQ0FCTmdJSUEwQWdBeUFFUndSQUlBQkJDR29nQkN3QUFCRDRBaUFFUVFGcUlRUU1BUXNMSUFBb0FnZ2hBU0FBUVJCcUpBQWdBa0dBQVdva0FDQUJDK0FNQVFGL0l3QkJRR29pQnlRQUlBY2dBVFlDT0NBRVFRQTJBZ0FnQnlBREVBOGdCeEE3SVFnZ0J4QU9BbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVpCd1FCckRqa0FBUmNFRndVWEJnY1hGeGNLRnhjWEZ3NFBFQmNYRnhNVkZ4Y1hGeGNYRndBQkFnTURGeGNCRndnWEZ3a0xGd3dYRFJjTEZ4Y1JFaFFXQ3lBQUlBVkJHR29nQjBFNGFpQUNJQVFnQ0JDMUFnd1lDeUFBSUFWQkVHb2dCMEU0YWlBQ0lBUWdDQkMwQWd3WEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0RCRUFBQ0lBRUEwZ0FCQU5JQUFRQ1VFQ2RHb1FZRFlDT0F3V0N5QUhRVGhxSUFJZ0JDQUlRUUlRV0NFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCQUV4eUlBQkJIMHB5UlFSQUlBVWdBRFlDREF3QkN5QUVJQUZCQkhJMkFnQUxEQlVMSUFkQnVORUFLUU1BTndNWUlBZEJzTkVBS1FNQU53TVFJQWRCcU5FQUtRTUFOd01JSUFkQm9ORUFLUU1BTndNQUlBY2dBQ0FCSUFJZ0F5QUVJQVVnQnlBSFFTQnFFR0EyQWpnTUZBc2dCMEhZMFFBcEF3QTNBeGdnQjBIUTBRQXBBd0EzQXhBZ0IwSEkwUUFwQXdBM0F3Z2dCMEhBMFFBcEF3QTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCSUdvUVlEWUNPQXdUQ3lBSFFUaHFJQUlnQkNBSVFRSVFXQ0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJGMHB5UlFSQUlBVWdBRFlDQ0F3QkN5QUVJQUZCQkhJMkFnQUxEQklMSUFkQk9Hb2dBaUFFSUFoQkFoQllJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUFUSElnQUVFTVNuSkZCRUFnQlNBQU5nSUlEQUVMSUFRZ0FVRUVjallDQUFzTUVRc2dCMEU0YWlBQ0lBUWdDRUVERUZnaEFBSkFJQVFvQWdBaUFVRUVjU0FBUWUwQ1NuSkZCRUFnQlNBQU5nSWNEQUVMSUFRZ0FVRUVjallDQUFzTUVBc2dCMEU0YWlBQ0lBUWdDRUVDRUZnaEFBSkFJQVFvQWdBaUFVRUVjU0FBUVF4S2NrVUVRQ0FGSUFCQkFXczJBaEFNQVFzZ0JDQUJRUVJ5TmdJQUN3d1BDeUFIUVRocUlBSWdCQ0FJUVFJUVdDRUFBa0FnQkNnQ0FDSUJRUVJ4SUFCQk8wcHlSUVJBSUFVZ0FEWUNCQXdCQ3lBRUlBRkJCSEkyQWdBTERBNExJQWRCT0dvaEFDTUFRUkJySWdFa0FDQUJJQUkyQWdnRFFBSkFJQUFnQVVFSWFoQTJSUTBBSUFoQmdNQUFJQUFRSVJCT1JRMEFJQUFRSlJvTUFRc0xJQUFnQVVFSWFoQW9CRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUJRUkJxSkFBTURRc2dCMEU0YWlFQkFrQWdBRUVJYWlBQUtBSUlLQUlJRVFBQUlnQVFDVUVBSUFCQkRHb1FDV3RHQkVBZ0JDQUVLQUlBUVFSeU5nSUFEQUVMSUFFZ0FpQUFJQUJCR0dvZ0NDQUVRUUFRc2dFZ0FHc2lBU0FGS0FJSUlnQkJERWR5UlFSQUlBVkJBRFlDQ0F3QkN5QUJRUXhISUFCQkMwcHlSUVJBSUFVZ0FFRU1hallDQ0FzTERBd0xJQWRCNE5FQVFTd1FRaUlHSUFBZ0FTQUNJQU1nQkNBRklBWWdCa0VzYWhCZ05nSTREQXNMSUFkQm9OSUFLQUlBTmdJUUlBZEJtTklBS1FNQU53TUlJQWRCa05JQUtRTUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVJScUVHQTJBamdNQ2dzZ0IwRTRhaUFDSUFRZ0NFRUNFRmdoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFjalNBQ2tEQURjREdDQUhRY0RTQUNrREFEY0RFQ0FIUWJqU0FDa0RBRGNEQ0NBSFFiRFNBQ2tEQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRWdhaEJnTmdJNERBZ0xJQWRCT0dvZ0FpQUVJQWhCQVJCWUlRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFR1NuSkZCRUFnQlNBQU5nSVlEQUVMSUFRZ0FVRUVjallDQUFzTUJ3c2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVGQUF3SEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0dCRUFBQ0lBRUEwZ0FCQU5JQUFRQ1VFQ2RHb1FZRFlDT0F3RkN5QUZRUlJxSUFkQk9Hb2dBaUFFSUFnUXN3SU1CQXNnQjBFNGFpQUNJQVFnQ0VFRUVGZ2hBQ0FFTFFBQVFRUnhSUVJBSUFVZ0FFSHNEbXMyQWhRTERBTUxJQVpCSlVZTkFRc2dCQ0FFS0FJQVFRUnlOZ0lBREFFTEl3QkJFR3NpQUNRQUlBQWdBallDQ0VFR0lRRUNRQUpBSUFkQk9Hb2lBaUFBUVFocUVDZ05BRUVFSVFFZ0NDQUNFQ0VRaHdGQkpVY05BRUVDSVFFZ0FoQWxJQUJCQ0dvUUtFVU5BUXNnQkNBRUtBSUFJQUZ5TmdJQUN5QUFRUkJxSkFBTElBY29BamdMSVFBZ0IwRkFheVFBSUFBTFJ3RUJmeU1BUVJCcklnWWtBQ0FHSUFFMkFnZ2dCaUFERUE4Z0JoQTdJUUVnQmhBT0lBVkJGR29nQmtFSWFpQUNJQVFnQVJDekFpQUdLQUlJSVFBZ0JrRVFhaVFBSUFBTFNRRUJmeU1BUVJCcklnWWtBQ0FHSUFFMkFnZ2dCaUFERUE4Z0JoQTdJUUVnQmhBT0lBQWdCVUVRYWlBR1FRaHFJQUlnQkNBQkVMUUNJQVlvQWdnaEFDQUdRUkJxSkFBZ0FBdEpBUUYvSXdCQkVHc2lCaVFBSUFZZ0FUWUNDQ0FHSUFNUUR5QUdFRHNoQVNBR0VBNGdBQ0FGUVJocUlBWkJDR29nQWlBRUlBRVF0UUlnQmlnQ0NDRUFJQVpCRUdva0FDQUFDekFBSUFBZ0FTQUNJQU1nQkNBRklBQkJDR29nQUNnQ0NDZ0NGQkVBQUNJQUVBMGdBQkFOSUFBUUNVRUNkR29RWUF0Y0FRRi9Jd0JCSUdzaUJpUUFJQVpCeU5JQUtRTUFOd01ZSUFaQndOSUFLUU1BTndNUUlBWkJ1TklBS1FNQU53TUlJQVpCc05JQUtRTUFOd01BSUFBZ0FTQUNJQU1nQkNBRklBWWdCa0VnYWlJQkVHQWhBQ0FCSkFBZ0FBdE1BUUYvUWNTQkFVSEFnUUVnQWhzZ0FUWUNBQ0FCUVFCS0JFQkJvSUVCUVlDQkFTQUNHeUVEUVFBaEFnTkFJQUlnQTJvZ0FDQUNhaTBBQURvQUFDQUNRUUZxSWdJZ0FVY05BQXNMQzVBTUFRSi9Jd0JCSUdzaUJ5UUFJQWNnQVRZQ0dDQUVRUUEyQWdBZ0IwRUlhaUlKSUFNUUR5QUpFREloQ0NBSkVBNENmd0pBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdCa0hCQUdzT09RQUJGd1FYQlJjR0J4Y1hGd29YRnhjWERnOFFGeGNYRXhVWEZ4Y1hGeGNYQUFFQ0F3TVhGd0VYQ0JjWENRc1hEQmNORndzWEZ4RVNGQllMSUFBZ0JVRVlhaUFIUVJocUlBSWdCQ0FJRUxnQ0RCZ0xJQUFnQlVFUWFpQUhRUmhxSUFJZ0JDQUlFTGNDREJjTElBY2dBQ0FCSUFJZ0F5QUVJQVVnQUVFSWFpQUFLQUlJS0FJTUVRQUFJZ0FRRFNBQUVBMGdBQkFKYWhCaE5nSVlEQllMSUFkQkdHb2dBaUFFSUFoQkFoQlpJUUFDUUNBRUtBSUFJZ0ZCQkhFZ0FFRUFUSElnQUVFZlNuSkZCRUFnQlNBQU5nSU1EQUVMSUFRZ0FVRUVjallDQUFzTUZRc2dCMEtsMnIycHd1ekxrdmtBTndNSUlBY2dBQ0FCSUFJZ0F5QUVJQVVnQjBFSWFpQUhRUkJxRUdFMkFoZ01GQXNnQjBLbHNyV3AwcTNMa3VRQU53TUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVJCcUVHRTJBaGdNRXdzZ0IwRVlhaUFDSUFRZ0NFRUNFRmtoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRUmRLY2tVRVFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dTQ3lBSFFSaHFJQUlnQkNBSVFRSVFXU0VBQWtBZ0JDZ0NBQ0lCUVFSeElBQkJBRXh5SUFCQkRFcHlSUVJBSUFVZ0FEWUNDQXdCQ3lBRUlBRkJCSEkyQWdBTERCRUxJQWRCR0dvZ0FpQUVJQWhCQXhCWklRQUNRQ0FFS0FJQUlnRkJCSEVnQUVIdEFrcHlSUVJBSUFVZ0FEWUNIQXdCQ3lBRUlBRkJCSEkyQWdBTERCQUxJQWRCR0dvZ0FpQUVJQWhCQWhCWklRQUNRQ0FFS0FJQUlnRkJCSEVnQUVFTVNuSkZCRUFnQlNBQVFRRnJOZ0lRREFFTElBUWdBVUVFY2pZQ0FBc01Ed3NnQjBFWWFpQUNJQVFnQ0VFQ0VGa2hBQUpBSUFRb0FnQWlBVUVFY1NBQVFUdEtja1VFUUNBRklBQTJBZ1FNQVFzZ0JDQUJRUVJ5TmdJQUN3d09DeUFIUVJocUlRQWpBRUVRYXlJQkpBQWdBU0FDTmdJSUEwQUNRQ0FBSUFGQkNHb1FNVVVOQUNBSVFZREFBQ0FBRUI4UVJFVU5BQ0FBRUNJYURBRUxDeUFBSUFGQkNHb1FKZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBVUVRYWlRQURBMExJQWRCR0dvaEFRSkFJQUJCQ0dvZ0FDZ0NDQ2dDQ0JFQUFDSUFFQWxCQUNBQVFReHFFQWxyUmdSQUlBUWdCQ2dDQUVFRWNqWUNBQXdCQ3lBQklBSWdBQ0FBUVJocUlBZ2dCRUVBRUxRQklBQnJJZ0VnQlNnQ0NDSUFRUXhIY2tVRVFDQUZRUUEyQWdnTUFRc2dBVUVNUnlBQVFRdEtja1VFUUNBRklBQkJER28yQWdnTEN3d01DeUFIUVpUUkFDZ0FBRFlBRHlBSFFZM1JBQ2tBQURjRENDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFkQkNHb2dCMEVUYWhCaE5nSVlEQXNMSUFkQm5ORUFMUUFBT2dBTUlBZEJtTkVBS0FBQU5nSUlJQWNnQUNBQklBSWdBeUFFSUFVZ0IwRUlhaUFIUVExcUVHRTJBaGdNQ2dzZ0IwRVlhaUFDSUFRZ0NFRUNFRmtoQUFKQUlBUW9BZ0FpQVVFRWNTQUFRVHhLY2tVRVFDQUZJQUEyQWdBTUFRc2dCQ0FCUVFSeU5nSUFDd3dKQ3lBSFFxV1E2YW5TeWM2UzB3QTNBd2dnQnlBQUlBRWdBaUFESUFRZ0JTQUhRUWhxSUFkQkVHb1FZVFlDR0F3SUN5QUhRUmhxSUFJZ0JDQUlRUUVRV1NFQUFrQWdCQ2dDQUNJQlFRUnhJQUJCQmtweVJRUkFJQVVnQURZQ0dBd0JDeUFFSUFGQkJISTJBZ0FMREFjTElBQWdBU0FDSUFNZ0JDQUZJQUFvQWdBb0FoUVJCUUFNQndzZ0J5QUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhnUkFBQWlBQkFOSUFBUURTQUFFQWxxRUdFMkFoZ01CUXNnQlVFVWFpQUhRUmhxSUFJZ0JDQUlFTFlDREFRTElBZEJHR29nQWlBRUlBaEJCQkJaSVFBZ0JDMEFBRUVFY1VVRVFDQUZJQUJCN0E1ck5nSVVDd3dEQ3lBR1FTVkdEUUVMSUFRZ0JDZ0NBRUVFY2pZQ0FBd0JDeU1BUVJCcklnQWtBQ0FBSUFJMkFnaEJCaUVCQWtBQ1FDQUhRUmhxSWdJZ0FFRUlhaEFtRFFCQkJDRUJJQWdnQWhBZkVJZ0JRU1ZIRFFCQkFpRUJJQUlRSWlBQVFRaHFFQ1pGRFFFTElBUWdCQ2dDQUNBQmNqWUNBQXNnQUVFUWFpUUFDeUFIS0FJWUN5RUFJQWRCSUdva0FDQUFDMGNCQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QVBJQVlRTWlFQklBWVFEaUFGUVJScUlBWkJDR29nQWlBRUlBRVF0Z0lnQmlnQ0NDRUFJQVpCRUdva0FDQUFDMGtCQVg4akFFRVFheUlHSkFBZ0JpQUJOZ0lJSUFZZ0F4QVBJQVlRTWlFQklBWVFEaUFBSUFWQkVHb2dCa0VJYWlBQ0lBUWdBUkMzQWlBR0tBSUlJUUFnQmtFUWFpUUFJQUFMU1FFQmZ5TUFRUkJySWdZa0FDQUdJQUUyQWdnZ0JpQURFQThnQmhBeUlRRWdCaEFPSUFBZ0JVRVlhaUFHUVFocUlBSWdCQ0FCRUxnQ0lBWW9BZ2doQUNBR1FSQnFKQUFnQUFzdEFDQUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhRUkFBQWlBQkFOSUFBUURTQUFFQWxxRUdFTFB3RUJmeU1BUVJCcklnWWtBQ0FHUXFXUTZhblN5YzZTMHdBM0F3Z2dBQ0FCSUFJZ0F5QUVJQVVnQmtFSWFpQUdRUkJxSWdFUVlTRUFJQUVrQUNBQUM2NEJBUVYvSXdCQjBBRnJJZ0FrQUNBQVFZdlJBQzhBQURzQnpBRWdBRUdIMFFBb0FBQTJBc2dCRUJZaEJpQUFJQVEyQWdBZ0FFR3dBV29pQnlBSElBZEJGQ0FHSUFCQnlBRnFJQUFRTENJSWFpSUVJQUlRUHlFR0lBQkJFR29pQlNBQ0VBOGdCUkE3SVFrZ0JSQU9JQWtnQnlBRUlBVVFZeUFCSUFVZ0NFRUNkQ0FGYWlJQklBWWdBR3RCQW5RZ0FHcEJzQVZySUFRZ0JrWWJJQUVnQWlBREVHSWhBU0FBUWRBQmFpUUFJQUVMZ0FRQkIzOGpBRUd3QTJzaUFDUUFJQUJDSlRjRHFBTWdBRUdvQTJwQkFYSkJqeDRnQWlnQ0JCQ3ZBU0VJSUFBZ0FFR0FBMm8yQXZ3Q0VCWWhCZ0ovSUFnRVFDQUNLQUlJSVFjZ0FFRkFheUFGTndNQUlBQWdCRGNET0NBQUlBYzJBakFnQUVHQUEycEJIaUFHSUFCQnFBTnFJQUJCTUdvUUxBd0JDeUFBSUFRM0ExQWdBQ0FGTndOWUlBQkJnQU5xUVI0Z0JpQUFRYWdEYWlBQVFkQUFhaEFzQ3lFR0lBQkJOVFlDZ0FFZ0FFSHdBbXBCQUNBQVFZQUJhaEFlSVFrZ0FFR0FBMm9pQ2lFSEFrQWdCa0VlVGdSQUVCWWhCZ0ovSUFnRVFDQUNLQUlJSVFjZ0FDQUZOd01RSUFBZ0JEY0RDQ0FBSUFjMkFnQWdBRUg4QW1vZ0JpQUFRYWdEYWlBQUVGb01BUXNnQUNBRU53TWdJQUFnQlRjREtDQUFRZndDYWlBR0lBQkJxQU5xSUFCQklHb1FXZ3NpQmtGL1JnMEJJQWtnQUNnQy9BSVFKeUFBS0FMOEFpRUhDeUFISUFZZ0Iyb2lDeUFDRUQ4aERDQUFRVFUyQW9BQklBQkIrQUJxUVFBZ0FFR0FBV29RSGlFSEFrQWdBQ2dDL0FJZ0FFR0FBMnBHQkVBZ0FFR0FBV29oQmd3QkN5QUdRUU4wRUJraUJrVU5BU0FISUFZUUp5QUFLQUw4QWlFS0N5QUFRZWdBYWlJSUlBSVFEeUFLSUF3Z0N5QUdJQUJCOUFCcUlBQkI4QUJxSUFnUXVnSWdDQkFPSUFFZ0JpQUFLQUowSUFBb0FuQWdBaUFERUdJaEFTQUhFQjBnQ1JBZElBQkJzQU5xSkFBZ0FROExFQmNBQzl3REFRZC9Jd0JCZ0FOcklnQWtBQ0FBUWlVM0EvZ0NJQUJCK0FKcVFRRnlRYVFmSUFJb0FnUVFyd0VoQnlBQUlBQkIwQUpxTmdMTUFoQVdJUVVDZnlBSEJFQWdBaWdDQ0NFR0lBQWdCRGtES0NBQUlBWTJBaUFnQUVIUUFtcEJIaUFGSUFCQitBSnFJQUJCSUdvUUxBd0JDeUFBSUFRNUF6QWdBRUhRQW1wQkhpQUZJQUJCK0FKcUlBQkJNR29RTEFzaEJTQUFRVFUyQWxBZ0FFSEFBbXBCQUNBQVFkQUFhaEFlSVFnZ0FFSFFBbW9pQ1NFR0FrQWdCVUVlVGdSQUVCWWhCUUovSUFjRVFDQUNLQUlJSVFZZ0FDQUVPUU1JSUFBZ0JqWUNBQ0FBUWN3Q2FpQUZJQUJCK0FKcUlBQVFXZ3dCQ3lBQUlBUTVBeEFnQUVITUFtb2dCU0FBUWZnQ2FpQUFRUkJxRUZvTElnVkJmMFlOQVNBSUlBQW9Bc3dDRUNjZ0FDZ0N6QUloQmdzZ0JpQUZJQVpxSWdvZ0FoQS9JUXNnQUVFMU5nSlFJQUJCeUFCcVFRQWdBRUhRQUdvUUhpRUdBa0FnQUNnQ3pBSWdBRUhRQW1wR0JFQWdBRUhRQUdvaEJRd0JDeUFGUVFOMEVCa2lCVVVOQVNBR0lBVVFKeUFBS0FMTUFpRUpDeUFBUVRocUlnY2dBaEFQSUFrZ0N5QUtJQVVnQUVIRUFHb2dBRUZBYXlBSEVMb0NJQWNRRGlBQklBVWdBQ2dDUkNBQUtBSkFJQUlnQXhCaUlRRWdCaEFkSUFnUUhTQUFRWUFEYWlRQUlBRVBDeEFYQUF1aUFRRUVmeU1BUVlBQ2F5SUFKQUFnQUVJbE53UDRBU0FBUWZnQmFpSUdRUUZ5UWRNY1FRQWdBaWdDQkJCdEVCWWhCeUFBSUFRM0F3QWdBRUhnQVdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUs0QklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJpSVFFZ0FFR0FBbW9rQUNBQkM3UUJBUU4vSXdCQm9BRnJJZ0FrQUNBQVFZWFJBQzhBQURzQm5BRWdBRUdCMFFBb0FBQTJBcGdCSUFCQm1BRnFJZ1ZCQVhKQjJoeEJBQ0FDS0FJRUVHMFFGaUVHSUFBZ0JEWUNBQ0FBUVlzQmFpSUVJQVJCRFNBR0lBVWdBQkFzSUFScUlnWWdBaEEvSVFjZ0FFRVFhaUlGSUFJUUR5QUVJQWNnQmlBQVFTQnFJZ1FnQUVFY2FpQUFRUmhxSUFVUXJnRWdCUkFPSUFFZ0JDQUFLQUljSUFBb0FoZ2dBaUFERUdJaEFTQUFRYUFCYWlRQUlBRUxvZ0VCQkg4akFFR0FBbXNpQUNRQUlBQkNKVGNEK0FFZ0FFSDRBV29pQmtFQmNrSFRIRUVCSUFJb0FnUVFiUkFXSVFjZ0FDQUVOd01BSUFCQjRBRnFJZ1VnQlVFWUlBY2dCaUFBRUN3Z0JXb2lCeUFDRUQ4aENDQUFRUkJxSWdZZ0FoQVBJQVVnQ0NBSElBQkJJR29pQlNBQVFSeHFJQUJCR0dvZ0JoQ3VBU0FHRUE0Z0FTQUZJQUFvQWh3Z0FDZ0NHQ0FDSUFNUVlpRUJJQUJCZ0FKcUpBQWdBUXNXQUVHZ2dRRkJ4SUVCS0FJQUlBSWdBQ0FCRU9ZQkM3UUJBUU4vSXdCQm9BRnJJZ0FrQUNBQVFZWFJBQzhBQURzQm5BRWdBRUdCMFFBb0FBQTJBcGdCSUFCQm1BRnFJZ1ZCQVhKQjJoeEJBU0FDS0FJRUVHMFFGaUVHSUFBZ0JEWUNBQ0FBUVlzQmFpSUVJQVJCRFNBR0lBVWdBQkFzSUFScUlnWWdBaEEvSVFjZ0FFRVFhaUlGSUFJUUR5QUVJQWNnQmlBQVFTQnFJZ1FnQUVFY2FpQUFRUmhxSUFVUXJnRWdCUkFPSUFFZ0JDQUFLQUljSUFBb0FoZ2dBaUFERUdJaEFTQUFRYUFCYWlRQUlBRUx6UUVCQVg4akFFRXdheUlGSkFBZ0JTQUJOZ0lvQWtBZ0FpZ0NCRUVCY1VVRVFDQUFJQUVnQWlBRElBUWdBQ2dDQUNnQ0dCRUdBQ0VDREFFTElBVkJHR29pQUNBQ0VBOGdBQkNNQVNFQklBQVFEZ0pBSUFRRVFDQUZRUmhxSUFFUVN3d0JDeUFGUVJocUlBRVFTZ3NnQlNBRlFSaHFFRUEyQWhBRFFDQUZJQVZCR0dvUWJEWUNDQ0FGUVJCcUlBVkJDR29RV3dSQUlBVkJLR29nQlVFUWFpSUFLQUlBS0FJQUVQY0NJQUFRbFFFTUFRVWdCU2dDS0NFQ0lBVkJHR29RQ2hvTEN3c2dCVUV3YWlRQUlBSUxwQUVCQlg4akFFSGdBR3NpQUNRQUlBQkJpOUVBTHdBQU93RmNJQUJCaDlFQUtBQUFOZ0pZRUJZaEJpQUFJQVEyQWdBZ0FFRkFheUlISUFjZ0IwRVVJQVlnQUVIWUFHb2dBQkFzSWdocUlnUWdBaEEvSVFZZ0FFRVFhaUlGSUFJUUR5QUZFREloQ1NBRkVBNGdDU0FISUFRZ0JSQnZJQUVnQlNBRklBaHFJZ0VnQmlBQWF5QUFha0V3YXlBRUlBWkdHeUFCSUFJZ0F4QldJUUVnQUVIZ0FHb2tBQ0FCQzRBRUFRZC9Jd0JCZ0FKcklnQWtBQ0FBUWlVM0EvZ0JJQUJCK0FGcVFRRnlRWThlSUFJb0FnUVFyd0VoQ0NBQUlBQkIwQUZxTmdMTUFSQVdJUVlDZnlBSUJFQWdBaWdDQ0NFSElBQkJRR3NnQlRjREFDQUFJQVEzQXpnZ0FDQUhOZ0l3SUFCQjBBRnFRUjRnQmlBQVFmZ0JhaUFBUVRCcUVDd01BUXNnQUNBRU53TlFJQUFnQlRjRFdDQUFRZEFCYWtFZUlBWWdBRUg0QVdvZ0FFSFFBR29RTEFzaEJpQUFRVFUyQW9BQklBQkJ3QUZxUVFBZ0FFR0FBV29RSGlFSklBQkIwQUZxSWdvaEJ3SkFJQVpCSGs0RVFCQVdJUVlDZnlBSUJFQWdBaWdDQ0NFSElBQWdCVGNERUNBQUlBUTNBd2dnQUNBSE5nSUFJQUJCekFGcUlBWWdBRUg0QVdvZ0FCQmFEQUVMSUFBZ0JEY0RJQ0FBSUFVM0F5Z2dBRUhNQVdvZ0JpQUFRZmdCYWlBQVFTQnFFRm9MSWdaQmYwWU5BU0FKSUFBb0Fzd0JFQ2NnQUNnQ3pBRWhCd3NnQnlBR0lBZHFJZ3NnQWhBL0lRd2dBRUUxTmdLQUFTQUFRZmdBYWtFQUlBQkJnQUZxRUI0aEJ3SkFJQUFvQXN3QklBQkIwQUZxUmdSQUlBQkJnQUZxSVFZTUFRc2dCa0VCZEJBWklnWkZEUUVnQnlBR0VDY2dBQ2dDekFFaENnc2dBRUhvQUdvaUNDQUNFQThnQ2lBTUlBc2dCaUFBUWZRQWFpQUFRZkFBYWlBSUVMd0NJQWdRRGlBQklBWWdBQ2dDZENBQUtBSndJQUlnQXhCV0lRRWdCeEFkSUFrUUhTQUFRWUFDYWlRQUlBRVBDeEFYQUF2Y0F3RUhmeU1BUWRBQmF5SUFKQUFnQUVJbE53UElBU0FBUWNnQmFrRUJja0drSHlBQ0tBSUVFSzhCSVFjZ0FDQUFRYUFCYWpZQ25BRVFGaUVGQW44Z0J3UkFJQUlvQWdnaEJpQUFJQVE1QXlnZ0FDQUdOZ0lnSUFCQm9BRnFRUjRnQlNBQVFjZ0JhaUFBUVNCcUVDd01BUXNnQUNBRU9RTXdJQUJCb0FGcVFSNGdCU0FBUWNnQmFpQUFRVEJxRUN3TElRVWdBRUUxTmdKUUlBQkJrQUZxUVFBZ0FFSFFBR29RSGlFSUlBQkJvQUZxSWdraEJnSkFJQVZCSGs0RVFCQVdJUVVDZnlBSEJFQWdBaWdDQ0NFR0lBQWdCRGtEQ0NBQUlBWTJBZ0FnQUVHY0FXb2dCU0FBUWNnQmFpQUFFRm9NQVFzZ0FDQUVPUU1RSUFCQm5BRnFJQVVnQUVISUFXb2dBRUVRYWhCYUN5SUZRWDlHRFFFZ0NDQUFLQUtjQVJBbklBQW9BcHdCSVFZTElBWWdCU0FHYWlJS0lBSVFQeUVMSUFCQk5UWUNVQ0FBUWNnQWFrRUFJQUJCMEFCcUVCNGhCZ0pBSUFBb0Fwd0JJQUJCb0FGcVJnUkFJQUJCMEFCcUlRVU1BUXNnQlVFQmRCQVpJZ1ZGRFFFZ0JpQUZFQ2NnQUNnQ25BRWhDUXNnQUVFNGFpSUhJQUlRRHlBSklBc2dDaUFGSUFCQnhBQnFJQUJCUUdzZ0J4QzhBaUFIRUE0Z0FTQUZJQUFvQWtRZ0FDZ0NRQ0FDSUFNUVZpRUJJQVlRSFNBSUVCMGdBRUhRQVdva0FDQUJEd3NRRndBTG9RRUJCSDhqQUVId0FHc2lBQ1FBSUFCQ0pUY0RhQ0FBUWVnQWFpSUdRUUZ5UWRNY1FRQWdBaWdDQkJCdEVCWWhCeUFBSUFRM0F3QWdBRUhRQUdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUxBQklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSHdBR29rQUNBQkM3RUJBUU4vSXdCQjBBQnJJZ0FrQUNBQVFZWFJBQzhBQURzQlRDQUFRWUhSQUNnQUFEWUNTQ0FBUWNnQWFpSUZRUUZ5UWRvY1FRQWdBaWdDQkJCdEVCWWhCaUFBSUFRMkFnQWdBRUU3YWlJRUlBUkJEU0FHSUFVZ0FCQXNJQVJxSWdZZ0FoQS9JUWNnQUVFUWFpSUZJQUlRRHlBRUlBY2dCaUFBUVNCcUlnUWdBRUVjYWlBQVFSaHFJQVVRc0FFZ0JSQU9JQUVnQkNBQUtBSWNJQUFvQWhnZ0FpQURFRlloQVNBQVFkQUFhaVFBSUFFTG9RRUJCSDhqQUVId0FHc2lBQ1FBSUFCQ0pUY0RhQ0FBUWVnQWFpSUdRUUZ5UWRNY1FRRWdBaWdDQkJCdEVCWWhCeUFBSUFRM0F3QWdBRUhRQUdvaUJTQUZRUmdnQnlBR0lBQVFMQ0FGYWlJSElBSVFQeUVJSUFCQkVHb2lCaUFDRUE4Z0JTQUlJQWNnQUVFZ2FpSUZJQUJCSEdvZ0FFRVlhaUFHRUxBQklBWVFEaUFCSUFVZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSHdBR29rQUNBQkMrMFJBUTUvSXdCQndBSnJJZ1lrQUNBR0lBRWdBa0VCRU5vQ05nS1VBaUFHSUFZb0FwUUNFSklCTmdLWUFrR2orSWFyZjBHY2xNTGxmU0FFR3lFT0lBQkZJUTlCc1pmWHVub2hBUU5BQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBRWlBRUh3dXQ3ZUFVd0VRQ0FBUWNpeXRkSjdUQVJBSUFCQnhzdXJpSHBNQkVBZ0FFSHQ1TEdqZUVZTkN5QUFRWXlHcDd4NVJnMEtJQUJCbDh6ZzlYbEhEUklnQmlnQ3RBSkJnSUVCYWlBR0xRQ2ZBam9BQUVHWHJNd3BJUUVNRWdzZ0FFR3hsOWU2ZWtZTkFpQUFRZXlacHVKNlJnMExJQUJCeDh1cmlIcEhEUkVnQmtIQUFtb2tBQThMSUFCQjlMZTE0bjVNQkVBZ0FFSEpzclhTZTBZTkJDQUFRWnlVd3VWOVJnMEdJQUJCalB5cnhINUhEUkVNRUFzZ0FFSDF0N1hpZmtZTkJDQUFRYVA0aHF0L1JnMEdJQUJCbDZ6TUtVY05FQ0FHS0FLMEFrRUJhaUVOUVlTMTQ4VUhJUUVNRUFzZ0FFR3UwOHpEQlV3RVFDQUFRZlRIdnRnQ1RBUkFJQTRoQVNBQVFmRzYzdDRCUmcwUklBQWhBU0FBUWVQMnJwNENSdzBSSUFaQm9BRnFFQW9hSUFZb0FxQUNHZ3dRQ3lBQVFmWEh2dGdDUmcwTUlBQkIwT0RWaHdOR0RRY2dBRUhrM2ZPM0JFY05FQ0FHS0FLMEFrR2dnUUZxSUFZdEFKOENPZ0FBUVplc3pDa2hBUXdRQ3lBQVFkeUFoTE1HVEFSQUlBQkJyOVBNd3dWR0RRc2dBRUcwMjVITUJVWU5EaUFBUVpYZytONEZSdzBRUWNTQkFTQUROZ0lBUWZHNjN0NEJJUUVNRUFzZ0FFSGRnSVN6QmtZTkRDQUFRZFhmd2ZNR1JnMEJJQUJCaExYanhRZEhEUThnQmlBTk5nSzBBa0dNaHFlOGVVR00vS3ZFZmlBR0tBSzBBaUFEU0JzaEFRd1BDMEVBSVFjZ0JpQUVRUUJLT2dDZEFrSFYzOEh6QmtISnNyWFNleUFHTFFDZEFrRUJjUnNoQVNBR0tBS1VBaUVLREE0TElBWkJpQUpxSUFZb0FwUUNFRlFpRUNFS1FRQWhDRUVBSVFrakFFRVFheUlCSkFBZ0NoQUpJUXNqQUVFUWF5SUhKQUFnQmtINEFXb2lBRUlBTndJQUlBZEJBRFlDRENBQVFRaHFJQWRCREdvUXpRRWdCMEVRYWlRQUFrQWdDMFVOQUFOQUFrQWdDaUFKRUFzdEFBQkJQVVlOQUNBS0lBa1FDeTBBQUNJSFFTdEdJQWRCSUhKQjRRQnJRUnBKQkg5QkFRVWdCeEJGUVFCSEMwRUFSM0lnQjBFdlJuSkZEUUFnQzBFQmF5RUxJQUZCREdvZ0NHb2dDaUFKRUFzdEFBQTZBQUJCQUNFSElBaEJBV29pQ0VFRVJnUkFBMEFnQVVFTWFpQUhhaUlJSUFnc0FBQVE5UUU2QUFBZ0IwRUJhaUlIUVFSSERRQUxJQUVnQVMwQUR5QUJMUUFPSWdkQkJuUnFPZ0FMSUFFZ0FTMEFEU0lJUVFSMlFRTnhJQUV0QUF4QkFuUnlPZ0FKSUFFZ0IwRUNka0VQY1NBSVFRUjBjam9BQ2tFQUlRaEJBQ0VIQTBBZ0FDQUJRUWxxSUFkcUVQUUNJQWRCQVdvaUIwRURSdzBBQ3dzZ0NVRUJhaUVKSUFzTkFRc0xJQWhGRFFBZ0NFRURUQVJBSUFGQkRHb2dDR3BCQUVFRUlBaHJFRVlhQzBFQUlRY0RRQ0FCUVF4cUlBZHFJZ2tnQ1N3QUFCRDFBVG9BQUNBSFFRRnFJZ2RCQkVjTkFBc2dBU0FCTFFBUElBRXRBQTRpQjBFR2RHbzZBQXNnQVNBQkxRQU5JZ2xCQkhaQkEzRWdBUzBBREVFQ2RISTZBQWtnQVNBSFFRSjJRUTl4SUFsQkJIUnlPZ0FLSUFoQkFrZ05BQ0FJUVFGcklRaEJBQ0VIQTBBZ0FDQUJRUWxxSUFkcUVQUUNJQWRCQVdvaUJ5QUlSdzBBQ3dzZ0FVRVFhaVFBSUFBUWlRRWhFU0FBS0FJQUlRd2dCa0d0SHlnQUFEWUM4QUVnQmtHbEh5a0FBRGNENkFFZ0JrSUFOd1BZQVNBR1FnQTNBOUFCSUFaQ0FEY0R5QUVnQmtJQU53UEFBU0FHUWdBM0E3Z0JJQVpDQURjRHNBRWdBQkNKQVNFTElBWkJzQUZxSVFvakFFRXdheUlCSkFBZ0FVRWdhaUVJSUFVZ0JCQytBaUlIQkVBZ0NFSUFOd0FBSUFoQ0FEY0FDQ0FISUFnZ0NCQ25BUXNnQmtHL0Ftb2hFaUFHUWRBQmFpRVRJQWNFZnlNQVFSQnJJZ2trQUNBQlFSQnFJZ2dnQmlrQTZBRTNBQUFnQ0NBR0tBRHdBVFlBQ0NBSVFZQ0FnQWcyQUF3Z0NVRVFhaVFBSXdCQkVHc2lDU1FBSUFzRVFDQUpJQWdwQUFBM0F3QWdDU0FJS1FBSU53TUlJQWtRNndFZ0J5QUpJQXdnQ3lBS0VJVUNDeUFKUVJCcUpBQWpBRUVRYXlJSkpBQWdBVUlBTndBQUlBRkNBRGNBQ0NBQlFTQnFJZ3dnRWtFQUlBRVF2d0VnRENBS0lBc2dBUkMvQVNBSlFnQVE3UUVnQ1VFSWNpQUxRUU4wclJEdEFTQU1JQWxCRUNBQkVMOEJJQWxCRUdva0FDQUhJQWdnQVVFUUlCTVFoUUlnQnhBUVFRQUZRWDhMR2lBQlFUQnFKQUFnQUJEdEFpQUFLQUlBQkVBZ0FDZ0NCQ0lCSUFBb0FnQWlCMGNFUUFOQUlBQVFReG9nQnlBQlFRRnJJZ0ZIRFFBTEN5QUFJQWMyQWdRZ0FCQkRHaUFBS0FJQUlRRWdBQkNGQVJvZ0FSQVFDeUFRRUFvYVFTQkJFQ0FSUVRCR0d5RUhRY215dGRKN0lRRU1EUXNnQmlBUE9nQ2VBaUFHSUFjMkFyQUNJQVlnQ2pZQ3JBSkI5YmUxNG41QmxlRDQzZ1VnQmkwQW5nSkJBWEViSVFFTURBdEJ3SUVCSUFNMkFnQkI4YnJlM2dFaEFRd0xDMEhRNE5XSEEwR2orSWFyZnlBR0tBS1lBaUFEUmhzaEFRd0tDMEhRNE5XSEEwSHQ1TEdqZUNBR0tBS3dBa0VRUmh0QjdlU3hvM2dnQmkwQW5RSkJBWEViSVFFTUNRdEJoTFhqeFFjaEFVRUFJUTBNQ0FzZ0JpQUdLQUtzQWlBR0tBSzBBbW90QUFBNkFKOENJQVl0QUo4Q0drR1h6T0QxZVVIazNmTzNCQ0FHTFFDZUFrRUJjUnNoQVF3SEN5QUdJQVpCb0FGcUlnQTJBcUFDSUFZb0FxQUNHaUFBSUFZb0Fxd0NFRlFhUWV5WnB1SjZJUUZCQUNFQ0RBWUxJQVlnQWpZQ3VBSkJyOVBNd3dWQjQvYXVuZ0lnQmlnQ3VBSWdBMGdiSVFFTUJRc2dCaUFHUVJCcUlnQTJBcVFDSUFZb0FxUUNHaUFBRU13Q0dpQUdJQVpCREdvaUNEWUNxQUlnQmlnQ3FBSWFJQVlvQXFRQ1FRaHFFTUlDSVFrZ0JrR3dBV29pQVNBR1FhQUJhaUFHS0FLNEFrRUJkQkRBQWlBSklBRVF2UUlnQVJBS0dpQUFJQWdRL1FKQjljZSsyQUpCM1lDRXN3WWdCaTBBbmdKQkFYRWJJUUVNQkFzZ0JpZ0N1QUpCZ0lFQmFpQUdLQUlNT2dBQVFiVGJrY3dGSVFFTUF3c2dCaWdDdUFKQm9JRUJhaUFHS0FJTU9nQUFRYlRia2N3RklRRU1BZ3NnQmlnQ3FBSWFJQVpCRUdvUWlnRWFJQVlvQXFRQ0dpQUdLQUs0QWlJQVFRRjBRUUp4SUFCQkFYTnFJUUpCN0ptbTRub2hBUXdCQzBISHk2dUllaUVCREFBTEFBdXhBUUVEZnlNQVFkQUFheUlBSkFBZ0FFR0YwUUF2QUFBN0FVd2dBRUdCMFFBb0FBQTJBa2dnQUVISUFHb2lCVUVCY2tIYUhFRUJJQUlvQWdRUWJSQVdJUVlnQUNBRU5nSUFJQUJCTzJvaUJDQUVRUTBnQmlBRklBQVFMQ0FFYWlJR0lBSVFQeUVISUFCQkVHb2lCU0FDRUE4Z0JDQUhJQVlnQUVFZ2FpSUVJQUJCSEdvZ0FFRVlhaUFGRUxBQklBVVFEaUFCSUFRZ0FDZ0NIQ0FBS0FJWUlBSWdBeEJXSVFFZ0FFSFFBR29rQUNBQkM4MEJBUUYvSXdCQk1Hc2lCU1FBSUFVZ0FUWUNLQUpBSUFJb0FnUkJBWEZGQkVBZ0FDQUJJQUlnQXlBRUlBQW9BZ0FvQWhnUkJnQWhBZ3dCQ3lBRlFSaHFJZ0FnQWhBUElBQVFqZ0VoQVNBQUVBNENRQ0FFQkVBZ0JVRVlhaUFCRUVzTUFRc2dCVUVZYWlBQkVFb0xJQVVnQlVFWWFoQkFOZ0lRQTBBZ0JTQUZRUmhxRUc0MkFnZ2dCVUVRYWlBRlFRaHFFRnNFUUNBRlFTaHFJQVZCRUdvaUFDZ0NBQ3dBQUJENEFpQUFFSmNCREFFRklBVW9BaWdoQWlBRlFSaHFFQW9hQ3dzTElBVkJNR29rQUNBQ0MvSUNBUUYvSXdCQjRBSnJJZ0FrQUNBQUlBSTJBdEFDSUFBZ0FUWUMyQUlnQUVIUUFXb1FFU0VHSUFCQkVHb2lBaUFERUE4Z0FoQTdRZURRQUVINjBBQWdBRUhnQVdvUVl5QUNFQTRnQUVIQUFXb1FFU0lESUFNUUV4QU1JQUFnQTBFQUVBc2lBVFlDdkFFZ0FDQUNOZ0lNSUFCQkFEWUNDQU5BQWtBZ0FFSFlBbW9nQUVIUUFtb1FOa1VOQUNBQUtBSzhBU0FERUFrZ0FXcEdCRUFnQXhBSklRSWdBeUFERUFsQkFYUVFEQ0FESUFNUUV4QU1JQUFnQWlBRFFRQVFDeUlCYWpZQ3ZBRUxJQUJCMkFKcUVDRkJFQ0FCSUFCQnZBRnFJQUJCQ0dwQkFDQUdJQUJCRUdvZ0FFRU1haUFBUWVBQmFoQ0xBUTBBSUFCQjJBSnFFQ1VhREFFTEN5QURJQUFvQXJ3QklBRnJFQXdnQXhBTklRSVFGaUVCSUFBZ0JUWUNBQ0FDSUFFZ0FCREJBa0VCUndSQUlBUkJCRFlDQUFzZ0FFSFlBbW9nQUVIUUFtb1FLQVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDMkFJaEFTQURFQW9hSUFZUUNob2dBRUhnQW1va0FDQUJDOUlEQVFGK0l3QkJnQU5ySWdBa0FDQUFJQUkyQXZBQ0lBQWdBVFlDK0FJZ0FFSFlBV29nQXlBQVFmQUJhaUFBUWV3QmFpQUFRZWdCYWhEVUFTQUFRY2dCYWhBUklnRWdBUkFURUF3Z0FDQUJRUUFRQ3lJQ05nTEVBU0FBSUFCQklHbzJBaHdnQUVFQU5nSVlJQUJCQVRvQUZ5QUFRY1VBT2dBV0EwQUNRQ0FBUWZnQ2FpQUFRZkFDYWhBMlJRMEFJQUFvQXNRQklBRVFDU0FDYWtZRVFDQUJFQWtoQXlBQklBRVFDVUVCZEJBTUlBRWdBUkFURUF3Z0FDQURJQUZCQUJBTElnSnFOZ0xFQVFzZ0FFSDRBbW9RSVNBQVFSZHFJQUJCRm1vZ0FpQUFRY1FCYWlBQUtBTHNBU0FBS0FMb0FTQUFRZGdCYWlBQVFTQnFJQUJCSEdvZ0FFRVlhaUFBUWZBQmFoRFRBUTBBSUFCQitBSnFFQ1VhREFFTEN3SkFJQUJCMkFGcUVBbEZEUUFnQUMwQUYwVU5BQ0FBS0FJY0lnTWdBRUVnYW10Qm53RktEUUFnQUNBRFFRUnFOZ0ljSUFNZ0FDZ0NHRFlDQUFzZ0FDQUNJQUFvQXNRQklBUVF3d0lnQUNrREFDRUdJQVVnQUNrRENEY0RDQ0FGSUFZM0F3QWdBRUhZQVdvZ0FFRWdhaUFBS0FJY0lBUVFMU0FBUWZnQ2FpQUFRZkFDYWhBb0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTDRBaUVDSUFFUUNob2dBRUhZQVdvUUNob2dBRUdBQTJva0FDQUNDN3NEQUNNQVFmQUNheUlBSkFBZ0FDQUNOZ0xnQWlBQUlBRTJBdWdDSUFCQnlBRnFJQU1nQUVIZ0FXb2dBRUhjQVdvZ0FFSFlBV29RMUFFZ0FFRzRBV29RRVNJQklBRVFFeEFNSUFBZ0FVRUFFQXNpQWpZQ3RBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NDQUFRUUU2QUFjZ0FFSEZBRG9BQmdOQUFrQWdBRUhvQW1vZ0FFSGdBbW9RTmtVTkFDQUFLQUswQVNBQkVBa2dBbXBHQkVBZ0FSQUpJUU1nQVNBQkVBbEJBWFFRRENBQklBRVFFeEFNSUFBZ0F5QUJRUUFRQ3lJQ2FqWUN0QUVMSUFCQjZBSnFFQ0VnQUVFSGFpQUFRUVpxSUFJZ0FFRzBBV29nQUNnQzNBRWdBQ2dDMkFFZ0FFSElBV29nQUVFUWFpQUFRUXhxSUFCQkNHb2dBRUhnQVdvUTB3RU5BQ0FBUWVnQ2FoQWxHZ3dCQ3dzQ1FDQUFRY2dCYWhBSlJRMEFJQUF0QUFkRkRRQWdBQ2dDRENJRElBQkJFR3ByUVo4QlNnMEFJQUFnQTBFRWFqWUNEQ0FESUFBb0FnZzJBZ0FMSUFVZ0FpQUFLQUswQVNBRUVNUUNPUU1BSUFCQnlBRnFJQUJCRUdvZ0FDZ0NEQ0FFRUMwZ0FFSG9BbW9nQUVIZ0Ftb1FLQVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBQ2dDNkFJaEFpQUJFQW9hSUFCQnlBRnFFQW9hSUFCQjhBSnFKQUFnQWd1N0F3QWpBRUh3QW1zaUFDUUFJQUFnQWpZQzRBSWdBQ0FCTmdMb0FpQUFRY2dCYWlBRElBQkI0QUZxSUFCQjNBRnFJQUJCMkFGcUVOUUJJQUJCdUFGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBclFCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dnQUVFQk9nQUhJQUJCeFFBNkFBWURRQUpBSUFCQjZBSnFJQUJCNEFKcUVEWkZEUUFnQUNnQ3RBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJRQkN5QUFRZWdDYWhBaElBQkJCMm9nQUVFR2FpQUNJQUJCdEFGcUlBQW9BdHdCSUFBb0F0Z0JJQUJCeUFGcUlBQkJFR29nQUVFTWFpQUFRUWhxSUFCQjRBRnFFTk1CRFFBZ0FFSG9BbW9RSlJvTUFRc0xBa0FnQUVISUFXb1FDVVVOQUNBQUxRQUhSUTBBSUFBb0Fnd2lBeUFBUVJCcWEwR2ZBVW9OQUNBQUlBTkJCR28yQWd3Z0F5QUFLQUlJTmdJQUN5QUZJQUlnQUNnQ3RBRWdCQkRGQWpnQ0FDQUFRY2dCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCNkFKcUlBQkI0QUpxRUNnRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0F1Z0NJUUlnQVJBS0dpQUFRY2dCYWhBS0dpQUFRZkFDYWlRQUlBSUxuUU1CQW44akFFSGdBbXNpQUNRQUlBQWdBallDMEFJZ0FDQUJOZ0xZQWlBREVGd2hCaUFESUFCQjRBRnFFSmtCSVFjZ0FFSFFBV29nQXlBQVFjd0NhaENZQVNBQVFjQUJhaEFSSWdFZ0FSQVRFQXdnQUNBQlFRQVFDeUlDTmdLOEFTQUFJQUJCRUdvMkFnd2dBRUVBTmdJSUEwQUNRQ0FBUWRnQ2FpQUFRZEFDYWhBMlJRMEFJQUFvQXJ3QklBRVFDU0FDYWtZRVFDQUJFQWtoQXlBQklBRVFDVUVCZEJBTUlBRWdBUkFURUF3Z0FDQURJQUZCQUJBTElnSnFOZ0s4QVFzZ0FFSFlBbW9RSVNBR0lBSWdBRUc4QVdvZ0FFRUlhaUFBS0FMTUFpQUFRZEFCYWlBQVFSQnFJQUJCREdvZ0J4Q0xBUTBBSUFCQjJBSnFFQ1VhREFFTEN3SkFJQUJCMEFGcUVBbEZEUUFnQUNnQ0RDSURJQUJCRUdwclFaOEJTZzBBSUFBZ0EwRUVhallDRENBRElBQW9BZ2cyQWdBTElBVWdBaUFBS0FLOEFTQUVJQVlReGdJM0F3QWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUWRnQ2FpQUFRZEFDYWhBb0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTFlBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUhnQW1va0FDQUNDNTBEQVFKL0l3QkI0QUpySWdBa0FDQUFJQUkyQXRBQ0lBQWdBVFlDMkFJZ0F4QmNJUVlnQXlBQVFlQUJhaENaQVNFSElBQkIwQUZxSUFNZ0FFSE1BbW9RbUFFZ0FFSEFBV29RRVNJQklBRVFFeEFNSUFBZ0FVRUFFQXNpQWpZQ3ZBRWdBQ0FBUVJCcU5nSU1JQUJCQURZQ0NBTkFBa0FnQUVIWUFtb2dBRUhRQW1vUU5rVU5BQ0FBS0FLOEFTQUJFQWtnQW1wR0JFQWdBUkFKSVFNZ0FTQUJFQWxCQVhRUURDQUJJQUVRRXhBTUlBQWdBeUFCUVFBUUN5SUNhallDdkFFTElBQkIyQUpxRUNFZ0JpQUNJQUJCdkFGcUlBQkJDR29nQUNnQ3pBSWdBRUhRQVdvZ0FFRVFhaUFBUVF4cUlBY1Fpd0VOQUNBQVFkZ0NhaEFsR2d3QkN3c0NRQ0FBUWRBQmFoQUpSUTBBSUFBb0Fnd2lBeUFBUVJCcWEwR2ZBVW9OQUNBQUlBTkJCR28yQWd3Z0F5QUFLQUlJTmdJQUN5QUZJQUlnQUNnQ3ZBRWdCQ0FHRU1rQ093RUFJQUJCMEFGcUlBQkJFR29nQUNnQ0RDQUVFQzBnQUVIWUFtb2dBRUhRQW1vUUtBUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0MyQUloQWlBQkVBb2FJQUJCMEFGcUVBb2FJQUJCNEFKcUpBQWdBZ3VkQXdFQ2Z5TUFRZUFDYXlJQUpBQWdBQ0FDTmdMUUFpQUFJQUUyQXRnQ0lBTVFYQ0VHSUFNZ0FFSGdBV29RbVFFaEJ5QUFRZEFCYWlBRElBQkJ6QUpxRUpnQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ0RRQUpBSUFCQjJBSnFJQUJCMEFKcUVEWkZEUUFnQUNnQ3ZBRWdBUkFKSUFKcVJnUkFJQUVRQ1NFRElBRWdBUkFKUVFGMEVBd2dBU0FCRUJNUURDQUFJQU1nQVVFQUVBc2lBbW8yQXJ3QkN5QUFRZGdDYWhBaElBWWdBaUFBUWJ3QmFpQUFRUWhxSUFBb0Fzd0NJQUJCMEFGcUlBQkJFR29nQUVFTWFpQUhFSXNCRFFBZ0FFSFlBbW9RSlJvTUFRc0xBa0FnQUVIUUFXb1FDVVVOQUNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLRFFBZ0FDQURRUVJxTmdJTUlBTWdBQ2dDQ0RZQ0FBc2dCU0FDSUFBb0Fyd0JJQVFnQmhES0FqY0RBQ0FBUWRBQmFpQUFRUkJxSUFBb0Fnd2dCQkF0SUFCQjJBSnFJQUJCMEFKcUVDZ0VRQ0FFSUFRb0FnQkJBbkkyQWdBTElBQW9BdGdDSVFJZ0FSQUtHaUFBUWRBQmFoQUtHaUFBUWVBQ2FpUUFJQUlMblFNQkFuOGpBRUhnQW1zaUFDUUFJQUFnQWpZQzBBSWdBQ0FCTmdMWUFpQURFRndoQmlBRElBQkI0QUZxRUprQklRY2dBRUhRQVdvZ0F5QUFRY3dDYWhDWUFTQUFRY0FCYWhBUklnRWdBUkFURUF3Z0FDQUJRUUFRQ3lJQ05nSzhBU0FBSUFCQkVHbzJBZ3dnQUVFQU5nSUlBMEFDUUNBQVFkZ0NhaUFBUWRBQ2FoQTJSUTBBSUFBb0Fyd0JJQUVRQ1NBQ2FrWUVRQ0FCRUFraEF5QUJJQUVRQ1VFQmRCQU1JQUVnQVJBVEVBd2dBQ0FESUFGQkFCQUxJZ0pxTmdLOEFRc2dBRUhZQW1vUUlTQUdJQUlnQUVHOEFXb2dBRUVJYWlBQUtBTE1BaUFBUWRBQmFpQUFRUkJxSUFCQkRHb2dCeENMQVEwQUlBQkIyQUpxRUNVYURBRUxDd0pBSUFCQjBBRnFFQWxGRFFBZ0FDZ0NEQ0lESUFCQkVHcHJRWjhCU2cwQUlBQWdBMEVFYWpZQ0RDQURJQUFvQWdnMkFnQUxJQVVnQWlBQUtBSzhBU0FFSUFZUXl3STJBZ0FnQUVIUUFXb2dBRUVRYWlBQUtBSU1JQVFRTFNBQVFkZ0NhaUFBUWRBQ2FoQW9CRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUFLQUxZQWlFQ0lBRVFDaG9nQUVIUUFXb1FDaG9nQUVIZ0Ftb2tBQ0FDQyt3QkFRRi9Jd0JCSUdzaUJpUUFJQVlnQVRZQ0dBSkFJQU1vQWdSQkFYRkZCRUFnQmtGL05nSUFJQVlnQUNBQklBSWdBeUFFSUFZZ0FDZ0NBQ2dDRUJFRkFDSUJOZ0lZQWtBQ1FBSkFJQVlvQWdBT0FnQUJBZ3NnQlVFQU9nQUFEQU1MSUFWQkFUb0FBQXdDQ3lBRlFRRTZBQUFnQkVFRU5nSUFEQUVMSUFZZ0F4QVBJQVlRT3lFQklBWVFEaUFHSUFNUUR5QUdFSXdCSVFBZ0JoQU9JQVlnQUJCTElBWkJESElnQUJCS0lBVWdCa0VZYWlJRElBSWdCaUFESUFFZ0JFRUJFTElCSUFaR09nQUFJQVlvQWhnaEFRTkFJQU5CREdzUUNpSURJQVpIRFFBTEN5QUdRU0JxSkFBZ0FRdnlBZ0VCZnlNQVFaQUNheUlBSkFBZ0FDQUNOZ0tBQWlBQUlBRTJBb2dDSUFCQjBBRnFFQkVoQmlBQVFSQnFJZ0lnQXhBUElBSVFNa0hnMEFCQit0QUFJQUJCNEFGcUVHOGdBaEFPSUFCQndBRnFFQkVpQXlBREVCTVFEQ0FBSUFOQkFCQUxJZ0UyQXJ3QklBQWdBallDRENBQVFRQTJBZ2dEUUFKQUlBQkJpQUpxSUFCQmdBSnFFREZGRFFBZ0FDZ0N2QUVnQXhBSklBRnFSZ1JBSUFNUUNTRUNJQU1nQXhBSlFRRjBFQXdnQXlBREVCTVFEQ0FBSUFJZ0EwRUFFQXNpQVdvMkFyd0JDeUFBUVlnQ2FoQWZRUkFnQVNBQVFid0JhaUFBUVFocVFRQWdCaUFBUVJCcUlBQkJER29nQUVIZ0FXb1FqUUVOQUNBQVFZZ0NhaEFpR2d3QkN3c2dBeUFBS0FLOEFTQUJheEFNSUFNUURTRUNFQlloQVNBQUlBVTJBZ0FnQWlBQklBQVF3UUpCQVVjRVFDQUVRUVEyQWdBTElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRRWdBeEFLR2lBR0VBb2FJQUJCa0FKcUpBQWdBUXZTQXdFQmZpTUFRYUFDYXlJQUpBQWdBQ0FDTmdLUUFpQUFJQUUyQXBnQ0lBQkI0QUZxSUFNZ0FFSHdBV29nQUVIdkFXb2dBRUh1QVdvUTF3RWdBRUhRQVdvUUVTSUJJQUVRRXhBTUlBQWdBVUVBRUFzaUFqWUN6QUVnQUNBQVFTQnFOZ0ljSUFCQkFEWUNHQ0FBUVFFNkFCY2dBRUhGQURvQUZnTkFBa0FnQUVHWUFtb2dBRUdRQW1vUU1VVU5BQ0FBS0FMTUFTQUJFQWtnQW1wR0JFQWdBUkFKSVFNZ0FTQUJFQWxCQVhRUURDQUJJQUVRRXhBTUlBQWdBeUFCUVFBUUN5SUNhallDekFFTElBQkJtQUpxRUI4Z0FFRVhhaUFBUVJacUlBSWdBRUhNQVdvZ0FDd0E3d0VnQUN3QTdnRWdBRUhnQVdvZ0FFRWdhaUFBUVJ4cUlBQkJHR29nQUVId0FXb1ExZ0VOQUNBQVFaZ0NhaEFpR2d3QkN3c0NRQ0FBUWVBQmFoQUpSUTBBSUFBdEFCZEZEUUFnQUNnQ0hDSURJQUJCSUdwclFaOEJTZzBBSUFBZ0EwRUVhallDSENBRElBQW9BaGcyQWdBTElBQWdBaUFBS0FMTUFTQUVFTU1DSUFBcEF3QWhCaUFGSUFBcEF3ZzNBd2dnQlNBR053TUFJQUJCNEFGcUlBQkJJR29nQUNnQ0hDQUVFQzBnQUVHWUFtb2dBRUdRQW1vUUpnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FDZ0NtQUloQWlBQkVBb2FJQUJCNEFGcUVBb2FJQUJCb0FKcUpBQWdBZ3U3QXdBakFFR1FBbXNpQUNRQUlBQWdBallDZ0FJZ0FDQUJOZ0tJQWlBQVFkQUJhaUFESUFCQjRBRnFJQUJCM3dGcUlBQkIzZ0ZxRU5jQklBQkJ3QUZxRUJFaUFTQUJFQk1RRENBQUlBRkJBQkFMSWdJMkFyd0JJQUFnQUVFUWFqWUNEQ0FBUVFBMkFnZ2dBRUVCT2dBSElBQkJ4UUE2QUFZRFFBSkFJQUJCaUFKcUlBQkJnQUpxRURGRkRRQWdBQ2dDdkFFZ0FSQUpJQUpxUmdSQUlBRVFDU0VESUFFZ0FSQUpRUUYwRUF3Z0FTQUJFQk1RRENBQUlBTWdBVUVBRUFzaUFtbzJBcndCQ3lBQVFZZ0NhaEFmSUFCQkIyb2dBRUVHYWlBQ0lBQkJ2QUZxSUFBc0FOOEJJQUFzQU40QklBQkIwQUZxSUFCQkVHb2dBRUVNYWlBQVFRaHFJQUJCNEFGcUVOWUJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBTFFBSFJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JCREVBamtEQUNBQVFkQUJhaUFBUVJCcUlBQW9BZ3dnQkJBdElBQkJpQUpxSUFCQmdBSnFFQ1lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQUFvQW9nQ0lRSWdBUkFLR2lBQVFkQUJhaEFLR2lBQVFaQUNhaVFBSUFJTHV3TUFJd0JCa0FKcklnQWtBQ0FBSUFJMkFvQUNJQUFnQVRZQ2lBSWdBRUhRQVdvZ0F5QUFRZUFCYWlBQVFkOEJhaUFBUWQ0QmFoRFhBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJSUFCQkFUb0FCeUFBUWNVQU9nQUdBMEFDUUNBQVFZZ0NhaUFBUVlBQ2FoQXhSUTBBSUFBb0Fyd0JJQUVRQ1NBQ2FrWUVRQ0FCRUFraEF5QUJJQUVRQ1VFQmRCQU1JQUVnQVJBVEVBd2dBQ0FESUFGQkFCQUxJZ0pxTmdLOEFRc2dBRUdJQW1vUUh5QUFRUWRxSUFCQkJtb2dBaUFBUWJ3QmFpQUFMQURmQVNBQUxBRGVBU0FBUWRBQmFpQUFRUkJxSUFCQkRHb2dBRUVJYWlBQVFlQUJhaERXQVEwQUlBQkJpQUpxRUNJYURBRUxDd0pBSUFCQjBBRnFFQWxGRFFBZ0FDMEFCMFVOQUNBQUtBSU1JZ01nQUVFUWFtdEJud0ZLRFFBZ0FDQURRUVJxTmdJTUlBTWdBQ2dDQ0RZQ0FBc2dCU0FDSUFBb0Fyd0JJQVFReFFJNEFnQWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUVlnQ2FpQUFRWUFDYWhBbUJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBS0lBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUdRQW1va0FDQUNDNUlEQVFGL0l3QkJrQUpySWdBa0FDQUFJQUkyQW9BQ0lBQWdBVFlDaUFJZ0F4QmNJUVlnQUVIUUFXb2dBeUFBUWY4QmFoQ2FBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaEF4UlEwQUlBQW9BcndCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzhBUXNnQUVHSUFtb1FIeUFHSUFJZ0FFRzhBV29nQUVFSWFpQUFMQUQvQVNBQVFkQUJhaUFBUVJCcUlBQkJER3BCNE5BQUVJMEJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBS0FJTUlnTWdBRUVRYW10Qm53RktEUUFnQUNBRFFRUnFOZ0lNSUFNZ0FDZ0NDRFlDQUFzZ0JTQUNJQUFvQXJ3QklBUWdCaERHQWpjREFDQUFRZEFCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCaUFKcUlBQkJnQUpxRUNZRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0FvZ0NJUUlnQVJBS0dpQUFRZEFCYWhBS0dpQUFRWkFDYWlRQUlBSUxKUUFnQUNnQ0JCb2dBQ0FBS0FJRVFiVi9jVFlDQkNBQUlBQW9BZ1JCQ0hJMkFnUWdBQXVTQXdFQmZ5TUFRWkFDYXlJQUpBQWdBQ0FDTmdLQUFpQUFJQUUyQW9nQ0lBTVFYQ0VHSUFCQjBBRnFJQU1nQUVIL0FXb1FtZ0VnQUVIQUFXb1FFU0lCSUFFUUV4QU1JQUFnQVVFQUVBc2lBallDdkFFZ0FDQUFRUkJxTmdJTUlBQkJBRFlDQ0FOQUFrQWdBRUdJQW1vZ0FFR0FBbW9RTVVVTkFDQUFLQUs4QVNBQkVBa2dBbXBHQkVBZ0FSQUpJUU1nQVNBQkVBbEJBWFFRRENBQklBRVFFeEFNSUFBZ0F5QUJRUUFRQ3lJQ2FqWUN2QUVMSUFCQmlBSnFFQjhnQmlBQ0lBQkJ2QUZxSUFCQkNHb2dBQ3dBL3dFZ0FFSFFBV29nQUVFUWFpQUFRUXhxUWVEUUFCQ05BUTBBSUFCQmlBSnFFQ0lhREFFTEN3SkFJQUJCMEFGcUVBbEZEUUFnQUNnQ0RDSURJQUJCRUdwclFaOEJTZzBBSUFBZ0EwRUVhallDRENBRElBQW9BZ2cyQWdBTElBVWdBaUFBS0FLOEFTQUVJQVlReVFJN0FRQWdBRUhRQVdvZ0FFRVFhaUFBS0FJTUlBUVFMU0FBUVlnQ2FpQUFRWUFDYWhBbUJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBS0lBaUVDSUFFUUNob2dBRUhRQVdvUUNob2dBRUdRQW1va0FDQUNDNUlEQVFGL0l3QkJrQUpySWdBa0FDQUFJQUkyQW9BQ0lBQWdBVFlDaUFJZ0F4QmNJUVlnQUVIUUFXb2dBeUFBUWY4QmFoQ2FBU0FBUWNBQmFoQVJJZ0VnQVJBVEVBd2dBQ0FCUVFBUUN5SUNOZ0s4QVNBQUlBQkJFR28yQWd3Z0FFRUFOZ0lJQTBBQ1FDQUFRWWdDYWlBQVFZQUNhaEF4UlEwQUlBQW9BcndCSUFFUUNTQUNha1lFUUNBQkVBa2hBeUFCSUFFUUNVRUJkQkFNSUFFZ0FSQVRFQXdnQUNBRElBRkJBQkFMSWdKcU5nSzhBUXNnQUVHSUFtb1FIeUFHSUFJZ0FFRzhBV29nQUVFSWFpQUFMQUQvQVNBQVFkQUJhaUFBUVJCcUlBQkJER3BCNE5BQUVJMEJEUUFnQUVHSUFtb1FJaG9NQVFzTEFrQWdBRUhRQVdvUUNVVU5BQ0FBS0FJTUlnTWdBRUVRYW10Qm53RktEUUFnQUNBRFFRUnFOZ0lNSUFNZ0FDZ0NDRFlDQUFzZ0JTQUNJQUFvQXJ3QklBUWdCaERLQWpjREFDQUFRZEFCYWlBQVFSQnFJQUFvQWd3Z0JCQXRJQUJCaUFKcUlBQkJnQUpxRUNZRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFBb0FvZ0NJUUlnQVJBS0dpQUFRZEFCYWhBS0dpQUFRWkFDYWlRQUlBSUxrZ01CQVg4akFFR1FBbXNpQUNRQUlBQWdBallDZ0FJZ0FDQUJOZ0tJQWlBREVGd2hCaUFBUWRBQmFpQURJQUJCL3dGcUVKb0JJQUJCd0FGcUVCRWlBU0FCRUJNUURDQUFJQUZCQUJBTElnSTJBcndCSUFBZ0FFRVFhallDRENBQVFRQTJBZ2dEUUFKQUlBQkJpQUpxSUFCQmdBSnFFREZGRFFBZ0FDZ0N2QUVnQVJBSklBSnFSZ1JBSUFFUUNTRURJQUVnQVJBSlFRRjBFQXdnQVNBQkVCTVFEQ0FBSUFNZ0FVRUFFQXNpQW1vMkFyd0JDeUFBUVlnQ2FoQWZJQVlnQWlBQVFid0JhaUFBUVFocUlBQXNBUDhCSUFCQjBBRnFJQUJCRUdvZ0FFRU1ha0hnMEFBUWpRRU5BQ0FBUVlnQ2FoQWlHZ3dCQ3dzQ1FDQUFRZEFCYWhBSlJRMEFJQUFvQWd3aUF5QUFRUkJxYTBHZkFVb05BQ0FBSUFOQkJHbzJBZ3dnQXlBQUtBSUlOZ0lBQ3lBRklBSWdBQ2dDdkFFZ0JDQUdFTXNDTmdJQUlBQkIwQUZxSUFCQkVHb2dBQ2dDRENBRUVDMGdBRUdJQW1vZ0FFR0FBbW9RSmdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQ2lBSWhBaUFCRUFvYUlBQkIwQUZxRUFvYUlBQkJrQUpxSkFBZ0FndlZCUUVJZnlNQVFkQUJheUlHSkFBZ0F4QVpJUWNnQmlBQ05nSzhBU0FHSUFjMkFyZ0JRYmVwbXVaOFFlbjM4dko1SUFWQkVFWWJRZW4zOHZKNUlBTkJJRVliSVFzZ0JrRWdhaUVNQTBCQnl2Zm05d0loQWdOQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQ1FidlRxYkI5VEFSQUlBSkJnc09vam54TUJFQWdBa0huK0llNWVFWU5BaUFDUWRTMytzQjRSZzBGSUFKQjZmZnk4bmxIRFFwQmc4T29qbndoQWtFQUlRY01DZ3NnQWtHRHc2aU9mRVlOQnlBQ1FZNkZzdVI4UmcwRklBSkJ0Nm1hNW54SERRa2dCaUFHUWFnQmFpSUNOZ0xBQVNBR0tBTEFBUm9nQWlBR0tBSzRBUkJVR2tHT2hiTGtmQ0VDUVFBaENBd0pDeUFDUVltQ3RPNENTZzBCSUFKQnZOT3BzSDFHRFFJZ0FrSFM0N3lTQWtZTkJTQUNRZVcvK0o4Q1J3MElJQVpCcUFGcUVBb2FJQVlvQXNBQkdndEJpb0swN2dJaEFnd0hDeUFDUWNyMzV2Y0NSd1JBSUFKQnBzZlZwZ1JHRFFZZ0FrR0tnclR1QWtjTkJ5QUdLQUs0QVJBUUlBWkIwQUZxSkFBUEN5QUdJQW8yQXNRQlFkUzMrc0I0UWJ6VHFiQjlJQVlvQXNRQklBTklHeUVDREFZTFFjU0JBU0FGTmdJQUlBQWdBU0FFSUFZb0FyZ0JJQU1RNWdFZ0N5RUNEQVVMSUFZb0FyZ0JJQVlvQXNRQmFpQUdLQUs4QVNBR0tBTEVBV290QUFBNkFBQWdCaWdDeEFGQkFXb2hDZ3dGQ3lBR0lBZzJBc2dCUWRManZKSUNRZVcvK0o4Q0lBWW9Bc2dCSUFWSUd5RUNEQU1MSUFaQkdHb2lEUkRNQWlFQ0lBd1F3Z0loQ0NBR1FRaHFJZ2tnQmtHb0FXb2dCaWdDeUFGQkFYUVF3QUlnQ0NBSkVMMENJQWtRQ2hvZ0RTQUpFUDBDSUFZb0FzZ0JRYUNCQVdvZ0JpZ0NDRG9BQUNBQ0VJb0JHaUFHS0FMSUFVRUJhaUVJUVk2RnN1UjhJUUlNQWdzZ0JpQUhOZ0xNQVVHbXg5V21CRUhuK0llNWVDQUdLQUxNQVNBRlNCc2hBZ3dCQ3lBR0tBTE1BVUdnZ1FGcUlBWW9BcmdCSUFZb0Fzd0JhaTBBQURvQUFDQUdLQUxNQVVFQmFpRUhRWVBEcUk1OElRSU1BQXNBQ3dBTDdBRUJBWDhqQUVFZ2F5SUdKQUFnQmlBQk5nSVlBa0FnQXlnQ0JFRUJjVVVFUUNBR1FYODJBZ0FnQmlBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRVUFJZ0UyQWhnQ1FBSkFBa0FnQmlnQ0FBNENBQUVDQ3lBRlFRQTZBQUFNQXdzZ0JVRUJPZ0FBREFJTElBVkJBVG9BQUNBRVFRUTJBZ0FNQVFzZ0JpQURFQThnQmhBeUlRRWdCaEFPSUFZZ0F4QVBJQVlRamdFaEFDQUdFQTRnQmlBQUVFc2dCa0VNY2lBQUVFb2dCU0FHUVJocUlnTWdBaUFHSUFNZ0FTQUVRUUVRdEFFZ0JrWTZBQUFnQmlnQ0dDRUJBMEFnQTBFTWF4QUtJZ01nQmtjTkFBc0xJQVpCSUdva0FDQUJDMEFCQVg5QkFDRUFBMzhnQVNBQ1JnUi9JQUFGSUFFb0FnQWdBRUVFZEdvaUFFR0FnSUNBZjNFaUEwRVlkaUFEY2lBQWN5RUFJQUZCQkdvaEFRd0JDd3NMR3dBakFFRVFheUlCSkFBZ0FDQUNJQU1RemdJZ0FVRVFhaVFBQzFRQkFuOENRQU5BSUFNZ0JFY0VRRUYvSVFBZ0FTQUNSZzBDSUFFb0FnQWlCU0FES0FJQUlnWklEUUlnQlNBR1NnUkFRUUVQQlNBRFFRUnFJUU1nQVVFRWFpRUJEQUlMQUFzTElBRWdBa2NoQUFzZ0FBdEFBUUYvUVFBaEFBTi9JQUVnQWtZRWZ5QUFCU0FCTEFBQUlBQkJCSFJxSWdCQmdJQ0FnSDl4SWdOQkdIWWdBM0lnQUhNaEFDQUJRUUZxSVFFTUFRc0xDL2NCQVFOL0lBQkZCRUJCd0lFQktBSUFJUUFqQUVFZ2F5SUVKQUJCZ0lFQklBQVF2Z0lpQlFSL0lBUWdBeWtBQURjREVDQUVJQU1wQUFnM0F4Z2dBZ1JBQTBBZ0JTQUVRUkJxSUFRUXB3RWdBa0VRSUFKQkVFa2JJUU5CQUNFQUEwQWdBQ0FCYWlJR0lBWXRBQUFnQUNBRWFpMEFBSE02QUFBZ0FFRUJhaUlBSUFOSERRQUxJQUlnQTJzaEFpQUJJQU5xSVFGQkR5RUFBMEFDUUNBQUlnTWdCRUVRYW1vaUFDQUFMUUFBUVFGcUlnQTZBQUFnQUVIL0FYRU5BQ0FEUVFGcklRQWdBdzBCQ3dzZ0FnMEFDd3NnQlJBUVFRQUZRWDhMR2lBRVFTQnFKQUFQQzBHZ2dRRkJ4SUVCS0FJQUlBTWdBU0FDRU9ZQkN4c0FJd0JCRUdzaUFTUUFJQUFnQWlBREVQTUNJQUZCRUdva0FBdGVBUU4vSUFFZ0JDQURhMm9oQlFKQUEwQWdBeUFFUndSQVFYOGhBQ0FCSUFKR0RRSWdBU3dBQUNJR0lBTXNBQUFpQjBnTkFpQUdJQWRLQkVCQkFROEZJQU5CQVdvaEF5QUJRUUZxSVFFTUFnc0FDd3NnQWlBRlJ5RUFDeUFBQzZrQkFRUi9JQUFvQWxRaUF5Z0NCQ0lGSUFBb0FoUWdBQ2dDSENJR2F5SUVJQVFnQlVzYklnUUVRQ0FES0FJQUlBWWdCQkJDR2lBRElBTW9BZ0FnQkdvMkFnQWdBeUFES0FJRUlBUnJJZ1UyQWdRTElBTW9BZ0FoQkNBRklBSWdBaUFGU3hzaUJRUkFJQVFnQVNBRkVFSWFJQU1nQXlnQ0FDQUZhaUlFTmdJQUlBTWdBeWdDQkNBRmF6WUNCQXNnQkVFQU9nQUFJQUFnQUNnQ0xDSUJOZ0ljSUFBZ0FUWUNGQ0FDQ3lrQUlBRWdBU2dDQUVFSGFrRjRjU0lCUVJCcU5nSUFJQUFnQVNrREFDQUJLUU1JRU4wQk9RTUFDN1FZQXhKL0FYd0NmaU1BUWJBRWF5SUxKQUFnQzBFQU5nSXNBa0FnQWIwaUdVSUFVd1JBUVFFaEVFSDVHaUVUSUFHYUlnRzlJUmtNQVFzZ0JFR0FFSEVFUUVFQklSQkIvQm9oRXd3QkMwSC9Ha0g2R2lBRVFRRnhJaEFiSVJNZ0VFVWhGQXNDUUNBWlFvQ0FnSUNBZ0lENC93Q0RRb0NBZ0lDQWdJRDQvd0JSQkVBZ0FFRWdJQUlnRUVFRGFpSURJQVJCLy85N2NSQXVJQUFnRXlBUUVDb2dBRUhISEVHQUhpQUZRU0J4SWdVYlFlb2NRWlllSUFVYklBRWdBV0liUVFNUUtpQUFRU0FnQWlBRElBUkJnTUFBY3hBdUlBSWdBeUFDSUFOS0d5RUpEQUVMSUF0QkVHb2hFUUpBQW44Q1FDQUJJQXRCTEdvUTNRSWlBU0FCb0NJQlJBQUFBQUFBQUFBQVlnUkFJQXNnQ3lnQ0xDSUdRUUZyTmdJc0lBVkJJSElpRGtIaEFFY05BUXdEQ3lBRlFTQnlJZzVCNFFCR0RRSWdDeWdDTENFS1FRWWdBeUFEUVFCSUd3d0JDeUFMSUFaQkhXc2lDallDTENBQlJBQUFBQUFBQUxCQm9pRUJRUVlnQXlBRFFRQklHd3NoRENBTFFUQnFJQXRCMEFKcUlBcEJBRWdiSWcwaEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBS1FRQk1CRUFnQ2lFRElBY2hCaUFOSVFnTUFRc2dEU0VJSUFvaEF3TkFJQU5CSFNBRFFSMUlHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoR2tJQUlSa0RRQ0FHSUJsQy8vLy8vdytESUFZMUFnQWdHb1o4SWhrZ0dVS0FsT3ZjQTRBaUdVS0FsT3ZjQTM1OVBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBWnB5SUdSUTBBSUFoQkJHc2lDQ0FHTmdJQUN3TkFJQWdnQnlJR1NRUkFJQVpCQkdzaUJ5Z0NBRVVOQVFzTElBc2dDeWdDTENBRGF5SUROZ0lzSUFZaEJ5QURRUUJLRFFBTEN5QU1RUmxxUVFsdUlRY2dBMEVBU0FSQUlBZEJBV29oRWlBT1FlWUFSaUVWQTBCQkFDQURheUlEUVFrZ0EwRUpTQnNoQ1FKQUlBWWdDRXNFUUVHQWxPdmNBeUFKZGlFV1FYOGdDWFJCZjNNaEQwRUFJUU1nQ0NFSEEwQWdCeUFESUFjb0FnQWlGeUFKZG1vMkFnQWdEeUFYY1NBV2JDRURJQWRCQkdvaUJ5QUdTUTBBQ3lBSUtBSUFJUWNnQTBVTkFTQUdJQU0yQWdBZ0JrRUVhaUVHREFFTElBZ29BZ0FoQndzZ0N5QUxLQUlzSUFscUlnTTJBaXdnRFNBSUlBZEZRUUowYWlJSUlCVWJJZ2NnRWtFQ2RHb2dCaUFHSUFkclFRSjFJQkpLR3lFR0lBTkJBRWdOQUFzTFFRQWhBd0pBSUFZZ0NFME5BQ0FOSUFoclFRSjFRUWxzSVFOQkNpRUhJQWdvQWdBaUNVRUtTUTBBQTBBZ0EwRUJhaUVESUFrZ0IwRUtiQ0lIVHcwQUN3c2dERUVBSUFNZ0RrSG1BRVliYXlBT1FlY0FSaUFNUVFCSGNXc2lCeUFHSUExclFRSjFRUWxzUVFsclNBUkFRUVJCcEFJZ0NrRUFTQnNnQzJvZ0IwR0F5QUJxSWdsQkNXMGlEMEVDZEdwQjBCOXJJUXBCQ2lFSElBa2dEMEVKYkdzaUNVRUhUQVJBQTBBZ0IwRUtiQ0VISUFsQkFXb2lDVUVJUncwQUN3c0NRQ0FLS0FJQUloSWdFaUFIYmlJVklBZHNheUlKUlNBS1FRUnFJZzhnQmtaeERRQUNRQ0FWUVFGeFJRUkFSQUFBQUFBQUFFQkRJUUVnQjBHQWxPdmNBMGNnQ0NBS1QzSU5BU0FLUVFSckxRQUFRUUZ4UlEwQkMwUUJBQUFBQUFCQVF5RUJDMFFBQUFBQUFBRGdQMFFBQUFBQUFBRHdQMFFBQUFBQUFBRDRQeUFHSUE5R0cwUUFBQUFBQUFENFB5QUpJQWRCQVhZaUQwWWJJQWtnRDBrYklSZ0NRQ0FVRFFBZ0V5MEFBRUV0UncwQUlCaWFJUmdnQVpvaEFRc2dDaUFTSUFscklnazJBZ0FnQVNBWW9DQUJZUTBBSUFvZ0J5QUphaUlETmdJQUlBTkJnSlRyM0FOUEJFQURRQ0FLUVFBMkFnQWdDQ0FLUVFScklncExCRUFnQ0VFRWF5SUlRUUEyQWdBTElBb2dDaWdDQUVFQmFpSUROZ0lBSUFOQi81UHIzQU5MRFFBTEN5QU5JQWhyUVFKMVFRbHNJUU5CQ2lFSElBZ29BZ0FpQ1VFS1NRMEFBMEFnQTBFQmFpRURJQWtnQjBFS2JDSUhUdzBBQ3dzZ0NrRUVhaUlISUFZZ0JpQUhTeHNoQmdzRFFDQUdJZ2NnQ0UwaUNVVUVRQ0FIUVFScklnWW9BZ0JGRFFFTEN3SkFJQTVCNXdCSEJFQWdCRUVJY1NFS0RBRUxJQU5CZjNOQmZ5QU1RUUVnREJzaUJpQURTaUFEUVh0S2NTSUtHeUFHYWlFTVFYOUJmaUFLR3lBRmFpRUZJQVJCQ0hFaUNnMEFRWGNoQmdKQUlBa05BQ0FIUVFScktBSUFJZzVGRFFCQkNpRUpRUUFoQmlBT1FRcHdEUUFEUUNBR0lncEJBV29oQmlBT0lBbEJDbXdpQ1hCRkRRQUxJQXBCZjNNaEJnc2dCeUFOYTBFQ2RVRUpiQ0VKSUFWQlgzRkJ4Z0JHQkVCQkFDRUtJQXdnQmlBSmFrRUpheUlHUVFBZ0JrRUFTaHNpQmlBR0lBeEtHeUVNREFFTFFRQWhDaUFNSUFNZ0NXb2dCbXBCQ1dzaUJrRUFJQVpCQUVvYklnWWdCaUFNU2hzaERBdEJmeUVKSUF4Qi9mLy8vd2RCL3YvLy93Y2dDaUFNY2lJR0cwb05BU0FNSUFaQkFFY2lFbXBCQVdvaERnSkFJQVZCWDNFaUZFSEdBRVlFUUNBRFFmLy8vLzhISUE1clNnMERJQU5CQUNBRFFRQktHeUVHREFFTElCRWdBeUFEUVI5MUlnWnFJQVp6clNBUkVJOEJJZ1pyUVFGTUJFQURRQ0FHUVFGcklnWkJNRG9BQUNBUklBWnJRUUpJRFFBTEN5QUdRUUpySWc4Z0JUb0FBQ0FHUVFGclFTMUJLeUFEUVFCSUd6b0FBQ0FSSUE5cklnWkIvLy8vL3djZ0RtdEtEUUlMSUFZZ0Rtb2lBeUFRUWYvLy8vOEhjMG9OQVNBQVFTQWdBaUFESUJCcUlnVWdCQkF1SUFBZ0V5QVFFQ29nQUVFd0lBSWdCU0FFUVlDQUJITVFMZ0pBQWtBQ1FDQVVRY1lBUmdSQUlBdEJFR29pQmtFSWNpRURJQVpCQ1hJaENpQU5JQWdnQ0NBTlN4c2lDU0VJQTBBZ0NEVUNBQ0FLRUk4QklRWUNRQ0FJSUFsSEJFQWdCaUFMUVJCcVRRMEJBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQUxRUkJxU3cwQUN3d0JDeUFHSUFwSERRQWdDMEV3T2dBWUlBTWhCZ3NnQUNBR0lBb2dCbXNRS2lBSVFRUnFJZ2dnRFUwTkFBdEJBQ0VHSUJKRkRRSWdBRUgrSGtFQkVDb2dERUVBVENBSElBaE5jZzBCQTBBZ0NEVUNBQ0FLRUk4QklnWWdDMEVRYWtzRVFBTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0MwRVFha3NOQUFzTElBQWdCaUFNUVFrZ0RFRUpTQnNRS2lBTVFRbHJJUVlnQ0VFRWFpSUlJQWRQRFFNZ0RFRUpTaUVESUFZaERDQUREUUFMREFJTEFrQWdERUVBU0EwQUlBY2dDRUVFYWlBSElBaExHeUVKSUF0QkVHb2lBMEVKY2lFTklBTkJDSEloQXlBSUlRY0RRQ0FOSUFjMUFnQWdEUkNQQVNJR1JnUkFJQXRCTURvQUdDQURJUVlMQWtBZ0J5QUlSd1JBSUFZZ0MwRVFhazBOQVFOQUlBWkJBV3NpQmtFd09nQUFJQVlnQzBFUWFrc05BQXNNQVFzZ0FDQUdRUUVRS2lBR1FRRnFJUVpCQUNBTVFRQk1JQW9iRFFBZ0FFSCtIa0VCRUNvTElBQWdCaUFOSUFacklnWWdEQ0FHSUF4SUd4QXFJQXdnQm1zaERDQUhRUVJxSWdjZ0NVOE5BU0FNUVFCT0RRQUxDeUFBUVRBZ0RFRVNha0VTUVFBUUxpQUFJQThnRVNBUGF4QXFEQUlMSUF3aEJnc2dBRUV3SUFaQkNXcEJDVUVBRUM0TElBQkJJQ0FDSUFVZ0JFR0F3QUJ6RUM0Z0FpQUZJQUlnQlVvYklRa01BUXNnRXlBRlFScDBRUjkxUVFseGFpRU1Ba0FnQTBFTFN3MEFRUXdnQTJzaEJrUUFBQUFBQUFBd1FDRVlBMEFnR0VRQUFBQUFBQUF3UUtJaEdDQUdRUUZySWdZTkFBc2dEQzBBQUVFdFJnUkFJQmdnQVpvZ0dLR2dtaUVCREFFTElBRWdHS0FnR0tFaEFRc2dFU0FMS0FJc0lnWWdCa0VmZFNJR2FpQUdjNjBnRVJDUEFTSUdSZ1JBSUF0Qk1Eb0FEeUFMUVE5cUlRWUxJQkJCQW5JaENpQUZRU0J4SVFnZ0N5Z0NMQ0VISUFaQkFtc2lEU0FGUVE5cU9nQUFJQVpCQVd0QkxVRXJJQWRCQUVnYk9nQUFJQVJCQ0hFaEJpQUxRUkJxSVFjRFFDQUhJZ1VDZnlBQm1VUUFBQUFBQUFEZ1FXTUVRQ0FCcWd3QkMwR0FnSUNBZUFzaUIwR2dNbW90QUFBZ0NISTZBQUJCQVNBRFFRQktJQUVnQjdlaFJBQUFBQUFBQURCQW9pSUJSQUFBQUFBQUFBQUFZbklnQmh0RklBVkJBV29pQnlBTFFSQnFhMEVCUjNKRkJFQWdCVUV1T2dBQklBVkJBbW9oQndzZ0FVUUFBQUFBQUFBQUFHSU5BQXRCZnlFSlFmMy8vLzhISUFvZ0VTQU5heUlGYWlJR2F5QURTQTBBSUFCQklDQUNJQVlDZndKQUlBTkZEUUFnQnlBTFFSQnFheUlJUVFKcklBTk9EUUFnQTBFQ2Fnd0JDeUFISUF0QkVHcHJJZ2dMSWdkcUlnTWdCQkF1SUFBZ0RDQUtFQ29nQUVFd0lBSWdBeUFFUVlDQUJITVFMaUFBSUF0QkVHb2dDQkFxSUFCQk1DQUhJQWhyUVFCQkFCQXVJQUFnRFNBRkVDb2dBRUVnSUFJZ0F5QUVRWURBQUhNUUxpQUNJQU1nQWlBRFNoc2hDUXNnQzBHd0JHb2tBQ0FKQzFRQkFuOGdBU0FBS0FKVUlnRWdBVUVBSUFKQmdBSnFJZ01RM0FFaUJDQUJheUFESUFRYklnTWdBaUFDSUFOTEd5SUNFRUlhSUFBZ0FTQURhaUlETmdKVUlBQWdBellDQ0NBQUlBRWdBbW8yQWdRZ0Fnc0pBQ0FBRU9FQkVCQUxFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRGlBUXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFSW9CQ3dvQUlBQkJDR3NRNGdFTENnQWdBRUVJYXhDS0FRc2FBQ0FBSUFFZ0Fpa0RDRUVBSUFNZ0FTZ0NBQ2dDRUJFV0FBc0pBQ0FBRU5BQkVCQUxsQUlDQVg4RGZpQUJLQUlZSUFFb0FpeExCRUFnQVNBQktBSVlOZ0lzQzBKL0lRZ0NRQ0FFUVJoeElnVkZJQVZCR0VZZ0EwRUJSbkZ5RFFBZ0FTZ0NMQ0lGQkVBZ0JTQUJRU0JxRUExcnJDRUdDd0pBQWtBQ1FDQUREZ01DQUFFREN5QUVRUWh4QkVBZ0FTZ0NEQ0FCS0FJSWE2d2hCd3dDQ3lBQktBSVlJQUVvQWhScnJDRUhEQUVMSUFZaEJ3c2dBaUFIZkNJQ1FnQlRJQUlnQmxWeURRQWdCRUVJY1NFREFrQWdBbEFOQUNBREJFQWdBU2dDREVVTkFnc2dCRUVRY1VVTkFDQUJLQUlZUlEwQkN5QURCRUFnQVNBQktBSUlJQUVvQWdnZ0FxZHFJQUVvQWl3UW13RUxJQVJCRUhFRVFDQUJJQUVvQWhRZ0FTZ0NIQkQyQWlBQklBS25FUFVDQ3lBQ0lRZ0xJQUFnQ0JDN0FRdURBZ0VKZnlNQVFSQnJJZ01rQUFKL0lBRkJmeEJlUlFSQUlBQW9BZ3doQkNBQUtBSUlJUVVnQUNnQ0dDQUFLQUljUmdSQVFYOGdBQzBBTUVFUWNVVU5BaG9nQUNnQ0dDRUdJQUFvQWhRaEJ5QUFLQUlzSVFnZ0FDZ0NGQ0VKSUFCQklHb2lBa0VBRUtFQklBSWdBaEFURUF3Z0FDQUNFQTBpQ2lBQ0VBa2dDbW9ROWdJZ0FDQUdJQWRyRVBVQ0lBQWdBQ2dDRkNBSUlBbHJhallDTEFzZ0F5QUFLQUlZUVFGcU5nSU1JQUFnQTBFTWFpQUFRU3hxRUhZb0FnQTJBaXdnQUMwQU1FRUljUVJBSUFBZ0FFRWdhaEFOSWdJZ0FpQUVJQVZyYWlBQUtBSXNFSnNCQ3lBQUlBRVFuQUVRL2dJTUFRc2dBUkR5QWdzaEFDQURRUkJxSkFBZ0FBdWdBUUVCZnlBQUtBSVlJQUFvQWl4TEJFQWdBQ0FBS0FJWU5nSXNDd0pBSUFBb0FnZ2dBQ2dDREU4TkFDQUJRWDhRWGdSQUlBQWdBQ2dDQ0NBQUtBSU1RUUZySUFBb0Fpd1Ftd0VnQVJEeUFnOExJQUF0QURCQkVIRkZCRUFnQVJDY0FTQUFLQUlNUVFGckxBQUFFRjVGRFFFTElBQWdBQ2dDQ0NBQUtBSU1RUUZySUFBb0Fpd1Ftd0VnQVJDY0FTRUNJQUFvQWd3Z0Fqb0FBQ0FCRHd0QmZ3dGtBQ0FBS0FJWUlBQW9BaXhMQkVBZ0FDQUFLQUlZTmdJc0N3SkFJQUF0QURCQkNIRkZEUUFnQUNnQ0VDQUFLQUlzU1FSQUlBQWdBQ2dDQ0NBQUtBSU1JQUFvQWl3UW13RUxJQUFvQWd3Z0FDZ0NFRThOQUNBQUtBSU1MQUFBRUdVUEMwRi9Dd2NBSUFBb0FnZ0xFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRGpBUXNLQUNBQVFRaHJFT01CQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RdUFFTENnQWdBRUVJYXhDNEFRc1RBQ0FBSUFBb0FnQkJER3NvQWdCcUVQa0NDeE1BSUFBZ0FDZ0NBRUVNYXlnQ0FHb1E1QUVMQ1FCQnlJRUJFQW9hQ3hNQUlBQWdBQ2dDQUVFTWF5Z0NBR29RaHdNTEV3QWdBQ0FBS0FJQVFReHJLQUlBYWhEbEFRdXRBUUVFZnlNQVFSQnJJZ1VrQUFOQUFrQWdBaUFFVEEwQUlBQW9BaGdpQXlBQUtBSWNJZ1pQQkVBZ0FDQUJMQUFBRUdVZ0FDZ0NBQ2dDTkJFQ0FFRi9SZzBCSUFSQkFXb2hCQ0FCUVFGcUlRRUZJQVVnQmlBRGF6WUNEQ0FGSUFJZ0JHczJBZ2dnQlVFTWFpQUZRUWhxRUxvQklRTWdBQ2dDR0NBQklBTW9BZ0FpQXhCVklBQWdBeUFBS0FJWWFqWUNHQ0FESUFScUlRUWdBU0FEYWlFQkN3d0JDd3NnQlVFUWFpUUFJQVFMQy9KaUlnQkJnQWdMc3lXbFkyUEdoSHg4K0psM2QrNk5lM3YyRGZMeS83MXJhOWF4YjIvZVZNWEZrVkF3TUdBREFRRUNxV2Ruem4wcksxWVovdjduWXRmWHRlYXJxMDJhZG5ic1JjcktqNTJDZ2g5QXljbUpoMzE5K2hYNit1L3JXVm15eVVkSGpndnc4UHZzcmExQlo5VFVzLzJpb2wvcXI2OUZ2NXljSS9la3BGT1djbkxrVzhEQW04SzN0M1VjL2YzaHJwT1RQV29tSmt4YU5qWnNRVDgvZmdMMzkvVlB6TXlEWERRMGFQU2xwVkUwNWVYUkNQSHgrWk54Y2VKejJOaXJVekV4WWo4VkZTb01CQVFJVXNmSGxXVWpJMFpldzhPZEtCZ1lNS0dXbGpjUEJRVUt0WnFhTHdrSEJ3NDJFaElrbTRDQUd6M2k0dDhtNit2TmFTY25UczJ5c24rZmRYWHFHd2tKRXA2RGd4MTBMQ3hZTGhvYU5DMGJHemF5Ym03YzdscGF0UHVnb0Z2MlVsS2tUVHM3ZG1IVzFyZk9zN045ZXlrcFVqN2o0OTF4THk5ZWw0U0VFL1ZUVTZabzBkRzVBQUFBQUN6dDdjRmdJQ0JBSC96ODQ4aXhzWG50VzF1MnZtcHExRWJMeTQzWnZyNW5Tems1Y3Q1S1NwVFVURXlZNkZoWXNFclB6NFZyME5DN0t1L3Z4ZVdxcWs4VysvdnR4VU5EaHRkTlRacFZNek5tbElXRkVjOUZSWW9RK2ZucEJnSUNCSUYvZi83d1VGQ2dSRHc4ZUxxZm55WGpxS2hMODFGUm92NmpvMTNBUUVDQWlvK1BCYTJTa2orOG5aMGhTRGc0Y0FUMTlmSGZ2THhqd2JhMmQzWGEycTlqSVNGQ01CQVFJQnIvLytVTzgvUDliZExTdjB6TnpZRVVEQXdZTlJNVEppL3M3TVBoWDErK29wZVhOY3hFUklnNUZ4Y3VWOFRFay9LbnAxV0Nmbjc4UnowOWVxeGtaTWpuWFYyNkt4a1pNcFZ6YythZ1lHREFtSUdCR2RGUFQ1NS8zTnlqWmlJaVJINHFLbFNya0pBN2c0aUlDOHBHUm93cDd1N0gwN2k0YXp3VUZDaDUzdDZuNGw1ZXZCMExDeFoyMjl1dE8rRGcyMVl5TW1ST09qcDBIZ29LRk50SlNaSUtCZ1lNYkNRa1NPUmNYTGhkd3NLZmJ0UFR2ZStzckVPbVltTEVxSkdST2FTVmxURTM1T1RUaTNsNThqTG41OVZEeU1pTFdUYzNicmR0YmRxTWpZMEJaTlhWc2RKT1RwemdxYWxKdEd4czJQcFdWcXdIOVBUekplcnF6NjlsWmNxT2VucjA2YTZ1UnhnSUNCRFZ1cnB2aUhoNDhHOGxKVXB5TGk1Y0pCd2NPUEdtcGxmSHRMUnpVY2JHbHlQbzZNdDgzZDJobkhSMDZDRWZIejdkUzB1VzNMMjlZWWFMaXcyRmlvb1BrSEJ3NEVJK1BuekV0YlZ4cW1abXpOaElTSkFGQXdNR0FmYjI5eElPRGh5allXSENYelUxYXZsWFY2N1F1Ymxwa1lhR0YxakJ3WmtuSFIwNnVaNmVKempoNGRrVCtQanJzNWlZS3pNUkVTSzdhV25TY05uWnFZbU9qZ2VubEpRenRwdWJMU0llSGp5U2g0Y1ZJT25weVVuT3pvZi9WVldxZUNnb1VIcmYzNldQakl3RCtLR2hXWUNKaVFrWERRMGEycisvWlRIbTV0ZkdRa0tFdUdobzBNTkJRWUt3bVprcGR5MHRXaEVQRHg3THNMQjcvRlJVcU5hN3UyMDZGaFlzVUtmMFVWTmxRWDdEcEJjYWxsNG5Pc3RycXp2eFJaMGZxMWo2ckpNRDQwdFYrakFnOW0xMnJaRjJ6SWdsVEFMMS9OZmxUOWZMS3NXQVJEVW1qNk5pdFVsYXNkNW5HN29sbUE3cVJlSEEvbDBDZFMvREV2Qk1nYU9YUm8zRytkTnI1MStQQTVXY2toWHJlbTIvMmxsU2xTMkR2dFRUSVhSWUtXbmdTVVRJeVk1cWljSjFlSG1POUdzK1dKbmRjYmtudGsvaHZoZXRpUEJtckNESnREck9mUmhLMzJPQ01ScmxZRE5SbDBWL1UyTGdkMlN4aEs1cnV4eWdnZjZVS3dqNVdHaEljQm45UlkrSGJONlV0L2g3VWlQVGM2dmlBa3R5VjQ4ZjR5cXJWV1lIS091eUE4SzFMNXA3eFlhbENEZlQ4b2NvTUxLbHZ5TzZhZ01DWElJVzdTc2N6NHFTdEhtbjhQSUg4NkhpYVU3TjlOcGwxYjRGQmg5aU5OR0svcWJFblZNdU5LQlY4Nkl5NFlvRmRldjJwRG5zZ3d1cTcyQkFCcDl4WGxFUWJyMzVpaUUrUFFiZGxxNEZQdDFHdmVaTnRZMVVrUVZkeEhGdjFBWUUveFZRWUNUN21CbVg2YjNXekVOQWlYZWUyV2U5UXVpd2lJdUpCemhiR2VmYjdzaDVSd3A4b2VrUFFuekpIb1Q0QUFBQUFJT0dnQWxJN1NzeXJIQVJIazV5V216Ny93NzlWamlGRHg3VnJqMG5PUzAyWk5rUENpR21YR2pSVkZ1Yk9pNDJKTEZuQ2d3UDUxZVQwcGJ1dEo2Um14dFB4Y0NBb2lEY1lXbExkMW9XR2hJY0NycVQ0dVVxb01CRDRDSThIUmNiRWdzTkNRNnR4NHZ5dWFpMkxjaXBIaFNGR2ZGWFRBZDFyN3ZkbWU3OVlIK2pueVlCOTd6MWNsekZPMlpFTkg3N1czWXBRNHZjeGlQTGFQenR0bVB4NUxqSzNESFhFSVZqUWtBaWx4TWdFY2FFZlNSS2hmZzl1OUlSTXZtdWJhRXB4MHN2bmgzek1MTGM3RktHRGREandYZHNGck1ybWJsd3FmcElsQkVpWk9sSHhJejhxQm8vOEtEWUxIMVc3NUF6SXNkT1NZZkIwVGpaL3FMS2pEWUwxSmpQZ2ZXbUtONTZwU2FPdDlxa3Y2MC81SjA2TEEyU2VGQ2J6RjlxWWtaK1ZNSVRqZmJvdU5pUVh2YzVMdld2dzRLK2dGMmZmSlBRYWFrdDFXK3pFaVhQTzVtc3lLZDlHQkJ1WTV6b2U3czcyd2w0SnMzMEdGbHVBYmVhN0tpYVQ0TmxicFhtZnViL3FnalB2Q0htNkJYdjJadm51czQyYjByVUNaL3Exbnl3S2EreXBERXhJejhxTUpTbHhzQm1valUzdkU1MHBzcUMvTERRa09BVjJLY3pTcGdFOGZmYTdFRU9VTTEvTC9hUkY0M1dUWFpOc085RFZFMnF6TjhFbHVUanRkR2VHNGhxVExnZkxNRi9VV1ZHQk9wZW5WMDFqQUZ6ZElmNkxrRUwrMW9kWjdOUzB0dVNNMVlRNlJOSDFtMk1ZZGVhZWd5aE40NFUrRm1KUEJQcjdpZXB6alhKWWJmdDVSemhQTEZIZWxuZjBwdy9jL0pWZWM0VUdMODN4M1BxemZkVFc2cjlYeFJ2UGQrRzIwUjRnZk92eWo3RWFMa3NOQ1E0WDBDanduTERIUllNSmVLOGkwazhLRUdWRGY5eEFhZzUzck1NQ0p6a3ROaVF3VlprWVlUTGUzQzJNdFYwWEd4SVFsZTQwRklKYXRVd05xVTR2MENqbm9IejEvdDg0em1DbXkvL2h6U09RMFRFM3VuTFZIdVVNcWJDSXozdVRKVUxRdnJEVGdndW9XWW8yU1N5ZGx1aVNXMkwwU1Z5K1Baa2htaVlGdFNrWE14ZFpiYVNiSEJJVVAzdHVkcGVGVVpYcDQyZGhKRFlxd0NNdk5NSzkrUllCYml6UlFiUUxCNlB5ajhQQXNHdnZRTUJFNHByT3BFUlFVOW4zT3FYOHMvTzhMVG1jNWFzZENMbnJUV0Y0dmszNkJ4MTMyNUg4UnB4SFNuRmlXKzNZZzZxR0w0Yi9GWStTOGJTZVNDYTI4RCtlTTFhOUIvZHFET0lCOGN4c1JJUVdTZUE3RjlnVVgrcEdiVktEUzNsZXArVHlaenZvT0E3VGE0cTliREk2N3M4ZzFPWllSY3JCSDY2ZDlZbTRXa1VZMVVoREgwQkFnUUlFQ0JBZ0JzMmFXNW1hVzVwZEhrQVJtVmljblZoY25rQVNtRnVkV0Z5ZVFCS2RXeDVBRlJvZFhKelpHRjVBRlIxWlhOa1lYa0FWMlZrYm1WelpHRjVBRk5oZEhWeVpHRjVBRk4xYm1SaGVRQk5iMjVrWVhrQVJuSnBaR0Y1QUUxaGVRQWxiUzhsWkM4bGVRQXRLeUFnSURCWU1IZ0FMVEJZS3pCWUlEQllMVEI0S3pCNElEQjRBRTV2ZGdCVWFIVUFRWFZuZFhOMEFFOWpkQUJUWVhRQVFYQnlBSFpsWTNSdmNnQlBZM1J2WW1WeUFFNXZkbVZ0WW1WeUFGTmxjSFJsYldKbGNnQkVaV05sYldKbGNnQnBiM05mWW1GelpUbzZZMnhsWVhJQVRXRnlBRk5sY0FBbFNUb2xUVG9sVXlBbGNBQlRkVzRBU25WdUFITjBaRG82WlhoalpYQjBhVzl1QUY5ZlkzaGhYMmQxWVhKa1gyRmpjWFZwY21VZ1pHVjBaV04wWldRZ2NtVmpkWEp6YVhabElHbHVhWFJwWVd4cGVtRjBhVzl1QUUxdmJnQnVZVzRBU21GdUFFcDFiQUJzYkFCQmNISnBiQUJHY21rQVRXRnlZMmdBUVhWbkFHbHVaZ0FsTGpCTVpnQWxUR1lBWVd4c2IyTmhkRzl5UEZRK09qcGhiR3h2WTJGMFpTaHphWHBsWDNRZ2Jpa2dKMjRuSUdWNFkyVmxaSE1nYldGNGFXMTFiU0J6ZFhCd2IzSjBaV1FnYzJsNlpRQjBjblZsQUZSMVpRQm1ZV3h6WlFCS2RXNWxBRmRsWkFCRVpXTUFSbVZpQUNWaElDVmlJQ1ZrSUNWSU9pVk5PaVZUSUNWWkFGQlBVMGxZQUNWSU9pVk5PaVZUQUU1QlRnQlFUUUJCVFFCTVExOUJURXdBVEVGT1J3QkpUa1lBUXdBd01USXpORFUyTnpnNUFFTXVWVlJHTFRnQVlYQndYM1l5QUhkbFlsOTJNZ0JCUWtORVJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXbUZpWTJSbFptZG9hV3ByYkcxdWIzQnhjbk4wZFhaM2VIbDZNREV5TXpRMU5qYzRPU3N2QUM0QUtHNTFiR3dwQUZCMWNtVWdkbWx5ZEhWaGJDQm1kVzVqZEdsdmJpQmpZV3hzWldRaEFGdG9SVXVjcSs1SHlnVDBCUUFBQUFBQUFBQm9FUUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBSUFBQUFBQUFBQUtBUkFBQVNBQUFBRXdBQUFQai8vLy80Ly8vL29CRUFBQlFBQUFBVkFBQUFBQkFBQUJRUUFBQUVBQUFBQUFBQUFPZ1JBQUFXQUFBQUZ3QUFBUHovLy8vOC8vLy82QkVBQUJnQUFBQVpBQUFBTUJBQUFFUVFBQUFNQUFBQUFBQUFBSUFTQUFBYUFBQUFHd0FBQUFRQUFBRDQvLy8vZ0JJQUFCd0FBQUFkQUFBQTlQLy8vL1QvLy8rQUVnQUFIZ0FBQUI4QUFBQmdFQUFBREJJQUFDQVNBQUEwRWdBQVNCSUFBSWdRQUFCMEVBQUFBQUFBQU9RU0FBQWdBQUFBSVFBQUFBWUFBQUFIQUFBQUlnQUFBQ01BQUFBS0FBQUFDd0FBQUF3QUFBQWtBQUFBRGdBQUFDVUFBQUFRQUFBQUpnQUFBQUFBQUFBb0VRQUFKd0FBQUNnQUFBQk9VM1F6WDE4eU9XSmhjMmxqWDJsdmMwbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFCZy9BQUQ4RUFBQVdCUUFBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFBQUFBRHdQZ0FBTkJFQUFFNVRkRE5mWHpJeE0ySmhjMmxqWDJsemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSFEvQUFCd0VRQUFBQUFBQUFFQUFBQW9FUUFBQS9ULy8wNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFBSFEvQUFDNEVRQUFBQUFBQUFFQUFBQW9FUUFBQS9ULy93d0FBQUFBQUFBQW9CRUFBQklBQUFBVEFBQUE5UC8vLy9ULy8vK2dFUUFBRkFBQUFCVUFBQUFFQUFBQUFBQUFBT2dSQUFBV0FBQUFGd0FBQVB6Ly8vLzgvLy8vNkJFQUFCZ0FBQUFaQUFBQVRsTjBNMTlmTWpFMFltRnphV05mYVc5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFkRDhBQUZBU0FBQURBQUFBQWdBQUFLQVJBQUFDQUFBQTZCRUFBQUlJQUFCT1UzUXpYMTh5TVRWaVlYTnBZMTl6ZEhKcGJtZGlkV1pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlRsTmZPV0ZzYkc5allYUnZja2xqUlVWRlJRQUFBQmcvQUFDZ0VnQUFhQkVBQUVBQUFBQUFBQUFBS0JRQUFDa0FBQUFxQUFBQU9BQUFBUGovLy84b0ZBQUFLd0FBQUN3QUFBREEvLy8vd1AvLy95Z1VBQUF0QUFBQUxnQUFBUHdTQUFCZ0V3QUFuQk1BQUxBVEFBREVFd0FBMkJNQUFJZ1RBQUIwRXdBQUpCTUFBQkFUQUFCQUFBQUFBQUFBQUlBU0FBQWFBQUFBR3dBQUFEZ0FBQUQ0Ly8vL2dCSUFBQndBQUFBZEFBQUF3UC8vLzhELy8vK0FFZ0FBSGdBQUFCOEFBQUJBQUFBQUFBQUFBS0FSQUFBU0FBQUFFd0FBQU1ELy8vL0EvLy8vb0JFQUFCUUFBQUFWQUFBQU9BQUFBQUFBQUFEb0VRQUFGZ0FBQUJjQUFBREkvLy8veVAvLy8rZ1JBQUFZQUFBQUdRQUFBRTVUZEROZlh6SXhPR0poYzJsalgzTjBjbWx1WjNOMGNtVmhiVWxqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWT1UxODVZV3hzYjJOaGRHOXlTV05GUlVWRkFBQUFBQmcvQUFEZ0V3QUFnQklBQUFBQUFBQllGQUFBTHdBQUFEQUFBQUJPVTNRelgxOHlPR2x2YzE5aVlYTmxSUUFBQVBBK0FBQkVGQUFBMFhTZUFGZWR2U3FBY0ZJUC8vOCtKd29BQUFCa0FBQUE2QU1BQUJBbkFBQ2doZ0VBUUVJUEFJQ1dtQUFBNGZVRkdBQUFBRFVBQUFCeEFBQUFhLy8vLzg3Ny8vK1N2Ly8vQUFBQUFBQUFBQUQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FBRUNBd1FGQmdjSUNmLy8vLy8vLy84S0N3d05EZzhRRVJJVEZCVVdGeGdaR2hzY0hSNGZJQ0VpSS8vLy8vLy8vd29MREEwT0R4QVJFaE1VRlJZWEdCa2FHeHdkSGg4Z0lTSWovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUJBZ1FIQXdZRkFBQUFBQUFBQUFJQUFNQURBQURBQkFBQXdBVUFBTUFHQUFEQUJ3QUF3QWdBQU1BSkFBREFDZ0FBd0FzQUFNQU1BQURBRFFBQXdBNEFBTUFQQUFEQUVBQUF3QkVBQU1BU0FBREFFd0FBd0JRQUFNQVZBQURBRmdBQXdCY0FBTUFZQUFEQUdRQUF3Qm9BQU1BYkFBREFIQUFBd0IwQUFNQWVBQURBSHdBQXdBQUFBTE1CQUFEREFnQUF3d01BQU1NRUFBRERCUUFBd3dZQUFNTUhBQUREQ0FBQXd3a0FBTU1LQUFEREN3QUF3d3dBQU1NTkFBRFREZ0FBd3c4QUFNTUFBQXk3QVFBTXd3SUFETU1EQUF6REJBQU0yd0FBQUFEZUVnU1ZBQUFBQVAvLy8vLy8vLy8vLy8vLy81QVdBQUFVQUFBQVF5NVZWRVl0T0FCQjRDMExBcVFXQUVHQUxndEhURU5mUTFSWlVFVUFBQUFBVEVOZlRsVk5SVkpKUXdBQVRFTmZWRWxOUlFBQUFBQUFURU5mUTA5TVRFRlVSUUFBVEVOZlRVOU9SVlJCVWxrQVRFTmZUVVZUVTBGSFJWTUFRZEF1QzBFWkFBb0FHUmtaQUFBQUFBVUFBQUFBQUFBSkFBQUFBQXNBQUFBQUFBQUFBQmtBRVFvWkdSa0RDZ2NBQVFBSkN4Z0FBQWtHQ3dBQUN3QUdHUUFBQUJrWkdRQkJvUzhMSVE0QUFBQUFBQUFBQUJrQUNnMFpHUmtBRFFBQUFnQUpEZ0FBQUFrQURnQUFEZ0JCMnk4TEFRd0FRZWN2Q3hVVEFBQUFBQk1BQUFBQUNRd0FBQUFBQUF3QUFBd0FRWlV3Q3dFUUFFR2hNQXNWRHdBQUFBUVBBQUFBQUFrUUFBQUFBQUFRQUFBUUFFSFBNQXNCRWdCQjJ6QUxIaEVBQUFBQUVRQUFBQUFKRWdBQUFBQUFFZ0FBRWdBQUdnQUFBQm9hR2dCQmtqRUxEaG9BQUFBYUdob0FBQUFBQUFBSkFFSERNUXNCRkFCQnp6RUxGUmNBQUFBQUZ3QUFBQUFKRkFBQUFBQUFGQUFBRkFCQi9URUxBUllBUVlreUN5a1ZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVVpBR2dCQndEUUwvd0VDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FESUFJZ0FpQUNJQUlnQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVdBRXdBVEFCTUFFd0FUQUJNQUV3QVRBQk1BRXdBVEFCTUFFd0FUQUJNQUkyQWpZQ05nSTJBallDTmdJMkFqWUNOZ0kyQVRBQk1BRXdBVEFCTUFFd0FUQUNOVUkxUWpWQ05VSTFRalZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFqRkNNVUl4UWpGQ01VSXhRakZDTVVJeFFUQUJNQUV3QVRBQk1BRXdBaldDTllJMWdqV0NOWUkxZ2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZSXhnakdDTVlJeGdqR0NNWUl4Z2pHQ01ZRXdBVEFCTUFFd0FJQVFjQTRDd0pRSGdCQjFEd0wrUU1CQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFBQUFUQUFBQUZBQUFBQlVBQUFBV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVFRQUFBRUlBQUFCREFBQUFSQUFBQUVVQUFBQkdBQUFBUndBQUFFZ0FBQUJKQUFBQVNnQUFBRXNBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTQUFBQVV3QUFBRlFBQUFCVkFBQUFWZ0FBQUZjQUFBQllBQUFBV1FBQUFGb0FBQUJiQUFBQVhBQUFBRjBBQUFCZUFBQUFYd0FBQUdBQUFBQkJBQUFBUWdBQUFFTUFBQUJFQUFBQVJRQUFBRVlBQUFCSEFBQUFTQUFBQUVrQUFBQktBQUFBU3dBQUFFd0FBQUJOQUFBQVRnQUFBRThBQUFCUUFBQUFVUUFBQUZJQUFBQlRBQUFBVkFBQUFGVUFBQUJXQUFBQVZ3QUFBRmdBQUFCWkFBQUFXZ0FBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUVIUXhBQUxBbUFrQUVIa3lBQUwrUU1CQUFBQUFnQUFBQU1BQUFBRUFBQUFCUUFBQUFZQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBQUFBRVFBQUFCSUFBQUFUQUFBQUZBQUFBQlVBQUFBV0FBQUFGd0FBQUJnQUFBQVpBQUFBR2dBQUFCc0FBQUFjQUFBQUhRQUFBQjRBQUFBZkFBQUFJQUFBQUNFQUFBQWlBQUFBSXdBQUFDUUFBQUFsQUFBQUpnQUFBQ2NBQUFBb0FBQUFLUUFBQUNvQUFBQXJBQUFBTEFBQUFDMEFBQUF1QUFBQUx3QUFBREFBQUFBeEFBQUFNZ0FBQURNQUFBQTBBQUFBTlFBQUFEWUFBQUEzQUFBQU9BQUFBRGtBQUFBNkFBQUFPd0FBQUR3QUFBQTlBQUFBUGdBQUFEOEFBQUJBQUFBQVlRQUFBR0lBQUFCakFBQUFaQUFBQUdVQUFBQm1BQUFBWndBQUFHZ0FBQUJwQUFBQWFnQUFBR3NBQUFCc0FBQUFiUUFBQUc0QUFBQnZBQUFBY0FBQUFIRUFBQUJ5QUFBQWN3QUFBSFFBQUFCMUFBQUFkZ0FBQUhjQUFBQjRBQUFBZVFBQUFIb0FBQUJiQUFBQVhBQUFBRjBBQUFCZUFBQUFYd0FBQUdBQUFBQmhBQUFBWWdBQUFHTUFBQUJrQUFBQVpRQUFBR1lBQUFCbkFBQUFhQUFBQUdrQUFBQnFBQUFBYXdBQUFHd0FBQUJ0QUFBQWJnQUFBRzhBQUFCd0FBQUFjUUFBQUhJQUFBQnpBQUFBZEFBQUFIVUFBQUIyQUFBQWR3QUFBSGdBQUFCNUFBQUFlZ0FBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUVIZzBBQUx3UUV3TVRJek5EVTJOemc1WVdKalpHVm1RVUpEUkVWR2VGZ3JMWEJRYVVsdVRnQWxBQUFBQUFBbGNBQUFBQUFsU1RvbFRUb2xVeUFsY0NWSU9pVk5BQUFBSlFBQUFHMEFBQUF2QUFBQUpRQUFBR1FBQUFBdkFBQUFKUUFBQUhrQUFBQWxBQUFBV1FBQUFDMEFBQUFsQUFBQWJRQUFBQzBBQUFBbEFBQUFaQUFBQUNVQUFBQkpBQUFBT2dBQUFDVUFBQUJOQUFBQU9nQUFBQ1VBQUFCVEFBQUFJQUFBQUNVQUFBQndBQUFBQUFBQUFDVUFBQUJJQUFBQU9nQUFBQ1VBQUFCTkFFR3cwZ0FMMlFNbEFBQUFTQUFBQURvQUFBQWxBQUFBVFFBQUFEb0FBQUFsQUFBQVV3QUFBQUFBQUFDMExRQUFSd0FBQUVnQUFBQkpBQUFBQUFBQUFCUXVBQUJLQUFBQVN3QUFBRWtBQUFCTUFBQUFUUUFBQUU0QUFBQlBBQUFBVUFBQUFGRUFBQUJTQUFBQVV3QUFBQUFBQUFCOExRQUFWQUFBQUZVQUFBQkpBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCYkFBQUFYQUFBQUFBQUFBQk1MZ0FBWFFBQUFGNEFBQUJKQUFBQVh3QUFBR0FBQUFCaEFBQUFZZ0FBQUdNQUFBQUFBQUFBY0M0QUFHUUFBQUJsQUFBQVNRQUFBR1lBQUFCbkFBQUFhQUFBQUdrQUFBQnFBQUFBZEFBQUFISUFBQUIxQUFBQVpRQUFBQUFBQUFCbUFBQUFZUUFBQUd3QUFBQnpBQUFBWlFBQUFBQUFBQUFsQUFBQWJRQUFBQzhBQUFBbEFBQUFaQUFBQUM4QUFBQWxBQUFBZVFBQUFBQUFBQUFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUFBQURvQUFBQWxBQUFBVXdBQUFBQUFBQUFsQUFBQVlRQUFBQ0FBQUFBbEFBQUFZZ0FBQUNBQUFBQWxBQUFBWkFBQUFDQUFBQUFsQUFBQVNBQUFBRG9BQUFBbEFBQUFUUUFBQURvQUFBQWxBQUFBVXdBQUFDQUFBQUFsQUFBQVdRQUFBQUFBQUFBbEFBQUFTUUFBQURvQUFBQWxBQUFBVFFBQUFEb0FBQUFsQUFBQVV3QUFBQ0FBQUFBbEFBQUFjQUJCbE5ZQUM1WUpQQ3NBQUdzQUFBQnNBQUFBU1FBQUFFNVRkRE5mWHpJMmJHOWpZV3hsTldaaFkyVjBSUUFBQUJnL0FBQWtLd0FBZ0Q0QUFBQUFBQUM4S3dBQWF3QUFBRzBBQUFCSkFBQUFiZ0FBQUc4QUFBQndBQUFBY1FBQUFISUFBQUJ6QUFBQWRBQUFBSFVBQUFCMkFBQUFkd0FBQUhnQUFBQjVBQUFBVGxOME0xOWZNalZqZEhsd1pVbDNSVVVBVGxOME0xOWZNakV3WTNSNWNHVmZZbUZ6WlVVQUFQQStBQUNlS3dBQWREOEFBSXdyQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBdENzQUFBSUFBQUFBQUFBQVVDd0FBR3NBQUFCNkFBQUFTUUFBQUhzQUFBQjhBQUFBZlFBQUFINEFBQUIvQUFBQWdBQUFBSUVBQUFCT1UzUXpYMTh5TjJOdlpHVmpkblJKWTJNeE1WOWZiV0p6ZEdGMFpWOTBSVVVBVGxOME0xOWZNakV5WTI5a1pXTjJkRjlpWVhObFJRQUFBQUR3UGdBQUxpd0FBSFEvQUFBTUxBQUFBQUFBQUFJQUFBQThLd0FBQWdBQUFFZ3NBQUFDQUFBQUFBQUFBTVFzQUFCckFBQUFnZ0FBQUVrQUFBQ0RBQUFBaEFBQUFJVUFBQUNHQUFBQWh3QUFBSWdBQUFDSkFBQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNVUnpZekV4WDE5dFluTjBZWFJsWDNSRlJRQUFkRDhBQUtBc0FBQUFBQUFBQWdBQUFEd3JBQUFDQUFBQVNDd0FBQUlBQUFBQUFBQUFPQzBBQUdzQUFBQ0tBQUFBU1FBQUFJc0FBQUNNQUFBQWpRQUFBSTRBQUFDUEFBQUFrQUFBQUpFQUFBQk9VM1F6WDE4eU4yTnZaR1ZqZG5SSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBQjBQd0FBRkMwQUFBQUFBQUFDQUFBQVBDc0FBQUlBQUFCSUxBQUFBZ0FBQUU1VGRETmZYekkzWTI5a1pXTjJkRWwzWXpFeFgxOXRZbk4wWVhSbFgzUkZSUUFBQUhRL0FBQllMUUFBQUFBQUFBSUFBQUE4S3dBQUFnQUFBRWdzQUFBQ0FBQUFUbE4wTTE5Zk1qWnNiMk5oYkdVMVgxOXBiWEJGQUFBQUdEOEFBSnd0QUFBOEt3QUFUbE4wTTE5Zk1qZGpiMnhzWVhSbFNXTkZSUUFZUHdBQXdDMEFBRHdyQUFCT1UzUXpYMTh5TjJOdmJHeGhkR1ZKZDBWRkFCZy9BQURnTFFBQVBDc0FBRTVUZEROZlh6STFZM1I1Y0dWSlkwVkZBQUFBZEQ4QUFBQXVBQUFBQUFBQUFnQUFBRHdyQUFBQ0FBQUF0Q3NBQUFJQUFBQk9VM1F6WDE4eU9HNTFiWEIxYm1OMFNXTkZSUUFBQUFBWVB3QUFOQzRBQUR3ckFBQk9VM1F6WDE4eU9HNTFiWEIxYm1OMFNYZEZSUUFBQUFBWVB3QUFXQzRBQUR3ckFBQUFBQUFBMUMwQUFKSUFBQUNUQUFBQVNRQUFBSlFBQUFDVkFBQUFsZ0FBQUFBQUFBRDBMUUFBbHdBQUFKZ0FBQUJKQUFBQW1RQUFBSm9BQUFDYkFBQUFBQUFBQUpBdkFBQnJBQUFBbkFBQUFFa0FBQUNkQUFBQW5nQUFBSjhBQUFDZ0FBQUFvUUFBQUtJQUFBQ2pBQUFBcEFBQUFLVUFBQUNtQUFBQXB3QUFBRTVUZEROZlh6STNiblZ0WDJkbGRFbGpUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpsZlgyNTFiVjluWlhSSlkwVkZBRTVUZEROZlh6SXhORjlmYm5WdFgyZGxkRjlpWVhObFJRQUE4RDRBQUZZdkFBQjBQd0FBUUM4QUFBQUFBQUFCQUFBQWNDOEFBQUFBQUFCMFB3QUEvQzRBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUI0THdCQnROOEFDOG9CWkRBQUFHc0FBQUNvQUFBQVNRQUFBS2tBQUFDcUFBQUFxd0FBQUt3QUFBQ3RBQUFBcmdBQUFLOEFBQUN3QUFBQXNRQUFBTElBQUFDekFBQUFUbE4wTTE5Zk1qZHVkVzFmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYMmRsZEVsM1JVVUFBQUIwUHdBQU5EQUFBQUFBQUFBQkFBQUFjQzhBQUFBQUFBQjBQd0FBOEM4QUFBQUFBQUFDQUFBQVBDc0FBQUlBQUFCTU1BQkJpT0VBQzk0QlRERUFBR3NBQUFDMEFBQUFTUUFBQUxVQUFBQzJBQUFBdHdBQUFMZ0FBQUM1QUFBQXVnQUFBTHNBQUFDOEFBQUFUbE4wTTE5Zk1qZHVkVzFmY0hWMFNXTk9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSlkwNVRYekV4WTJoaGNsOTBjbUZwZEhOSlkwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYM0IxZEVsalJVVUFUbE4wTTE5Zk1qRTBYMTl1ZFcxZmNIVjBYMkpoYzJWRkFBRHdQZ0FBRWpFQUFIUS9BQUQ4TUFBQUFBQUFBQUVBQUFBc01RQUFBQUFBQUhRL0FBQzRNQUFBQUFBQUFBSUFBQUE4S3dBQUFnQUFBRFF4QUVIdzRnQUx2Z0VVTWdBQWF3QUFBTDBBQUFCSkFBQUF2Z0FBQUw4QUFBREFBQUFBd1FBQUFNSUFBQUREQUFBQXhBQUFBTVVBQUFCT1UzUXpYMTh5TjI1MWJWOXdkWFJKZDA1VFh6RTViM04wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6STVYMTl1ZFcxZmNIVjBTWGRGUlFBQUFIUS9BQURrTVFBQUFBQUFBQUVBQUFBc01RQUFBQUFBQUhRL0FBQ2dNUUFBQUFBQUFBSUFBQUE4S3dBQUFnQUFBUHd4QUVHNDVBQUxtZ3NVTXdBQXhnQUFBTWNBQUFCSkFBQUF5QUFBQU1rQUFBREtBQUFBeXdBQUFNd0FBQUROQUFBQXpnQUFBUGovLy84VU13QUF6d0FBQU5BQUFBRFJBQUFBMGdBQUFOTUFBQURVQUFBQTFRQUFBRTVUZEROZlh6STRkR2x0WlY5blpYUkpZMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJNWRHbHRaVjlpWVhObFJRRHdQZ0FBelRJQUFFNVRkRE5mWHpJeU1GOWZkR2x0WlY5blpYUmZZMTl6ZEc5eVlXZGxTV05GUlFBQUFQQStBQURvTWdBQWREOEFBSWd5QUFBQUFBQUFBd0FBQUR3ckFBQUNBQUFBNERJQUFBSUFBQUFNTXdBQUFBZ0FBQUFBQUFBQU5BQUExZ0FBQU5jQUFBQkpBQUFBMkFBQUFOa0FBQURhQUFBQTJ3QUFBTndBQUFEZEFBQUEzZ0FBQVBqLy8vOEFOQUFBM3dBQUFPQUFBQURoQUFBQTRnQUFBT01BQUFEa0FBQUE1UUFBQUU1VGRETmZYekk0ZEdsdFpWOW5aWFJKZDA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2wzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJVVkZBRTVUZEROZlh6SXlNRjlmZEdsdFpWOW5aWFJmWTE5emRHOXlZV2RsU1hkRlJRQUE4RDRBQU5VekFBQjBQd0FBa0RNQUFBQUFBQUFEQUFBQVBDc0FBQUlBQUFEZ01nQUFBZ0FBQVBnekFBQUFDQUFBQUFBQUFLUTBBQURtQUFBQTV3QUFBRWtBQUFEb0FBQUFUbE4wTTE5Zk1qaDBhVzFsWDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFd1gxOTBhVzFsWDNCMWRFVUFBQUR3UGdBQWhUUUFBSFEvQUFCQU5BQUFBQUFBQUFJQUFBQThLd0FBQWdBQUFKdzBBQUFBQ0FBQUFBQUFBQ1ExQUFEcEFBQUE2Z0FBQUVrQUFBRHJBQUFBVGxOME0xOWZNamgwYVcxbFgzQjFkRWwzVGxOZk1UbHZjM1J5WldGdFluVm1YMmwwWlhKaGRHOXlTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRlJVVUFBQUFBZEQ4QUFOdzBBQUFBQUFBQUFnQUFBRHdyQUFBQ0FBQUFuRFFBQUFBSUFBQUFBQUFBdURVQUFHc0FBQURzQUFBQVNRQUFBTzBBQUFEdUFBQUE3d0FBQVBBQUFBRHhBQUFBOGdBQUFQTUFBQUQwQUFBQTlRQUFBRTVUZEROZlh6SXhNRzF2Ym1WNWNIVnVZM1JKWTB4aU1FVkZSUUJPVTNRelgxOHlNVEJ0YjI1bGVWOWlZWE5sUlFBQUFBRHdQZ0FBbURVQUFIUS9BQUI4TlFBQUFBQUFBQUlBQUFBOEt3QUFBZ0FBQUxBMUFBQUNBQUFBQUFBQUFDdzJBQUJyQUFBQTlnQUFBRWtBQUFEM0FBQUErQUFBQVBrQUFBRDZBQUFBK3dBQUFQd0FBQUQ5QUFBQS9nQUFBUDhBQUFCT1UzUXpYMTh5TVRCdGIyNWxlWEIxYm1OMFNXTk1ZakZGUlVVQWREOEFBQkEyQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBc0RVQUFBSUFBQUFBQUFBQW9EWUFBR3NBQUFBQUFRQUFTUUFBQUFFQkFBQUNBUUFBQXdFQUFBUUJBQUFGQVFBQUJnRUFBQWNCQUFBSUFRQUFDUUVBQUU1VGRETmZYekl4TUcxdmJtVjVjSFZ1WTNSSmQweGlNRVZGUlFCMFB3QUFoRFlBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUN3TlFBQUFnQUFBQUFBQUFBVU53QUFhd0FBQUFvQkFBQkpBQUFBQ3dFQUFBd0JBQUFOQVFBQURnRUFBQThCQUFBUUFRQUFFUUVBQUJJQkFBQVRBUUFBVGxOME0xOWZNakV3Ylc5dVpYbHdkVzVqZEVsM1RHSXhSVVZGQUhRL0FBRDROZ0FBQUFBQUFBSUFBQUE4S3dBQUFnQUFBTEExQUFBQ0FBQUFBQUFBQUxnM0FBQnJBQUFBRkFFQUFFa0FBQUFWQVFBQUZnRUFBRTVUZEROZlh6STViVzl1WlhsZloyVjBTV05PVTE4eE9XbHpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpZMDVUWHpFeFkyaGhjbDkwY21GcGRITkpZMFZGUlVWRlJRQk9VM1F6WDE4eU1URmZYMjF2Ym1WNVgyZGxkRWxqUlVVQUFQQStBQUNXTndBQWREOEFBRkEzQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBc0RjQVFkenZBQXVhQVZ3NEFBQnJBQUFBRndFQUFFa0FBQUFZQVFBQUdRRUFBRTVUZEROZlh6STViVzl1WlhsZloyVjBTWGRPVTE4eE9XbHpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVWRlJRQk9VM1F6WDE4eU1URmZYMjF2Ym1WNVgyZGxkRWwzUlVVQUFQQStBQUE2T0FBQWREOEFBUFEzQUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBVkRnQVFZSHhBQXVaQVRrQUFHc0FBQUFhQVFBQVNRQUFBQnNCQUFBY0FRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpZMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTV05GUlFBQThENEFBTjQ0QUFCMFB3QUFtRGdBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUQ0T0FCQnBQSUFDNW9CcERrQUFHc0FBQUFkQVFBQVNRQUFBQjRCQUFBZkFRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQThENEFBSUk1QUFCMFB3QUFQRGtBQUFBQUFBQUNBQUFBUENzQUFBSUFBQUNjT1FCQnlQTUFDN2tJSERvQUFHc0FBQUFnQVFBQVNRQUFBQ0VCQUFBaUFRQUFJd0VBQUU1VGRETmZYekk0YldWemMyRm5aWE5KWTBWRkFFNVRkRE5mWHpJeE0yMWxjM05oWjJWelgySmhjMlZGQUFBQUFQQStBQUQ1T1FBQWREOEFBT1E1QUFBQUFBQUFBZ0FBQUR3ckFBQUNBQUFBRkRvQUFBSUFBQUFBQUFBQWREb0FBR3NBQUFBa0FRQUFTUUFBQUNVQkFBQW1BUUFBSndFQUFFNVRkRE5mWHpJNGJXVnpjMkZuWlhOSmQwVkZBQUFBQUhRL0FBQmNPZ0FBQUFBQUFBSUFBQUE4S3dBQUFnQUFBQlE2QUFBQ0FBQUFVd0FBQUhVQUFBQnVBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRTBBQUFCdkFBQUFiZ0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJVQUFBQWRRQUFBR1VBQUFCekFBQUFaQUFBQUdFQUFBQjVBQUFBQUFBQUFGY0FBQUJsQUFBQVpBQUFBRzRBQUFCbEFBQUFjd0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJVQUFBQWFBQUFBSFVBQUFCeUFBQUFjd0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJHQUFBQWNnQUFBR2tBQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBVXdBQUFHRUFBQUIwQUFBQWRRQUFBSElBQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBVXdBQUFIVUFBQUJ1QUFBQUFBQUFBRTBBQUFCdkFBQUFiZ0FBQUFBQUFBQlVBQUFBZFFBQUFHVUFBQUFBQUFBQVZ3QUFBR1VBQUFCa0FBQUFBQUFBQUZRQUFBQm9BQUFBZFFBQUFBQUFBQUJHQUFBQWNnQUFBR2tBQUFBQUFBQUFVd0FBQUdFQUFBQjBBQUFBQUFBQUFFb0FBQUJoQUFBQWJnQUFBSFVBQUFCaEFBQUFjZ0FBQUhrQUFBQUFBQUFBUmdBQUFHVUFBQUJpQUFBQWNnQUFBSFVBQUFCaEFBQUFjZ0FBQUhrQUFBQUFBQUFBVFFBQUFHRUFBQUJ5QUFBQVl3QUFBR2dBQUFBQUFBQUFRUUFBQUhBQUFBQnlBQUFBYVFBQUFHd0FBQUFBQUFBQVRRQUFBR0VBQUFCNUFBQUFBQUFBQUVvQUFBQjFBQUFBYmdBQUFHVUFBQUFBQUFBQVNnQUFBSFVBQUFCc0FBQUFlUUFBQUFBQUFBQkJBQUFBZFFBQUFHY0FBQUIxQUFBQWN3QUFBSFFBQUFBQUFBQUFVd0FBQUdVQUFBQndBQUFBZEFBQUFHVUFBQUJ0QUFBQVlnQUFBR1VBQUFCeUFBQUFBQUFBQUU4QUFBQmpBQUFBZEFBQUFHOEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFUZ0FBQUc4QUFBQjJBQUFBWlFBQUFHMEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFSQUFBQUdVQUFBQmpBQUFBWlFBQUFHMEFBQUJpQUFBQVpRQUFBSElBQUFBQUFBQUFTZ0FBQUdFQUFBQnVBQUFBQUFBQUFFWUFBQUJsQUFBQVlnQUFBQUFBQUFCTkFBQUFZUUFBQUhJQUFBQUFBQUFBUVFBQUFIQUFBQUJ5QUFBQUFBQUFBRW9BQUFCMUFBQUFiZ0FBQUFBQUFBQktBQUFBZFFBQUFHd0FBQUFBQUFBQVFRQUFBSFVBQUFCbkFBQUFBQUFBQUZNQUFBQmxBQUFBY0FBQUFBQUFBQUJQQUFBQVl3QUFBSFFBQUFBQUFBQUFUZ0FBQUc4QUFBQjJBQUFBQUFBQUFFUUFBQUJsQUFBQVl3QUFBQUFBQUFCQkFBQUFUUUFBQUFBQUFBQlFBQUFBVFFCQmpQd0FDK0lFRERNQUFNOEFBQURRQUFBQTBRQUFBTklBQUFEVEFBQUExQUFBQU5VQUFBQUFBQUFBK0RNQUFOOEFBQURnQUFBQTRRQUFBT0lBQUFEakFBQUE1QUFBQU9VQUFBQUFBQUFBZ0Q0QUFDZ0JBQUFwQVFBQUtnRUFBRTVUZEROZlh6SXhORjlmYzJoaGNtVmtYMk52ZFc1MFJRQUFBQUR3UGdBQVpENEFBRTR4TUY5ZlkzaDRZV0pwZGpFeE5sOWZjMmhwYlY5MGVYQmxYMmx1Wm05RkFBQUFBQmcvQUFDSVBnQUFhRUFBQUU0eE1GOWZZM2g0WVdKcGRqRXhOMTlmWTJ4aGMzTmZkSGx3WlY5cGJtWnZSUUFBQUJnL0FBQzRQZ0FBckQ0QUFBQUFBQURjUGdBQUt3RUFBQ3dCQUFBdEFRQUFMZ0VBQUM4QkFBQXdBUUFBTVFFQUFESUJBQUFBQUFBQVlEOEFBQ3NCQUFBekFRQUFMUUVBQUM0QkFBQXZBUUFBTkFFQUFEVUJBQUEyQVFBQVRqRXdYMTlqZUhoaFltbDJNVEl3WDE5emFWOWpiR0Z6YzE5MGVYQmxYMmx1Wm05RkFBQUFBQmcvQUFBNFB3QUEzRDRBQUFBQUFBQzhQd0FBS3dFQUFEY0JBQUF0QVFBQUxnRUFBQzhCQUFBNEFRQUFPUUVBQURvQkFBQk9NVEJmWDJONGVHRmlhWFl4TWpGZlgzWnRhVjlqYkdGemMxOTBlWEJsWDJsdVptOUZBQUFBR0Q4QUFKUS9BQURjUGdBQUFBQUFBT3cvQUFBN0FRQUFQQUVBQUQwQkFBQlRkRGxsZUdObGNIUnBiMjRBQUFBQThENEFBTncvQUFBQUFBQUFHRUFBQUFNQUFBQStBUUFBUHdFQUFGTjBNVEZzYjJkcFkxOWxjbkp2Y2dBWVB3QUFDRUFBQU93L0FBQUFBQUFBVEVBQUFBTUFBQUJBQVFBQVB3RUFBRk4wTVRKc1pXNW5kR2hmWlhKeWIzSUFBQUFBR0Q4QUFEaEFBQUFZUUFBQVUzUTVkSGx3WlY5cGJtWnZBQUFBQVBBK0FBQllRQUJCOElBQkN3S2dhdz09IiksTmM9ZnVuY3Rpb24oQSl7KEE9QXx8e30pLmluc3RhbnRpYXRlV2FzbT1mdW5jdGlvbihBLGcpe3BjKEEpLnRoZW4oKGZ1bmN0aW9uKEEpe2coe2V4cG9ydHM6QS5leHBvcnRzfSl9KSl9O3ZhciBnLEk9dm9pZCAwIT09QT9BOnt9LFE9T2JqZWN0LmFzc2lnbixDPVEoe30sSSksRT0iLi90aGlzLnByb2dyYW0iLHQ9ITAsaT0iIjtpPTAhPT0oaT1zZWxmLmxvY2F0aW9uLmhyZWYpLmluZGV4T2YoImJsb2I6Iik/aS5zdWJzdHIoMCxpLnJlcGxhY2UoL1s/I10uKi8sIiIpLmxhc3RJbmRleE9mKCIvIikrMSk6IiIsZz1mdW5jdGlvbihBKXt2YXIgZz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIGcub3BlbigiR0VUIixBLCExKSxnLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLGcuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShnLnJlc3BvbnNlKX0sSS5wcmludHx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKTt2YXIgZSxvLHI9SS5wcmludEVycnx8Y29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7UShJLEMpLEM9bnVsbCxJLmFyZ3VtZW50cyYmSS5hcmd1bWVudHMsSS50aGlzUHJvZ3JhbSYmKEU9SS50aGlzUHJvZ3JhbSksSS5xdWl0JiZJLnF1aXQsSS53YXNtQmluYXJ5JiYoZT1JLndhc21CaW5hcnkpLEkubm9FeGl0UnVudGltZSwib2JqZWN0IiE9PSgidW5kZWZpbmVkIj09dHlwZW9mIFdlYkFzc2VtYmx5PyJ1bmRlZmluZWQiOkIoV2ViQXNzZW1ibHkpKSYmUygibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBuLGEscyxjLGgseT0hMSxmPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwO2Z1bmN0aW9uIHUoQSxnKXtyZXR1cm4gQT9mdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCPWcrSSxRPWc7QVtRXSYmIShRPj1CKTspKytRO2lmKFEtZz4xNiYmQS5zdWJhcnJheSYmZilyZXR1cm4gZi5kZWNvZGUoQS5zdWJhcnJheShnLFEpKTtmb3IodmFyIEM9IiI7ZzxROyl7dmFyIEU9QVtnKytdO2lmKDEyOCZFKXt2YXIgdD02MyZBW2crK107aWYoMTkyIT0oMjI0JkUpKXt2YXIgaT02MyZBW2crK107aWYoKEU9MjI0PT0oMjQwJkUpPygxNSZFKTw8MTJ8dDw8NnxpOig3JkUpPDwxOHx0PDwxMnxpPDw2fDYzJkFbZysrXSk8NjU1MzYpQys9U3RyaW5nLmZyb21DaGFyQ29kZShFKTtlbHNle3ZhciBlPUUtNjU1MzY7Qys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxlPj4xMCw1NjMyMHwxMDIzJmUpfX1lbHNlIEMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJkUpPDw2fHQpfWVsc2UgQys9U3RyaW5nLmZyb21DaGFyQ29kZShFKX1yZXR1cm4gQ30ocyxBLGcpOiIifWZ1bmN0aW9uIEQoQSxnLEksQil7aWYoIShCPjApKXJldHVybiAwO2Zvcih2YXIgUT1JLEM9SStCLTEsRT0wO0U8QS5sZW5ndGg7KytFKXt2YXIgdD1BLmNoYXJDb2RlQXQoRSk7aWYodD49NTUyOTYmJnQ8PTU3MzQzJiYodD02NTUzNisoKDEwMjMmdCk8PDEwKXwxMDIzJkEuY2hhckNvZGVBdCgrK0UpKSx0PD0xMjcpe2lmKEk+PUMpYnJlYWs7Z1tJKytdPXR9ZWxzZSBpZih0PD0yMDQ3KXtpZihJKzE+PUMpYnJlYWs7Z1tJKytdPTE5Mnx0Pj42LGdbSSsrXT0xMjh8NjMmdH1lbHNlIGlmKHQ8PTY1NTM1KXtpZihJKzI+PUMpYnJlYWs7Z1tJKytdPTIyNHx0Pj4xMixnW0krK109MTI4fHQ+PjYmNjMsZ1tJKytdPTEyOHw2MyZ0fWVsc2V7aWYoSSszPj1DKWJyZWFrO2dbSSsrXT0yNDB8dD4+MTgsZ1tJKytdPTEyOHx0Pj4xMiY2MyxnW0krK109MTI4fHQ+PjYmNjMsZ1tJKytdPTEyOHw2MyZ0fX1yZXR1cm4gZ1tJXT0wLEktUX1mdW5jdGlvbiB3KEEpe2Zvcih2YXIgZz0wLEk9MDtJPEEubGVuZ3RoOysrSSl7dmFyIEI9QS5jaGFyQ29kZUF0KEkpO0I+PTU1Mjk2JiZCPD01NzM0MyYmKEI9NjU1MzYrKCgxMDIzJkIpPDwxMCl8MTAyMyZBLmNoYXJDb2RlQXQoKytJKSksQjw9MTI3PysrZzpnKz1CPD0yMDQ3PzI6Qjw9NjU1MzU/Mzo0fXJldHVybiBnfWZ1bmN0aW9uIGwoQSxnKXthLnNldChBLGcpfWZ1bmN0aW9uIGQoQSl7bj1BLEkuSEVBUDg9YT1uZXcgSW50OEFycmF5KEEpLEkuSEVBUDE2PW5ldyBJbnQxNkFycmF5KEEpLEkuSEVBUDMyPWM9bmV3IEludDMyQXJyYXkoQSksSS5IRUFQVTg9cz1uZXcgVWludDhBcnJheShBKSxJLkhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KEEpLEkuSEVBUFUzMj1uZXcgVWludDMyQXJyYXkoQSksSS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoQSksSS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoQSl9SS5JTklUSUFMX01FTU9SWTt2YXIgRj1bXSxHPVtdLFI9W10sVT0wLGs9bnVsbDtmdW5jdGlvbiBTKEEpe3Rocm93IEkub25BYm9ydCYmSS5vbkFib3J0KEEpLHIoQT0iQWJvcnRlZCgiK0ErIikiKSx5PSEwLEErPSIuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uIixuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKEEpfUkucHJlbG9hZGVkSW1hZ2VzPXt9LEkucHJlbG9hZGVkQXVkaW9zPXt9O3ZhciBwLE4sTT0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCI7ZnVuY3Rpb24gWShBKXtyZXR1cm4gQS5zdGFydHNXaXRoKE0pfWZ1bmN0aW9uIEgoQSl7dHJ5e2lmKEE9PXAmJmUpcmV0dXJuIG5ldyBVaW50OEFycmF5KGUpO2lmKGcpcmV0dXJuIGcoQSk7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifWNhdGNoKEkpe1MoSSl9fWZ1bmN0aW9uIHYoQSl7Zm9yKDtBLmxlbmd0aD4wOyl7dmFyIGc9QS5zaGlmdCgpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBnKXt2YXIgQj1nLmZ1bmM7Im51bWJlciI9PXR5cGVvZiBCP3ZvaWQgMD09PWcuYXJnP0woQikoKTpMKEIpKGcuYXJnKTpCKHZvaWQgMD09PWcuYXJnP251bGw6Zy5hcmcpfWVsc2UgZyhJKX19ZnVuY3Rpb24gTChBKXtyZXR1cm4gaC5nZXQoQSl9ZnVuY3Rpb24gSihBKXt0aGlzLmV4Y1B0cj1BLHRoaXMucHRyPUEtMTYsdGhpcy5zZXRfdHlwZT1mdW5jdGlvbihBKXtjW3RoaXMucHRyKzQ+PjJdPUF9LHRoaXMuZ2V0X3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gY1t0aGlzLnB0cis0Pj4yXX0sdGhpcy5zZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbihBKXtjW3RoaXMucHRyKzg+PjJdPUF9LHRoaXMuZ2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gY1t0aGlzLnB0cis4Pj4yXX0sdGhpcy5zZXRfcmVmY291bnQ9ZnVuY3Rpb24oQSl7Y1t0aGlzLnB0cj4+Ml09QX0sdGhpcy5zZXRfY2F1Z2h0PWZ1bmN0aW9uKEEpe0E9QT8xOjAsYVt0aGlzLnB0cisxMj4+MF09QX0sdGhpcy5nZXRfY2F1Z2h0PWZ1bmN0aW9uKCl7cmV0dXJuIDAhPWFbdGhpcy5wdHIrMTI+PjBdfSx0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihBKXtBPUE/MTowLGFbdGhpcy5wdHIrMTM+PjBdPUF9LHRoaXMuZ2V0X3JldGhyb3duPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPWFbdGhpcy5wdHIrMTM+PjBdfSx0aGlzLmluaXQ9ZnVuY3Rpb24oQSxnKXt0aGlzLnNldF90eXBlKEEpLHRoaXMuc2V0X2Rlc3RydWN0b3IoZyksdGhpcy5zZXRfcmVmY291bnQoMCksdGhpcy5zZXRfY2F1Z2h0KCExKSx0aGlzLnNldF9yZXRocm93bighMSl9LHRoaXMuYWRkX3JlZj1mdW5jdGlvbigpe3ZhciBBPWNbdGhpcy5wdHI+PjJdO2NbdGhpcy5wdHI+PjJdPUErMX0sdGhpcy5yZWxlYXNlX3JlZj1mdW5jdGlvbigpe3ZhciBBPWNbdGhpcy5wdHI+PjJdO3JldHVybiBjW3RoaXMucHRyPj4yXT1BLTEsMT09PUF9fWZ1bmN0aW9uIEsoQSl7dHJ5e3JldHVybiBvLmdyb3coQS1uLmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNiksZChvLmJ1ZmZlciksMX1jYXRjaChnKXt9fVkocD0iYXcud2FzbSIpfHwoTj1wLHA9SS5sb2NhdGVGaWxlP0kubG9jYXRlRmlsZShOLGkpOmkrTik7dmFyIG09e307ZnVuY3Rpb24geCgpe2lmKCF4LnN0cmluZ3Mpe3ZhciBBPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yPyJ1bmRlZmluZWQiOkIobmF2aWdhdG9yKSkmJm5hdmlnYXRvci5sYW5ndWFnZXMmJm5hdmlnYXRvci5sYW5ndWFnZXNbMF18fCJDIikucmVwbGFjZSgiLSIsIl8iKSsiLlVURi04IixfOkV8fCIuL3RoaXMucHJvZ3JhbSJ9O2Zvcih2YXIgZyBpbiBtKXZvaWQgMD09PW1bZ10/ZGVsZXRlIEFbZ106QVtnXT1tW2ddO3ZhciBJPVtdO2Zvcih2YXIgZyBpbiBBKUkucHVzaChnKyI9IitBW2ddKTt4LnN0cmluZ3M9SX1yZXR1cm4geC5zdHJpbmdzfWZ1bmN0aW9uIHEoQSl7cmV0dXJuIEElND09MCYmKEElMTAwIT0wfHxBJTQwMD09MCl9ZnVuY3Rpb24gYihBLGcpe2Zvcih2YXIgST0wLEI9MDtCPD1nO0krPUFbQisrXSk7cmV0dXJuIEl9dmFyIFQ9WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxPPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07ZnVuY3Rpb24gUChBLGcpe2Zvcih2YXIgST1uZXcgRGF0ZShBLmdldFRpbWUoKSk7Zz4wOyl7dmFyIEI9cShJLmdldEZ1bGxZZWFyKCkpLFE9SS5nZXRNb250aCgpLEM9KEI/VDpPKVtRXTtpZighKGc+Qy1JLmdldERhdGUoKSkpcmV0dXJuIEkuc2V0RGF0ZShJLmdldERhdGUoKStnKSxJO2ctPUMtSS5nZXREYXRlKCkrMSxJLnNldERhdGUoMSksUTwxMT9JLnNldE1vbnRoKFErMSk6KEkuc2V0TW9udGgoMCksSS5zZXRGdWxsWWVhcihJLmdldEZ1bGxZZWFyKCkrMSkpfXJldHVybiBJfWZ1bmN0aW9uIFcoQSxnLEkpe3ZhciBCPUk+MD9JOncoQSkrMSxRPW5ldyBBcnJheShCKSxDPUQoQSxRLDAsUS5sZW5ndGgpO3JldHVybiBnJiYoUS5sZW5ndGg9QyksUX12YXIgWj17aDpmdW5jdGlvbihBKXtyZXR1cm4gaihBKzE2KSsxNn0sZzpmdW5jdGlvbihBLGcsSSl7dGhyb3cgbmV3IEooQSkuaW5pdChnLEkpLEF9LGE6ZnVuY3Rpb24oKXtTKCIiKX0sZjpmdW5jdGlvbihBLGcsSSl7cy5jb3B5V2l0aGluKEEsZyxnK0kpfSxlOmZ1bmN0aW9uKEEpe3ZhciBnLEksQj1zLmxlbmd0aCxRPTIxNDc0ODM2NDg7aWYoKEE+Pj49MCk+USlyZXR1cm4hMTtmb3IodmFyIEM9MTtDPD00O0MqPTIpe3ZhciBFPUIqKDErLjIvQyk7aWYoRT1NYXRoLm1pbihFLEErMTAwNjYzMjk2KSxLKE1hdGgubWluKFEsKChnPU1hdGgubWF4KEEsRSkpJShJPTY1NTM2KT4wJiYoZys9SS1nJUkpLGcpKSkpcmV0dXJuITB9cmV0dXJuITF9LGM6ZnVuY3Rpb24oQSxnKXt2YXIgST0wO3JldHVybiB4KCkuZm9yRWFjaCgoZnVuY3Rpb24oQixRKXt2YXIgQz1nK0k7Y1tBKzQqUT4+Ml09QyxmdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCPTA7QjxBLmxlbmd0aDsrK0IpYVtnKys+PjBdPUEuY2hhckNvZGVBdChCKTtJfHwoYVtnPj4wXT0wKX0oQixDKSxJKz1CLmxlbmd0aCsxfSkpLDB9LGQ6ZnVuY3Rpb24oQSxnKXt2YXIgST14KCk7Y1tBPj4yXT1JLmxlbmd0aDt2YXIgQj0wO3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKEEpe0IrPUEubGVuZ3RoKzF9KSksY1tnPj4yXT1CLDB9LGI6ZnVuY3Rpb24oQSxnLEksQil7cmV0dXJuIGZ1bmN0aW9uKEEsZyxJLEIpe3ZhciBRPWNbQis0MD4+Ml0sQz17dG1fc2VjOmNbQj4+Ml0sdG1fbWluOmNbQis0Pj4yXSx0bV9ob3VyOmNbQis4Pj4yXSx0bV9tZGF5OmNbQisxMj4+Ml0sdG1fbW9uOmNbQisxNj4+Ml0sdG1feWVhcjpjW0IrMjA+PjJdLHRtX3dkYXk6Y1tCKzI0Pj4yXSx0bV95ZGF5OmNbQisyOD4+Ml0sdG1faXNkc3Q6Y1tCKzMyPj4yXSx0bV9nbXRvZmY6Y1tCKzM2Pj4yXSx0bV96b25lOlE/dShRKToiIn0sRT11KEkpLHQ9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMiLCIlRWMiOiIlYyIsIiVFQyI6IiVDIiwiJUV4IjoiJW0vJWQvJXkiLCIlRVgiOiIlSDolTTolUyIsIiVFeSI6IiV5IiwiJUVZIjoiJVkiLCIlT2QiOiIlZCIsIiVPZSI6IiVlIiwiJU9IIjoiJUgiLCIlT0kiOiIlSSIsIiVPbSI6IiVtIiwiJU9NIjoiJU0iLCIlT1MiOiIlUyIsIiVPdSI6IiV1IiwiJU9VIjoiJVUiLCIlT1YiOiIlViIsIiVPdyI6IiV3IiwiJU9XIjoiJVciLCIlT3kiOiIleSJ9O2Zvcih2YXIgaSBpbiB0KUU9RS5yZXBsYWNlKG5ldyBSZWdFeHAoaSwiZyIpLHRbaV0pO3ZhciBlPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxvPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXTtmdW5jdGlvbiByKEEsZyxJKXtmb3IodmFyIEI9Im51bWJlciI9PXR5cGVvZiBBP0EudG9TdHJpbmcoKTpBfHwiIjtCLmxlbmd0aDxnOylCPUlbMF0rQjtyZXR1cm4gQn1mdW5jdGlvbiBuKEEsZyl7cmV0dXJuIHIoQSxnLCIwIil9ZnVuY3Rpb24gYShBLGcpe2Z1bmN0aW9uIEkoQSl7cmV0dXJuIEE8MD8tMTpBPjA/MTowfXZhciBCO3JldHVybiAwPT09KEI9SShBLmdldEZ1bGxZZWFyKCktZy5nZXRGdWxsWWVhcigpKSkmJjA9PT0oQj1JKEEuZ2V0TW9udGgoKS1nLmdldE1vbnRoKCkpKSYmKEI9SShBLmdldERhdGUoKS1nLmdldERhdGUoKSkpLEJ9ZnVuY3Rpb24gcyhBKXtzd2l0Y2goQS5nZXREYXkoKSl7Y2FzZSAwOnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBBO2Nhc2UgMjpyZXR1cm4gbmV3IERhdGUoQS5nZXRGdWxsWWVhcigpLDAsMyk7Y2FzZSAzOnJldHVybiBuZXcgRGF0ZShBLmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKEEuZ2V0RnVsbFllYXIoKSwwLDEpO2Nhc2UgNTpyZXR1cm4gbmV3IERhdGUoQS5nZXRGdWxsWWVhcigpLTEsMTEsMzEpO2Nhc2UgNjpyZXR1cm4gbmV3IERhdGUoQS5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBoKEEpe3ZhciBnPVAobmV3IERhdGUoQS50bV95ZWFyKzE5MDAsMCwxKSxBLnRtX3lkYXkpLEk9bmV3IERhdGUoZy5nZXRGdWxsWWVhcigpLDAsNCksQj1uZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCkrMSwwLDQpLFE9cyhJKSxDPXMoQik7cmV0dXJuIGEoUSxnKTw9MD9hKEMsZyk8PTA/Zy5nZXRGdWxsWWVhcigpKzE6Zy5nZXRGdWxsWWVhcigpOmcuZ2V0RnVsbFllYXIoKS0xfXZhciB5PXsiJWEiOmZ1bmN0aW9uKEEpe3JldHVybiBlW0EudG1fd2RheV0uc3Vic3RyaW5nKDAsMyl9LCIlQSI6ZnVuY3Rpb24oQSl7cmV0dXJuIGVbQS50bV93ZGF5XX0sIiViIjpmdW5jdGlvbihBKXtyZXR1cm4gb1tBLnRtX21vbl0uc3Vic3RyaW5nKDAsMyl9LCIlQiI6ZnVuY3Rpb24oQSl7cmV0dXJuIG9bQS50bV9tb25dfSwiJUMiOmZ1bmN0aW9uKEEpe3JldHVybiBuKChBLnRtX3llYXIrMTkwMCkvMTAwfDAsMil9LCIlZCI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9tZGF5LDIpfSwiJWUiOmZ1bmN0aW9uKEEpe3JldHVybiByKEEudG1fbWRheSwyLCIgIil9LCIlZyI6ZnVuY3Rpb24oQSl7cmV0dXJuIGgoQSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9LCIlRyI6ZnVuY3Rpb24oQSl7cmV0dXJuIGgoQSl9LCIlSCI6ZnVuY3Rpb24oQSl7cmV0dXJuIG4oQS50bV9ob3VyLDIpfSwiJUkiOmZ1bmN0aW9uKEEpe3ZhciBnPUEudG1faG91cjtyZXR1cm4gMD09Zz9nPTEyOmc+MTImJihnLT0xMiksbihnLDIpfSwiJWoiOmZ1bmN0aW9uKEEpe3JldHVybiBuKEEudG1fbWRheStiKHEoQS50bV95ZWFyKzE5MDApP1Q6TyxBLnRtX21vbi0xKSwzKX0sIiVtIjpmdW5jdGlvbihBKXtyZXR1cm4gbihBLnRtX21vbisxLDIpfSwiJU0iOmZ1bmN0aW9uKEEpe3JldHVybiBuKEEudG1fbWluLDIpfSwiJW4iOmZ1bmN0aW9uKCl7cmV0dXJuIlxuIn0sIiVwIjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV9ob3VyPj0wJiZBLnRtX2hvdXI8MTI/IkFNIjoiUE0ifSwiJVMiOmZ1bmN0aW9uKEEpe3JldHVybiBuKEEudG1fc2VjLDIpfSwiJXQiOmZ1bmN0aW9uKCl7cmV0dXJuIlx0In0sIiV1IjpmdW5jdGlvbihBKXtyZXR1cm4gQS50bV93ZGF5fHw3fSwiJVUiOmZ1bmN0aW9uKEEpe3ZhciBnPW5ldyBEYXRlKEEudG1feWVhcisxOTAwLDAsMSksST0wPT09Zy5nZXREYXkoKT9nOlAoZyw3LWcuZ2V0RGF5KCkpLEI9bmV3IERhdGUoQS50bV95ZWFyKzE5MDAsQS50bV9tb24sQS50bV9tZGF5KTtpZihhKEksQik8MCl7dmFyIFE9YihxKEIuZ2V0RnVsbFllYXIoKSk/VDpPLEIuZ2V0TW9udGgoKS0xKS0zMSxDPTMxLUkuZ2V0RGF0ZSgpK1ErQi5nZXREYXRlKCk7cmV0dXJuIG4oTWF0aC5jZWlsKEMvNyksMil9cmV0dXJuIDA9PT1hKEksZyk/IjAxIjoiMDAifSwiJVYiOmZ1bmN0aW9uKEEpe3ZhciBnLEk9bmV3IERhdGUoQS50bV95ZWFyKzE5MDAsMCw0KSxCPW5ldyBEYXRlKEEudG1feWVhcisxOTAxLDAsNCksUT1zKEkpLEM9cyhCKSxFPVAobmV3IERhdGUoQS50bV95ZWFyKzE5MDAsMCwxKSxBLnRtX3lkYXkpO3JldHVybiBhKEUsUSk8MD8iNTMiOmEoQyxFKTw9MD8iMDEiOihnPVEuZ2V0RnVsbFllYXIoKTxBLnRtX3llYXIrMTkwMD9BLnRtX3lkYXkrMzItUS5nZXREYXRlKCk6QS50bV95ZGF5KzEtUS5nZXREYXRlKCksbihNYXRoLmNlaWwoZy83KSwyKSl9LCIldyI6ZnVuY3Rpb24oQSl7cmV0dXJuIEEudG1fd2RheX0sIiVXIjpmdW5jdGlvbihBKXt2YXIgZz1uZXcgRGF0ZShBLnRtX3llYXIsMCwxKSxJPTE9PT1nLmdldERheSgpP2c6UChnLDA9PT1nLmdldERheSgpPzE6Ny1nLmdldERheSgpKzEpLEI9bmV3IERhdGUoQS50bV95ZWFyKzE5MDAsQS50bV9tb24sQS50bV9tZGF5KTtpZihhKEksQik8MCl7dmFyIFE9YihxKEIuZ2V0RnVsbFllYXIoKSk/VDpPLEIuZ2V0TW9udGgoKS0xKS0zMSxDPTMxLUkuZ2V0RGF0ZSgpK1ErQi5nZXREYXRlKCk7cmV0dXJuIG4oTWF0aC5jZWlsKEMvNyksMil9cmV0dXJuIDA9PT1hKEksZyk/IjAxIjoiMDAifSwiJXkiOmZ1bmN0aW9uKEEpe3JldHVybihBLnRtX3llYXIrMTkwMCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9LCIlWSI6ZnVuY3Rpb24oQSl7cmV0dXJuIEEudG1feWVhcisxOTAwfSwiJXoiOmZ1bmN0aW9uKEEpe3ZhciBnPUEudG1fZ210b2ZmLEk9Zz49MDtyZXR1cm4gZz0oZz1NYXRoLmFicyhnKS82MCkvNjAqMTAwK2clNjAsKEk/IisiOiItIikrU3RyaW5nKCIwMDAwIitnKS5zbGljZSgtNCl9LCIlWiI6ZnVuY3Rpb24oQSl7cmV0dXJuIEEudG1fem9uZX0sIiUlIjpmdW5jdGlvbigpe3JldHVybiIlIn19O2Zvcih2YXIgaSBpbiB5KUUuaW5jbHVkZXMoaSkmJihFPUUucmVwbGFjZShuZXcgUmVnRXhwKGksImciKSx5W2ldKEMpKSk7dmFyIGY9VyhFLCExKTtyZXR1cm4gZi5sZW5ndGg+Zz8wOihsKGYsQSksZi5sZW5ndGgtMSl9KEEsZyxJLEIpfX07IWZ1bmN0aW9uKCl7dmFyIEE9e2E6Wn07ZnVuY3Rpb24gZyhBLGcpe3ZhciBCLFE9QS5leHBvcnRzO0kuYXNtPVEsZCgobz1JLmFzbS5pKS5idWZmZXIpLGg9SS5hc20udCxCPUkuYXNtLmosRy51bnNoaWZ0KEIpLGZ1bmN0aW9uKEEpe2lmKFUtLSxJLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJkkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhVKSwwPT1VJiZrKXt2YXIgZz1rO2s9bnVsbCxnKCl9fSgpfWZ1bmN0aW9uIEIoQSl7ZyhBLmluc3RhbmNlKX1mdW5jdGlvbiBRKGcpe3JldHVybighZSYmdCYmImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoP2ZldGNoKHAse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKChmdW5jdGlvbihBKXtpZighQS5vayl0aHJvdyJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciK3ArIiciO3JldHVybiBBLmFycmF5QnVmZmVyKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIEgocCl9KSk6UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gSChwKX0pKSkudGhlbigoZnVuY3Rpb24oZyl7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGcsQSl9KSkudGhlbigoZnVuY3Rpb24oQSl7cmV0dXJuIEF9KSkudGhlbihnLChmdW5jdGlvbihBKXtyKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK0EpLFMoQSl9KSl9aWYoVSsrLEkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmSS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKFUpLEkuaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gSS5pbnN0YW50aWF0ZVdhc20oQSxnKX1jYXRjaChDKXtyZXR1cm4gcigiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitDKSwhMX1lfHwiZnVuY3Rpb24iIT10eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmd8fFkocCl8fCJmdW5jdGlvbiIhPXR5cGVvZiBmZXRjaD9RKEIpOmZldGNoKHAse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKChmdW5jdGlvbihnKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZyxBKS50aGVuKEIsKGZ1bmN0aW9uKEEpe3JldHVybiByKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIitBKSxyKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpLFEoQil9KSl9KSl9KCksSS5fX193YXNtX2NhbGxfY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4oSS5fX193YXNtX2NhbGxfY3RvcnM9SS5hc20uaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgaj1JLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oaj1JLl9tYWxsb2M9SS5hc20uaykuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtJLl9mcmVlPWZ1bmN0aW9uKCl7cmV0dXJuKEkuX2ZyZWU9SS5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9vcGVuQm94PWZ1bmN0aW9uKCl7cmV0dXJuKEkuX29wZW5Cb3g9SS5hc20ubSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9kZXNjcnlwdD1mdW5jdGlvbigpe3JldHVybihJLl9kZXNjcnlwdD1JLmFzbS5uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEkuX2Rlc2NyeXB0S2RzS2V5PWZ1bmN0aW9uKCl7cmV0dXJuKEkuX2Rlc2NyeXB0S2RzS2V5PUkuYXNtLm8pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSS5fZGVjcnlwdEtleT1mdW5jdGlvbigpe3JldHVybihJLl9kZWNyeXB0S2V5PUkuYXNtLnApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSS5fZGVzY3J5cHRDQkM9ZnVuY3Rpb24oKXtyZXR1cm4oSS5fZGVzY3J5cHRDQkM9SS5hc20ucSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9yZWxlYXNlPWZ1bmN0aW9uKCl7cmV0dXJuKEkuX3JlbGVhc2U9SS5hc20ucikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJLl9zZXRSYXc9ZnVuY3Rpb24oKXtyZXR1cm4oSS5fc2V0UmF3PUkuYXNtLnMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIFgsVj1JLnN0YWNrU2F2ZT1mdW5jdGlvbigpe3JldHVybihWPUkuc3RhY2tTYXZlPUkuYXNtLnUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sej1JLnN0YWNrUmVzdG9yZT1mdW5jdGlvbigpe3JldHVybih6PUkuc3RhY2tSZXN0b3JlPUkuYXNtLnYpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sXz1JLnN0YWNrQWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oXz1JLnN0YWNrQWxsb2M9SS5hc20udykuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtmdW5jdGlvbiAkKEEpe2Z1bmN0aW9uIGcoKXtYfHwoWD0hMCxJLmNhbGxlZFJ1bj0hMCx5fHwodihHKSxJLm9uUnVudGltZUluaXRpYWxpemVkJiZJLm9uUnVudGltZUluaXRpYWxpemVkKCksZnVuY3Rpb24oKXtpZihJLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBJLnBvc3RSdW4mJihJLnBvc3RSdW49W0kucG9zdFJ1bl0pO0kucG9zdFJ1bi5sZW5ndGg7KUE9SS5wb3N0UnVuLnNoaWZ0KCksUi51bnNoaWZ0KEEpO3ZhciBBO3YoUil9KCkpKX1VPjB8fChmdW5jdGlvbigpe2lmKEkucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2YgSS5wcmVSdW4mJihJLnByZVJ1bj1bSS5wcmVSdW5dKTtJLnByZVJ1bi5sZW5ndGg7KUE9SS5wcmVSdW4uc2hpZnQoKSxGLnVuc2hpZnQoQSk7dmFyIEE7dihGKX0oKSxVPjB8fChJLnNldFN0YXR1cz8oSS5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7SS5zZXRTdGF0dXMoIiIpfSksMSksZygpfSksMSkpOmcoKSkpfWlmKEkuaW50QXJyYXlGcm9tU3RyaW5nPVcsSS5jY2FsbD1mdW5jdGlvbihBLGcsQixRLEMpe3ZhciBFPXtzdHJpbmc6ZnVuY3Rpb24oQSl7dmFyIGc9MDtpZihudWxsIT1BJiYwIT09QSl7dmFyIEk9MSsoQS5sZW5ndGg8PDIpOyFmdW5jdGlvbihBLGcsSSl7RChBLHMsZyxJKX0oQSxnPV8oSSksSSl9cmV0dXJuIGd9LGFycmF5OmZ1bmN0aW9uKEEpe3ZhciBnPV8oQS5sZW5ndGgpO3JldHVybiBsKEEsZyksZ319LHQ9ZnVuY3Rpb24oQSl7cmV0dXJuIElbIl8iK0FdfShBKSxpPVtdLGU9MDtpZihRKWZvcih2YXIgbz0wO288US5sZW5ndGg7bysrKXt2YXIgcj1FW0Jbb11dO3I/KDA9PT1lJiYoZT1WKCkpLGlbb109cihRW29dKSk6aVtvXT1RW29dfXZhciBuLGE9dC5hcHBseShudWxsLGkpO3JldHVybiBuPWEsMCE9PWUmJnooZSksYT1mdW5jdGlvbihBKXtyZXR1cm4ic3RyaW5nIj09PWc/dShBKToiYm9vbGVhbiI9PT1nP0Jvb2xlYW4oQSk6QX0obil9LEkuVVRGOFRvU3RyaW5nPXUsSS5hbGxvY2F0ZVVURjg9ZnVuY3Rpb24oQSl7dmFyIGc9dyhBKSsxLEk9aihnKTtyZXR1cm4gSSYmRChBLGEsSSxnKSxJfSxrPWZ1bmN0aW9uIEEoKXtYfHwkKCksWHx8KGs9QSl9LEkucnVuPSQsSS5wcmVJbml0KWZvcigiZnVuY3Rpb24iPT10eXBlb2YgSS5wcmVJbml0JiYoSS5wcmVJbml0PVtJLnByZUluaXRdKTtJLnByZUluaXQubGVuZ3RoPjA7KUkucHJlSW5pdC5wb3AoKSgpO3JldHVybiAkKCksQS5yZWFkeX0sTWM9TmM7dmFyIFljPW9CLEhjPXAsdmM9W10uam9pbixMYz1SIT1PYmplY3QsSmM9T2koImpvaW4iLCIsIik7WWMoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpMY3x8IUpjfSx7am9pbjpmdW5jdGlvbihBKXtyZXR1cm4gdmMuY2FsbChIYyh0aGlzKSx2b2lkIDA9PT1BPyIsIjpBKX19KTt2YXIgS2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7dmFyIGcsSTtDKHRoaXMsQSk7dmFyIEI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKEEsQil7Zz1BLEk9Qn0pKTtyZXR1cm4gQi5yZXNvbHZlPWcsQi5yZWplY3Q9SSxCfXJldHVybiB0KEEsW3trZXk6InJlc29sdmUiLHZhbHVlOmZ1bmN0aW9uKEEpe319LHtrZXk6InJlamVjdCIsdmFsdWU6ZnVuY3Rpb24oQSl7fX1dKSxBfSgpLG1jPW9CLHhjPXcscWM9SkUsYmM9TCxUYz1hQSxPYz1YQSxQYz1TbyxXYz1xRSxaYz1ZbyxqYz1wQSxYYz1UQSgiaXNDb25jYXRTcHJlYWRhYmxlIiksVmM9OTAwNzE5OTI1NDc0MDk5MSx6Yz0iTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIixfYz1qYz49NTF8fCF4YygoZnVuY3Rpb24oKXt2YXIgQT1bXTtyZXR1cm4gQVtYY109ITEsQS5jb25jYXQoKVswXSE9PUF9KSksJGM9WmMoImNvbmNhdCIpLEFoPWZ1bmN0aW9uKEEpe2lmKCFiYyhBKSlyZXR1cm4hMTt2YXIgZz1BW1hjXTtyZXR1cm4gdm9pZCAwIT09Zz8hIWc6cWMoQSl9O21jKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IV9jfHwhJGN9LHtjb25jYXQ6ZnVuY3Rpb24oQSl7dmFyIGcsSSxCLFEsQyxFPVRjKHRoaXMpLHQ9V2MoRSwwKSxpPTA7Zm9yKGc9LTEsQj1hcmd1bWVudHMubGVuZ3RoO2c8QjtnKyspaWYoQWgoQz0tMT09PWc/RTphcmd1bWVudHNbZ10pKXtpZihpKyhRPU9jKEMubGVuZ3RoKSk+VmMpdGhyb3cgVHlwZUVycm9yKHpjKTtmb3IoST0wO0k8UTtJKyssaSsrKUkgaW4gQyYmUGModCxpLENbSV0pfWVsc2V7aWYoaT49VmMpdGhyb3cgVHlwZUVycm9yKHpjKTtQYyh0LGkrKyxDKX1yZXR1cm4gdC5sZW5ndGg9aSx0fX0pLFByb21pc2Uud2l0aFJlc29sdmVyc3x8KFByb21pc2Uud2l0aFJlc29sdmVycz1mdW5jdGlvbigpe3ZhciBBPXt9O3JldHVybiBBLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGcsSSl7QS5yZXNvbHZlPWcsQS5yZWplY3Q9SX0pKSxBfSk7dmFyIGdoPTAsSWg9MSxCaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtDKHRoaXMsQSl9cmV0dXJuIHQoQSxbe2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT1uZXcgS2M7cmV0dXJuIHRoaXMubW9kdWxlPXtvblJ1bnRpbWVJbml0aWFsaXplZDpmdW5jdGlvbigpe0EucmVzb2x2ZSgpfSxvbkFib3J0OmZ1bmN0aW9uKGcpe0EucmVqZWN0KGcpfX0sTWModGhpcy5tb2R1bGUpLEF9fSx7a2V5OiJkZXNjcnlwdEtleSIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjE2LEM9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOmdoO3RyeXt2YXIgRT1mdW5jdGlvbihBKXtpZigiIj09PUEpcmV0dXJuIiI7Zm9yKHZhciBnPVtdLEk9MDtJPEEubGVuZ3RoO0krKylnLnB1c2goQS5jaGFyQ29kZUF0KEkpKTtyZXR1cm4gZ30oc2VsZi5hdG9iKEEpKTtJPXRoaXMubW9kdWxlLl9tYWxsb2MoTnVtYmVyKEUubGVuZ3RoKSksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEUsSSksZz1nfHxuZXcgVWludDhBcnJheSxnPW5ldyBVaW50OEFycmF5KGcpLEI9dGhpcy5tb2R1bGUuX21hbGxvYyhnLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChnLEIpLHRoaXMubW9kdWxlLl9kZWNyeXB0S2V5KEMsSSxFLmxlbmd0aCxRLGcuYnl0ZUxlbmd0aCxCKX1jYXRjaCh0KXtjb25zb2xlLmxvZyh0KX1maW5hbGx5e3RoaXMubW9kdWxlLl9mcmVlKEkpLHRoaXMubW9kdWxlLl9mcmVlKEIpfX19LHtrZXk6ImRlc2NyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJLEIsUT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06Z2g7dHJ5e3ZhciBDPW5ldyBVaW50OEFycmF5KGcpO0k9dGhpcy5tb2R1bGUuX21hbGxvYyhBLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChBLEkpLEI9dGhpcy5tb2R1bGUuX21hbGxvYyhDLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChDLEIpLHRoaXMubW9kdWxlLl9kZXNjcnlwdChRLEksQS5ieXRlTGVuZ3RoLEIpO3ZhciBFPXRoaXMubW9kdWxlLkhFQVBVOC5zbGljZShJLEkrQS5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoRSl9Y2F0Y2goU2Ype2NvbnNvbGUubG9nKFNmKX1maW5hbGx5e3RoaXMubW9kdWxlLl9mcmVlKEkpLHRoaXMubW9kdWxlLl9mcmVlKEIpfX19LHtrZXk6ImRlc2NyeXB0S2RzS2V5Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSl7dmFyIEIsUSxDLEU9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjE2O3RyeXt2YXIgdD1uZXcgVWludDhBcnJheShnKSxpPW5ldyBVaW50OEFycmF5KEkpO0I9dGhpcy5tb2R1bGUuX21hbGxvYyh0LmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldCh0LEIpLFE9dGhpcy5tb2R1bGUuX21hbGxvYyhBLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChBLFEpLEM9dGhpcy5tb2R1bGUuX21hbGxvYyhpLmJ5dGVMZW5ndGgpLHRoaXMubW9kdWxlLkhFQVA4LnNldChpLEMpLHRoaXMubW9kdWxlLl9kZXNjcnlwdEtkc0tleShCLHQuYnl0ZUxlbmd0aCxRLEEuYnl0ZUxlbmd0aCxDLEUpfWNhdGNoKFNmKXtjb25zb2xlLmxvZyhTZil9ZmluYWxseXt0aGlzLm1vZHVsZS5fZnJlZShRKSx0aGlzLm1vZHVsZS5fZnJlZShDKSx0aGlzLm1vZHVsZS5fZnJlZShCKX19fSx7a2V5OiJkZXNjcnlwdENCQyIsdmFsdWU6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCO3RyeXt2YXIgUT1uZXcgVWludDhBcnJheShnKTtyZXR1cm4gST10aGlzLm1vZHVsZS5fbWFsbG9jKEEuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEEsSSksQj10aGlzLm1vZHVsZS5fbWFsbG9jKFEuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KFEsQiksdGhpcy5tb2R1bGUuX2Rlc2NyeXB0Q0JDKEksQS5ieXRlTGVuZ3RoLEIpLHRoaXMubW9kdWxlLkhFQVBVOC5zbGljZShJLEkrQS5ieXRlTGVuZ3RoKX1jYXRjaChTZil7Y29uc29sZS5sb2coU2YpfWZpbmFsbHl7dGhpcy5tb2R1bGUuX2ZyZWUoSSksdGhpcy5tb2R1bGUuX2ZyZWUoQil9fX0se2tleToic2V0UmF3Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZyxJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpJaDt0cnl7dmFyIEI9bmV3IFVpbnQ4QXJyYXkoQSk7Zz10aGlzLm1vZHVsZS5fbWFsbG9jKEIuYnl0ZUxlbmd0aCksdGhpcy5tb2R1bGUuSEVBUDguc2V0KEIsZyksdGhpcy5tb2R1bGUuX3NldFJhdyhnLEIuYnl0ZUxlbmd0aCxJKX1jYXRjaChTZil7Y29uc29sZS5sb2coU2YpfWZpbmFsbHl7dGhpcy5tb2R1bGUuX2ZyZWUoZyl9fX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm1vZHVsZSYmKHRoaXMubW9kdWxlPW51bGwpfX1dKSxBfSgpO2Z1bmN0aW9uIFFoKEEsZyl7aWYoIShBIGluc3RhbmNlb2YgZykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gQ2goQSxnKXtmb3IodmFyIEk9MDtJPGcubGVuZ3RoO0krKyl7dmFyIEI9Z1tJXTtCLmVudW1lcmFibGU9Qi5lbnVtZXJhYmxlfHwhMSxCLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gQiYmKEIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLG5oKEIua2V5KSxCKX19ZnVuY3Rpb24gRWgoQSxnLEkpe3JldHVybiBnJiZDaChBLnByb3RvdHlwZSxnKSxJJiZDaChBLEkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLEF9ZnVuY3Rpb24gdGgoQSxnLEkpe3JldHVybihnPW5oKGcpKWluIEE/T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZyx7dmFsdWU6SSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOkFbZ109SSxBfWZ1bmN0aW9uIGloKEEsZyl7cmV0dXJuIGZ1bmN0aW9uKEEpe2lmKEFycmF5LmlzQXJyYXkoQSkpcmV0dXJuIEF9KEEpfHxmdW5jdGlvbihBLGcpe3ZhciBJPW51bGw9PUE/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmQVtTeW1ib2wuaXRlcmF0b3JdfHxBWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9SSl7dmFyIEIsUSxDLEUsdD1bXSxpPSEwLGU9ITE7dHJ5e2lmKEM9KEk9SS5jYWxsKEEpKS5uZXh0LDA9PT1nKXtpZihPYmplY3QoSSkhPT1JKXJldHVybjtpPSExfWVsc2UgZm9yKDshKGk9KEI9Qy5jYWxsKEkpKS5kb25lKSYmKHQucHVzaChCLnZhbHVlKSx0Lmxlbmd0aCE9PWcpO2k9ITApO31jYXRjaChvKXtlPSEwLFE9b31maW5hbGx5e3RyeXtpZighaSYmbnVsbCE9SS5yZXR1cm4mJihFPUkucmV0dXJuKCksT2JqZWN0KEUpIT09RSkpcmV0dXJufWZpbmFsbHl7aWYoZSl0aHJvdyBRfX1yZXR1cm4gdH19KEEsZyl8fG9oKEEsZyl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBlaChBKXtyZXR1cm4gZnVuY3Rpb24oQSl7aWYoQXJyYXkuaXNBcnJheShBKSlyZXR1cm4gcmgoQSl9KEEpfHxmdW5jdGlvbihBKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9QVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1BWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oQSl9KEEpfHxvaChBKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBvaChBLGcpe2lmKEEpe2lmKCJzdHJpbmciPT10eXBlb2YgQSlyZXR1cm4gcmgoQSxnKTt2YXIgST1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQSkuc2xpY2UoOCwtMSk7cmV0dXJuIk9iamVjdCI9PT1JJiZBLmNvbnN0cnVjdG9yJiYoST1BLmNvbnN0cnVjdG9yLm5hbWUpLCJNYXAiPT09SXx8IlNldCI9PT1JP0FycmF5LmZyb20oQSk6IkFyZ3VtZW50cyI9PT1JfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChJKT9yaChBLGcpOnZvaWQgMH19ZnVuY3Rpb24gcmgoQSxnKXsobnVsbD09Z3x8Zz5BLmxlbmd0aCkmJihnPUEubGVuZ3RoKTtmb3IodmFyIEk9MCxCPW5ldyBBcnJheShnKTtJPGc7SSsrKUJbSV09QVtJXTtyZXR1cm4gQn1mdW5jdGlvbiBuaChBKXt2YXIgZz1mdW5jdGlvbihBLGcpe2lmKCJvYmplY3QiIT10eXBlb2YgQXx8bnVsbD09PUEpcmV0dXJuIEE7dmFyIEk9QVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PUkpe3ZhciBCPUkuY2FsbChBLGd8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPXR5cGVvZiBCKXJldHVybiBCO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09Zz9TdHJpbmc6TnVtYmVyKShBKX0oQSwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBnP2c6U3RyaW5nKGcpfXZhciBhaD0idmlkZW8iLHNoPSJhdWRpbyIsY2g9Im1ldGFkYXRhIixoaD0iYXZjIix5aD0iaGV2YyIsZmg9InZ2Y0MiLHVoPSJhYWMiLERoPSJnNzExMGEiLHdoPSJnNzExMG0iLGxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe1FoKHRoaXMsQSksdGgodGhpcywiaWQiLDEpLHRoKHRoaXMsInR5cGUiLGFoKSx0aCh0aGlzLCJjb2RlY1R5cGUiLGhoKSx0aCh0aGlzLCJwaWQiLC0xKSx0aCh0aGlzLCJodmNDIix2b2lkIDApLHRoKHRoaXMsImNvZGVjIiwiIiksdGgodGhpcywidGltZXNjYWxlIiwwKSx0aCh0aGlzLCJmb3JtYXRUaW1lc2NhbGUiLDApLHRoKHRoaXMsInNlcXVlbmNlTnVtYmVyIiwwKSx0aCh0aGlzLCJiYXNlTWVkaWFEZWNvZGVUaW1lIiwwKSx0aCh0aGlzLCJiYXNlRHRzIiwwKSx0aCh0aGlzLCJkdXJhdGlvbiIsMCksdGgodGhpcywid2FybmluZ3MiLFtdKSx0aCh0aGlzLCJzYW1wbGVzIixbXSksdGgodGhpcywicHBzIixbXSksdGgodGhpcywic3BzIixbXSksdGgodGhpcywidnBzIixbXSksdGgodGhpcywiZnBzTnVtIiwwKSx0aCh0aGlzLCJmcHNEZW4iLDApLHRoKHRoaXMsInNhclJhdGlvIixbXSksdGgodGhpcywid2lkdGgiLDApLHRoKHRoaXMsImhlaWdodCIsMCksdGgodGhpcywibmFsVW5pdFNpemUiLDQpLHRoKHRoaXMsInByZXNlbnQiLCExKSx0aCh0aGlzLCJpc1ZpZGVvRW5jcnlwdGlvbiIsITEpLHRoKHRoaXMsImlzQXVkaW9FbmNyeXB0aW9uIiwhMSksdGgodGhpcywiaXNWaWRlbyIsITApLHRoKHRoaXMsImtpZCIsbnVsbCksdGgodGhpcywicHNzaCIsbnVsbCksdGgodGhpcywiZXh0Iix2b2lkIDApfXJldHVybiBFaChBLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnNlcXVlbmNlTnVtYmVyPXRoaXMud2lkdGg9dGhpcy5oZWlnaHQ9dGhpcy5mcHNEZW49dGhpcy5mcHNOdW09dGhpcy5kdXJhdGlvbj10aGlzLmJhc2VNZWRpYURlY29kZVRpbWU9dGhpcy50aW1lc2NhbGU9MCx0aGlzLmNvZGVjPSIiLHRoaXMucHJlc2VudD0hMSx0aGlzLnBpZD0tMSx0aGlzLnBwcz1bXSx0aGlzLnNwcz1bXSx0aGlzLnZwcz1bXSx0aGlzLnNhclJhdGlvPVtdLHRoaXMuc2FtcGxlcz1bXSx0aGlzLndhcm5pbmdzPVtdLHRoaXMuaHZjQz1udWxsfX0se2tleToiZXhpc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5wcHMubGVuZ3RoJiZ0aGlzLnNwcy5sZW5ndGgmJnRoaXMuY29kZWMpfX0se2tleToiaGFzU2FtcGxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5zYW1wbGVzLmxlbmd0aH19LHtrZXk6ImlzRW5jcnlwdGlvbiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWaWRlb0VuY3J5cHRpb259fV0pLEF9KCksZGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7UWgodGhpcyxBKSx0aCh0aGlzLCJpZCIsMiksdGgodGhpcywidHlwZSIsc2gpLHRoKHRoaXMsImNvZGVjVHlwZSIsdWgpLHRoKHRoaXMsInBpZCIsLTEpLHRoKHRoaXMsImNvZGVjIiwiIiksdGgodGhpcywic2VxdWVuY2VOdW1iZXIiLDApLHRoKHRoaXMsInNhbXBsZUR1cmF0aW9uIiwwKSx0aCh0aGlzLCJ0aW1lc2NhbGUiLDApLHRoKHRoaXMsImZvcm1hdFRpbWVzY2FsZSIsMCksdGgodGhpcywiYmFzZU1lZGlhRGVjb2RlVGltZSIsMCksdGgodGhpcywiZHVyYXRpb24iLDApLHRoKHRoaXMsIndhcm5pbmdzIixbXSksdGgodGhpcywic2FtcGxlcyIsW10pLHRoKHRoaXMsImJhc2VEdHMiLDApLHRoKHRoaXMsInNhbXBsZVNpemUiLDE2KSx0aCh0aGlzLCJzYW1wbGVSYXRlIiwwKSx0aCh0aGlzLCJjaGFubmVsQ291bnQiLDApLHRoKHRoaXMsIm9iamVjdFR5cGUiLDApLHRoKHRoaXMsInNhbXBsZVJhdGVJbmRleCIsMCksdGgodGhpcywiY29uZmlnIixbXSksdGgodGhpcywicHJlc2VudCIsITEpLHRoKHRoaXMsImlzVmlkZW9FbmNyeXB0aW9uIiwhMSksdGgodGhpcywiaXNBdWRpb0VuY3J5cHRpb24iLCExKSx0aCh0aGlzLCJraWQiLG51bGwpLHRoKHRoaXMsImV4dCIsdm9pZCAwKX1yZXR1cm4gRWgoQSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj0wLHRoaXMudGltZXNjYWxlPTAsdGhpcy5zYW1wbGVEdXJhdGlvbj0wLHRoaXMuc2FtcGxlUmF0ZT0wLHRoaXMuY2hhbm5lbENvdW50PTAsdGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPTAsdGhpcy5wcmVzZW50PSExLHRoaXMucGlkPS0xLHRoaXMuY29kZWM9IiIsdGhpcy5zYW1wbGVzPVtdLHRoaXMuY29uZmlnPVtdLHRoaXMud2FybmluZ3M9W119fSx7a2V5OiJleGlzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLnNhbXBsZVJhdGUmJnRoaXMuY2hhbm5lbENvdW50JiZ0aGlzLmNvZGVjJiZ0aGlzLmNvZGVjVHlwZT09PXVoKX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2FtcGxlcy5sZW5ndGh9fSx7a2V5OiJpc0VuY3J5cHRpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQXVkaW9FbmNyeXB0aW9ufX1dKSxBfSgpLEZoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnLEksQil7UWgodGhpcyxBKSx0aCh0aGlzLCJmbGFnIix7fSksdGgodGhpcywia2V5ZnJhbWUiLCExKSx0aCh0aGlzLCJnb3BJZCIsMCksdGgodGhpcywiZHVyYXRpb24iLDApLHRoKHRoaXMsInNpemUiLDApLHRoKHRoaXMsInVuaXRzIixbXSksdGgodGhpcywiY2hyb21hRm9ybWF0Iiw0MjApLHRoaXMub3JpZ2luUHRzPXRoaXMucHRzPWcsdGhpcy5vcmlnaW5EdHM9dGhpcy5kdHM9SSxCJiYodGhpcy51bml0cz1CKX1yZXR1cm4gRWgoQSxbe2tleToiY3RzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdHMtdGhpcy5kdHN9fSx7a2V5OiJzZXRUb0tleWZyYW1lIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMua2V5ZnJhbWU9ITAsdGhpcy5mbGFnLmRlcGVuZHNPbj0yLHRoaXMuZmxhZy5pc05vblN5bmNTYW1wbGU9MH19XSksQX0oKSxHaD1FaCgoZnVuY3Rpb24gQShnLEksQixRKXtRaCh0aGlzLEEpLHRoKHRoaXMsImR1cmF0aW9uIiwxMDI0KSx0aCh0aGlzLCJmbGFnIix7ZGVwZW5kc09uOjIsaXNOb25TeW5jU2FtcGxlOjB9KSx0aCh0aGlzLCJrZXlmcmFtZSIsITApLHRoaXMub3JpZ2luUHRzPXRoaXMucHRzPXRoaXMuZHRzPWcsdGhpcy5kYXRhPUksdGhpcy5zaXplPUkuYnl0ZUxlbmd0aCx0aGlzLnNhbXBsZU9mZnNldD1RLEImJih0aGlzLmR1cmF0aW9uPUIpfSkpLFJoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe1FoKHRoaXMsQSksdGgodGhpcywiaWQiLDMpLHRoKHRoaXMsInR5cGUiLGNoKSx0aCh0aGlzLCJ0aW1lc2NhbGUiLDApLHRoKHRoaXMsImZsdlNjcmlwdFNhbXBsZXMiLFtdKSx0aCh0aGlzLCJzZWlTYW1wbGVzIixbXSl9cmV0dXJuIEVoKEEsW3trZXk6ImV4aXN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuZmx2U2NyaXB0U2FtcGxlcy5sZW5ndGgmJiF0aGlzLnNlaVNhbXBsZXMubGVuZ3RofHwhdGhpcy50aW1lc2NhbGUpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50aW1lc2NhbGU9MCx0aGlzLmZsdlNjcmlwdFNhbXBsZXM9W10sdGhpcy5zZWlTYW1wbGVzPVtdfX0se2tleToiaGFzU2FtcGxlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuZmx2U2NyaXB0U2FtcGxlcy5sZW5ndGgmJiF0aGlzLnNlaVNhbXBsZXMubGVuZ3RoKX19XSksQX0oKSxVaD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxraD1VaCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvY2FsZUxvd2VyQ2FzZSgpLFNoPVVoJiZraC5pbmNsdWRlcygiZmlyZWZveCIpLHBoPVVoJiZraC5pbmNsdWRlcygiYW5kcm9pZCIpLE5oPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe1FoKHRoaXMsQSl9cmV0dXJuIEVoKEEsbnVsbCxbe2tleToiZ2V0UmF0ZUluZGV4QnlSYXRlIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5GUkVRLmluZGV4T2YoZyl9fSx7a2V5OiJwYXJzZUFEVFMiLHZhbHVlOmZ1bmN0aW9uKGcsSSl7Zm9yKHZhciBCPWcubGVuZ3RoLFE9MDtRKzI8QiYmKDI1NSE9PWdbUV18fDI0MCE9KDI0NiZnW1ErMV0pKTspUSsrO2lmKCEoUT49Qikpe3ZhciBDPVEsRT1bXSx0PSg2MCZnW1ErMl0pPj4+MixpPUEuRlJFUVt0XTtpZighaSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2FtcGxpbmcgaW5kZXg6ICIuY29uY2F0KHQpKTtmb3IodmFyIGUsbyxyPTErKCgxOTImZ1tRKzJdKT4+PjYpLG49KDEmZ1tRKzJdKTw8MnwoMTkyJmdbUSszXSk+Pj42LGE9QS5fZ2V0Q29uZmlnKHQsbixyKSxzPWEuY29uZmlnLGM9YS5jb2RlYyxoPTAseT1BLmdldEZyYW1lRHVyYXRpb24oaSk7USs3PEI7KWlmKDI1NT09PWdbUV0mJjI0MD09KDI0NiZnW1ErMV0pKXtpZihCLVE8KG89KDMmZ1tRKzNdKTw8MTF8Z1tRKzRdPDwzfCgyMjQmZ1tRKzVdKT4+NSkpYnJlYWs7ZT0yKigxJn5nW1ErMV0pLEUucHVzaCh7cHRzOkkraCp5LGRhdGE6Zy5zdWJhcnJheShRKzcrZSxRK28pfSksaCsrLFErPW99ZWxzZSBRKys7cmV0dXJue3NraXA6QyxyZW1haW5pbmc6UT49Qj92b2lkIDA6Zy5zdWJhcnJheShRKSxmcmFtZXM6RSxzYW1wbGluZ0ZyZXF1ZW5jeUluZGV4OnQsc2FtcGxlUmF0ZTppLG9iamVjdFR5cGU6cixjaGFubmVsQ291bnQ6bixjb2RlYzpjLGNvbmZpZzpzLG9yaWdpbkNvZGVjOiJtcDRhLjQwLiIuY29uY2F0KHIpfX19fSx7a2V5OiJwYXJzZUF1ZGlvU3BlY2lmaWNDb25maWciLHZhbHVlOmZ1bmN0aW9uKGcpe2lmKGcubGVuZ3RoKXt2YXIgST1nWzBdPj4+MyxCPSg3JmdbMF0pPDwxfGdbMV0+Pj43LFE9KDEyMCZnWzFdKT4+PjMsQz1BLkZSRVFbQl07aWYoQyl7dmFyIEU9QS5fZ2V0Q29uZmlnKEIsUSxJKTtyZXR1cm57c2FtcGxpbmdGcmVxdWVuY3lJbmRleDpCLHNhbXBsZVJhdGU6QyxvYmplY3RUeXBlOkksY2hhbm5lbENvdW50OlEsY29uZmlnOkUuY29uZmlnLGNvZGVjOkUuY29kZWMsb3JpZ2luQ29kZWM6Im1wNGEuNDAuIi5jb25jYXQoSSl9fX19fSx7a2V5OiJnZXRGcmFtZUR1cmF0aW9uIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gMTAyNCooYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNCkvQX19LHtrZXk6Il9nZXRDb25maWciLHZhbHVlOmZ1bmN0aW9uKEEsZyxJKXt2YXIgQixRLEM9W107cmV0dXJuIFNoP0E+PTY/KEI9NSxRPUEtMyk6KEI9MixRPUEpOnBoPyhCPTIsUT1BKTooQj0yPT09SXx8NT09PUk/STo1LFE9QSxBPj02P1E9QS0zOjE9PT1nJiYoQj0yLFE9QSkpLENbMF09Qjw8MyxDWzBdfD0oMTQmQSk+PjEsQ1sxXT0oMSZBKTw8NyxDWzFdfD1nPDwzLDU9PT1CJiYoQ1sxXXw9KDE0JlEpPj4xLENbMl09KDEmUSk8PDcsQ1syXXw9OCxDWzNdPTApLHtjb25maWc6Qyxjb2RlYzoibXA0YS40MC4iLmNvbmNhdChCKX19fSx7a2V5OiJnZXRTaWxlbnRGcmFtZSIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtpZigibXA0YS40MC4yIj09PUEpe2lmKDE9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzUsMTI4XSk7aWYoMj09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFszMywwLDczLDE0NCwyLDI1LDAsMzUsMTI4XSk7aWYoMz09PWcpcmV0dXJuIG5ldyBVaW50OEFycmF5KFswLDIwMCwwLDEyOCwzMiwxMzIsMSwzOCw2NCw4LDEwMCwwLDE0Ml0pO2lmKDQ9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxMjgsNDQsMTI4LDgsMiw1Nl0pO2lmKDU9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxMzAsNDgsNCwxNTMsMCwzMywxNDQsMiw1Nl0pO2lmKDY9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxMzAsNDgsNCwxNTMsMCwzMywxNDQsMiwwLDE3OCwwLDMyLDgsMjI0XSl9ZWxzZXtpZigxPT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzEsNjQsMzQsMTI4LDE2Myw3OCwyMzAsMTI4LDE4Niw4LDAsMCwwLDI4LDYsMjQxLDE5MywxMCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5NF0pO2lmKDI9PT1nKXJldHVybiBuZXcgVWludDhBcnJheShbMSw2NCwzNCwxMjgsMTYzLDk0LDIzMCwxMjgsMTg2LDgsMCwwLDAsMCwxNDksMCw2LDI0MSwxNjEsMTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTRdKTtpZigzPT09ZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzEsNjQsMzQsMTI4LDE2Myw5NCwyMzAsMTI4LDE4Niw4LDAsMCwwLDAsMTQ5LDAsNiwyNDEsMTYxLDEwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDk0XSl9fX1dKSxBfSgpO2Z1bmN0aW9uIE1oKCl7Zm9yKHZhciBBPWFyZ3VtZW50cy5sZW5ndGgsZz1uZXcgQXJyYXkoQSksST0wO0k8QTtJKyspZ1tJXT1hcmd1bWVudHNbSV07Zz1nLmZpbHRlcihCb29sZWFuKTt2YXIgQj1uZXcgVWludDhBcnJheShnLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLmJ5dGVMZW5ndGh9KSwwKSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe0Iuc2V0KEEsUSksUSs9QS5ieXRlTGVuZ3RofSkpLEJ9dGgoTmgsIkZSRVEiLFs5NmUzLDg4MjAwLDY0ZTMsNDhlMyw0NDEwMCwzMmUzLDI0ZTMsMjIwNTAsMTZlMywxMmUzLDExMDI1LDhlMyw3MzUwXSk7dmFyIFloPU1hdGgucG93KDIsMzIpO2Z1bmN0aW9uIEhoKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybihBW2ddPDw4KSsoQVtnKzFdfHwwKX1mdW5jdGlvbiB2aChBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4oQVtnXTw8MjQ+Pj4wKSsoQVtnKzFdPDwxNikrKEFbZysyXTw8OCkrKEFbZyszXXx8MCl9ZnVuY3Rpb24gTGgoQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuIG5ldyBEYXRhVmlldyhBLmJ1ZmZlcixBLmJ5dGVPZmZzZXQsQS5ieXRlTGVuZ3RoKS5nZXRJbnQzMihnKX1mdW5jdGlvbiBKaChBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4gdmgoQSxnKSpZaCt2aChBLGcrNCl9ZnVuY3Rpb24gS2goQSl7dmFyIGc9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAsST1uZXcgRGF0YVZpZXcoQS5idWZmZXIsQS5ieXRlT2Zmc2V0LEEuYnl0ZUxlbmd0aCk7cmV0dXJuIEkuZ2V0VWludDMyKGcpPDwzMnxJLmdldFVpbnQzMihnKzQpfWZ1bmN0aW9uIG1oKEEpe3ZhciBnPSIiO2lmKEEuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Zys9ZnVuY3Rpb24oQSl7cmV0dXJuKCIwIitOdW1iZXIoQSkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikudG9VcHBlckNhc2UoKX0oQSl9KSksZy5sZW5ndGg8PTMyKWZvcih2YXIgST0zMi1nLmxlbmd0aCxCPTA7QjxJO0IrKylnKz0iMCI7cmV0dXJuIGd9ZnVuY3Rpb24geGgoQSl7aWYoIUFycmF5LmlzQXJyYXkoQSkpe2Zvcih2YXIgZz1bXSxJPSIiLEI9MDtCPEEubGVuZ3RoO0IrKylCJTImJihJPUFbQi0xXStBW0JdLGcucHVzaChwYXJzZUludChJLDE2KSksST0iIik7cmV0dXJuIGd9cmV0dXJuIEEubWFwKChmdW5jdGlvbihBKXtyZXR1cm4gcGFyc2VJbnQoQSwxNil9KSl9dmFyIHFoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnKXtpZihRaCh0aGlzLEEpLHRoKHRoaXMsIl9ieXRlc0F2YWlsYWJsZSIsdm9pZCAwKSx0aCh0aGlzLCJfYml0c0F2YWlsYWJsZSIsMCksdGgodGhpcywiX3dvcmQiLDApLCFnKXRocm93IG5ldyBFcnJvcigiRXhwR29sb21iIGRhdGEgcGFyYW1zIGlzIHJlcXVpcmVkIik7dGhpcy5fZGF0YT1nLHRoaXMuX2J5dGVzQXZhaWxhYmxlPWcuYnl0ZUxlbmd0aCx0aGlzLl9ieXRlc0F2YWlsYWJsZSYmdGhpcy5fbG9hZFdvcmQoKX1yZXR1cm4gRWgoQSxbe2tleToiX2xvYWRXb3JkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMuX2RhdGEuYnl0ZUxlbmd0aC10aGlzLl9ieXRlc0F2YWlsYWJsZSxnPU1hdGgubWluKDQsdGhpcy5fYnl0ZXNBdmFpbGFibGUpO2lmKDA9PT1nKXRocm93IG5ldyBFcnJvcigiTm8gYnl0ZXMgYXZhaWxhYmxlIik7dmFyIEk9bmV3IFVpbnQ4QXJyYXkoNCk7SS5zZXQodGhpcy5fZGF0YS5zdWJhcnJheShBLEErZykpLHRoaXMuX3dvcmQ9bmV3IERhdGFWaWV3KEkuYnVmZmVyKS5nZXRVaW50MzIoMCksdGhpcy5fYml0c0F2YWlsYWJsZT04KmcsdGhpcy5fYnl0ZXNBdmFpbGFibGUtPWd9fSx7a2V5OiJiaXRzUG9zIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiA4KnRoaXMuX2J5dGVzQXZhaWxhYmxlLXRoaXMuX2JpdHNBdmFpbGFibGV9fSx7a2V5OiJiaXRzTGVmdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gOCp0aGlzLl9kYXRhLmxlbmd0aC10aGlzLmJpdHNQb3MoKX19LHtrZXk6ImJ5dGVBbGlnbmVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5iaXRzUG9zKCl8fHRoaXMuYml0c1BvcygpJTg9PTB9fSx7a2V5OiJza2lwQml0cyIsdmFsdWU6ZnVuY3Rpb24oQSl7aWYodGhpcy5fYml0c0F2YWlsYWJsZT5BKXRoaXMuX3dvcmQ8PD1BLHRoaXMuX2JpdHNBdmFpbGFibGUtPUE7ZWxzZXtBLT10aGlzLl9iaXRzQXZhaWxhYmxlO3ZhciBnPU1hdGguZmxvb3IoQS84KTtBLT04KmcsdGhpcy5fYnl0ZXNBdmFpbGFibGUtPWcsdGhpcy5fbG9hZFdvcmQoKSx0aGlzLl93b3JkPDw9QSx0aGlzLl9iaXRzQXZhaWxhYmxlLT1BfX19LHtrZXk6InJlYWRCaXRzIix2YWx1ZTpmdW5jdGlvbihBKXtpZihBPjMyKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlYWQgbW9yZSB0aGFuIDMyIGJpdHMiKTt2YXIgZz1NYXRoLm1pbih0aGlzLl9iaXRzQXZhaWxhYmxlLEEpLEk9dGhpcy5fd29yZD4+PjMyLWc7cmV0dXJuIHRoaXMuX2JpdHNBdmFpbGFibGUtPWcsdGhpcy5fYml0c0F2YWlsYWJsZT4wP3RoaXMuX3dvcmQ8PD1nOnRoaXMuX2J5dGVzQXZhaWxhYmxlPjAmJnRoaXMuX2xvYWRXb3JkKCksKGc9QS1nKT4wJiZ0aGlzLl9iaXRzQXZhaWxhYmxlP0k8PGd8dGhpcy5yZWFkQml0cyhnKTpJfX0se2tleToic2tpcExaIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBO2ZvcihBPTA7QTx0aGlzLl9iaXRzQXZhaWxhYmxlOysrQSlpZigwIT0odGhpcy5fd29yZCYyMTQ3NDgzNjQ4Pj4+QSkpcmV0dXJuIHRoaXMuX3dvcmQ8PD1BLHRoaXMuX2JpdHNBdmFpbGFibGUtPUEsQTtyZXR1cm4gdGhpcy5fbG9hZFdvcmQoKSxBK3RoaXMuc2tpcExaKCl9fSx7a2V5OiJza2lwVUVHIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2tpcEJpdHMoMSt0aGlzLnNraXBMWigpKX19LHtrZXk6InJlYWRVRUciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5za2lwTFooKTtyZXR1cm4gdGhpcy5yZWFkQml0cyhBKzEpLTF9fSx7a2V5OiJyZWFkRUciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5yZWFkVUVHKCk7cmV0dXJuIDEmQT8xK0E+Pj4xOi0xKihBPj4+MSl9fSx7a2V5OiJyZWFkQm9vbCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMucmVhZEJpdHMoMSl9fSx7a2V5OiJyZWFkVUJ5dGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEJpdHMoOCl9fSx7a2V5OiJza2lwU2NhbGluZ0xpc3QiLHZhbHVlOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz04LEk9OCxCPTA7QjxBO0IrKykwIT09SSYmKEk9KGcrdGhpcy5yZWFkRUcoKSsyNTYpJTI1NiksZz0wPT09ST9nOkl9fV0pLEF9KCksYmg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcpe1FoKHRoaXMsQSksdGhpcy5fYnVmZmVyPWcsdGhpcy5fb2Zmc2V0PTAsdGhpcy5faGVsZEJpdHM9MCx0aGlzLl9udW1IZWxkQml0cz0wfXJldHVybiBFaChBLFt7a2V5OiJyZWFkVWludDgiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK119fSx7a2V5OiJyZWFkVWludDE2Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJbdGhpcy5fb2Zmc2V0KytdPDw4fHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK119fSx7a2V5OiJyZWFkVWludDMyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJbdGhpcy5fb2Zmc2V0KytdPDwyNHx0aGlzLl9idWZmZXJbdGhpcy5fb2Zmc2V0KytdPDwxNnx0aGlzLl9idWZmZXJbdGhpcy5fb2Zmc2V0KytdPDw4fHRoaXMuX2J1ZmZlclt0aGlzLl9vZmZzZXQrK119fSx7a2V5OiJyZWFkVWludDhBcnJheSIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcy5fYnVmZmVyLnNsaWNlKHRoaXMuX29mZnNldCx0aGlzLl9vZmZzZXQrQSk7cmV0dXJuIHRoaXMuX29mZnNldCs9QSxnfX0se2tleToic3RyZWFtUmVhZDFCeXRlcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oZWxkQml0cz10aGlzLnJlYWRVaW50OCgpLHRoaXMuX251bUhlbGRCaXRzPTh9fSx7a2V5OiJzdHJlYW1SZWFkMkJ5dGVzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hlbGRCaXRzPXRoaXMucmVhZFVpbnQxNigpLHRoaXMuX251bUhlbGRCaXRzPTE2fX0se2tleToiZXh0cmFjdEJpdHMiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnPXRoaXMuX2hlbGRCaXRzPj50aGlzLl9udW1IZWxkQml0cy1BJigxPDxBKS0xO3JldHVybiB0aGlzLl9udW1IZWxkQml0cy09QSxnfX1dKSxBfSgpLFRoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe1FoKHRoaXMsQSl9cmV0dXJuIEVoKEEsbnVsbCxbe2tleToicGFyc2VWVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9bmV3IGJoKGcpLEI9SS5yZWFkVWludDgoKTtJLnN0cmVhbVJlYWQxQnl0ZXMoKSxJLmV4dHJhY3RCaXRzKDUpO3ZhciBRLEMsRSx0LGksZSxvLHIsbj1JLmV4dHJhY3RCaXRzKDIpKzEsYT1JLmV4dHJhY3RCaXRzKDEpLHM9e307YSYmKEkuc3RyZWFtUmVhZDJCeXRlcygpLHQ9SS5leHRyYWN0Qml0cygyKSxpPUkuZXh0cmFjdEJpdHMoMyksQz1JLmV4dHJhY3RCaXRzKDMpLEU9SS5leHRyYWN0Qml0cygyKSxJLmV4dHJhY3RCaXRzKDYpLHM9QS5wYXJzZVZWQ1BUTFJlY29yZChJLEMpLFE9SS5yZWFkVWludDE2KCksZT1JLnJlYWRVaW50MTYoKSxvPUkucmVhZFVpbnQxNigpLHI9SS5yZWFkVWludDE2KCkpO2Zvcih2YXIgYz1JLnJlYWRVaW50OCgpLGg9W10seT1bXSxmPVtdLHU9bnVsbCxEPTA7RDxjO0QrKyl7SS5zdHJlYW1SZWFkMUJ5dGVzKCksSS5leHRyYWN0Qml0cygxKSxJLmV4dHJhY3RCaXRzKDIpO3ZhciB3PUkuZXh0cmFjdEJpdHMoNSksbD0xOzEzIT09dyYmMTIhPT13JiYobD1JLnJlYWRVaW50MTYoKSk7Zm9yKHZhciBkPTA7ZDxsO2QrKyl7dmFyIEY9SS5yZWFkVWludDE2KCk7c3dpdGNoKHcpe2Nhc2UgMTQ6aC5wdXNoKEkucmVhZFVpbnQ4QXJyYXkoRikpO2JyZWFrO2Nhc2UgMTU6dmFyIEc9SS5yZWFkVWludDhBcnJheShGKTt1fHwodT1BLnBhcnNlU1BTKEEucmVtb3ZlRVBCKEcpKSkseS5wdXNoKEcpO2JyZWFrO2Nhc2UgMTY6Zi5wdXNoKEkucmVhZFVpbnQ4QXJyYXkoRikpfX19cmV0dXJue2RhdGE6Zyxjb25maWd1cmF0aW9uVmVyc2lvbjpCLGNvZGVjOiJidmMyLjEuNi5MOTMuQjAiLG5hbFVuaXRTaXplOm4scHRsUHJlc2VudEZsYWc6YSxvbHNJZHg6USxudW1TdWJsYXllcnM6Qyxjb25zdGFudEZyYW1lUmF0ZTpFLGNocm9tYUZvcm1hdElkYzp0LGJpdERlcHRoTHVtYU1pbnVzODppLHB0bFJlY29yZDpzLHdpZHRoOmUsaGVpZ2h0Om8sc2FtcGxlUmF0ZTpyLG51bU9mQXJyYXlzOmMsdnBzOmgsc3BzOnkscHBzOmYsc3BzUGFyc2VkOnV9fX0se2tleToicGFyc2VWVkNQVExSZWNvcmQiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7QS5zdHJlYW1SZWFkMkJ5dGVzKCksQS5leHRyYWN0Qml0cygyKTt2YXIgST1BLmV4dHJhY3RCaXRzKDYpLEI9QS5leHRyYWN0Qml0cyg3KSxRPUEuZXh0cmFjdEJpdHMoMSksQz1BLnJlYWRVaW50OCgpO0Euc3RyZWFtUmVhZDFCeXRlcygpO3ZhciBFPUEuZXh0cmFjdEJpdHMoMSksdD1BLmV4dHJhY3RCaXRzKDEpLGk9bmV3IFVpbnQ4QXJyYXkoSSk7aWYoSSl7Zm9yKHZhciBlPTA7ZTxJLTE7ZSsrKXt2YXIgbz1BLmV4dHJhY3RCaXRzKDYpO0Euc3RyZWFtUmVhZDFCeXRlcygpO3ZhciByPUEuZXh0cmFjdEJpdHMoMik7aVtlXT1vPDwyfHJ9aVtJLTFdPUEuZXh0cmFjdEJpdHMoNil9ZWxzZSBBLmV4dHJhY3RCaXRzKDYpO3ZhciBuPVtdO2lmKGc+MSl7QS5zdHJlYW1SZWFkMUJ5dGVzKCk7Zm9yKHZhciBhPTAscz1nLTI7cz49MDstLXMpe2F8PUEuZXh0cmFjdEJpdHMoMSk8PHN9Zm9yKHZhciBjPWc7Yzw9OCYmZz4xOysrYylBLmV4dHJhY3RCaXRzKDEpO2Zvcih2YXIgaD1nLTI7aD49MDstLWgpYSYxPDxoJiYobltoXT1BLnJlYWRVaW50OCgpKX12YXIgeT1BLnJlYWRVaW50OCgpLGY9W107aWYoeSlmb3IodmFyIHU9MDt1PHk7dSsrKWYucHVzaChBLnJlYWRVaW50MzIoKSk7cmV0dXJue2dlbmVyYWxQcm9maWxlSWRjOkIsZ2VuZXJhbFRpZXJGbGFnOlEsZ2VuZXJhbExldmVsSWRjOkMscHRsRnJhbWVPbmx5Q29uc3RyYWludEZsYWc6RSxwdGxNdWx0aWxheWVyRW5hYmxlZEZsYWc6dCxnZW5lcmFsQ29uc3RyYWludEluZm86aSxzdWJMYXllckxldmVsSWRjOm4sZ2VuZXJhbFN1YlByb2ZpbGVJZGM6ZixwdGxOdW1TdWJQcm9maWxlczp5LG51bUJ5dGVzQ29uc3RyYWludEluZm86SX19fSx7a2V5OiJnZXRBdmNjTmFscyIsdmFsdWU6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPVtdO0EucG9zaXRpb248QS5sZW5ndGgtNDspe3ZhciBJPUEuZGF0YXZpZXcuZ2V0SW50MzIoQS5kYXRhdmlldy5wb3NpdGlvbik7aWYoIShBLmxlbmd0aC1BLnBvc2l0aW9uPj1JKSlicmVhazt2YXIgQj1BLmJ1ZmZlci5zbGljZShBLnBvc2l0aW9uLEEucG9zaXRpb24rNCk7QS5za2lwKDQpO3ZhciBRPW5ldyBVaW50OEFycmF5KEEuYnVmZmVyLnNsaWNlKEEucG9zaXRpb24sQS5wb3NpdGlvbitJKSk7QS5za2lwKEkpLGcucHVzaCh7aGVhZGVyOkIsYm9keTpRfSl9cmV0dXJuIGd9fSx7a2V5OiJhbmFseXNlTmFsIix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz0oMjQ4JkEuYm9keVsxXSk+PjM7c3dpdGNoKEEudHlwZT1nLGcpe2Nhc2UgMjM6Y2FzZSAyNDpicmVhaztjYXNlIDc6Y2FzZSA4OkEua2V5PSEwO2JyZWFrO2Nhc2UgMTQ6QS52cHM9ITA7YnJlYWs7Y2FzZSAxNTpBLnNwcz0hMDticmVhaztjYXNlIDE2OkEucHBzPSEwO2JyZWFrO2Nhc2UgMTc6QS5hcHM9ITB9fX0se2tleToicmVtb3ZlRVBCIix2YWx1ZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS5ieXRlTGVuZ3RoLEk9W10sQj0xO0I8Zy0yOykwPT09QVtCXSYmMD09PUFbQisxXSYmMz09PUFbQisyXT8oSS5wdXNoKEIrMiksQis9Mik6QisrO2lmKCFJLmxlbmd0aClyZXR1cm4gQTt2YXIgUT1nLUkubGVuZ3RoLEM9bmV3IFVpbnQ4QXJyYXkoUSksRT0wO2ZvcihCPTA7QjxRO0UrKyxCKyspRT09PUlbMF0mJihFKyssSS5zaGlmdCgpKSxDW0JdPUFbRV07cmV0dXJuIEN9fSx7a2V5OiJwYXJzZVZwcyIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OiJwYXJzZVNQUyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9bmV3IHFoKGcpO0kucmVhZFVCeXRlKCksSS5yZWFkVUJ5dGUoKSxJLnNraXBCaXRzKDQpO3ZhciBCPUkucmVhZEJpdHMoNCksUT1JLnJlYWRCaXRzKDMpLEM9SS5yZWFkQml0cygyKSxFPTQyMDtDPD0zJiYoRT1bMCw0MjAsNDIyLDQ0NF1bQ10pLEkucmVhZEJpdHMoMiksSS5yZWFkQml0cygxKTt2YXIgdD1BLl9wYXJzZVByb2ZpbGVUaWVyTGV2ZWwoSSwxLFEpO3JldHVybiBJLnJlYWRCaXRzKDEpLEkucmVhZEJpdHMoMSkmJkkucmVhZEJpdHMoMSkse3dpZHRoOkkucmVhZFVFRygpLGhlaWdodDpJLnJlYWRVRUcoKSxzcHNNYXhTdWJMYXllck1pbnVzMTpRLHNwc1ZpZGVvUGFyYW1ldGVyU2V0SWQ6QixjaHJvbWFGb3JtYXRJZGM6QyxjaHJvbWFGb3JtYXQ6RSxwdGxJbmZvOnR9fX0se2tleToiX3BhcnNlUHJvZmlsZVRpZXJMZXZlbCIsdmFsdWU6ZnVuY3Rpb24oZyxJLEIpe3ZhciBRLEM9Zy5yZWFkQml0cyg3KSxFPWcucmVhZEJpdHMoMSksdD1nLnJlYWRCaXRzKDgpLGk9Zy5yZWFkQml0cygxKSxlPWcucmVhZEJpdHMoMSk7SSYmKFE9QS5fcGFyc2VHZW5lcmFsQ29uc3RyYWludHNJbmZvKGcpKTtmb3IodmFyIG89Qi0xLHI9W10sbj1bXSxhPVtdLHM9bztzPj0wOy0tcylyW3NdPWcucmVhZEJpdHMoMSk7Zm9yKDshZy5ieXRlQWxpZ25lZCgpOylnLnJlYWRCaXRzKDEpO2Zvcih2YXIgYz1vO2M+PTA7LS1jKXJbY10mJihuW2NdPWcucmVhZFVCeXRlKCkpO2lmKEkpZm9yKHZhciBoPWcucmVhZFVCeXRlKCkseT0wO3k8aDt5KyspYVt5XT1nLnJlYWRCaXRzKDMyKTtyZXR1cm57Z2VuZXJhbFByb2ZpbGVJZGM6QyxnZW5lcmFsVGllckZsYWc6RSxnZW5lcmFsTGV2ZWxJZGM6dCxwdGxGcmFtZU9ubHlDb25zdHJhaW50RmxhZzppLHB0bE11bHRpbGF5ZXJFbmFibGVkRmxhZzplLHB0bFN1YmxheWVyTGV2ZWxQcmVzZW50RmxhZ3M6cixwdGxTdWJsYXllckxldmVsSWRjczpuLHB0bFN1YlByb2ZpbGVJZGNzOmEsZ2NpSW5mbzpRfX19LHtrZXk6Il9wYXJzZUdlbmVyYWxDb25zdHJhaW50c0luZm8iLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnPUEucmVhZEJpdHMoMSk7aWYoZyl7QS5za2lwQml0cyg3MSk7dmFyIEk9QS5yZWFkQml0cyg4KTtJJiZBLnNraXBCaXRzKEkpfXZhciBCPTgtQS5iaXRzUG9zKCklODtyZXR1cm4gQS5za2lwQml0cyhCKSx7Z2NpUHJlc2VudEZsYWc6Z319fV0pLEF9KCksT2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKCl7UWgodGhpcyxBKX1yZXR1cm4gRWgoQSxudWxsLFt7a2V5OiJmaW5kQm94Iix2YWx1ZTpmdW5jdGlvbihnLEkpe3ZhciBCPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLFE9W107aWYoIWcpcmV0dXJuIFE7Zm9yKHZhciBDPTAsRT0iIix0PTA7Zy5sZW5ndGg+Nzspe2lmKEM9dmgoZyksRT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZy5zdWJhcnJheSg0LDgpKSx0PTgsMT09PUM/KEM9SmgoZyw4KSx0Kz04KTpDfHwoQz1nLmxlbmd0aCksIUlbMF18fEU9PT1JWzBdKXt2YXIgaT1nLnN1YmFycmF5KDAsQyk7aWYoIShJLmxlbmd0aDwyKSlyZXR1cm4gQS5maW5kQm94KGkuc3ViYXJyYXkodCksSS5zbGljZSgxKSxCK3QpO1EucHVzaCh7c3RhcnQ6QixzaXplOkMsaGVhZGVyU2l6ZTp0LHR5cGU6RSxkYXRhOml9KX1CKz1DLGc9Zy5zdWJhcnJheShDKX1yZXR1cm4gUX19LHtrZXk6InRmaGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe0EudHJhY2tJZD12aChnKTt2YXIgST00LEI9MSZBLmZsYWdzLFE9MiZBLmZsYWdzLEM9OCZBLmZsYWdzLEU9MTYmQS5mbGFncyx0PTMyJkEuZmxhZ3M7QiYmKEkrPTQsQS5iYXNlRGF0YU9mZnNldD12aChnLEkpLEkrPTQpLFEmJihBLnNhbXBsZURlc2NyaXB0aW9uSW5kZXg9dmgoZyxJKSxJKz00KSxDJiYoQS5kZWZhdWx0U2FtcGxlRHVyYXRpb249dmgoZyxJKSxJKz00KSxFJiYoQS5kZWZhdWx0U2FtcGxlU2l6ZT12aChnLEkpLEkrPTQpLHQmJihBLmRlZmF1bHRTYW1wbGVGbGFncz12aChnLEkpKX0pKX19LHtrZXk6InNpZHgiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPTA7QS5yZWZlcmVuY2VfSUQ9dmgoZyxJKSxJKz00LEEudGltZXNjYWxlPXZoKGcsSSksSSs9NCwwPT09QS52ZXJzaW9uPyhBLmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPXZoKGcsSSksSSs9NCxBLmZpcnN0X29mZnNldD12aChnLEkpLEkrPTQpOihBLmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPUpoKGcsSSksSSs9OCxBLmZpcnN0X29mZnNldD1KaChnLEkpLEkrPTgpLEkrPTIsQS5yZWZlcmVuY2VzPVtdO3ZhciBCPUhoKGcsSSk7SSs9Mjtmb3IodmFyIFE9MDtRPEI7USsrKXt2YXIgQz17fTtBLnJlZmVyZW5jZXMucHVzaChDKTt2YXIgRT12aChnLEkpO0krPTQsQy5yZWZlcmVuY2VfdHlwZT1FPj4zMSYxLEMucmVmZXJlbmNlZF9zaXplPTIxNDc0ODM2NDcmRSxDLnN1YnNlZ21lbnRfZHVyYXRpb249dmgoZyxJKSxFPXZoKGcsSSs9NCksSSs9NCxDLnN0YXJ0c193aXRoX1NBUD1FPj4zMSYxLEMuU0FQX3R5cGU9RT4+MjgmNyxDLlNBUF9kZWx0YV90aW1lPTI2ODQzNTQ1NSZFfX0pKX19LHtrZXk6Im1vb3YiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBqaChnLCExLChmdW5jdGlvbihnLEksQil7Zy5tdmhkPUEubXZoZChBLmZpbmRCb3goSSxbIm12aGQiXSxCKVswXSksZy50cmFrPUEuZmluZEJveChJLFsidHJhayJdLEIpLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhayhnKX0pKSxnLnBzc2g9QS5wc3NoKEEuZmluZEJveChJLFsicHNzaCJdLEIpWzBdKX0pKX19LHtrZXk6Im12aGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPTA7MT09PUEudmVyc2lvbj8oQS50aW1lc2NhbGU9dmgoZywxNiksQS5kdXJhdGlvbj1KaChnLDIwKSxJKz0yOCk6KEEudGltZXNjYWxlPXZoKGcsOCksQS5kdXJhdGlvbj12aChnLDEyKSxJKz0xNiksQS5uZXh0VHJhY2tJZD12aChnLEkrNzYpfSkpfX0se2tleToidHJhayIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIGpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLnRraGQ9QS50a2hkKEEuZmluZEJveChJLFsidGtoZCJdLEIpWzBdKSxnLm1kaWE9QS5tZGlhKEEuZmluZEJveChJLFsibWRpYSJdLEIpWzBdKSxnLmVkdHM9QS5lZHRzKEEuZmluZEJveChJLFsiZWR0cyJdLEIpWzBdKX0pKX19LHtrZXk6InRraGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPTA7MT09PUEudmVyc2lvbj8oQS50cmFja0lkPXZoKGcsMTYpLEEuZHVyYXRpb249SmgoZywyNCksSSs9MzIpOihBLnRyYWNrSWQ9dmgoZyw4KSxBLmR1cmF0aW9uPXZoKGcsMTYpLEkrPTIwKSxBLndpZHRoPXZoKGcsSSs1MiksQS5oZWlnaHQ9dmgoZyxJKzU2KX0pKX19LHtrZXk6Im1kaWEiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBqaChnLCExLChmdW5jdGlvbihnLEksQil7Zy5tZGhkPUEubWRoZChBLmZpbmRCb3goSSxbIm1kaGQiXSxCKVswXSksZy5oZGxyPUEuaGRscihBLmZpbmRCb3goSSxbImhkbHIiXSxCKVswXSksZy5taW5mPUEubWluZihBLmZpbmRCb3goSSxbIm1pbmYiXSxCKVswXSl9KSl9fSx7a2V5OiJlZHRzIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cuZWxzdD1BLmVsc3QoQS5maW5kQm94KEksWyJlbHN0Il0sQilbMF0pfSkpfX0se2tleToiZWxzdCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITAsKGZ1bmN0aW9uKEEsZyxJKXtBLmVudHJpZXM9W10sQS5lbnRyaWVzRGF0YT1nO3ZhciBCPTAsUT12aChnLEIpO0IrPTQ7Zm9yKHZhciBDPTA7QzxRO0MrKyl7dmFyIEU9e307QS5lbnRyaWVzLnB1c2goRSksMT09PUEudmVyc2lvbj8oRS5zZWdtZW50X2R1cmF0aW9uPUpoKGcsQiksQis9OCxFLm1lZGlhX3RpbWU9S2goZyxCKSxCKz04KTooRS5zZWdtZW50X2R1cmF0aW9uPXZoKGcsQiksQis9NCxFLm1lZGlhX3RpbWU9TGgoZyxCKSxCKz00KSxFLm1lZGlhX3JhdGVfaW50ZWdlcj1IaChnLEIpLEIrPTIsRS5tZWRpYV9yYXRlX2ZyYWN0aW9uPUhoKGcsSSksQis9Mn19KSl9fSx7a2V5OiJtZGhkIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gamgoQSwhMCwoZnVuY3Rpb24oQSxnKXt2YXIgST0wOzE9PT1BLnZlcnNpb24/KEEudGltZXNjYWxlPXZoKGcsMTYpLEEuZHVyYXRpb249SmgoZywyMCksSSs9MjgpOihBLnRpbWVzY2FsZT12aChnLDgpLEEuZHVyYXRpb249dmgoZywxMiksSSs9MTYpO3ZhciBCPUhoKGcsSSk7QS5sYW5ndWFnZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDk2KyhCPj4xMCYzMSksOTYrKEI+PjUmMzEpLDk2KygzMSZCKSl9KSl9fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gamgoQSwhMCwoZnVuY3Rpb24oQSxnKXswPT09QS52ZXJzaW9uJiYoQS5oYW5kbGVyVHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZy5zdWJhcnJheSg0LDgpKSl9KSl9fSx7a2V5OiJtaW5mIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cudm1oZD1BLnZtaGQoQS5maW5kQm94KEksWyJ2bWhkIl0sQilbMF0pLGcuc21oZD1BLnNtaGQoQS5maW5kQm94KEksWyJzbWhkIl0sQilbMF0pLGcuc3RibD1BLnN0YmwoQS5maW5kQm94KEksWyJzdGJsIl0sQilbMF0pfSkpfX0se2tleToidm1oZCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7QS5ncmFwaGljc21vZGU9SGgoZyksQS5vcGNvbG9yPVtIaChnLDIpLEhoKGcsNCksSGgoZyw2KV19KSl9fSx7a2V5OiJzbWhkIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gamgoQSwhMCwoZnVuY3Rpb24oQSxnKXtBLmJhbGFuY2U9SGgoZyl9KSl9fSx7a2V5OiJzdGJsIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe3ZhciBRLEMsRTtnLnN0c2Q9QS5zdHNkKEEuZmluZEJveChJLFsic3RzZCJdLEIpWzBdKSxnLnN0dHM9QS5zdHRzKEEuZmluZEJveChJLFsic3R0cyJdLEIpWzBdKSxnLmN0dHM9QS5jdHRzKEEuZmluZEJveChJLFsiY3R0cyJdLEIpWzBdKSxnLnN0c2M9QS5zdHNjKEEuZmluZEJveChJLFsic3RzYyJdLEIpWzBdKSxnLnN0c3o9QS5zdHN6KEEuZmluZEJveChJLFsic3RzeiJdLEIpWzBdKSxnLnN0Y289QS5zdGNvKEEuZmluZEJveChJLFsic3RjbyJdLEIpWzBdKSxnLnN0Y298fChnLmNvNjQ9QS5jbzY0KEEuZmluZEJveChJLFsiY282NCJdLEIpWzBdKSxnLnN0Y289Zy5jbzY0KTt2YXIgdD1udWxsPT09KFE9Zy5zdHNkLmVudHJpZXNbMF0pfHx2b2lkIDA9PT1RfHxudWxsPT09KEM9US5zaW5mKXx8dm9pZCAwPT09Q3x8bnVsbD09PShFPUMuc2NoaSl8fHZvaWQgMD09PUU/dm9pZCAwOkUudGVuYy5kZWZhdWx0X0lWX3NpemU7Zy5zdHNzPUEuc3RzcyhBLmZpbmRCb3goSSxbInN0c3MiXSxCKVswXSksZy5zZW5jPUEuc2VuYyhBLmZpbmRCb3goSSxbInNlbmMiXSxCKVswXSx0KX0pKX19LHtrZXk6InNlbmMiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo4O3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLEkpe3ZhciBCPTAsUT12aChJLEIpO0IrPTQsQS5zYW1wbGVzPVtdO2Zvcih2YXIgQz0wO0M8UTtDKyspe2Zvcih2YXIgRT17SW5pdGlhbGl6YXRpb25WZWN0b3I6W119LHQ9MDt0PGc7dCsrKUUuSW5pdGlhbGl6YXRpb25WZWN0b3JbdF09SVtCK3RdO2lmKEIrPWcsMiZBLmZsYWdzKXtFLnN1YnNhbXBsZXM9W107dmFyIGk9SGgoSSxCKTtCKz0yO2Zvcih2YXIgZT0wO2U8aTtlKyspe3ZhciBvPXt9O28uQnl0ZXNPZkNsZWFyRGF0YT1IaChJLEIpLEIrPTIsby5CeXRlc09mUHJvdGVjdGVkRGF0YT12aChJLEIpLEIrPTQsRS5zdWJzYW1wbGVzLnB1c2gobyl9fUEuc2FtcGxlcy5wdXNoKEUpfX0pKX19LHtrZXk6InBzc2giLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe2Zvcih2YXIgST1bXSxCPVtdLFE9MCxDPTA7QzwxNjtDKyspQi5wdXNoKFhoKGdbUStDXSkpO2lmKFErPTE2LEEudmVyc2lvbj4wKXt2YXIgRT12aChnLFEpO1ErPTQ7Zm9yKHZhciB0PTA7dDwoIiIrRSkubGVuZ3RoO3QrKylmb3IodmFyIGk9MDtpPDE2O2krKyl7dmFyIGU9Z1tRXTtRKz0xLEkucHVzaChYaChlKSl9fXZhciBvPXZoKGcsUSk7QS5kYXRhX3NpemU9byxRKz00LEEua2lkPUksQS5zeXN0ZW1faWQ9QixBLmJ1ZmZlcj1nfSkpfX0se2tleToiYnZjMiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIGpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXt2YXIgUT1XaChnLEkpLEM9SS5zdWJhcnJheShRKTtCKz1RLGcudnZjQz1BLmJ2MkMoQS5maW5kQm94KEMsWyJidjJDIl0sQilbMF0pLGcucGFzcD1BLnBhc3AoQS5maW5kQm94KEMsWyJwYXNwIl0sQilbMF0pfSkpfX0se2tleToiYnYyQyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITEsKGZ1bmN0aW9uKEEsZyxJKXt2YXIgQj1UaC5wYXJzZVZWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGcpO2Zvcih2YXIgUSBpbiBCKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLFEpJiYoQVtRXT1CW1FdKX0pKX19LHtrZXk6InN0c2QiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBqaChnLCEwLChmdW5jdGlvbihnLEksQil7Zy5lbnRyeUNvdW50PXZoKEkpLGcuZW50cmllcz1BLmZpbmRCb3goSS5zdWJhcnJheSg0KSxbXSxCKzQpLm1hcCgoZnVuY3Rpb24oZyl7c3dpdGNoKGcudHlwZSl7Y2FzZSJhdmMxIjpjYXNlImF2YzIiOmNhc2UiYXZjMyI6Y2FzZSJhdmM0IjpyZXR1cm4gQS5hdmMxKGcpO2Nhc2UiaHZjMSI6Y2FzZSJoZXYxIjpyZXR1cm4gQS5odmMxKGcpO2Nhc2UiYnZjMiI6cmV0dXJuIEEuYnZjMihnKTtjYXNlIm1wNGEiOnJldHVybiBBLm1wNGEoZyk7Y2FzZSJhbGF3IjpjYXNlInVsYXciOnJldHVybiBBLmFsYXcoZyk7Y2FzZSJlbmNhIjpyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cuY2hhbm5lbENvdW50PUhoKEksMTYpLGcuc2FtcGxlc2l6ZT1IaChJLDE4KSxnLnNhbXBsZVJhdGU9dmgoSSwyNCkvNjU1MzYsST1JLnN1YmFycmF5KDI4KSxnLnNpbmY9QS5zaW5mKEEuZmluZEJveChJLFsic2luZiJdLEIpWzBdKSxnLmVzZHM9QS5lc2RzKEEuZmluZEJveChJLFsiZXNkcyJdLEIpWzBdKX0pKTtjYXNlImVuY3YiOnJldHVybiBqaChnLCExLChmdW5jdGlvbihnLEksQil7Zy53aWR0aD1IaChJLDI0KSxnLmhlaWdodD1IaChJLDI2KSxnLmhvcml6cmVzb2x1dGlvbj12aChJLDI4KSxnLnZlcnRyZXNvbHV0aW9uPXZoKEksMzIpLEk9SS5zdWJhcnJheSg3OCksZy5zaW5mPUEuc2luZihBLmZpbmRCb3goSSxbInNpbmYiXSxCKVswXSksZy5hdmNDPUEuYXZjQyhBLmZpbmRCb3goSSxbImF2Y0MiXSxCKVswXSksZy5odmNDPUEuaHZjQyhBLmZpbmRCb3goSSxbImh2Y0MiXSxCKVswXSksZy5wYXNwPUEucGFzcChBLmZpbmRCb3goSSxbInBhc3AiXSxCKVswXSl9KSl9fSkpLmZpbHRlcihCb29sZWFuKX0pKX19LHtrZXk6InRlbmMiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCExLChmdW5jdGlvbihBLGcpe3ZhciBJPTY7QS5kZWZhdWx0X0lzRW5jcnlwdGVkPWdbSV0sSSs9MSxBLmRlZmF1bHRfSVZfc2l6ZT1nW0ldLEkrPTEsQS5kZWZhdWx0X0tJRD1bXTtmb3IodmFyIEI9MDtCPDE2O0IrKylBLmRlZmF1bHRfS0lELnB1c2goWGgoZ1tJXSkpLEkrPTF9KSl9fSx7a2V5OiJzY2hpIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cudGVuYz1BLnRlbmMoQS5maW5kQm94KEksWyJ0ZW5jIl0sQilbMF0pfSkpfX0se2tleToic2luZiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIGpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXtnLnNjaGk9QS5zY2hpKEEuZmluZEJveChJLFsic2NoaSJdLEIpWzBdKSxnLmZybWE9QS5mcm1hKEEuZmluZEJveChJLFsiZnJtYSJdLEIpWzBdKX0pKX19LHtrZXk6ImZybWEiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCExLChmdW5jdGlvbihBLGcpe0EuZGF0YV9mb3JtYXQ9IiI7Zm9yKHZhciBJPTA7STw0O0krKylBLmRhdGFfZm9ybWF0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGdbSV0pfSkpfX0se2tleToiYXZjMSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIGpoKGcsITEsKGZ1bmN0aW9uKGcsSSxCKXt2YXIgUT1XaChnLEkpLEM9SS5zdWJhcnJheShRKTtCKz1RLGcuYXZjQz1BLmF2Y0MoQS5maW5kQm94KEMsWyJhdmNDIl0sQilbMF0pLGcucGFzcD1BLnBhc3AoQS5maW5kQm94KEMsWyJwYXNwIl0sQilbMF0pfSkpfX0se2tleToiYXZjQyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITEsKGZ1bmN0aW9uKEEsZyl7QS5jb25maWd1cmF0aW9uVmVyc2lvbj1nWzBdLEEuQVZDUHJvZmlsZUluZGljYXRpb249Z1sxXSxBLnByb2ZpbGVDb21wYXRpYmlsaXR5PWdbMl0sQS5BVkNMZXZlbEluZGljYXRpb249Z1szXSxBLmNvZGVjPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZyxJPSJhdmMxLiIsQj0wO0I8MztCKyspKGc9QVtCXS50b1N0cmluZygxNikpLmxlbmd0aDwyJiYoZz0iMCIuY29uY2F0KGcpKSxJKz1nO3JldHVybiBJfShbZ1sxXSxnWzJdLGdbM11dKSxBLmxlbmd0aFNpemVNaW51c09uZT0zJmdbNF0sQS5zcHNMZW5ndGg9MzEmZ1s1XSxBLnNwcz1bXTtmb3IodmFyIEk9NixCPTA7QjxBLnNwc0xlbmd0aDtCKyspe3ZhciBRPUhoKGcsSSk7SSs9MixBLnNwcy5wdXNoKGcuc3ViYXJyYXkoSSxJK1EpKSxJKz1RfUEucHBzTGVuZ3RoPWdbSV0sSSs9MSxBLnBwcz1bXTtmb3IodmFyIEM9MDtDPEEucHBzTGVuZ3RoO0MrKyl7dmFyIEU9SGgoZyxJKTtJKz0yLEEucHBzLnB1c2goZy5zdWJhcnJheShJLEkrPUUpKSxJKz1FfX0pKX19LHtrZXk6Imh2YzEiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBqaChnLCExLChmdW5jdGlvbihnLEksQil7dmFyIFE9V2goZyxJKSxDPUkuc3ViYXJyYXkoUSk7Qis9USxnLmh2Y0M9QS5odmNDKEEuZmluZEJveChDLFsiaHZjQyJdLEIpWzBdKSxnLnBhc3A9QS5wYXNwKEEuZmluZEJveChDLFsicGFzcCJdLEIpWzBdKX0pKX19LHtrZXk6Imh2Y0MiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCExLChmdW5jdGlvbihnLEkpe2cuZGF0YT1BLmRhdGEsZy5jb2RlYz0iaGV2MS4xLjYuTDkzLkIwIixnLmNvbmZpZ3VyYXRpb25WZXJzaW9uPUlbMF07dmFyIEI9SVsxXTtnLmdlbmVyYWxQcm9maWxlU3BhY2U9Qj4+NixnLmdlbmVyYWxUaWVyRmxhZz0oMzImQik+PjUsZy5nZW5lcmFsUHJvZmlsZUlkYz0zMSZCLGcuZ2VuZXJhbFByb2ZpbGVDb21wYXRpYmlsaXR5PXZoKEksMiksZy5nZW5lcmFsQ29uc3RyYWludEluZGljYXRvckZsYWdzPUkuc3ViYXJyYXkoNiwxMiksZy5nZW5lcmFsTGV2ZWxJZGM9SVsxMl0sZy5hdmdGcmFtZVJhdGU9SGgoSSwxOSksZy5udW1PZkFycmF5cz1JWzIyXSxnLnZwcz1bXSxnLnNwcz1bXSxnLnBwcz1bXTtmb3IodmFyIFE9MjMsQz0wLEU9MCx0PTAsaT0wO2k8Zy5udW1PZkFycmF5cztpKyspe0M9NjMmSVtRXSxFPUhoKEksUSsxKSxRKz0zO2Zvcih2YXIgZSxvPVtdLHI9MDtyPEU7cisrKXQ9SGgoSSxRKSxRKz0yLG8ucHVzaChJLnN1YmFycmF5KFEsUSt0KSksUSs9dDtpZigzMj09PUMpKGU9Zy52cHMpLnB1c2guYXBwbHkoZSxvKTtlbHNlIGlmKDMzPT09Qyl7dmFyIG47KG49Zy5zcHMpLnB1c2guYXBwbHkobixvKX1lbHNlIGlmKDM0PT09Qyl7dmFyIGE7KGE9Zy5wcHMpLnB1c2guYXBwbHkoYSxvKX19fSkpfX0se2tleToicGFzcCIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITEsKGZ1bmN0aW9uKEEsZyl7QS5oU3BhY2luZz12aChnKSxBLnZTcGFjaW5nPXZoKGcsNCl9KSl9fSx7a2V5OiJtcDRhIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe3ZhciBRPVpoKGcsSSk7Zy5lc2RzPUEuZXNkcyhBLmZpbmRCb3goSS5zdWJhcnJheShRKSxbImVzZHMiXSxCK1EpWzBdKX0pKX19LHtrZXk6ImVzZHMiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe0EuY29kZWM9Im1wNGEuIjtmb3IodmFyIEk9MCxCPTAsUT0wLEM9MDtnLmxlbmd0aDspe2ZvcihDPWdbST0wXSxCPWdbSSsxXSxJKz0yOzEyOCZCOylRPSgxMjcmQik8PDcsQj1nW0ldLEkrPTE7aWYoUSs9MTI3JkIsMz09PUMpZz1nLnN1YmFycmF5KEkrMyk7ZWxzZXtpZig0IT09Qyl7aWYoNT09PUMpe3ZhciBFPUEuY29uZmlnPWcuc3ViYXJyYXkoSSxJK1EpLHQ9KDI0OCZFWzBdKT4+MztyZXR1cm4gMzE9PT10JiZFLmxlbmd0aD49MiYmKHQ9MzIrKCg3JkVbMF0pPDwzKSsoKDIyNCZFWzFdKT4+NSkpLEEub2JqZWN0VHlwZT10LEEuY29kZWMrPXQudG9TdHJpbmcoMTYpLHZvaWQoIi4iPT09QS5jb2RlY1tBLmNvZGVjLmxlbmd0aC0xXSYmKEEuY29kZWM9QS5jb2RlYy5zdWJzdHJpbmcoMCxBLmNvZGVjLmxlbmd0aC0xKSkpfXJldHVybiB2b2lkKCIuIj09PUEuY29kZWNbQS5jb2RlYy5sZW5ndGgtMV0mJihBLmNvZGVjPUEuY29kZWMuc3Vic3RyaW5nKDAsQS5jb2RlYy5sZW5ndGgtMSkpKX1BLmNvZGVjKz0oZ1tJXS50b1N0cmluZygxNikrIi4iKS5wYWRTdGFydCgzLCIwIiksZz1nLnN1YmFycmF5KEkrMTMpfX19KSl9fSx7a2V5OiJhbGF3Iix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gamgoQSwhMSwoZnVuY3Rpb24oQSxnKXtaaChBLGcpfSkpfX0se2tleToic3R0cyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPXZoKGcpLEI9W10sUT00LEM9MDtDPEk7QysrKUIucHVzaCh7Y291bnQ6dmgoZyxRKSxkZWx0YTp2aChnLFErNCl9KSxRKz04O0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToiY3R0cyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9dmgoZyksQj1bXSxRPTQ7aWYoMT09PUEudmVyc2lvbilmb3IodmFyIEM9MDtDPEk7QysrKUIucHVzaCh7Y291bnQ6dmgoZyxRKSxvZmZzZXQ6dmgoZyxRKzQpfSksUSs9ODtlbHNlIGZvcih2YXIgRT0wO0U8STtFKyspQi5wdXNoKHtjb3VudDp2aChnLFEpLG9mZnNldDotKDErfnZoKGcsUSs0KSl9KSxRKz04O0EuZW50cnlDb3VudD1JLEEuZW50cmllcz1CfSkpfX0se2tleToic3RzYyIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7Zm9yKHZhciBJPXZoKGcpLEI9W10sUT00LEM9MDtDPEk7QysrKUIucHVzaCh7Zmlyc3RDaHVuazp2aChnLFEpLHNhbXBsZXNQZXJDaHVuazp2aChnLFErNCksc2FtcGxlRGVzY3JpcHRpb25JbmRleDp2aChnLFErOCl9KSxRKz0xMjtBLmVudHJ5Q291bnQ9SSxBLmVudHJpZXM9Qn0pKX19LHtrZXk6InN0c3oiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe3ZhciBJPXZoKGcpLEI9dmgoZyw0KSxRPVtdO2lmKCFJKWZvcih2YXIgQz04LEU9MDtFPEI7RSsrKVEucHVzaCh2aChnLEMpKSxDKz00O0Euc2FtcGxlU2l6ZT1JLEEuc2FtcGxlQ291bnQ9QixBLmVudHJ5U2l6ZXM9UX0pKX19LHtrZXk6InN0Y28iLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe2Zvcih2YXIgST12aChnKSxCPVtdLFE9NCxDPTA7QzxJO0MrKylCLnB1c2godmgoZyxRKSksUSs9NDtBLmVudHJ5Q291bnQ9SSxBLmVudHJpZXM9Qn0pKX19LHtrZXk6ImNvNjQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe2Zvcih2YXIgST12aChnKSxCPVtdLFE9NCxDPTA7QzxJO0MrKylCLnB1c2goSmgoZyxRKSksUSs9ODtBLmVudHJ5Q291bnQ9SSxBLmVudHJpZXM9Qn0pKX19LHtrZXk6InN0c3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe2Zvcih2YXIgST12aChnKSxCPVtdLFE9NCxDPTA7QzxJO0MrKylCLnB1c2godmgoZyxRKSksUSs9NDtBLmVudHJ5Q291bnQ9SSxBLmVudHJpZXM9Qn0pKX19LHtrZXk6Im1vb2YiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBqaChnLCExLChmdW5jdGlvbihnLEksQil7Zy5tZmhkPUEubWZoZChBLmZpbmRCb3goSSxbIm1maGQiXSxCKVswXSksZy50cmFmPUEuZmluZEJveChJLFsidHJhZiJdLEIpLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhZihnKX0pKX0pKX19LHtrZXk6Im1maGQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpe0Euc2VxdWVuY2VOdW1iZXI9dmgoZyl9KSl9fSx7a2V5OiJ0cmFmIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gamgoZywhMSwoZnVuY3Rpb24oZyxJLEIpe2cudGZoZD1BLnRmaGQoQS5maW5kQm94KEksWyJ0ZmhkIl0sQilbMF0pLGcudGZkdD1BLnRmZHQoQS5maW5kQm94KEksWyJ0ZmR0Il0sQilbMF0pLGcudHJ1bj1BLnRydW4oQS5maW5kQm94KEksWyJ0cnVuIl0sQilbMF0pfSkpfX0se2tleToidHJ1biIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGpoKEEsITAsKGZ1bmN0aW9uKEEsZyl7dmFyIEk9QS52ZXJzaW9uLEI9QS5mbGFncyxRPWcubGVuZ3RoLEM9QS5zYW1wbGVDb3VudD12aChnKSxFPTQ7aWYoUT5FJiYxJkImJihBLmRhdGFPZmZzZXQ9LSgxK352aChnLEUpKSxFKz00KSxRPkUmJjQmQiYmKEEuZmlyc3RTYW1wbGVGbGFncz12aChnLEUpLEUrPTQpLEEuc2FtcGxlcz1bXSxRPkUpZm9yKHZhciB0LGk9MDtpPEM7aSsrKXQ9e30sMjU2JkImJih0LmR1cmF0aW9uPXZoKGcsRSksRSs9NCksNTEyJkImJih0LnNpemU9dmgoZyxFKSxFKz00KSwxMDI0JkImJih0LmZsYWdzPXZoKGcsRSksRSs9NCksMjA0OCZCJiYodC5jdHM9ST8tKDErfnZoKGcsRSs0KSk6dmgoZyxFKSxFKz00KSxBLnNhbXBsZXMucHVzaCh0KX0pKX19LHtrZXk6InRmZHQiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBqaChBLCEwLChmdW5jdGlvbihBLGcpezE9PT1BLnZlcnNpb24/QS5iYXNlTWVkaWFEZWNvZGVUaW1lPUpoKGcpOkEuYmFzZU1lZGlhRGVjb2RlVGltZT12aChnKX0pKX19LHtrZXk6InByb2JlIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4hIUEuZmluZEJveChnLFsiZnR5cCJdKX19LHtrZXk6InBhcnNlU2FtcGxlRmxhZ3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybntpc0xlYWRpbmc6KDEyJkFbMF0pPj4+MixkZXBlbmRzT246MyZBWzBdLGlzRGVwZW5kZWRPbjooMTkyJkFbMV0pPj4+NixoYXNSZWR1bmRhbmN5Oig0OCZBWzFdKT4+PjQscGFkZGluZ1ZhbHVlOigxNCZBWzFdKT4+PjEsaXNOb25TeW5jU2FtcGxlOjEmQVsxXSxkZWdyYWRhdGlvblByaW9yaXR5OkFbMl08PDh8QVszXX19fSx7a2V5OiJtb292VG9UcmFjayIsdmFsdWU6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsQz1BLnRyYWs7aWYoQyYmQy5sZW5ndGgpe3ZhciBFPUMuZmluZCgoZnVuY3Rpb24oQSl7dmFyIGcsSTtyZXR1cm4idmlkZSI9PT0obnVsbD09PShnPUEubWRpYSl8fHZvaWQgMD09PWd8fG51bGw9PT0oST1nLmhkbHIpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLmhhbmRsZXJUeXBlKX0pKSx0PUMuZmluZCgoZnVuY3Rpb24oQSl7dmFyIGcsSTtyZXR1cm4ic291biI9PT0obnVsbD09PShnPUEubWRpYSl8fHZvaWQgMD09PWd8fG51bGw9PT0oST1nLmhkbHIpfHx2b2lkIDA9PT1JP3ZvaWQgMDpJLmhhbmRsZXJUeXBlKX0pKTtpZihFJiZnKXt2YXIgaSxlLG8scixuLGEscyxjLGg9Zyx5PW51bGw9PT0oaT1FLnRraGQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRyYWNrSWQ7bnVsbCE9eSYmKGguaWQ9RS50a2hkLnRyYWNrSWQpLGgudGtoZER1cmF0aW9uPUUudGtoZC5kdXJhdGlvbixoLm12aGREdXJ0aW9uPUEubXZoZC5kdXJhdGlvbixoLm12aGRUaW1lY2FsZT1BLm12aGQudGltZXNjYWxlLGgudGltZXNjYWxlPWguZm9ybWF0VGltZXNjYWxlPUUubWRpYS5tZGhkLnRpbWVzY2FsZSxoLmR1cmF0aW9uPUUubWRpYS5tZGhkLmR1cmF0aW9ufHxoLm12aGREdXJ0aW9uL2gubXZoZFRpbWVjYWxlKmgudGltZXNjYWxlLG51bGwhPT0oZT1FLmVkdHMpJiZ2b2lkIDAhPT1lJiZlLmVsc3QmJihoLmVkaXRMaXN0PUUuZWR0cy5lbHN0LGguZWRpdExpc3RBcHBsaWVkPUUuZWRpdExpc3RBcHBsaWVkKTt2YXIgZix1LEQsdyxsLGQsRixHLFI9RS5tZGlhLm1pbmYuc3RibC5zdHNkLmVudHJpZXNbMF07aWYoaC53aWR0aD1SLndpZHRoLGguaGVpZ2h0PVIuaGVpZ2h0LFIucGFzcCYmKGguc2FyUmF0aW89W1IucGFzcC5oU3BhY2luZyxSLnBhc3AudlNwYWNpbmddKSxSLmh2Y0MpaC5jb2RlY1R5cGU9eWgsaC5jb2RlYz1SLmh2Y0MuY29kZWMsaC52cHM9Ui5odmNDLnZwcyxoLnNwcz1SLmh2Y0Muc3BzLGgucHBzPVIuaHZjQy5wcHMsaC5odmNDPVIuaHZjQy5kYXRhO2Vsc2UgaWYoUi5hdmNDKWguY29kZWM9Ui5hdmNDLmNvZGVjLGguc3BzPVIuYXZjQy5zcHMsaC5wcHM9Ui5hdmNDLnBwcztlbHNle2lmKCFSLnZ2Y0MpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHZpZGVvIHN0c2QgZW50cnkiKTtoLmNvZGVjVHlwZT1maCxoLmNvZGVjPVIudnZjQy5jb2RlYyxoLnNwcz1SLnZ2Y0Muc3BzLGgucHBzPVIudnZjQy5wcHMsaC52cHM9Ui52dmNDLnZwcyxoLnZ2Y0M9Ui52dmNDLmRhdGF9aWYoaC5wcmVzZW50PSEwLGguZXh0PXt9LGguZXh0LnN0c3M9bnVsbD09PShvPUUubWRpYSl8fHZvaWQgMD09PW98fG51bGw9PT0ocj1vLm1pbmYpfHx2b2lkIDA9PT1yfHxudWxsPT09KG49ci5zdGJsKXx8dm9pZCAwPT09bj92b2lkIDA6bi5zdHNzLGguZXh0LmN0dHM9bnVsbD09PShhPUUubWRpYSl8fHZvaWQgMD09PWF8fG51bGw9PT0ocz1hLm1pbmYpfHx2b2lkIDA9PT1zfHxudWxsPT09KGM9cy5zdGJsKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jdHRzLFImJiJlbmN2Ij09PVIudHlwZSloLmlzVmlkZW9FbmNyeXB0aW9uPSEwLFIuZGVmYXVsdF9LSUQ9bnVsbD09PShmPVIuc2luZil8fHZvaWQgMD09PWZ8fG51bGw9PT0odT1mLnNjaGkpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LnRlbmMuZGVmYXVsdF9LSUQsUi5kZWZhdWx0X0lzRW5jcnlwdGVkPW51bGw9PT0oRD1SLnNpbmYpfHx2b2lkIDA9PT1EfHxudWxsPT09KHc9RC5zY2hpKXx8dm9pZCAwPT09dz92b2lkIDA6dy50ZW5jLmRlZmF1bHRfSXNFbmNyeXB0ZWQsUi5kZWZhdWx0X0lWX3NpemU9bnVsbD09PShsPVIuc2luZil8fHZvaWQgMD09PWx8fG51bGw9PT0oZD1sLnNjaGkpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLnRlbmMuZGVmYXVsdF9JVl9zaXplLGgudmlkZW9TZW5jPUUubWRpYS5taW5mLnN0Ymwuc2VuYyYmRS5tZGlhLm1pbmYuc3RibC5zZW5jLnNhbXBsZXMsUi5kYXRhX2Zvcm1hdD1udWxsPT09KEY9Ui5zaW5mKXx8dm9pZCAwPT09Rnx8bnVsbD09PShHPUYuZnJtYSl8fHZvaWQgMD09PUc/dm9pZCAwOkcuZGF0YV9mb3JtYXQsaC51c2VFTUU9QS51c2VFTUUsaC5raWRWYWx1ZT1BLmtpZFZhbHVlLGgucHNzaD1BLnBzc2gsaC5lbmN2PVJ9aWYodCYmSSl7dmFyIFUsayxTLHAsTixNLFksSCx2LEwsSj1JLEs9bnVsbD09PShVPXQudGtoZCl8fHZvaWQgMD09PVU/dm9pZCAwOlUudHJhY2tJZDtudWxsIT1LJiYoSi5pZD10LnRraGQudHJhY2tJZCksSi50a2hkRHVyYXRpb249dC50a2hkLmR1cmF0aW9uLEoubXZoZER1cnRpb249QS5tdmhkLmR1cmF0aW9uLEoubXZoZFRpbWVjYWxlPUEubXZoZC50aW1lc2NhbGUsSi50aW1lc2NhbGU9Si5mb3JtYXRUaW1lc2NhbGU9dC5tZGlhLm1kaGQudGltZXNjYWxlLEouZHVyYXRpb249dC5tZGlhLm1kaGQuZHVyYXRpb258fEoubXZoZER1cnRpb24vSi5tdmhkVGltZWNhbGUqSi50aW1lc2NhbGUsbnVsbCE9PShrPXQuZWR0cykmJnZvaWQgMCE9PWsmJmsuZWxzdCYmKEouZWRpdExpc3Q9dC5lZHRzLmVsc3QsSi5lZGl0TGlzdEFwcGxpZWQ9dC5lZGl0TGlzdEFwcGxpZWQpO3ZhciBtLHgscSxiLFQsTyxQLFcsWj10Lm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXTtzd2l0Y2goSi5zYW1wbGVTaXplPVouc2FtcGxlU2l6ZSxKLnNhbXBsZVJhdGU9Wi5zYW1wbGVSYXRlLEouY2hhbm5lbENvdW50PVouY2hhbm5lbENvdW50LEoucHJlc2VudD0hMCxaLnR5cGUpe2Nhc2UiYWxhdyI6Si5jb2RlY1R5cGU9Si5jb2RlYz1EaCxKLnNhbXBsZVJhdGU9OGUzO2JyZWFrO2Nhc2UidWxhdyI6Si5jb2RlY1R5cGU9Si5jb2RlYz13aCxKLnNhbXBsZVJhdGU9OGUzO2JyZWFrO2RlZmF1bHQ6Si5zYW1wbGVEdXJhdGlvbj1OaC5nZXRGcmFtZUR1cmF0aW9uKEouc2FtcGxlUmF0ZSxKLnRpbWVzY2FsZSksSi5zYW1wbGVSYXRlSW5kZXg9TmguZ2V0UmF0ZUluZGV4QnlSYXRlKEouc2FtcGxlUmF0ZSksSi5vYmplY3RUeXBlPShudWxsPT09KEI9Wi5lc2RzKXx8dm9pZCAwPT09Qj92b2lkIDA6Qi5vYmplY3RUeXBlKXx8MixaLmVzZHMmJihKLmNvbmZpZz1BcnJheS5mcm9tKFouZXNkcy5jb25maWcpKSxKLmNvZGVjPShudWxsPT09KFE9Wi5lc2RzKXx8dm9pZCAwPT09UT92b2lkIDA6US5jb2RlYyl8fCJtcDRhLjQwLjIifWlmKEouc2FtcGxlRHVyYXRpb249TmguZ2V0RnJhbWVEdXJhdGlvbihKLnNhbXBsZVJhdGUsSi50aW1lc2NhbGUpLEoub2JqZWN0VHlwZT0obnVsbD09PShTPVouZXNkcyl8fHZvaWQgMD09PVM/dm9pZCAwOlMub2JqZWN0VHlwZSl8fDIsWi5lc2RzJiYoWi5lc2RzLmNvbmZpZz9KLmNvbmZpZz1BcnJheS5mcm9tKFouZXNkcy5jb25maWcpOmNvbnNvbGUud2FybigiZXNkcyBjb25maWcgaXMgbnVsbCIpKSxKLmNvZGVjPShudWxsPT09KHA9Wi5lc2RzKXx8dm9pZCAwPT09cD92b2lkIDA6cC5jb2RlYyl8fCJtcDRhLjQwLjIiLEouc2FtcGxlUmF0ZUluZGV4PU5oLmdldFJhdGVJbmRleEJ5UmF0ZShKLnNhbXBsZVJhdGUpLEouZXh0PXt9LEouZXh0LnN0c3M9bnVsbD09PShOPXQubWRpYSl8fHZvaWQgMD09PU58fG51bGw9PT0oTT1OLm1pbmYpfHx2b2lkIDA9PT1NfHxudWxsPT09KFk9TS5zdGJsKXx8dm9pZCAwPT09WT92b2lkIDA6WS5zdHNzLEouZXh0LmN0dHM9bnVsbD09PShIPXQubWRpYSl8fHZvaWQgMD09PUh8fG51bGw9PT0odj1ILm1pbmYpfHx2b2lkIDA9PT12fHxudWxsPT09KEw9di5zdGJsKXx8dm9pZCAwPT09TD92b2lkIDA6TC5jdHRzLEoucHJlc2VudD0hMCxaJiYiZW5jYSI9PT1aLnR5cGUpSi5pc0F1ZGlvRW5jcnlwdGlvbj0hMCxaLmRhdGFfZm9ybWF0PW51bGw9PT0obT1aLnNpbmYpfHx2b2lkIDA9PT1tfHxudWxsPT09KHg9bS5mcm1hKXx8dm9pZCAwPT09eD92b2lkIDA6eC5kYXRhX2Zvcm1hdCxaLmRlZmF1bHRfS0lEPW51bGw9PT0ocT1aLnNpbmYpfHx2b2lkIDA9PT1xfHxudWxsPT09KGI9cS5zY2hpKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi50ZW5jLmRlZmF1bHRfS0lELFouZGVmYXVsdF9Jc0VuY3J5cHRlZD1udWxsPT09KFQ9Wi5zaW5mKXx8dm9pZCAwPT09VHx8bnVsbD09PShPPVQuc2NoaSl8fHZvaWQgMD09PU8/dm9pZCAwOk8udGVuYy5kZWZhdWx0X0lzRW5jcnlwdGVkLFouZGVmYXVsdF9JVl9zaXplPW51bGw9PT0oUD1aLnNpbmYpfHx2b2lkIDA9PT1QfHxudWxsPT09KFc9UC5zY2hpKXx8dm9pZCAwPT09Vz92b2lkIDA6Vy50ZW5jLmRlZmF1bHRfSVZfc2l6ZSxKLmF1ZGlvU2VuYz10Lm1kaWEubWluZi5zdGJsLnNlbmMmJnQubWRpYS5taW5mLnN0Ymwuc2VuYy5zYW1wbGVzLEoudXNlRU1FPUEudXNlRU1FLEoua2lkVmFsdWU9QS5raWRWYWx1ZSxKLmVuY2E9Wn1pZihJJiYoSS5pc1ZpZGVvRW5jcnlwdGlvbj0hIWcmJmcuaXNWaWRlb0VuY3J5cHRpb24pLGcmJihnLmlzQXVkaW9FbmNyeXB0aW9uPSEhSSYmSS5pc0F1ZGlvRW5jcnlwdGlvbiksbnVsbCE9ZyYmZy5lbmN2fHxudWxsIT1JJiZJLmVuY2Epe3ZhciBqLFgsVj1udWxsPT1nfHxudWxsPT09KGo9Zy5lbmN2KXx8dm9pZCAwPT09aj92b2lkIDA6ai5kZWZhdWx0X0tJRCx6PW51bGw9PUl8fG51bGw9PT0oWD1JLmVuY2EpfHx2b2lkIDA9PT1YP3ZvaWQgMDpYLmRlZmF1bHRfS0lELF89Vnx8ej8oVnx8eikuam9pbigiIik6bnVsbDtnJiYoZy5raWQ9XyksSSYmKEkua2lkPV8pfXJldHVybiBnJiYoZy5mbGFncz0zODQxKSxJJiYoSS5mbGFncz0xNzkzKSx7dmlkZW9UcmFjazpnLGF1ZGlvVHJhY2s6SX19fX0se2tleToiZXZhbHVhdGVEZWZhdWx0RHVyYXRpb24iLHZhbHVlOmZ1bmN0aW9uKEEsZyxJKXt2YXIgQixRPW51bGw9PWd8fG51bGw9PT0oQj1nLnNhbXBsZXMpfHx2b2lkIDA9PT1CP3ZvaWQgMDpCLmxlbmd0aDtyZXR1cm4gUT8xMDI0KlEvZy50aW1lc2NhbGUqQS50aW1lc2NhbGUvSToxMDI0fX0se2tleToibW9vZlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oZyxJLEIpe3ZhciBRPXt9O3JldHVybiBnLm1maGQmJihJJiYoSS5zZXF1ZW5jZU51bWJlcj1nLm1maGQuc2VxdWVuY2VOdW1iZXIpLEImJihCLnNlcXVlbmNlTnVtYmVyPWcubWZoZC5zZXF1ZW5jZU51bWJlcikpLGcudHJhZi5mb3JFYWNoKChmdW5jdGlvbihnKXt2YXIgQz1nLnRmaGQsRT1nLnRmZHQsdD1nLnRydW47aWYoQyYmdCl7RSYmKEkmJkkuaWQ9PT1DLnRyYWNrSWQmJihJLmJhc2VNZWRpYURlY29kZVRpbWU9RS5iYXNlTWVkaWFEZWNvZGVUaW1lKSxCJiZCLmlkPT09Qy50cmFja0lkJiYoQi5iYXNlTWVkaWFEZWNvZGVUaW1lPUUuYmFzZU1lZGlhRGVjb2RlVGltZSkpO3ZhciBpPUMuZGVmYXVsdFNhbXBsZVNpemV8fDAsZT1DLmRlZmF1bHRTYW1wbGVEdXJhdGlvbnx8QS5ldmFsdWF0ZURlZmF1bHREdXJhdGlvbihJLEIsdC5zYW1wbGVzLmxlbmd0aHx8dC5zYW1wbGVDb3VudCksbz10LmRhdGFPZmZzZXR8fDAscj0wLG49LTE7aWYoIXQuc2FtcGxlcy5sZW5ndGgmJnQuc2FtcGxlQ291bnQpe1FbQy50cmFja0lkXT1bXTtmb3IodmFyIGE9MDthPHQuc2FtcGxlQ291bnQ7YSsrKVFbQy50cmFja0lkXS5wdXNoKHtvZmZzZXQ6byxkdHM6cixkdXJhdGlvbjplLHNpemU6aX0pLHIrPWUsbys9aX1lbHNlIFFbQy50cmFja0lkXT10LnNhbXBsZXMubWFwKChmdW5jdGlvbihBLGcpe3JldHVybihBPXtvZmZzZXQ6byxkdHM6cixwdHM6cisoQS5jdHN8fDApLGR1cmF0aW9uOkEuZHVyYXRpb258fGUsc2l6ZTpBLnNpemV8fGksZ29wSWQ6bixrZXlmcmFtZTowPT09Z3x8bnVsbCE9PUEuZmxhZ3MmJnZvaWQgMCE9PUEuZmxhZ3MmJig2NTUzNiZBLmZsYWdzKT4+PjAhPTY1NTM2fSkua2V5ZnJhbWUmJihuKyssQS5nb3BJZD1uKSxyKz1BLmR1cmF0aW9uLG8rPUEuc2l6ZSxBfSkpfX0pKSxRfX0se2tleToibW9vdlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QS50cmFrO2lmKGcmJmcubGVuZ3RoKXt2YXIgST1nLmZpbmQoKGZ1bmN0aW9uKEEpe3ZhciBnLEk7cmV0dXJuInZpZGUiPT09KG51bGw9PT0oZz1BLm1kaWEpfHx2b2lkIDA9PT1nfHxudWxsPT09KEk9Zy5oZGxyKXx8dm9pZCAwPT09ST92b2lkIDA6SS5oYW5kbGVyVHlwZSl9KSksQj1nLmZpbmQoKGZ1bmN0aW9uKEEpe3ZhciBnLEk7cmV0dXJuInNvdW4iPT09KG51bGw9PT0oZz1BLm1kaWEpfHx2b2lkIDA9PT1nfHxudWxsPT09KEk9Zy5oZGxyKXx8dm9pZCAwPT09ST92b2lkIDA6SS5oYW5kbGVyVHlwZSl9KSk7aWYoSXx8Qil7dmFyIFEsQztpZihJKXt2YXIgRSx0LGk9bnVsbD09PShFPUkubWRpYSl8fHZvaWQgMD09PUV8fG51bGw9PT0odD1FLm1pbmYpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnN0Ymw7aWYoIWkpcmV0dXJuO3ZhciBlPWkuc3R0cyxvPWkuc3RzYyxyPWkuc3RzeixuPWkuc3RjbyxhPWkuc3RzcyxzPWkuY3R0cztpZighKGUmJm8mJnImJm4mJmEpKXJldHVybjtRPVBoKGUsbyxyLG4scyxhKX1pZihCKXt2YXIgYyxoLHksZj1udWxsPT09KGM9Qi5tZGlhKXx8dm9pZCAwPT09Y3x8bnVsbD09PShoPWMubWluZil8fHZvaWQgMD09PWg/dm9pZCAwOmguc3RibDtpZighZilyZXR1cm47dmFyIHU9bnVsbD09PSh5PUIubWRpYS5tZGhkKXx8dm9pZCAwPT09eT92b2lkIDA6eS50aW1lc2NhbGUsRD1mLnN0dHMsdz1mLnN0c2MsbD1mLnN0c3osZD1mLnN0Y287aWYoISh1JiZEJiZ3JiZsJiZkKSlyZXR1cm47Qz1QaChELHcsbCxkKX1yZXR1cm57dmlkZW9TYW1wbGVzOlEsYXVkaW9TYW1wbGVzOkN9fX19fV0pLEF9KCk7ZnVuY3Rpb24gUGgoQSxnLEksQixRLEMpe3ZhciBFLHQsaSxlPVtdLG89bnVsbD09UT92b2lkIDA6US5lbnRyaWVzLHI9Zy5lbnRyaWVzLG49Qi5lbnRyaWVzLGE9SS5lbnRyeVNpemVzLHM9bnVsbD09Qz92b2lkIDA6Qy5lbnRyaWVzO3MmJihFPXt9LHMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7RVtBLTFdPSEwfSkpKSxvJiYodD1bXSxvLmZvckVhY2goKGZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmNvdW50LEk9QS5vZmZzZXQsQj0wO0I8ZztCKyspdC5wdXNoKEkpfSkpKTt2YXIgYz0tMSxoPTAseT0wLGY9MCx1PTAsRD0wLHc9clswXS5zYW1wbGVzUGVyQ2h1bmssbD1yWzFdP3JbMV0uZmlyc3RDaHVuay0xOjEvMDtyZXR1cm4gQS5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmNvdW50LEI9QS5kZWx0YSxRPTA7UTxnO1ErKylpPXtkdHM6aCxkdXJhdGlvbjpCLHNpemU6YVt5XXx8SS5zYW1wbGVTaXplLG9mZnNldDpuW2ZdK0QsaW5kZXg6eX0scyYmKGkua2V5ZnJhbWU9RVt5XSxpLmtleWZyYW1lJiZjKyssaS5nb3BJZD1jKSx0JiZ5PHQubGVuZ3RoJiYoaS5wdHM9aS5kdHMrdFt5XSksZS5wdXNoKGkpLGgrPUIsKyt5PHc/RCs9aS5zaXplOihmKyssRD0wLGY+PWwmJih1KyssbD1yW3UrMV0/clt1KzFdLmZpcnN0Q2h1bmstMToxLzApLHcrPXJbdV0uc2FtcGxlc1BlckNodW5rKX0pKSxlfWZ1bmN0aW9uIFdoKEEsZyl7cmV0dXJuIEEuZGF0YVJlZmVyZW5jZUluZGV4PUhoKGcsNiksQS53aWR0aD1IaChnLDI0KSxBLmhlaWdodD1IaChnLDI2KSxBLmhvcml6cmVzb2x1dGlvbj12aChnLDI4KSxBLnZlcnRyZXNvbHV0aW9uPXZoKGcsMzIpLEEuZnJhbWVDb3VudD1IaChnLDQwKSxBLmRlcHRoPUhoKGcsNzQpLDc4fWZ1bmN0aW9uIFpoKEEsZyl7cmV0dXJuIEEuZGF0YVJlZmVyZW5jZUluZGV4PUhoKGcsNiksQS5jaGFubmVsQ291bnQ9SGgoZywxNiksQS5zYW1wbGVTaXplPUhoKGcsMTgpLEEuc2FtcGxlUmF0ZT12aChnLDI0KS82NTUzNiwyOH1mdW5jdGlvbiBqaChBLGcsSSl7aWYoQSl7aWYoQS5zaXplIT09QS5kYXRhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImJveCAiLmNvbmNhdChBLnR5cGUsIiBzaXplICE9PSBkYXRhLmxlbmd0aCIpKTt2YXIgQj17c3RhcnQ6QS5zdGFydCxzaXplOkEuc2l6ZSxoZWFkZXJTaXplOkEuaGVhZGVyU2l6ZSx0eXBlOkEudHlwZX07cmV0dXJuIGcmJihCLnZlcnNpb249QS5kYXRhW0EuaGVhZGVyU2l6ZV0sQi5mbGFncz1mdW5jdGlvbihBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4oQVtnXTw8MTYpKyhBW2crMV08PDgpKyhBW2crMl18fDApfShBLmRhdGEsQS5oZWFkZXJTaXplKzEpLEIuaGVhZGVyU2l6ZSs9NCksSShCLEEuZGF0YS5zdWJhcnJheShCLmhlYWRlclNpemUpLEIuc3RhcnQrQi5oZWFkZXJTaXplKSxCfX12YXIgWGg9ZnVuY3Rpb24oKXtmb3IodmFyIEE9W10sZz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KGcpLEI9MDtCPGc7QisrKUlbQl09YXJndW1lbnRzW0JdO3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKGcpe0EucHVzaChmdW5jdGlvbihBLGcsSSl7Zm9yKHZhciBCPVN0cmluZyhJKSxRPWc+PjAsQz1NYXRoLmNlaWwoUS9CLmxlbmd0aCksRT1bXSx0PVN0cmluZyhBKTtDLS07KUUucHVzaChCKTtyZXR1cm4gRS5qb2luKCIiKS5zdWJzdHJpbmcoMCxRLXQubGVuZ3RoKSt0fShOdW1iZXIoZykudG9TdHJpbmcoMTYpLDIsMCkpfSkpLEFbMF19O3ZhciBWaD1mdW5jdGlvbigpe2Z1bmN0aW9uIEEoKXtRaCh0aGlzLEEpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDApfXJldHVybiBFaChBLFt7a2V5OiJ3cml0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIEE9dGhpcyxnPWFyZ3VtZW50cy5sZW5ndGgsST1uZXcgQXJyYXkoZyksQj0wO0I8ZztCKyspSVtCXT1hcmd1bWVudHNbQl07SS5mb3JFYWNoKChmdW5jdGlvbihnKXtnP0EuYnVmZmVyPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz0wLEk9YXJndW1lbnRzLmxlbmd0aCxCPW5ldyBBcnJheShJPjE/SS0xOjApLFE9MTtRPEk7USsrKUJbUS0xXT1hcmd1bWVudHNbUV07Qi5mb3JFYWNoKChmdW5jdGlvbihBKXtnKz1BLmxlbmd0aH0pKTt2YXIgQz1uZXcgQShnKSxFPTA7cmV0dXJuIEIuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qy5zZXQoQSxFKSxFKz1BLmxlbmd0aH0pKSxDfShVaW50OEFycmF5LEEuYnVmZmVyLGcpOndpbmRvdy5jb25zb2xlLndhcm4oZyl9KSl9fV0sW3trZXk6IndyaXRlVWludDE2Iix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW0E+PjgmMjU1LDI1NSZBXSl9fSx7a2V5OiJ3cml0ZVVpbnQzMiIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtBPj4yNCxBPj4xNiYyNTUsQT4+OCYyNTUsMjU1JkFdKX19XSksQX0oKSx6aD1NYXRoLnBvdygyLDMyKS0xLF9oPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe1FoKHRoaXMsQSl9cmV0dXJuIEVoKEEsbnVsbCxbe2tleToiYm94Iix2YWx1ZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShnPjE/Zy0xOjApLEI9MTtCPGc7QisrKUlbQi0xXT1hcmd1bWVudHNbQl07dmFyIFE9OCsoST1JLmZpbHRlcihCb29sZWFuKSkucmVkdWNlKChmdW5jdGlvbihBLGcpe3JldHVybiBBK2cuYnl0ZUxlbmd0aH0pLDApLEM9bmV3IFVpbnQ4QXJyYXkoUSk7Q1swXT1RPj4yNCYyNTUsQ1sxXT1RPj4xNiYyNTUsQ1syXT1RPj44JjI1NSxDWzNdPTI1NSZRLEMuc2V0KEEsNCk7dmFyIEU9ODtyZXR1cm4gSS5mb3JFYWNoKChmdW5jdGlvbihBKXtDLnNldChBLEUpLEUrPUEuYnl0ZUxlbmd0aH0pKSxDfX0se2tleToiRnVsbEJveCIsdmFsdWU6ZnVuY3Rpb24oZyxJLEIpe2Zvcih2YXIgUT1hcmd1bWVudHMubGVuZ3RoLEM9bmV3IEFycmF5KFE+Mz9RLTM6MCksRT0zO0U8UTtFKyspQ1tFLTNdPWFyZ3VtZW50c1tFXTtyZXR1cm4gQS5ib3guYXBwbHkoQSxbZyxuZXcgVWludDhBcnJheShbSSxCPj4xNiYyNTUsQj4+OCYyNTUsMjU1JkJdKV0uY29uY2F0KEMpKX19LHtrZXk6ImZ0eXAiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBnLmZpbmQoKGZ1bmN0aW9uKEEpe3JldHVybiBBLnR5cGU9PT1haCYmQS5jb2RlY1R5cGU9PT15aH0pKT9BLkZUWVBIRVYxOkEuRlRZUEFWQzF9fSx7a2V5OiJpbml0U2VnbWVudCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIE1oKEEuZnR5cChnKSxBLm1vb3YoZykpfX0se2tleToicHNzaCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9bmV3IFVpbnQ4QXJyYXkoWzEsMCwwLDBdLmNvbmNhdChbMTYsMTE5LDIzOSwyMzYsMTkyLDE3OCw3NywyLDE3MiwyMjcsNjAsMzAsODIsMjI2LDI1MSw3NV0sWzAsMCwwLDFdLHhoKGcua2lkKSxbMCwwLDAsMF0pKTtyZXR1cm4gQS5ib3goQS50eXBlcy5wc3NoLEkpfX0se2tleToibW9vdiIsdmFsdWU6ZnVuY3Rpb24oZyl7aWYoZ1swXS51c2VFTUUmJihnWzBdLmVuY3Z8fGdbMF0uZW5jYSkpe2dbMF0ucHNzaHx8KGdbMF0ucHNzaD17a2lkOmdbMF0ua2lkfSk7dmFyIEk9dGhpcy5wc3NoKGdbMF0ucHNzaCk7cmV0dXJuIEEuYm94LmFwcGx5KEEsW0EudHlwZXMubW9vdixBLm12aGQoZ1swXS5tdmhkRHVydGlvbnx8Z1swXS5kdXJhdGlvbixnWzBdLm12aGRUaW1lY2FsZXx8Z1swXS50aW1lc2NhbGUpLEEubXZleChnKV0uY29uY2F0KGVoKGcubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFrKGcpfSkpKSxbSV0pKX1yZXR1cm4gQS5ib3guYXBwbHkoQSxbQS50eXBlcy5tb292LEEubXZoZChnWzBdLm12aGREdXJ0aW9ufHxnWzBdLmR1cmF0aW9uLGdbMF0ubXZoZFRpbWVjYWxlfHxnWzBdLnRpbWVzY2FsZSldLmNvbmNhdChlaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhayhnKX0pKSksW0EubXZleChnKV0pKX19LHtrZXk6Im12aGQiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo5ZTQ7cmV0dXJuIEEuYm94KEEudHlwZXMubXZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsST4+MjQmMjU1LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSxnPj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLDAsMSwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pKX19LHtrZXk6InRyYWsiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLnRyYWssQS50a2hkKGcuaWQsZy50a2hkRHVyYXRpb258fDAsZy53aWR0aCxnLmhlaWdodCksQS5tZGlhKGcpKX19LHtrZXk6InRraGQiLHZhbHVlOmZ1bmN0aW9uKGcsSSl7dmFyIEI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjAsUT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MDtyZXR1cm4gQS5ib3goQS50eXBlcy50a2hkLG5ldyBVaW50OEFycmF5KFswLDAsMCw3LDAsMCwwLDAsMCwwLDAsMCxnPj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLDAsMCwwLDAsST4+MjQmMjU1LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCxCPj44JjI1NSwyNTUmQiwwLDAsUT4+OCYyNTUsMjU1JlEsMCwwXSkpfX0se2tleToiZWR0cyIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMuZWR0cyxBLmVsc3QoZykpfX0se2tleToiZWxzdCIsdmFsdWU6ZnVuY3Rpb24oZyl7Zy5lbnRyaWVzO3ZhciBJPWcuZW50cmllc0RhdGEsQj1nLnZlcnNpb247cmV0dXJuIEEuRnVsbEJveChBLnR5cGVzLmVsc3QsQiwwLEkpfX0se2tleToibWRpYSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWRpYSxBLm1kaGQoZy5kdXJhdGlvbixnLnRpbWVzY2FsZSksQS5oZGxyKGcudHlwZSksQS5taW5mKGcpKX19LHtrZXk6Im1kaGQiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo5ZTQ7cmV0dXJuIEEuYm94KEEudHlwZXMubWRoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsST4+MjQmMjU1LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSxnPj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLDg1LDE5NiwwLDBdKSl9fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5oZGxyLEEuSERMUl9UWVBFU1tnXSl9fSx7a2V5OiJtaW5mIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5taW5mLGcudHlwZT09PWFoP0EuVk1IRDpBLlNNSEQsQS5ESU5GLEEuc3RibChnKSl9fSx7a2V5OiJzdGJsIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1bXTtyZXR1cm4gZyYmZy5leHQmJmcuZXh0LnN0c3MmJkkucHVzaChBLnN0c3MoZy5leHQuc3Rzcy5lbnRyaWVzKSksQS5ib3goQS50eXBlcy5zdGJsLEEuc3RzZChnKSxBLlNUVFMsSVswXSxBLlNUU0MsQS5TVFNaLEEuU1RDTyl9fSx7a2V5OiJzdHNkIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSTtyZXR1cm4gST0iYXVkaW8iPT09Zy50eXBlP2cudXNlRU1FJiZnLmVuY2E/QS5lbmNhKGcpOkEubXA0YShnKTpnLnVzZUVNRSYmZy5lbmN2P0EuZW5jdihnKTpBLmF2YzFoZXYxdnZjMShnKSxBLmJveChBLnR5cGVzLnN0c2QsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMV0pLEkpfX0se2tleToiZW5jYSIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5lbmNhLmNoYW5uZWxDb3VudCxCPWcuZW5jYS5zYW1wbGVSYXRlLFE9bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCxJLDAsMTYsMCwwLDAsMCxCPj44JjI1NSwyNTUmQiwwLDBdKSxDPUEuZXNkcyhnLmNvbmZpZyksRT1BLnNpbmYoZy5lbmNhKTtyZXR1cm4gQS5ib3goQS50eXBlcy5lbmNhLFEsQyxFKX19LHtrZXk6ImVuY3YiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJLEIsUT1nLnNwcy5sZW5ndGg+MD9nLnNwc1swXTpbXSxDPWcucHBzLmxlbmd0aD4wP2cucHBzWzBdOltdLEU9Zy53aWR0aCx0PWcuaGVpZ2h0LGk9Zy5zYXJSYXRpb1swXSxlPWcuc2FyUmF0aW9bMV0sbz1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsRT4+OCYyNTUsMjU1JkUsdD4+OCYyNTUsMjU1JnQsMCw3MiwwLDAsMCw3MiwwLDAsMCwwLDAsMCwwLDEsMTgsMTAwLDk3LDEwNSwxMDgsMTIxLDEwOSwxMTEsMTE2LDEwNSwxMTEsMTEwLDQ3LDEwNCwxMDgsMTE1LDQ2LDEwNiwxMTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI0LDE3LDE3XSkscj1uZXcgVWludDhBcnJheSgoST0oQj1bMSxRWzFdLFFbMl0sUVszXSwyNTUsMjI1LFEubGVuZ3RoPj4+OCYyNTUsMjU1JlEubGVuZ3RoXSkuY29uY2F0LmFwcGx5KEIsZWgoUSkpLmNvbmNhdChbMSxDLmxlbmd0aD4+PjgmMjU1LDI1NSZDLmxlbmd0aF0pKS5jb25jYXQuYXBwbHkoSSxlaChDKSkpLG49bmV3IFVpbnQ4QXJyYXkoWzAsMCw4OCw1NywwLDE1LDIwMCwxOTIsMCw0LDg2LDcyXSksYT1BLnNpbmYoZy5lbmN2KSxzPW5ldyBVaW50OEFycmF5KFtpPj4yNCxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1JmksZT4+MjQsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuZW5jdixvLEEuYm94KEEudHlwZXMuYXZjQyxyKSxBLmJveChBLnR5cGVzLmJ0cnQsbiksYSxBLmJveChBLnR5cGVzLnBhc3AscykpfX0se2tleToic2NoaSIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9bmV3IFVpbnQ4QXJyYXkoW10pLEI9QS50ZW5jKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnNjaGksSSxCKX19LHtrZXk6InRlbmMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwyNTUmZy5kZWZhdWx0X0lzRW5jcnlwdGVkLDI1NSZnLmRlZmF1bHRfSVZfc2l6ZV0uY29uY2F0KHhoKGcuZGVmYXVsdF9LSUQpKSk7cmV0dXJuIEEuYm94KEEudHlwZXMudGVuYyxJKX19LHtrZXk6InNpbmYiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBVaW50OEFycmF5KFtdKSxCPW5ldyBVaW50OEFycmF5KFtnLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMCksZy5kYXRhX2Zvcm1hdC5jaGFyQ29kZUF0KDEpLGcuZGF0YV9mb3JtYXQuY2hhckNvZGVBdCgyKSxnLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMyldKSxRPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDk5LDEwMSwxMTAsOTksMCwxLDAsMF0pLEM9QS5zY2hpKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnNpbmYsSSxBLmJveChBLnR5cGVzLmZybWEsQiksQS5ib3goQS50eXBlcy5zY2htLFEpLEMpfX0se2tleToiYXZjMWhldjF2dmMxIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSSxCO2cuY29kZWNUeXBlPT09eWg/KEk9QS5odmNDKGcpLEI9QS50eXBlcy5odmMxKTpnLmNvZGVjVHlwZT09PWZoPyhJPUEudnZjQyhnKSxCPUEudHlwZXMuYnZjMik6KEk9QS5hdmNDKGcpLEI9QS50eXBlcy5hdmMxKTt2YXIgUT1bbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLGcud2lkdGg+PjgmMjU1LDI1NSZnLndpZHRoLGcuaGVpZ2h0Pj44JjI1NSwyNTUmZy5oZWlnaHQsMCw3MiwwLDAsMCw3MiwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMTcsMTddKSxJXTtyZXR1cm4gZy5jb2RlY1R5cGU9PT15aD9RLnB1c2goQS5ib3goQS50eXBlcy5maWVsLG5ldyBVaW50OEFycmF5KFsxLDBdKSkpOmcuc2FyUmF0aW8mJmcuc2FyUmF0aW8ubGVuZ3RoPjEmJlEucHVzaChBLnBhc3AoZy5zYXJSYXRpbykpLEEuYm94LmFwcGx5KEEsW0JdLmNvbmNhdChRKSl9fSx7a2V5OiJhdmNDIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgSSxCLFEsQz1bXSxFPVtdO3JldHVybiBnLnNwcy5mb3JFYWNoKChmdW5jdGlvbihBKXtRPUEuYnl0ZUxlbmd0aCxDLnB1c2goUT4+PjgmMjU1KSxDLnB1c2goMjU1JlEpLEMucHVzaC5hcHBseShDLGVoKEEpKX0pKSxnLnBwcy5mb3JFYWNoKChmdW5jdGlvbihBKXtRPUEuYnl0ZUxlbmd0aCxFLnB1c2goUT4+PjgmMjU1KSxFLnB1c2goMjU1JlEpLEUucHVzaC5hcHBseShFLGVoKEEpKX0pKSxBLmJveChBLnR5cGVzLmF2Y0MsbmV3IFVpbnQ4QXJyYXkoKEk9KEI9WzEsQ1szXSxDWzRdLENbNV0sMjU1LDIyNHxnLnNwcy5sZW5ndGhdKS5jb25jYXQuYXBwbHkoQixDKS5jb25jYXQoW2cucHBzLmxlbmd0aF0pKS5jb25jYXQuYXBwbHkoSSxFKSkpfX0se2tleToidnZjQyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy52dmNDO3JldHVybiBBLmJveChBLnR5cGVzLmJ2MkMsbmV3IFVpbnQ4QXJyYXkoSSkpfX0se2tleToiaHZjQyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5odmNDO2lmKEkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8SSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIEk7dmFyIEIsUT1nLnZwcyxDPWcuc3BzLEU9Zy5wcHM7aWYoSSl7dmFyIHQ9SS5nZW5lcmFsUHJvZmlsZUNvbXBhdGliaWxpdHlGbGFncyxpPUkuZ2VuZXJhbENvbnN0cmFpbnRJbmRpY2F0b3JGbGFncyxlPShRLmxlbmd0aCYmMSkrKEMubGVuZ3RoJiYxKSsoRS5sZW5ndGgmJjEpO0I9WzEsSS5nZW5lcmFsUHJvZmlsZVNwYWNlPDw2fEkuZ2VuZXJhbFRpZXJGbGFnPDw1fEkuZ2VuZXJhbFByb2ZpbGVJZGMsdD4+PjI0LHQ+Pj4xNix0Pj4+OCx0LGlbMF0saVsxXSxpWzJdLGlbM10saVs0XSxpWzVdLEkuZ2VuZXJhbExldmVsSWRjLDI0MCwwLDI1MiwyNTJ8SS5jaHJvbWFGb3JtYXRJZGMsMjQ4fEkuYml0RGVwdGhMdW1hTWludXM4LDI0OHxJLmJpdERlcHRoQ2hyb21hTWludXM4LDAsMCxJLm51bVRlbXBvcmFsTGF5ZXJzPDwzfEkudGVtcG9yYWxJZE5lc3RlZDw8MnwzLGVdO3ZhciBvPWZ1bmN0aW9uKEEpe3ZhciBnO0IucHVzaChBLmxlbmd0aD4+OCxBLmxlbmd0aCksKGc9QikucHVzaC5hcHBseShnLGVoKEEpKX07US5sZW5ndGgmJihCLnB1c2goMTYwLDAsUS5sZW5ndGgpLFEuZm9yRWFjaChvKSksQy5sZW5ndGgmJihCLnB1c2goMTYxLDAsQy5sZW5ndGgpLEMuZm9yRWFjaChvKSksRS5sZW5ndGgmJihCLnB1c2goMTYyLDAsRS5sZW5ndGgpLEUuZm9yRWFjaChvKSl9ZWxzZSBCPVsxLDEsOTYsMCwwLDAsMTQ0LDAsMCwwLDAsMCw5MywyNDAsMCwyNTIsMjUzLDI0OCwyNDgsMCwwLDE1LDMsMTYwLDAsMSwwLDI0LDY0LDEsMTIsMSwyNTUsMjU1LDEsOTYsMCwwLDMsMCwxNDQsMCwwLDMsMCwwLDMsMCw5MywxNTMsMTUyLDksMTYxLDAsMSwwLDQ1LDY2LDEsMSwxLDk2LDAsMCwzLDAsMTQ0LDAsMCwzLDAsMCwzLDAsOTMsMTYwLDIsMTI4LDEyOCw0NSwyMiw4OSwxNTMsMTY0LDE0Nyw0MywxNTQsMTI4LDEyOCwxMjgsMTMwLDAsMCwzLDAsMiwwLDAsMywwLDUwLDE2LDE2MiwwLDEsMCw3LDY4LDEsMTkzLDExNCwxODAsOTgsNjRdO3JldHVybiBBLmJveChBLnR5cGVzLmh2Y0MsbmV3IFVpbnQ4QXJyYXkoQikpfX0se2tleToicGFzcCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9aWgoZywyKSxCPUlbMF0sUT1JWzFdO3JldHVybiBBLmJveChBLnR5cGVzLnBhc3AsbmV3IFVpbnQ4QXJyYXkoW0I+PjI0LEI+PjE2JjI1NSxCPj44JjI1NSwyNTUmQixRPj4yNCxRPj4xNiYyNTUsUT4+OCYyNTUsMjU1JlFdKSl9fSx7a2V5OiJtcDRhIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5tcDRhLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsZy5jaGFubmVsQ291bnQsMCwxNiwwLDAsMCwwLGcuc2FtcGxlUmF0ZT4+OCYyNTUsMjU1Jmcuc2FtcGxlUmF0ZSwwLDBdKSxnLmNvbmZpZy5sZW5ndGg/QS5lc2RzKGcuY29uZmlnKTp2b2lkIDApfX0se2tleToiZXNkcyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGg7cmV0dXJuIEEuYm94KEEudHlwZXMuZXNkcyxuZXcgVWludDhBcnJheShbMCwwLDAsMCwzLDIzK0ksMCwwLDAsNCwxNStJLDY0LDIxLDAsNiwwLDAsMCwyMTgsMTkyLDAsMCwyMTgsMTkyLDVdLmNvbmNhdChbSV0pLmNvbmNhdChnKS5jb25jYXQoWzYsMSwyXSkpKX19LHtrZXk6Im12ZXgiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveC5hcHBseShBLFtBLnR5cGVzLm12ZXhdLmNvbmNhdChlaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJleChnLmlkKX0pKSkpKX19LHtrZXk6InRyZXgiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLnRyZXgsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDFdKSl9fSx7a2V5OiJ0cmV4MSIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudHJleCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsMCwwLDAsMSwwLDAsMiwwLDAsMCwwLDAsMCwxLDAsMF0pKX19LHtrZXk6InRyZXgyIix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy50cmV4LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGc+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZywwLDAsMCwxLDAsMCw0LDAsMCwwLDAsMCwyLDAsMCwwXSkpfX0se2tleToibW9vZiIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94LmFwcGx5KEEsW0EudHlwZXMubW9vZixBLm1maGQoZ1swXS5zYW1wbGVzP2dbMF0uc2FtcGxlc1swXS5nb3BJZDowKV0uY29uY2F0KGVoKGcubWFwKChmdW5jdGlvbihnKXtyZXR1cm4gQS50cmFmKGcpfSkpKSkpfX0se2tleToibWZoZCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddKSl9fSx7a2V5OiJ0cmFmIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1BLnRmaGQoZy5pZCksQj1BLnRmZHQoZy5iYXNlTWVkaWFEZWNvZGVUaW1lKSxRPTA7aWYoZy5pc1ZpZGVvJiZnLnZpZGVvU2VuYyYmZy52aWRlb1NlbmMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7USs9OCxBLnN1YnNhbXBsZXMmJkEuc3Vic2FtcGxlcy5sZW5ndGgmJihRKz0yLFErPTYqQS5zdWJzYW1wbGVzLmxlbmd0aCl9KSksZy52aWRlb1NlbmNMZW5ndGg9USxnLnVzZUVNRSYmKGcuaXNWaWRlb0VuY3J5cHRpb258fGcuaXNBdWRpb0VuY3J5cHRpb24pKXtpZihnLmlzVmlkZW9FbmNyeXB0aW9uKXtpZihnLmlzVmlkZW8pe3ZhciBDPUEuc2FpeihnKSxFPUEuc2FpbyhnKSx0PUEudHJ1bjEoZyksaT1BLnNlbmMoZyk7cmV0dXJuIEEuYm94KEEudHlwZXMudHJhZixJLEIsQyxFLHQsaSl9aWYoZy5pc0F1ZGlvRW5jcnlwdGlvbil7dmFyIGU9QS5zYmdwKCksbz1BLnNhaXooZykscj1BLnNhaW8oZyksbj1BLnNlbmMoZyksYT1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLGUsbyxyLG4sYSl9dmFyIHM9QS5zYmdwKCksYz1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLHMsYyl9aWYoZy5pc1ZpZGVvKXt2YXIgaD1BLnRydW4xKGcpO3JldHVybiBBLmJveChBLnR5cGVzLnRyYWYsSSxCLGgpfXZhciB5PUEuc2JncCgpLGY9QS5zYWl6KGcpLHU9QS5zYWlvKGcpLEQ9QS5zZW5jKGcpLHc9QS50cnVuMShnKTtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFmLEksQix5LGYsdSxELHcpfXZhciBsPUEuc2R0cChnKTtyZXR1cm4gQS5ib3goQS50eXBlcy50cmFmLEksQixsLEEudHJ1bihnLnNhbXBsZXMsbC5ieXRlTGVuZ3RoKzc2KSl9fSx7a2V5OiJzZHRwIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgVmg7cmV0dXJuIGcuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBKXtJLndyaXRlKG5ldyBVaW50OEFycmF5KGcuaXNWaWRlbz9bQS5rZXlmcmFtZT8zMjoxNl06WzE2XSkpfSkpLEEuYm94KEEudHlwZXMuc2R0cCx0aGlzLmV4dGVuc2lvbigwLDApLEkuYnVmZmVyKX19LHtrZXk6InRydW4xIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1uZXcgVmgsQj1WaC53cml0ZVVpbnQzMihnLnNhbXBsZXMubGVuZ3RoKSxRPW51bGw7aWYoZy5pc1ZpZGVvKXt2YXIgQz1nLnZpZGVvU2VuY0xlbmd0aDtRPVZoLndyaXRlVWludDMyKDc2KzE2Kmcuc2FtcGxlcy5sZW5ndGgrQys3NyksIWcuaXNWaWRlb0VuY3J5cHRpb24mJmcuaXNBdWRpb0VuY3J5cHRpb24mJihRPVZoLndyaXRlVWludDMyKDc2KzE2Kmcuc2FtcGxlcy5sZW5ndGgrMjApKX1lbHNle3ZhciBFPTc2KzEyKmcuc2FtcGxlcy5sZW5ndGgrNTI7Zy5pc0F1ZGlvRW5jcnlwdGlvbiYmKEU9NzYrMTIqZy5zYW1wbGVzLmxlbmd0aCs4KmcuYXVkaW9TZW5jLmxlbmd0aCsxMDUpLFE9Vmgud3JpdGVVaW50MzIoRSl9cmV0dXJuIGcuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBKXtJLndyaXRlKFZoLndyaXRlVWludDMyKEEuZHVyYXRpb24pKSxJLndyaXRlKFZoLndyaXRlVWludDMyKEEuc2l6ZSkpLEkud3JpdGUoVmgud3JpdGVVaW50MzIoQS5rZXlmcmFtZT8zMzU1NDQzMjo2NTUzNikpLGcuaXNWaWRlbyYmSS53cml0ZShWaC53cml0ZVVpbnQzMihBLmN0cz9BLmN0czowKSl9KSksQS5ib3goQS50eXBlcy50cnVuLHRoaXMuZXh0ZW5zaW9uKDAsZy5mbGFncyksQixRLEkuYnVmZmVyKX19LHtrZXk6InNlbmMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPW5ldyBWaCxCPWcuc2FtcGxlcy5sZW5ndGgsUT1nLmlzVmlkZW8/MTY6OCxDPWcuaXNWaWRlbz8yOjAsRT1bXSx0PTA7cmV0dXJuIGcuaXNWaWRlbz8oRT1nLnZpZGVvU2VuYyx0PWcudmlkZW9TZW5jTGVuZ3RoKTpFPWcuYXVkaW9TZW5jLHQ9dHx8USpCLEkud3JpdGUoVmgud3JpdGVVaW50MzIoMTYrdCksQS50eXBlcy5zZW5jLHRoaXMuZXh0ZW5zaW9uKDAsQykpLEkud3JpdGUoVmgud3JpdGVVaW50MzIoQikpLEUuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Zm9yKHZhciBnPTA7ZzxBLkluaXRpYWxpemF0aW9uVmVjdG9yLmxlbmd0aDtnKyspSS53cml0ZShuZXcgVWludDhBcnJheShbQS5Jbml0aWFsaXphdGlvblZlY3RvcltnXV0pKTtBLnN1YnNhbXBsZXMmJkEuc3Vic2FtcGxlcy5sZW5ndGgmJihJLndyaXRlKFZoLndyaXRlVWludDE2KEEuc3Vic2FtcGxlcy5sZW5ndGgpKSxBLnN1YnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oQSl7SS53cml0ZShWaC53cml0ZVVpbnQxNihBLkJ5dGVzT2ZDbGVhckRhdGEpKSxJLndyaXRlKFZoLndyaXRlVWludDMyKEEuQnl0ZXNPZlByb3RlY3RlZERhdGEpKX0pKSl9KSksSS5idWZmZXJ9fSx7a2V5OiJzYWlvIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST0xMipnLnNhbXBsZXMubGVuZ3RoKzE0MTshZy5pc1ZpZGVvJiZnLmlzQXVkaW9FbmNyeXB0aW9uJiYoST0xNDkpO3ZhciBCPW5ldyBVaW50OEFycmF5KFsxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuc2FpbyxCKX19LHtrZXk6InNhaXoiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcuc2FtcGxlcy5sZW5ndGgsQj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwxNixJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuc2FpeixCKX19LHtrZXk6InNiZ3AiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc9bmV3IFVpbnQ4QXJyYXkoWzExNCwxMTEsMTA4LDEwOCwwLDAsMCwxLDAsMCwxLDI1LDAsMCwwLDFdKTtyZXR1cm4gQS5ib3goQS50eXBlcy5zYmdwLHRoaXMuZXh0ZW5zaW9uKDAsMCksZyl9fSx7a2V5OiJleHRlbnNpb24iLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtBLGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZ10pfX0se2tleToidGZoZCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudGZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddKSl9fSx7a2V5OiJ0ZmR0Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1NYXRoLmZsb29yKGcvKHpoKzEpKSxCPU1hdGguZmxvb3IoZyUoemgrMSkpO3JldHVybiBBLmJveChBLnR5cGVzLnRmZHQsbmV3IFVpbnQ4QXJyYXkoWzEsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLEI+PjI0LEI+PjE2JjI1NSxCPj44JjI1NSwyNTUmQl0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKGcsSSl7dmFyIEI9Zy5sZW5ndGgsUT0xMisxNipCO0krPTgrUTt2YXIgQz1uZXcgVWludDhBcnJheShRKTtDLnNldChbMCwwLDE1LDEsQj4+PjI0JjI1NSxCPj4+MTYmMjU1LEI+Pj44JjI1NSwyNTUmQixJPj4+MjQmMjU1LEk+Pj4xNiYyNTUsST4+PjgmMjU1LDI1NSZJXSwwKTtmb3IodmFyIEU9MDtFPEI7RSsrKXt2YXIgdD1nW0VdLGk9dC5kdXJhdGlvbixlPXQuc2l6ZSxvPXQuZmxhZyxyPXZvaWQgMD09PW8/e306byxuPXQuY3RzLGE9dm9pZCAwPT09bj8wOm47Qy5zZXQoW2k+Pj4yNCYyNTUsaT4+PjE2JjI1NSxpPj4+OCYyNTUsMjU1JmksZT4+PjI0JjI1NSxlPj4+MTYmMjU1LGU+Pj44JjI1NSwyNTUmZSxyLmlzTGVhZGluZzw8MnwobnVsbD09PXIuZGVwZW5kc09ufHx2b2lkIDA9PT1yLmRlcGVuZHNPbj8xOnIuZGVwZW5kc09uKSxyLmlzRGVwZW5kZWRPbjw8NnxyLmhhc1JlZHVuZGFuY3k8PDR8ci5wYWRkaW5nVmFsdWU8PDF8KG51bGw9PT1yLmlzTm9uU3luY1NhbXBsZXx8dm9pZCAwPT09ci5pc05vblN5bmNTYW1wbGU/MTpyLmlzTm9uU3luY1NhbXBsZSksNjE0NDAmci5kZWdyYWRhdGlvblByaW9yaXR5LDE1JnIuZGVncmFkYXRpb25Qcmlvcml0eSxhPj4+MjQmMjU1LGE+Pj4xNiYyNTUsYT4+PjgmMjU1LDI1NSZhXSwxMisxNipFKX1yZXR1cm4gQS5ib3goQS50eXBlcy50cnVuLEMpfX0se2tleToibW9vdk1QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94LmFwcGx5KEEsW0EudHlwZXMubW9vdixBLm12aGQoZ1swXS5kdXJhdGlvbixnWzBdLnRpbWVzY2FsZSldLmNvbmNhdChlaChnLm1hcCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEudHJhY2tNUDQoZyl9KSkpKSl9fSx7a2V5OiJ0cmFja01QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMudHJhayxBLnRraGQoZy5pZCxnLmR1cmF0aW9uLGcud2lkdGgsZy5oZWlnaHQpLEEubWRpYU1QNChnKSl9fSx7a2V5OiJtZGlhTVA0Iix2YWx1ZTpmdW5jdGlvbihnKXtyZXR1cm4gQS5ib3goQS50eXBlcy5tZGlhLEEubWRoZChnLmR1cmF0aW9uLGcudGltZXNjYWxlKSxBLmhkbHIoZy50eXBlKSxBLm1pbmZNUDQoZykpfX0se2tleToibWluZk1QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7cmV0dXJuIEEuYm94KEEudHlwZXMubWluZixnLnR5cGU9PT1haD9BLlZNSEQ6QS5TTUhELEEuRElORixBLnN0YmxNUDQoZykpfX0se2tleToic3RibE1QNCIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5leHQsQj1bQS5zdHNkKGcpLEEuc3R0cyhJLnN0dHMpLEEuc3RzYyhJLnN0c2MpLEEuc3RzeihJLnN0c3opLEEuc3RjbyhJLnN0Y28pXTtyZXR1cm4gSS5zdHNzLmxlbmd0aCYmQi5wdXNoKEEuc3RzcyhJLnN0c3MpKSxJLmN0dHMubGVuZ3RoJiZCLnB1c2goQS5jdHRzKEkuY3R0cykpLEEuYm94LmFwcGx5KEEsW0EudHlwZXMuc3RibF0uY29uY2F0KEIpKX19LHtrZXk6InN0dHMiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoOCpJKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc9QS52YWx1ZSxJPUEuY291bnQ7Qi5zZXQoW0k+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSSxnPj4yNCxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmddLFEpLFErPTh9KSksQS5ib3goQS50eXBlcy5zdHRzLE1oKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSV0pLEIpKX19LHtrZXk6InN0c2MiLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoMTIqSSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnPUEuZmlyc3RDaHVuayxJPUEuc2FtcGxlc1BlckNodW5rLEM9QS5zYW1wbGVEZXNjSW5kZXg7Qi5zZXQoW2c+PjI0LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksQz4+MjQsQz4+MTYmMjU1LEM+PjgmMjU1LDI1NSZDXSxRKSxRKz0xMn0pKSxBLmJveChBLnR5cGVzLnN0c2MsTWgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSksQikpfX0se2tleToic3RzeiIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSg0KkkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXtCLnNldChbQT4+MjQsQT4+MTYmMjU1LEE+PjgmMjU1LDI1NSZBXSxRKSxRKz00fSkpLEEuYm94KEEudHlwZXMuc3RzeixNaChuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLEk+PjI0LEk+PjE2JjI1NSxJPj44JjI1NSwyNTUmSV0pLEIpKX19LHtrZXk6InN0Y28iLHZhbHVlOmZ1bmN0aW9uKGcpe3ZhciBJPWcubGVuZ3RoLEI9bmV3IFVpbnQ4QXJyYXkoNCpJKSxRPTA7cmV0dXJuIGcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7Qi5zZXQoW0E+PjI0LEE+PjE2JjI1NSxBPj44JjI1NSwyNTUmQV0sUSksUSs9NH0pKSxBLmJveChBLnR5cGVzLnN0Y28sTWgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsST4+MjQsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJXSksQikpfX0se2tleToic3RzcyIsdmFsdWU6ZnVuY3Rpb24oZyl7dmFyIEk9Zy5sZW5ndGgsQj1uZXcgVWludDhBcnJheSg0KkkpLFE9MDtyZXR1cm4gZy5mb3JFYWNoKChmdW5jdGlvbihBKXtCLnNldChbQT4+MjQsQT4+MTYmMjU1LEE+PjgmMjU1LDI1NSZBXSxRKSxRKz00fSkpLEEuYm94KEEudHlwZXMuc3RzcyxNaChuZXcgVWludDhBcnJheShbMCwwLDAsMCxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKSxCKSl9fSx7a2V5OiJjdHRzIix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLmxlbmd0aCxCPW5ldyBVaW50OEFycmF5KDgqSSksUT0wO3JldHVybiBnLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnPUEudmFsdWUsST1BLmNvdW50O0Iuc2V0KFtJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkksZz4+MjQsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnXSxRKSxRKz04fSkpLEEuYm94KEEudHlwZXMuY3R0cyxNaChuZXcgVWludDhBcnJheShbMCwwLDAsMCxJPj4yNCxJPj4xNiYyNTUsST4+OCYyNTUsMjU1JkldKSxCKSl9fSx7a2V5OiJzdHlwIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBBLmJveChBLnR5cGVzLnN0eXAsbmV3IFVpbnQ4QXJyYXkoWzEwOSwxMTUsMTAwLDEwNCwwLDAsMCwwLDEwOSwxMTUsMTAwLDEwNCwxMDksMTE1LDEwNSwxMjBdKSl9fSx7a2V5OiJzaWR4Iix2YWx1ZTpmdW5jdGlvbihnKXt2YXIgST1nLnRpbWVzY2FsZSxCPWcuc2FtcGxlc1swXS5kdXJhdGlvbixRPUIqZy5zYW1wbGVzLmxlbmd0aCxDPWcuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQqQixFPTg7Zy5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe0UrPUEuc2l6ZX0pKTt2YXIgdD0wO2lmKGcuaXNWaWRlbyl7dmFyIGksZT0wO2cudmlkZW9TZW5jJiYoaT1nLnZpZGVvU2VuYyksZy5pc1ZpZGVvJiZpLmZvckVhY2goKGZ1bmN0aW9uKEEpe2UrPTgsQS5zdWJzYW1wbGVzJiZBLnN1YnNhbXBsZXMubGVuZ3RoJiYoZSs9MixlKz02KkEuc3Vic2FtcGxlcy5sZW5ndGgpfSkpLGcudmlkZW9TZW5jTGVuZ3RoPWUsdD1FKzE0MSsxNipnLnNhbXBsZXMubGVuZ3RoK2UsZy51c2VFTUUmJmcuaXNBdWRpb0VuY3J5cHRpb24mJiFnLmlzVmlkZW9FbmNyeXB0aW9uJiYodD1FKzE2Kmcuc2FtcGxlcy5sZW5ndGgrODQpfWVsc2UgdD1FKzExNisxMipnLnNhbXBsZXMubGVuZ3RoLGcudXNlRU1FJiZnLmlzQXVkaW9FbmNyeXB0aW9uJiYodD1FKzE2OSsxMipnLnNhbXBsZXMubGVuZ3RoKzgqZy5hdWRpb1NlbmMubGVuZ3RoKTt2YXIgbz1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwyNTUmZy5pZCxJPj4yNCYyNTUsST4+MTYmMjU1LEk+PjgmMjU1LDI1NSZJLEM+PjI0JjI1NSxDPj4xNiYyNTUsQz4+OCYyNTUsMjU1JkMsMCwwLDAsMCwwLDAsMCwxLDAsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LFE+PjI0JjI1NSxRPj4xNiYyNTUsUT4+OCYyNTUsMjU1JlEsMTQ0LDAsMCwwXSk7cmV0dXJuIEEuYm94KEEudHlwZXMuc2lkeCxvKX19LHtrZXk6Im1kYXQiLHZhbHVlOmZ1bmN0aW9uKGcpe3JldHVybiBBLmJveChBLnR5cGVzLm1kYXQsZyl9fV0pLEF9KCk7dGgoX2gsInR5cGVzIixbImF2YzEiLCJhdmNDIiwiaHZjMSIsImh2Y0MiLCJkaW5mIiwiZHJlZiIsImVkdHMiLCJlbHN0IiwiZXNkcyIsImZ0eXAiLCJoZGxyIiwibWRhdCIsIm1kaGQiLCJtZGlhIiwibWZoZCIsIm1pbmYiLCJtb29mIiwibW9vdiIsIm1wNGEiLCJtdmV4IiwibXZoZCIsInBhc3AiLCJzdGJsIiwic3RjbyIsInN0c2MiLCJzdHNkIiwic3RzeiIsInN0dHMiLCJ0ZmR0IiwidGZoZCIsInRyYWYiLCJ0cmFrIiwidHJleCIsInRraGQiLCJ2bWhkIiwic21oZCIsImN0dHMiLCJzdHNzIiwic3R5cCIsInBzc2giLCJzaWR4Iiwic2JncCIsInNhaXoiLCJzYWlvIiwic2VuYyIsInRydW4iLCJlbmN2IiwiZW5jYSIsInNpbmYiLCJidHJ0IiwiZnJtYSIsInRlbmMiLCJzY2htIiwic2NoaSIsIm1laGQiLCJmaWVsIiwic2R0cCIsImJ2YzIiLCJidjJDIl0ucmVkdWNlKChmdW5jdGlvbihBLGcpe3JldHVybiBBW2ddPVtnLmNoYXJDb2RlQXQoMCksZy5jaGFyQ29kZUF0KDEpLGcuY2hhckNvZGVBdCgyKSxnLmNoYXJDb2RlQXQoMyldLEF9KSxPYmplY3QuY3JlYXRlKG51bGwpKSksdGgoX2gsIkhETFJfVFlQRVMiLHt2aWRlbzpuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDExOCwxMDUsMTAwLDEwMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4NiwxMDUsMTAwLDEwMSwxMTEsNzIsOTcsMTEwLDEwMCwxMDgsMTAxLDExNCwwXSksYXVkaW86bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwxMTUsMTExLDExNywxMTAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTExLDExNywxMTAsMTAwLDcyLDk3LDExMCwxMDAsMTA4LDEwMSwxMTQsMF0pfSksdGgoX2gsIkZUWVBBVkMxIixfaC5ib3goX2gudHlwZXMuZnR5cCxuZXcgVWludDhBcnJheShbMTA1LDExNSwxMTEsMTA5LDAsMCwwLDEsMTA1LDExNSwxMTEsMTA5LDk3LDExOCw5OSw0OV0pKSksdGgoX2gsIkZUWVBIRVYxIixfaC5ib3goX2gudHlwZXMuZnR5cCxuZXcgVWludDhBcnJheShbMTA1LDExNSwxMTEsMTA5LDAsMCwwLDEsMTA1LDExNSwxMTEsMTA5LDEwNCwxMDEsMTE4LDQ5XSkpKSx0aChfaCwiRElORiIsX2guYm94KF9oLnR5cGVzLmRpbmYsX2guYm94KF9oLnR5cGVzLmRyZWYsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMiwxMTcsMTE0LDEwOCwzMiwwLDAsMCwxXSkpKSksdGgoX2gsIlZNSEQiLF9oLmJveChfaC50eXBlcy52bWhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwxLDAsMCwwLDAsMCwwLDAsMF0pKSksdGgoX2gsIlNNSEQiLF9oLmJveChfaC50eXBlcy5zbWhkLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSkpLHRoKF9oLCJTdGJsVGFibGUiLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSksdGgoX2gsIlNUVFMiLF9oLmJveChfaC50eXBlcy5zdHRzLF9oLlN0YmxUYWJsZSkpLHRoKF9oLCJTVFNDIixfaC5ib3goX2gudHlwZXMuc3RzYyxfaC5TdGJsVGFibGUpKSx0aChfaCwiU1RTWiIsX2guYm94KF9oLnR5cGVzLnN0c3osbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSkpKSx0aChfaCwiU1RDTyIsX2guYm94KF9oLnR5cGVzLnN0Y28sX2guU3RibFRhYmxlKSk7dmFyICRoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnLEkpe1FoKHRoaXMsQSksdGhpcy5uYW1lPWd8fCIiLHRoaXMuX3ByZWZpeD0iWyIuY29uY2F0KHRoaXMubmFtZSwiXSIpLEEuZGlzYWJsZWQ9SX1yZXR1cm4gRWgoQSxbe2tleToiZGVidWciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmRlYnVnLmFwcGx5KGcsW3RoaXMuX3ByZWZpeF0uY29uY2F0KEIpKX19fSx7a2V5OiJsb2ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmxvZy5hcHBseShnLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChCKSl9fX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZztpZighQS5kaXNhYmxlZCl7Zm9yKHZhciBJPWFyZ3VtZW50cy5sZW5ndGgsQj1uZXcgQXJyYXkoSSksUT0wO1E8STtRKyspQltRXT1hcmd1bWVudHNbUV07KGc9Y29uc29sZSkud2Fybi5hcHBseShnLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChCKSl9fX0se2tleToiZXJyb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGc7aWYoIUEuZGlzYWJsZWQpe2Zvcih2YXIgST1hcmd1bWVudHMubGVuZ3RoLEI9bmV3IEFycmF5KEkpLFE9MDtRPEk7USsrKUJbUV09YXJndW1lbnRzW1FdOyhnPWNvbnNvbGUpLmVycm9yLmFwcGx5KGcsW3RoaXMuX3ByZWZpeF0uY29uY2F0KEIpKX19fSx7a2V5OiJ0YWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZztBLmRpc2FibGVkfHwoY29uc29sZS5ncm91cCh0aGlzLl9wcmVmaXgpLChnPWNvbnNvbGUpLnRhYmxlLmFwcGx5KGcsYXJndW1lbnRzKSxjb25zb2xlLmdyb3VwRW5kKCkpfX1dLFt7a2V5OiJlbmFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7QS5kaXNhYmxlZD0hMX19LHtrZXk6ImRpc2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7QS5kaXNhYmxlZD0hMH19XSksQX0oKTt0aCgkaCwiZGlzYWJsZWQiLCEwKTt2YXIgQXk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGcsSSxCKXtRaCh0aGlzLEEpLHRoaXMudmlkZW9UcmFjaz1nLHRoaXMuYXVkaW9UcmFjaz1JO3ZhciBRPS9DaHJvbWVcLyhbXi5dKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk7dGhpcy5mb3JjZUZpcnN0SURSPVEmJk51bWJlcihRWzFdKTw1MCx0aGlzLmxvZz1uZXcgJGgoIkZNUDRSZW11eGVyIiwhQnx8IUIub3BlbkxvZ3x8IUIub3BlbkxvZyl9cmV0dXJuIEVoKEEsW3trZXk6InJlbXV4Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBLGcsSSxCLFEsQz1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLEU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHQ9dGhpcy52aWRlb1RyYWNrLGk9dGhpcy5hdWRpb1RyYWNrLGU9dC5leGlzdCgpLG89aS5leGlzdCgpLHI9W107cmV0dXJuIEMmJihFJiZFLmluaXRNZXJnZT8oZSYmci5wdXNoKHRoaXMudmlkZW9UcmFjayksbyYmci5wdXNoKHRoaXMuYXVkaW9UcmFjayksST1faC5pbml0U2VnbWVudChyKSk6KGUmJihBPV9oLmluaXRTZWdtZW50KFt0aGlzLnZpZGVvVHJhY2tdKSksbyYmKGc9X2guaW5pdFNlZ21lbnQoW3RoaXMuYXVkaW9UcmFja10pKSkpLGUmJnQuaGFzU2FtcGxlKCkmJihCPXRoaXMuX3JlbXV4VmlkZW8oKSksbyYmaS5oYXNTYW1wbGUoKSYmKFE9dGhpcy5fcmVtdXhBdWRpbygpKSx0LnNhbXBsZXM9W10saS5zYW1wbGVzPVtdLHtpbml0U2VnbWVudDpJLHZpZGVvSW5pdFNlZ21lbnQ6QSxhdWRpb0luaXRTZWdtZW50OmcsdmlkZW9TZWdtZW50OkIsYXVkaW9TZWdtZW50OlF9fX0se2tleToiX3JlbXV4VmlkZW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy52aWRlb1RyYWNrO3RoaXMuZm9yY2VGaXJzdElEUiYmKEEuc2FtcGxlc1swXS5mbGFnPXtkZXBlbmRzT246Mixpc05vblN5bmNTYW1wbGU6MH0pO3ZhciBnPUEuc2FtcGxlcyxJPTA7Zy5mb3JFYWNoKChmdW5jdGlvbihBKXtJKz1BLnVuaXRzLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLmJ5dGVMZW5ndGh9KSwwKSxJKz00KkEudW5pdHMubGVuZ3RofSkpO2Zvcih2YXIgQixRPW5ldyBVaW50OEFycmF5KEkpLEM9bmV3IERhdGFWaWV3KFEuYnVmZmVyKSxFPWZ1bmN0aW9uKEEsSSl7ST1nW3RdO3ZhciBFPTA7SS51bml0cy5mb3JFYWNoKChmdW5jdGlvbihnKXtDLnNldFVpbnQzMihBLGcuYnl0ZUxlbmd0aCksQSs9NCxRLnNldChnLEEpLEErPWcuYnl0ZUxlbmd0aCxFKz00K2cuYnl0ZUxlbmd0aH0pKSxJLnNpemU9RSxlPUEsQj1JfSx0PTAsaT1nLmxlbmd0aCxlPTA7dDxpO3QrKylFKGUsQik7dmFyIG89X2gubWRhdChRKTtyZXR1cm4gTWgoX2gubW9vZihbQV0pLG8pfX0se2tleToiX3JlbXV4QXVkaW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5hdWRpb1RyYWNrLGc9bmV3IFVpbnQ4QXJyYXkoQS5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24oQSxnKXtyZXR1cm4gQStnLnNpemV9KSwwKSk7QS5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24oQSxJKXtyZXR1cm4gZy5zZXQoSS5kYXRhLEEpLEErSS5zaXplfSksMCk7dmFyIEk9X2gubWRhdChnKTtyZXR1cm4gTWgoX2gubW9vZihbQV0pLEkpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCl9fV0pLEF9KCksZ3k9QXQsSXk9IkFycmF5QnVmZmVyIixCeT1jRVtJeV07b0Ioe2dsb2JhbDohMCxmb3JjZWQ6TVtJeV0hPT1CeX0se0FycmF5QnVmZmVyOkJ5fSksZ3koSXkpLHp0KCJVaW50OCIsKGZ1bmN0aW9uKEEpe3JldHVybiBmdW5jdGlvbihnLEksQil7cmV0dXJuIEEodGhpcyxnLEksQil9fSksITApO3ZhciBReT1vQixDeT0kQSxFeT1XQSx0eT1YQSxpeT1hQSxleT1xRSxveT1TbyxyeT1Zbygic3BsaWNlIiksbnk9TWF0aC5tYXgsYXk9TWF0aC5taW47UXkoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohcnl9LHtzcGxpY2U6ZnVuY3Rpb24oQSxnKXt2YXIgSSxCLFEsQyxFLHQsaT1peSh0aGlzKSxlPXR5KGkubGVuZ3RoKSxvPUN5KEEsZSkscj1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1yP0k9Qj0wOjE9PT1yPyhJPTAsQj1lLW8pOihJPXItMixCPWF5KG55KEV5KGcpLDApLGUtbykpLGUrSS1CPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIGV4Y2VlZGVkIik7Zm9yKFE9ZXkoaSxCKSxDPTA7QzxCO0MrKykoRT1vK0MpaW4gaSYmb3koUSxDLGlbRV0pO2lmKFEubGVuZ3RoPUIsSTxCKXtmb3IoQz1vO0M8ZS1CO0MrKyl0PUMrSSwoRT1DK0IpaW4gaT9pW3RdPWlbRV06ZGVsZXRlIGlbdF07Zm9yKEM9ZTtDPmUtQitJO0MtLSlkZWxldGUgaVtDLTFdfWVsc2UgaWYoST5CKWZvcihDPWUtQjtDPm87Qy0tKXQ9QytJLTEsKEU9QytCLTEpaW4gaT9pW3RdPWlbRV06ZGVsZXRlIGlbdF07Zm9yKEM9MDtDPEk7QysrKWlbQytvXT1hcmd1bWVudHNbQysyXTtyZXR1cm4gaS5sZW5ndGg9ZS1CK0ksUX19KTtmb3IodmFyIHN5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSgpe0ModGhpcyxBKX1yZXR1cm4gdChBLFt7a2V5OiJtaXhJbiIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcyxBKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPW5ldyB0aGlzLmNvbnN0cnVjdG9yO3JldHVybiBPYmplY3QuYXNzaWduKEEsdGhpcyksQX19XSxbe2tleToiY3JlYXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgQT1hcmd1bWVudHMubGVuZ3RoLGc9bmV3IEFycmF5KEEpLEk9MDtJPEE7SSsrKWdbSV09YXJndW1lbnRzW0ldO3JldHVybiBhKHRoaXMsZyl9fV0pLEF9KCksY3k9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3ZhciBBLEI9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLFE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjQqQi5sZW5ndGg7Qyh0aGlzLEkpLEE9Zy5jYWxsKHRoaXMpO3ZhciBFPUI7aWYoRSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoRT1uZXcgVWludDhBcnJheShFKSksKEUgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fEUgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8RSBpbnN0YW5jZW9mIEludDE2QXJyYXl8fEUgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8RSBpbnN0YW5jZW9mIEludDMyQXJyYXl8fEUgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8RSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8RSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJihFPW5ldyBVaW50OEFycmF5KEUuYnVmZmVyLEUuYnl0ZU9mZnNldCxFLmJ5dGVMZW5ndGgpKSxFIGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciB0PUUuYnl0ZUxlbmd0aCxpPVtdLGU9MDtlPHQ7ZSs9MSlpW2U+Pj4yXXw9RVtlXTw8MjQtZSU0Kjg7QS53b3Jkcz1pLEEuc2lnQnl0ZXM9dH1lbHNlIEEud29yZHM9QixBLnNpZ0J5dGVzPVE7cmV0dXJuIEF9cmV0dXJuIHQoSSxbe2tleToidG9TdHJpbmciLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpoeSkuc3RyaW5naWZ5KHRoaXMpfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz10aGlzLndvcmRzLEk9QS53b3JkcyxCPXRoaXMuc2lnQnl0ZXMsUT1BLnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxCJTQpZm9yKHZhciBDPTA7QzxRO0MrPTEpe3ZhciBFPUlbQz4+PjJdPj4+MjQtQyU0KjgmMjU1O2dbQitDPj4+Ml18PUU8PDI0LShCK0MpJTQqOH1lbHNlIGZvcih2YXIgdD0wO3Q8UTt0Kz00KWdbQit0Pj4+Ml09SVt0Pj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPVEsdGhpc319LHtrZXk6ImNsYW1wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMud29yZHMsZz10aGlzLnNpZ0J5dGVzO0FbZz4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1nJTQqOCxBLmxlbmd0aD1NYXRoLmNlaWwoZy80KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPWgobyhJLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiBBLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksQX19XSxbe2tleToicmFuZG9tIix2YWx1ZTpmdW5jdGlvbihBKXtmb3IodmFyIGcsQj1bXSxRPWZ1bmN0aW9uKEEpe3ZhciBnPUEsST05ODc2NTQzMjEsQj00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe3ZhciBBPSgoST0zNjk2OSooNjU1MzUmSSkrKEk+PjE2KSZCKTw8MTYpKyhnPTE4ZTMqKDY1NTM1JmcpKyhnPj4xNikmQikmQjtyZXR1cm4gQS89NDI5NDk2NzI5NiwoQSs9LjUpKihNYXRoLnJhbmRvbSgpPi41PzE6LTEpfX0sQz0wO0M8QTtDKz00KXt2YXIgRT1RKDQyOTQ5NjcyOTYqKGd8fE1hdGgucmFuZG9tKCkpKTtnPTk4NzY1NDA3MSpFKCksQi5wdXNoKDQyOTQ5NjcyOTYqRSgpfDApfXJldHVybiBuZXcgSShCLEEpfX1dKSxJfShzeSksaHk9e3N0cmluZ2lmeTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS53b3JkcyxJPUEuc2lnQnl0ZXMsQj1bXSxRPTA7UTxJO1ErPTEpe3ZhciBDPWdbUT4+PjJdPj4+MjQtUSU0KjgmMjU1O0IucHVzaCgoQz4+PjQpLnRvU3RyaW5nKDE2KSksQi5wdXNoKCgxNSZDKS50b1N0cmluZygxNikpfXJldHVybiBCLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS5sZW5ndGgsST1bXSxCPTA7QjxnO0IrPTIpSVtCPj4+M118PXBhcnNlSW50KEEuc3Vic3RyKEIsMiksMTYpPDwyNC1CJTgqNDtyZXR1cm4gbmV3IGN5KEksZy8yKX19LHl5PWZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1BLmxlbmd0aCxJPVtdLEI9MDtCPGc7Qis9MSlJW0I+Pj4yXXw9KDI1NSZBLmNoYXJDb2RlQXQoQikpPDwyNC1CJTQqODtyZXR1cm4gbmV3IGN5KEksZyl9LGZ5PWZ1bmN0aW9uKEEpe3JldHVybiB5eSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQSkpKX0sdXk9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3ZhciBBO3JldHVybiBDKHRoaXMsSSksKEE9Zy5jYWxsKHRoaXMpKS5fbWluQnVmZmVyU2l6ZT0wLEF9cmV0dXJuIHQoSSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgY3ksdGhpcy5fbkRhdGFCeXRlcz0wfX0se2tleToiX2FwcGVuZCIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9QTsic3RyaW5nIj09dHlwZW9mIGcmJihnPWZ5KGcpKSx0aGlzLl9kYXRhLmNvbmNhdChnKSx0aGlzLl9uRGF0YUJ5dGVzKz1nLnNpZ0J5dGVzfX0se2tleToiX3Byb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3ZhciBnLEk9dGhpcy5fZGF0YSxCPXRoaXMuYmxvY2tTaXplLFE9SS53b3JkcyxDPUkuc2lnQnl0ZXMsRT1DLyg0KkIpLHQ9KEU9QT9NYXRoLmNlaWwoRSk6TWF0aC5tYXgoKDB8RSktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqQixpPU1hdGgubWluKDQqdCxDKTtpZih0KXtmb3IodmFyIGU9MDtlPHQ7ZSs9Qil0aGlzLl9kb1Byb2Nlc3NCbG9jayhRLGUpO2c9US5zcGxpY2UoMCx0KSxJLnNpZ0J5dGVzLT1pfXJldHVybiBuZXcgY3koZyxpKX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPWgobyhJLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiBBLl9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSxBfX1dKSxJfShzeSksRHk9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSShBKXt2YXIgQjtyZXR1cm4gQyh0aGlzLEkpLChCPWcuY2FsbCh0aGlzKSkuYmxvY2tTaXplPTE2LEIuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHN5LEEpLEIucmVzZXQoKSxCfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2gobyhJLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX2FwcGVuZChBKSx0aGlzLl9wcm9jZXNzKCksdGhpc319LHtrZXk6ImZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gQSYmdGhpcy5fYXBwZW5kKEEpLHRoaXMuX2RvRmluYWxpemUoKX19XSxbe2tleToiX2NyZWF0ZUhlbHBlciIsdmFsdWU6ZnVuY3Rpb24oQSl7cmV0dXJuIGZ1bmN0aW9uKGcsSSl7cmV0dXJuIG5ldyBBKEkpLmZpbmFsaXplKGcpfX19LHtrZXk6Il9jcmVhdGVIbWFjSGVscGVyIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZyxJKXtyZXR1cm4gbmV3IHd5KEEsSSkuZmluYWxpemUoZyl9fX1dKSxJfSh1eSksd3k9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSShBLEIpe3ZhciBRO0ModGhpcyxJKSxRPWcuY2FsbCh0aGlzKTt2YXIgRT1uZXcgQTtRLl9oYXNoZXI9RTt2YXIgdD1COyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9ZnkodCkpO3ZhciBpPUUuYmxvY2tTaXplLGU9NCppO3Quc2lnQnl0ZXM+ZSYmKHQ9RS5maW5hbGl6ZShCKSksdC5jbGFtcCgpO3ZhciBvPXQuY2xvbmUoKTtRLl9vS2V5PW87dmFyIHI9dC5jbG9uZSgpO1EuX2lLZXk9cjtmb3IodmFyIG49by53b3JkcyxhPXIud29yZHMscz0wO3M8aTtzKz0xKW5bc11ePTE1NDk1NTY4MjgsYVtzXV49OTA5NTIyNDg2O3JldHVybiBvLnNpZ0J5dGVzPWUsci5zaWdCeXRlcz1lLFEucmVzZXQoKSxRfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBPXRoaXMuX2hhc2hlcjtBLnJlc2V0KCksQS51cGRhdGUodGhpcy5faUtleSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKEEpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oQSl7dmFyIGc9dGhpcy5faGFzaGVyLEk9Zy5maW5hbGl6ZShBKTtyZXR1cm4gZy5yZXNldCgpLGcuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChJKSl9fV0pLEl9KHN5KSxseT17c3RyaW5naWZ5OmZ1bmN0aW9uKEEpe3ZhciBnPUEud29yZHMsST1BLnNpZ0J5dGVzLEI9dGhpcy5fbWFwO0EuY2xhbXAoKTtmb3IodmFyIFE9W10sQz0wO0M8STtDKz0zKWZvcih2YXIgRT0oZ1tDPj4+Ml0+Pj4yNC1DJTQqOCYyNTUpPDwxNnwoZ1tDKzE+Pj4yXT4+PjI0LShDKzEpJTQqOCYyNTUpPDw4fGdbQysyPj4+Ml0+Pj4yNC0oQysyKSU0KjgmMjU1LHQ9MDt0PDQmJkMrLjc1KnQ8STt0Kz0xKVEucHVzaChCLmNoYXJBdChFPj4+NiooMy10KSY2MykpO3ZhciBpPUIuY2hhckF0KDY0KTtpZihpKWZvcig7US5sZW5ndGglNDspUS5wdXNoKGkpO3JldHVybiBRLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihBKXt2YXIgZz1BLmxlbmd0aCxJPXRoaXMuX21hcCxCPXRoaXMuX3JldmVyc2VNYXA7aWYoIUIpe3RoaXMuX3JldmVyc2VNYXA9W10sQj10aGlzLl9yZXZlcnNlTWFwO2Zvcih2YXIgUT0wO1E8SS5sZW5ndGg7USs9MSlCW0kuY2hhckNvZGVBdChRKV09UX12YXIgQz1JLmNoYXJBdCg2NCk7aWYoQyl7dmFyIEU9QS5pbmRleE9mKEMpOy0xIT09RSYmKGc9RSl9cmV0dXJuIGZ1bmN0aW9uKEEsZyxJKXtmb3IodmFyIEI9W10sUT0wLEM9MDtDPGc7Qys9MSlpZihDJTQpe3ZhciBFPUlbQS5jaGFyQ29kZUF0KEMtMSldPDxDJTQqMnxJW0EuY2hhckNvZGVBdChDKV0+Pj42LUMlNCoyO0JbUT4+PjJdfD1FPDwyNC1RJTQqOCxRKz0xfXJldHVybiBjeS5jcmVhdGUoQixRKX0oQSxnLEIpfSxfbWFwOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSJ9LGR5PVtdLEZ5PTA7Rnk8NjQ7RnkrPTEpZHlbRnldPTQyOTQ5NjcyOTYqTWF0aC5hYnMoTWF0aC5zaW4oRnkrMSkpfDA7dmFyIEd5PWZ1bmN0aW9uKEEsZyxJLEIsUSxDLEUpe3ZhciB0PUErKGcmSXx+ZyZCKStRK0U7cmV0dXJuKHQ8PEN8dD4+PjMyLUMpK2d9LFJ5PWZ1bmN0aW9uKEEsZyxJLEIsUSxDLEUpe3ZhciB0PUErKGcmQnxJJn5CKStRK0U7cmV0dXJuKHQ8PEN8dD4+PjMyLUMpK2d9LFV5PWZ1bmN0aW9uKEEsZyxJLEIsUSxDLEUpe3ZhciB0PUErKGdeSV5CKStRK0U7cmV0dXJuKHQ8PEN8dD4+PjMyLUMpK2d9LGt5PWZ1bmN0aW9uKEEsZyxJLEIsUSxDLEUpe3ZhciB0PUErKEleKGd8fkIpKStRK0U7cmV0dXJuKHQ8PEN8dD4+PjMyLUMpK2d9LFN5PWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoKXtyZXR1cm4gQyh0aGlzLEkpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0KEksW3trZXk6Il9kb1Jlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGN5KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX19LHtrZXk6Il9kb1Byb2Nlc3NCbG9jayIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9QSxCPTA7QjwxNjtCKz0xKXt2YXIgUT1nK0IsQz1BW1FdO0lbUV09MTY3MTE5MzUmKEM8PDh8Qz4+PjI0KXw0Mjc4MjU1MzYwJihDPDwyNHxDPj4+OCl9dmFyIEU9dGhpcy5faGFzaC53b3Jkcyx0PUlbZyswXSxpPUlbZysxXSxlPUlbZysyXSxvPUlbZyszXSxyPUlbZys0XSxuPUlbZys1XSxhPUlbZys2XSxzPUlbZys3XSxjPUlbZys4XSxoPUlbZys5XSx5PUlbZysxMF0sZj1JW2crMTFdLHU9SVtnKzEyXSxEPUlbZysxM10sdz1JW2crMTRdLGw9SVtnKzE1XSxkPUVbMF0sRj1FWzFdLEc9RVsyXSxSPUVbM107ZD1HeShkLEYsRyxSLHQsNyxkeVswXSksUj1HeShSLGQsRixHLGksMTIsZHlbMV0pLEc9R3koRyxSLGQsRixlLDE3LGR5WzJdKSxGPUd5KEYsRyxSLGQsbywyMixkeVszXSksZD1HeShkLEYsRyxSLHIsNyxkeVs0XSksUj1HeShSLGQsRixHLG4sMTIsZHlbNV0pLEc9R3koRyxSLGQsRixhLDE3LGR5WzZdKSxGPUd5KEYsRyxSLGQscywyMixkeVs3XSksZD1HeShkLEYsRyxSLGMsNyxkeVs4XSksUj1HeShSLGQsRixHLGgsMTIsZHlbOV0pLEc9R3koRyxSLGQsRix5LDE3LGR5WzEwXSksRj1HeShGLEcsUixkLGYsMjIsZHlbMTFdKSxkPUd5KGQsRixHLFIsdSw3LGR5WzEyXSksUj1HeShSLGQsRixHLEQsMTIsZHlbMTNdKSxHPUd5KEcsUixkLEYsdywxNyxkeVsxNF0pLEY9R3koRixHLFIsZCxsLDIyLGR5WzE1XSksZD1SeShkLEYsRyxSLGksNSxkeVsxNl0pLFI9UnkoUixkLEYsRyxhLDksZHlbMTddKSxHPVJ5KEcsUixkLEYsZiwxNCxkeVsxOF0pLEY9UnkoRixHLFIsZCx0LDIwLGR5WzE5XSksZD1SeShkLEYsRyxSLG4sNSxkeVsyMF0pLFI9UnkoUixkLEYsRyx5LDksZHlbMjFdKSxHPVJ5KEcsUixkLEYsbCwxNCxkeVsyMl0pLEY9UnkoRixHLFIsZCxyLDIwLGR5WzIzXSksZD1SeShkLEYsRyxSLGgsNSxkeVsyNF0pLFI9UnkoUixkLEYsRyx3LDksZHlbMjVdKSxHPVJ5KEcsUixkLEYsbywxNCxkeVsyNl0pLEY9UnkoRixHLFIsZCxjLDIwLGR5WzI3XSksZD1SeShkLEYsRyxSLEQsNSxkeVsyOF0pLFI9UnkoUixkLEYsRyxlLDksZHlbMjldKSxHPVJ5KEcsUixkLEYscywxNCxkeVszMF0pLEY9UnkoRixHLFIsZCx1LDIwLGR5WzMxXSksZD1VeShkLEYsRyxSLG4sNCxkeVszMl0pLFI9VXkoUixkLEYsRyxjLDExLGR5WzMzXSksRz1VeShHLFIsZCxGLGYsMTYsZHlbMzRdKSxGPVV5KEYsRyxSLGQsdywyMyxkeVszNV0pLGQ9VXkoZCxGLEcsUixpLDQsZHlbMzZdKSxSPVV5KFIsZCxGLEcsciwxMSxkeVszN10pLEc9VXkoRyxSLGQsRixzLDE2LGR5WzM4XSksRj1VeShGLEcsUixkLHksMjMsZHlbMzldKSxkPVV5KGQsRixHLFIsRCw0LGR5WzQwXSksUj1VeShSLGQsRixHLHQsMTEsZHlbNDFdKSxHPVV5KEcsUixkLEYsbywxNixkeVs0Ml0pLEY9VXkoRixHLFIsZCxhLDIzLGR5WzQzXSksZD1VeShkLEYsRyxSLGgsNCxkeVs0NF0pLFI9VXkoUixkLEYsRyx1LDExLGR5WzQ1XSksRz1VeShHLFIsZCxGLGwsMTYsZHlbNDZdKSxGPVV5KEYsRyxSLGQsZSwyMyxkeVs0N10pLGQ9a3koZCxGLEcsUix0LDYsZHlbNDhdKSxSPWt5KFIsZCxGLEcscywxMCxkeVs0OV0pLEc9a3koRyxSLGQsRix3LDE1LGR5WzUwXSksRj1reShGLEcsUixkLG4sMjEsZHlbNTFdKSxkPWt5KGQsRixHLFIsdSw2LGR5WzUyXSksUj1reShSLGQsRixHLG8sMTAsZHlbNTNdKSxHPWt5KEcsUixkLEYseSwxNSxkeVs1NF0pLEY9a3koRixHLFIsZCxpLDIxLGR5WzU1XSksZD1reShkLEYsRyxSLGMsNixkeVs1Nl0pLFI9a3koUixkLEYsRyxsLDEwLGR5WzU3XSksRz1reShHLFIsZCxGLGEsMTUsZHlbNThdKSxGPWt5KEYsRyxSLGQsRCwyMSxkeVs1OV0pLGQ9a3koZCxGLEcsUixyLDYsZHlbNjBdKSxSPWt5KFIsZCxGLEcsZiwxMCxkeVs2MV0pLEc9a3koRyxSLGQsRixlLDE1LGR5WzYyXSksRj1reShGLEcsUixkLGgsMjEsZHlbNjNdKSxFWzBdPUVbMF0rZHwwLEVbMV09RVsxXStGfDAsRVsyXT1FWzJdK0d8MCxFWzNdPUVbM10rUnwwfX0se2tleToiX2RvRmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5fZGF0YSxnPUEud29yZHMsST04KnRoaXMuX25EYXRhQnl0ZXMsQj04KkEuc2lnQnl0ZXM7Z1tCPj4+NV18PTEyODw8MjQtQiUzMjt2YXIgUT1NYXRoLmZsb29yKEkvNDI5NDk2NzI5NiksQz1JO2dbMTUrKEIrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKFE8PDh8UT4+PjI0KXw0Mjc4MjU1MzYwJihRPDwyNHxRPj4+OCksZ1sxNCsoQis2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoQzw8OHxDPj4+MjQpfDQyNzgyNTUzNjAmKEM8PDI0fEM+Pj44KSxBLnNpZ0J5dGVzPTQqKGcubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIEU9dGhpcy5faGFzaCx0PUUud29yZHMsaT0wO2k8NDtpKz0xKXt2YXIgZT10W2ldO3RbaV09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCl9cmV0dXJuIEV9fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQT1oKG8oSS5wcm90b3R5cGUpLCJjbG9uZSIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gQS5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksQX19XSksSX0oRHkpO0R5Ll9jcmVhdGVIZWxwZXIoU3kpLER5Ll9jcmVhdGVIbWFjSGVscGVyKFN5KTt2YXIgcHk9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSShBKXt2YXIgQjtyZXR1cm4gQyh0aGlzLEkpLChCPWcuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHN5LHtrZXlTaXplOjQsaGFzaGVyOlN5LGl0ZXJhdGlvbnM6MX0sQSksQn1yZXR1cm4gdChJLFt7a2V5OiJjb21wdXRlIix2YWx1ZTpmdW5jdGlvbihBLGcpe2Zvcih2YXIgSSxCPXRoaXMuY2ZnLFE9Qi5oYXNoZXIuY3JlYXRlKCksQz1jeS5jcmVhdGUoKSxFPUMud29yZHMsdD1CLmtleVNpemUsaT1CLml0ZXJhdGlvbnM7RS5sZW5ndGg8dDspe0kmJlEudXBkYXRlKEkpLEk9US51cGRhdGUoQSkuZmluYWxpemUoZyksUS5yZXNldCgpO2Zvcih2YXIgZT0xO2U8aTtlKz0xKUk9US5maW5hbGl6ZShJKSxRLnJlc2V0KCk7Qy5jb25jYXQoSSl9cmV0dXJuIEMuc2lnQnl0ZXM9NCp0LEN9fV0pLEl9KHN5KSxOeT1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKEEsQixRKXt2YXIgRTtyZXR1cm4gQyh0aGlzLEkpLChFPWcuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHN5LFEpLEUuX3hmb3JtTW9kZT1BLEUuX2tleT1CLEUucmVzZXQoKSxFfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe2gobyhJLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InByb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9hcHBlbmQoQSksdGhpcy5fcHJvY2VzcygpfX0se2tleToiZmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBBJiZ0aGlzLl9hcHBlbmQoQSksdGhpcy5fZG9GaW5hbGl6ZSgpfX1dLFt7a2V5OiJjcmVhdGVFbmNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLEEsZyl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0RFQ19YRk9STV9NT0RFLEEsZyl9fSx7a2V5OiJfY3JlYXRlSGVscGVyIix2YWx1ZTpmdW5jdGlvbihBKXt2YXIgZz1mdW5jdGlvbihBKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEE/cXk6bXl9O3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKEksQixRKXtyZXR1cm4gZyhCKS5lbmNyeXB0KEEsSSxCLFEpfSxkZWNyeXB0OmZ1bmN0aW9uKEksQixRKXtyZXR1cm4gZyhCKS5kZWNyeXB0KEEsSSxCLFEpfX19fV0pLEl9KHV5KTtOeS5fRU5DX1hGT1JNX01PREU9MSxOeS5fREVDX1hGT1JNX01PREU9MixOeS5rZXlTaXplPTQsTnkuaXZTaXplPTQ7dmFyIE15PWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoQSxCKXt2YXIgUTtyZXR1cm4gQyh0aGlzLEkpLChRPWcuY2FsbCh0aGlzKSkuX2NpcGhlcj1BLFEuX2l2PUIsUX1yZXR1cm4gdChJLG51bGwsW3trZXk6ImNyZWF0ZUVuY3J5cHRvciIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKEEsZyl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKEEsZyl7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZShBLGcpfX1dKSxJfShzeSk7ZnVuY3Rpb24gWXkoQSxnLEkpe3ZhciBCLFE9QSxDPXRoaXMuX2l2O0M/KEI9Qyx0aGlzLl9pdj12b2lkIDApOkI9dGhpcy5fcHJldkJsb2NrO2Zvcih2YXIgRT0wO0U8STtFKz0xKVFbZytFXV49QltFXX12YXIgSHk9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBDKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSl9KE15KTtIeS5FbmNyeXB0b3I9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBDKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSxbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPXRoaXMuX2NpcGhlcixCPUkuYmxvY2tTaXplO1l5LmNhbGwodGhpcyxBLGcsQiksSS5lbmNyeXB0QmxvY2soQSxnKSx0aGlzLl9wcmV2QmxvY2s9QS5zbGljZShnLGcrQil9fV0pLEl9KEh5KSxIeS5EZWNyeXB0b3I9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBDKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSxbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPXRoaXMuX2NpcGhlcixCPUkuYmxvY2tTaXplLFE9QS5zbGljZShnLGcrQik7SS5kZWNyeXB0QmxvY2soQSxnKSxZeS5jYWxsKHRoaXMsQSxnLEIpLHRoaXMuX3ByZXZCbG9jaz1RfX1dKSxJfShIeSk7dmFyIHZ5PXtwYWQ6ZnVuY3Rpb24oQSxnKXtmb3IodmFyIEk9NCpnLEI9SS1BLnNpZ0J5dGVzJUksUT1CPDwyNHxCPDwxNnxCPDw4fEIsQz1bXSxFPTA7RTxCO0UrPTQpQy5wdXNoKFEpO3ZhciB0PWN5LmNyZWF0ZShDLEIpO0EuY29uY2F0KHQpfSx1bnBhZDpmdW5jdGlvbihBKXt2YXIgZz1BLEk9MjU1Jmcud29yZHNbZy5zaWdCeXRlcy0xPj4+Ml07Zy5zaWdCeXRlcy09SX19LEx5PWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoQSxCLFEpe3ZhciBFO3JldHVybiBDKHRoaXMsSSksKEU9Zy5jYWxsKHRoaXMsQSxCLE9iamVjdC5hc3NpZ24oe21vZGU6SHkscGFkZGluZzp2eX0sUSkpKS5ibG9ja1NpemU9NCxFfXJldHVybiB0KEksW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBO2gobyhJLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpO3ZhciBnPXRoaXMuY2ZnLEI9Zy5pdixRPWcubW9kZTt0aGlzLl94Zm9ybU1vZGU9PT10aGlzLmNvbnN0cnVjdG9yLl9FTkNfWEZPUk1fTU9ERT9BPVEuY3JlYXRlRW5jcnlwdG9yOihBPVEuY3JlYXRlRGVjcnlwdG9yLHRoaXMuX21pbkJ1ZmZlclNpemU9MSksdGhpcy5fbW9kZT1BLmNhbGwoUSx0aGlzLEImJkIud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPUF9fSx7a2V5OiJfZG9Qcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2soQSxnKX19LHtrZXk6Il9kb0ZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBBLGc9dGhpcy5jZmcucGFkZGluZztyZXR1cm4gdGhpcy5feGZvcm1Nb2RlPT09dGhpcy5jb25zdHJ1Y3Rvci5fRU5DX1hGT1JNX01PREU/KGcucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpLEE9dGhpcy5fcHJvY2VzcyghMCkpOihBPXRoaXMuX3Byb2Nlc3MoITApLGcudW5wYWQoQSkpLEF9fV0pLEl9KE55KSxKeT1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKEEpe3ZhciBCO3JldHVybiBDKHRoaXMsSSksKEI9Zy5jYWxsKHRoaXMpKS5taXhJbihBKSxCfXJldHVybiB0KEksW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbihBKXtyZXR1cm4oQXx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19XSksSX0oc3kpLEt5PXtzdHJpbmdpZnk6ZnVuY3Rpb24oQSl7dmFyIGc9QS5jaXBoZXJ0ZXh0LEk9QS5zYWx0O3JldHVybihJP2N5LmNyZWF0ZShbMTM5ODg5MzY4NCwxNzAxMDc2ODMxXSkuY29uY2F0KEkpLmNvbmNhdChnKTpnKS50b1N0cmluZyhseSl9LHBhcnNlOmZ1bmN0aW9uKEEpe3ZhciBnLEk9bHkucGFyc2UoQSksQj1JLndvcmRzO3JldHVybiAxMzk4ODkzNjg0PT09QlswXSYmMTcwMTA3NjgzMT09PUJbMV0mJihnPWN5LmNyZWF0ZShCLnNsaWNlKDIsNCkpLEIuc3BsaWNlKDAsNCksSS5zaWdCeXRlcy09MTYpLEp5LmNyZWF0ZSh7Y2lwaGVydGV4dDpJLHNhbHQ6Z30pfX0sbXk9ZnVuY3Rpb24oQSl7ZShJLEEpO3ZhciBnPWMoSSk7ZnVuY3Rpb24gSSgpe3JldHVybiBDKHRoaXMsSSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHQoSSxudWxsLFt7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1PYmplY3QuYXNzaWduKG5ldyBzeSx0aGlzLmNmZyxCKSxDPUEuY3JlYXRlRW5jcnlwdG9yKEksUSksRT1DLmZpbmFsaXplKGcpLHQ9Qy5jZmc7cmV0dXJuIEp5LmNyZWF0ZSh7Y2lwaGVydGV4dDpFLGtleTpJLGl2OnQuaXYsYWxnb3JpdGhtOkEsbW9kZTp0Lm1vZGUscGFkZGluZzp0LnBhZGRpbmcsYmxvY2tTaXplOkMuYmxvY2tTaXplLGZvcm1hdHRlcjpRLmZvcm1hdH0pfX0se2tleToiZGVjcnlwdCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9ZyxDPU9iamVjdC5hc3NpZ24obmV3IHN5LHRoaXMuY2ZnLEIpO3JldHVybiBRPXRoaXMuX3BhcnNlKFEsQy5mb3JtYXQpLEEuY3JlYXRlRGVjcnlwdG9yKEksQykuZmluYWxpemUoUS5jaXBoZXJ0ZXh0KX19LHtrZXk6Il9wYXJzZSIsdmFsdWU6ZnVuY3Rpb24oQSxnKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIEE/Zy5wYXJzZShBLHRoaXMpOkF9fV0pLEl9KHN5KTtteS5jZmc9T2JqZWN0LmFzc2lnbihuZXcgc3kse2Zvcm1hdDpLeX0pO3ZhciB4eT17ZXhlY3V0ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1CO1F8fChRPWN5LnJhbmRvbSg4KSk7dmFyIEM9cHkuY3JlYXRlKHtrZXlTaXplOmcrSX0pLmNvbXB1dGUoQSxRKSxFPWN5LmNyZWF0ZShDLndvcmRzLnNsaWNlKGcpLDQqSSk7cmV0dXJuIEMuc2lnQnl0ZXM9NCpnLEp5LmNyZWF0ZSh7a2V5OkMsaXY6RSxzYWx0OlF9KX19LHF5PWZ1bmN0aW9uKEEpe2UoSSxBKTt2YXIgZz1jKEkpO2Z1bmN0aW9uIEkoKXtyZXR1cm4gQyh0aGlzLEkpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0KEksbnVsbCxbe2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQil7dmFyIFE9T2JqZWN0LmFzc2lnbihuZXcgc3ksdGhpcy5jZmcsQiksQz1RLmtkZi5leGVjdXRlKEksQS5rZXlTaXplLEEuaXZTaXplKTtRLml2PUMuaXY7dmFyIEU9bXkuZW5jcnlwdC5jYWxsKHRoaXMsQSxnLEMua2V5LFEpO3JldHVybiBFLm1peEluKEMpLEV9fSx7a2V5OiJkZWNyeXB0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCKXt2YXIgUT1nLEM9T2JqZWN0LmFzc2lnbihuZXcgc3ksdGhpcy5jZmcsQik7UT10aGlzLl9wYXJzZShRLEMuZm9ybWF0KTt2YXIgRT1DLmtkZi5leGVjdXRlKEksQS5rZXlTaXplLEEuaXZTaXplLFEuc2FsdCk7cmV0dXJuIEMuaXY9RS5pdixteS5kZWNyeXB0LmNhbGwodGhpcyxBLFEsRS5rZXksQyl9fV0pLEl9KG15KTtxeS5jZmc9T2JqZWN0LmFzc2lnbihteS5jZmcse2tkZjp4eX0pO2Zvcih2YXIgYnk9W10sVHk9W10sT3k9W10sUHk9W10sV3k9W10sWnk9W10sank9W10sWHk9W10sVnk9W10senk9W10sX3k9W10sJHk9MDskeTwyNTY7JHkrPTEpX3lbJHldPSR5PDEyOD8keTw8MTokeTw8MV4yODM7Zm9yKHZhciBBZj0wLGdmPTAsSWY9MDtJZjwyNTY7SWYrPTEpe3ZhciBCZj1nZl5nZjw8MV5nZjw8Ml5nZjw8M15nZjw8NDtCZj1CZj4+PjheMjU1JkJmXjk5LGJ5W0FmXT1CZixUeVtCZl09QWY7dmFyIFFmPV95W0FmXSxDZj1feVtRZl0sRWY9X3lbQ2ZdLHRmPTI1NypfeVtCZl1eMTY4NDMwMDgqQmY7T3lbQWZdPXRmPDwyNHx0Zj4+PjgsUHlbQWZdPXRmPDwxNnx0Zj4+PjE2LFd5W0FmXT10Zjw8OHx0Zj4+PjI0LFp5W0FmXT10Zix0Zj0xNjg0MzAwOSpFZl42NTUzNypDZl4yNTcqUWZeMTY4NDMwMDgqQWYsanlbQmZdPXRmPDwyNHx0Zj4+PjgsWHlbQmZdPXRmPDwxNnx0Zj4+PjE2LFZ5W0JmXT10Zjw8OHx0Zj4+PjI0LHp5W0JmXT10ZixBZj8oQWY9UWZeX3lbX3lbX3lbRWZeUWZdXV0sZ2ZePV95W195W2dmXV0pOkFmPWdmPTF9dmFyIGVmPVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxvZj1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKCl7cmV0dXJuIEModGhpcyxJKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdChJLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgQTtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7dGhpcy5fa2V5UHJpb3JSZXNldD10aGlzLl9rZXk7dmFyIGc9dGhpcy5fa2V5UHJpb3JSZXNldCxJPWcud29yZHMsQj1nLnNpZ0J5dGVzLzQ7dGhpcy5fblJvdW5kcz1CKzY7dmFyIFE9NCoodGhpcy5fblJvdW5kcysxKTt0aGlzLl9rZXlTY2hlZHVsZT1bXTtmb3IodmFyIEM9dGhpcy5fa2V5U2NoZWR1bGUsRT0wO0U8UTtFKz0xKUU8Qj9DW0VdPUlbRV06KEE9Q1tFLTFdLEUlQj9CPjYmJkUlQj09NCYmKEE9YnlbQT4+PjI0XTw8MjR8YnlbQT4+PjE2JjI1NV08PDE2fGJ5W0E+Pj44JjI1NV08PDh8YnlbMjU1JkFdKTooQT1ieVsoQT1BPDw4fEE+Pj4yNCk+Pj4yNF08PDI0fGJ5W0E+Pj4xNiYyNTVdPDwxNnxieVtBPj4+OCYyNTVdPDw4fGJ5WzI1NSZBXSxBXj1lZltFL0J8MF08PDI0KSxDW0VdPUNbRS1CXV5BKTt0aGlzLl9pbnZLZXlTY2hlZHVsZT1bXTtmb3IodmFyIHQ9dGhpcy5faW52S2V5U2NoZWR1bGUsaT0wO2k8UTtpKz0xKXt2YXIgZT1RLWk7QT1pJTQ/Q1tlXTpDW2UtNF0sdFtpXT1pPDR8fGU8PTQ/QTpqeVtieVtBPj4+MjRdXV5YeVtieVtBPj4+MTYmMjU1XV1eVnlbYnlbQT4+PjgmMjU1XV1eenlbYnlbMjU1JkFdXX19fX0se2tleToiZW5jcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3RoaXMuX2RvQ3J5cHRCbG9jayhBLGcsdGhpcy5fa2V5U2NoZWR1bGUsT3ksUHksV3ksWnksYnkpfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbihBLGcpe3ZhciBJPUEsQj1JW2crMV07SVtnKzFdPUlbZyszXSxJW2crM109Qix0aGlzLl9kb0NyeXB0QmxvY2soSSxnLHRoaXMuX2ludktleVNjaGVkdWxlLGp5LFh5LFZ5LHp5LFR5KSxCPUlbZysxXSxJW2crMV09SVtnKzNdLElbZyszXT1CfX0se2tleToiX2RvQ3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQixRLEMsRSx0KXtmb3IodmFyIGk9QSxlPXRoaXMuX25Sb3VuZHMsbz1pW2ddXklbMF0scj1pW2crMV1eSVsxXSxuPWlbZysyXV5JWzJdLGE9aVtnKzNdXklbM10scz00LGM9MTtjPGU7Yys9MSl7dmFyIGg9QltvPj4+MjRdXlFbcj4+PjE2JjI1NV1eQ1tuPj4+OCYyNTVdXkVbMjU1JmFdXklbc107cys9MTt2YXIgeT1CW3I+Pj4yNF1eUVtuPj4+MTYmMjU1XV5DW2E+Pj44JjI1NV1eRVsyNTUmb11eSVtzXTtzKz0xO3ZhciBmPUJbbj4+PjI0XV5RW2E+Pj4xNiYyNTVdXkNbbz4+PjgmMjU1XV5FWzI1NSZyXV5JW3NdO3MrPTE7dmFyIHU9QlthPj4+MjRdXlFbbz4+PjE2JjI1NV1eQ1tyPj4+OCYyNTVdXkVbMjU1Jm5dXklbc107cys9MSxvPWgscj15LG49ZixhPXV9dmFyIEQ9KHRbbz4+PjI0XTw8MjR8dFtyPj4+MTYmMjU1XTw8MTZ8dFtuPj4+OCYyNTVdPDw4fHRbMjU1JmFdKV5JW3NdO3MrPTE7dmFyIHc9KHRbcj4+PjI0XTw8MjR8dFtuPj4+MTYmMjU1XTw8MTZ8dFthPj4+OCYyNTVdPDw4fHRbMjU1Jm9dKV5JW3NdO3MrPTE7dmFyIGw9KHRbbj4+PjI0XTw8MjR8dFthPj4+MTYmMjU1XTw8MTZ8dFtvPj4+OCYyNTVdPDw4fHRbMjU1JnJdKV5JW3NdO3MrPTE7dmFyIGQ9KHRbYT4+PjI0XTw8MjR8dFtvPj4+MTYmMjU1XTw8MTZ8dFtyPj4+OCYyNTVdPDw4fHRbMjU1Jm5dKV5JW3NdO3MrPTEsaVtnXT1ELGlbZysxXT13LGlbZysyXT1sLGlbZyszXT1kfX1dKSxJfShMeSk7b2Yua2V5U2l6ZT04O3ZhciByZj1MeS5fY3JlYXRlSGVscGVyKG9mKSxuZj1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKCl7cmV0dXJuIEModGhpcyxJKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdChJKX0oTXkpO25mLkVuY3J5cHRvcj1mdW5jdGlvbihBKXtlKEksQSk7dmFyIGc9YyhJKTtmdW5jdGlvbiBJKCl7cmV0dXJuIEModGhpcyxJKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdChJLFt7a2V5OiJwcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKEEsZyl7dmFyIEk9QSxCPXRoaXMuX2NpcGhlcixRPUIuYmxvY2tTaXplLEM9dGhpcy5faXYsRT10aGlzLl9jb3VudGVyO0MmJih0aGlzLl9jb3VudGVyPUMuc2xpY2UoMCksRT10aGlzLl9jb3VudGVyLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHQ9RS5zbGljZSgwKTtCLmVuY3J5cHRCbG9jayh0LDApLEVbUS0xXT1FW1EtMV0rMXwwO2Zvcih2YXIgaT0wO2k8UTtpKz0xKUlbZytpXV49dFtpXX19XSksSX0obmYpLG5mLkRlY3J5cHRvcj1uZi5FbmNyeXB0b3I7dmFyIGFmPXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sc2Y9e2RlY3J5cHRXb3JkQXJyYXk6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCPWh5LnBhcnNlKGcpLFE9aHkucGFyc2UobWgoSSkpLEM9Y3kuY3JlYXRlKG5ldyBVaW50OEFycmF5KEEpKSxFPXJmLmRlY3J5cHQoSnkuY3JlYXRlKHtjaXBoZXJ0ZXh0OkN9KSxCLHtpdjpRLG1vZGU6bmYscGFkZGluZzphZn0pO3JldHVybiBzZi53b3JkQXJyYXlUb1VpbnQ4QXJyYXkoRSl9LHdvcmRBcnJheVRvVWludDhBcnJheTpmdW5jdGlvbihBKXtmb3IodmFyIGc9QS5zaWdCeXRlcyxJPUEud29yZHMsQj1uZXcgVWludDhBcnJheShnKSxRPTAsQz0wO1EhPT1nOyl7dmFyIEU9SVtDKytdO2lmKEJbUSsrXT0oNDI3ODE5MDA4MCZFKT4+PjI0LFE9PT1nKWJyZWFrO2lmKEJbUSsrXT0oMTY3MTE2ODAmRSk+Pj4xNixRPT09ZylicmVhaztpZihCW1ErK109KDY1MjgwJkUpPj4+OCxRPT09ZylicmVhaztCW1ErK109MjU1JkV9cmV0dXJuIEJ9LGRlY29kZXJBRVNDVFJEYXRhOmZ1bmN0aW9uKEEsZyxJKXtpZihBLnZpZGVvU2VuYyl7dmFyIEI9QS5raWRWYWx1ZSxRPUEudmlkZW9TZW5jO0Euc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihnLEMpe3ZhciBFPVFbQ10sdD1nLmRhdGEsaT1bXSxlPVtdLG89RS5Jbml0aWFsaXphdGlvblZlY3RvcjtpZihFLnN1YnNhbXBsZXMmJkUuc3Vic2FtcGxlcy5sZW5ndGgpRS5zdWJzYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnPUEuQnl0ZXNPZkNsZWFyRGF0YStBLkJ5dGVzT2ZQcm90ZWN0ZWREYXRhLEk9dC5zbGljZSgwLGcpO2kucHVzaChJLnNsaWNlKDAsQS5CeXRlc09mQ2xlYXJEYXRhKSksZS5wdXNoKEkuc2xpY2UoQS5CeXRlc09mQ2xlYXJEYXRhKSksdD10LnNsaWNlKGcpfSkpO2Vsc2V7dmFyIHI9Zy5zaXplO2kucHVzaCh0LnNsaWNlKDAsMCkpLGUucHVzaCh0LnNsaWNlKDAscikpLHQ9dC5zbGljZShyKX12YXIgbj1uZXcgVmg7bi53cml0ZS5hcHBseShuLGUpO3ZhciBhPUk/SShuLmJ1ZmZlcixCLG8pOnNmLmRlY3J5cHRXb3JkQXJyYXkobi5idWZmZXIsQixvKSxzPW5ldyBWaDtpLmZvckVhY2goKGZ1bmN0aW9uKEEsZyl7dmFyIEk9ZVtnXS5sZW5ndGgsQj1hLnNsaWNlKDAsSSk7cy53cml0ZShBKSxzLndyaXRlKEIpLGE9YS5zbGljZShJKX0pKSxBLnNhbXBsZXNbQ10uZGF0YT1zLmJ1ZmZlcn0pKX1pZihnLmF1ZGlvU2VuYyl7dmFyIEM9Zy5raWRWYWx1ZSxFPWcuYXVkaW9TZW5jO2cuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbihBLEIpe3ZhciBRPUVbQl0sdD1JP0koQS5kYXRhLEMsUS5Jbml0aWFsaXphdGlvblZlY3Rvcik6c2YuZGVjcnlwdFdvcmRBcnJheShBLmRhdGEsQyxRLkluaXRpYWxpemF0aW9uVmVjdG9yKTtnLnNhbXBsZXNbQl0uZGF0YT10fSkpfX19LGNmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShnLEksQixRKXt2YXIgQz10aGlzO1FoKHRoaXMsQSksdGgodGhpcywiX3ZpZGVvU2FtcGxlcyIsW10pLHRoKHRoaXMsIl9hdWRpb1NhbXBsZXMiLFtdKSx0aCh0aGlzLCJfbGFzdFJlbWFpbkJ1ZmZlciIsW10pLHRoKHRoaXMsIl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MiLDApLHRoaXMudmlkZW9UcmFjaz1uZXcgbGgsdGhpcy5hdWRpb1RyYWNrPW5ldyBkaCx0aGlzLm1ldGFkYXRhVHJhY2s9Qnx8bmV3IFJoLHRoaXMubG9nPW5ldyAkaCgiTVA0RGVtdXhlciIsIVF8fCFRLm9wZW5Mb2d8fCFRLm9wZW5Mb2cpLGcmJmcuZm9yRWFjaCgoZnVuY3Rpb24oQSl7dmFyIGc7KGc9Qy5fdmlkZW9TYW1wbGVzKS5wdXNoLmFwcGx5KGcsZWgoQS5mcmFtZXMpKX0pKSxJJiZJLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBnOyhnPUMuX2F1ZGlvU2FtcGxlcykucHVzaC5hcHBseShnLGVoKEEuZnJhbWVzKSl9KSl9cmV0dXJuIEVoKEEsW3trZXk6InBhcnNlU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oQSl7aWYoIUEpdGhyb3cgbmV3IEVycm9yKCJtb292IGlzIHJlcXVpcmVkIik7aWYodGhpcy52aWRlb1RyYWNrLmNvZGVjfHx0aGlzLmF1ZGlvVHJhY2suY29kZWN8fChPaC5tb292VG9UcmFjayhBLHRoaXMudmlkZW9UcmFjayx0aGlzLmF1ZGlvVHJhY2spLHRoaXMudmlkZW9TZW5jPXRoaXMudmlkZW9UcmFjay52aWRlb1NlbmMsdGhpcy5hdWRpb1NlbmM9dGhpcy5hdWRpb1RyYWNrLmF1ZGlvU2VuYyksIXRoaXMuX2F1ZGlvU2FtcGxlcy5sZW5ndGgmJiF0aGlzLl92aWRlb1NhbXBsZXMubGVuZ3RoKXt2YXIgZz1PaC5tb292VG9TYW1wbGVzKEEpO2lmKCFnKXRocm93IG5ldyBFcnJvcigiY2Fubm90IHBhcnNlIHNhbXBsZXMgZnJvbSBtb292IGJveCIpO3RoaXMuX3ZpZGVvU2FtcGxlcz1nLnZpZGVvU2FtcGxlc3x8W10sdGhpcy5fYXVkaW9TYW1wbGVzPWcuYXVkaW9TYW1wbGVzfHxbXX19fSx7a2V5OiJkZW11eCIsdmFsdWU6ZnVuY3Rpb24oQSxnLEksQixRKXt0aGlzLnBhcnNlU2FtcGxlcyhRKTt2YXIgQyxFLHQsaT10aGlzLnZpZGVvVHJhY2ssZT10aGlzLmF1ZGlvVHJhY2s7aWYoaS5zYW1wbGVzPVtdLGUuc2FtcGxlcz1bXSxJKXtmb3IodmFyIG8scj0wLG49SVswXSxhPUlbMV07bjw9YTtuKyspe2lmKCEoQz10aGlzLl92aWRlb1NhbXBsZXNbbl0pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdChuKSk7dD1DLm9mZnNldC1nLEU9QS5zdWJhcnJheSh0LHQrQy5zaXplKSwobz1uZXcgRmgoIm51bWJlciI9PXR5cGVvZiBDLnB0cz9DLnB0czpDLmR0cyxDLmR0cykpLmR1cmF0aW9uPUMuZHVyYXRpb24sby5nb3BJZD1DLmdvcElkLEMua2V5ZnJhbWUmJm8uc2V0VG9LZXlmcmFtZSgpO2Zvcih2YXIgcz0wLGM9RS5sZW5ndGgtMTtzPGM7KXI9dmgoRSxzKSxzKz00LG8udW5pdHMucHVzaChFLnN1YmFycmF5KHMscytyKSkscys9cjtpLnNhbXBsZXMucHVzaChvKX1pLmJhc2VNZWRpYURlY29kZVRpbWU9aS5zYW1wbGVzWzBdLmR0c31pZihCKXtmb3IodmFyIGg9QlswXSx5PUJbMV07aDw9eTtoKyspe2lmKCEoQz10aGlzLl9hdWRpb1NhbXBsZXNbaF0pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdChoKSk7dD1DLm9mZnNldC1nLEU9QS5zdWJhcnJheSh0LHQrQy5zaXplKSxlLnNhbXBsZXMucHVzaChuZXcgR2goQy5kdHMsRSxDLmR1cmF0aW9uKSl9ZS5iYXNlTWVkaWFEZWNvZGVUaW1lPWUuc2FtcGxlc1swXS5kdHN9cmV0dXJue3ZpZGVvVHJhY2s6aSxhdWRpb1RyYWNrOmUsbWV0YWRhdGFUcmFjazp0aGlzLm1ldGFkYXRhVHJhY2t9fX0se2tleToiZGVtdXhQYXJ0Iix2YWx1ZTpmdW5jdGlvbihBLGcsSSxCLFEsQyxFLHQpe2lmKHRoaXMucGFyc2VTYW1wbGVzKFEpLHRoaXMudmlkZW9UcmFjay51c2VFTUU9Qyx0aGlzLmF1ZGlvVHJhY2sudXNlRU1FPUMsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlciYmdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlci5ieXRlTGVuZ3RoPjAmJmc+dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zJiZnPD10aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MrdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlci5ieXRlTGVuZ3RoKWZvcih2YXIgaT0wO2k8MjA7KXRyeXt2YXIgZT10aGlzLl9sYXN0UmVtYWluQnVmZmVyLnN1YmFycmF5KDAsZy10aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MpLG89bmV3IFVpbnQ4QXJyYXkoQS5ieXRlTGVuZ3RoK2UuYnl0ZUxlbmd0aCk7by5zZXQoZSwwKSxvLnNldChuZXcgVWludDhBcnJheShBKSxlLmJ5dGVMZW5ndGgpLEE9byxnLT1lLmJ5dGVMZW5ndGgsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcj1udWxsLHRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz0wO2JyZWFrfWNhdGNoKFUpe2lmKCEoaTwyMCkpdGhyb3cgbmV3IEVycm9yKCJuZXcgVWludDhBcnJheSBlcnJvcjosIitVLmVycm9yTWVzc2FnZSk7aSsrfXZhciByLG4sYSxzPXRoaXMudmlkZW9UcmFjayxjPXRoaXMuYXVkaW9UcmFjaztzLnNhbXBsZXM9W10sYy5zYW1wbGVzPVtdLHMudmlkZW9TZW5jPW51bGwsYy5hdWRpb1NlbmM9bnVsbDt2YXIgaD0wLHk9MDtpZih0aGlzLl92aWRlb1NhbXBsZXMubGVuZ3RoPjAmJkkubGVuZ3RoPjApe2Zvcih2YXIgZix1PUEuYnl0ZUxlbmd0aCtnLEQ9SVswXTtEPD1JWzFdO0QrKyl7aWYoIShyPXRoaXMuX3ZpZGVvU2FtcGxlc1tEXSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KEQpKTtyLm9mZnNldD49ZyYmci5vZmZzZXQrci5zaXplPD11JiYoaD0oYT1yLm9mZnNldC1nKStyLnNpemUsbj1BLnN1YmFycmF5KGEsaCksKGY9bmV3IEZoKCJudW1iZXIiPT10eXBlb2Ygci5wdHM/ci5wdHM6ci5kdHMsci5kdHMpKS5kdXJhdGlvbj1yLmR1cmF0aW9uLGYuZ29wSWQ9ci5nb3BJZCxmLnNhbXBsZU9mZnNldD1yLmluZGV4LHIua2V5ZnJhbWUmJmYuc2V0VG9LZXlmcmFtZSgpLGYuZGF0YT1uLGYuc2l6ZT1yLnNpemUscy5zYW1wbGVzLnB1c2goZikpfXMuc2FtcGxlcy5sZW5ndGg+MCYmKHMuZ29wSWQ9cy5zYW1wbGVzWzBdLmdvcElkLHMuYmFzZU1lZGlhRGVjb2RlVGltZT1zLnNhbXBsZXNbMF0uZHRzLHMuc3RhcnRQdHM9cy5zYW1wbGVzWzBdLnB0cy9zLnRpbWVzY2FsZSxzLmVuZFB0cz1zLnNhbXBsZXNbcy5zYW1wbGVzLmxlbmd0aC0xXS5wdHMvcy50aW1lc2NhbGUsdGhpcy52aWRlb1NlbmMmJihzLnZpZGVvU2VuYz10aGlzLnZpZGVvU2VuYy5zbGljZShzLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0LHMuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQrcy5zYW1wbGVzLmxlbmd0aCkscy5raWRWYWx1ZT1FKSl9aWYodGhpcy5fYXVkaW9TYW1wbGVzLmxlbmd0aD4wJiZCLmxlbmd0aD4wKXtmb3IodmFyIHc9QlswXTt3PD1CWzFdO3crKyl7aWYoIShyPXRoaXMuX2F1ZGlvU2FtcGxlc1t3XSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KHcpKTtyLm9mZnNldD49ZyYmci5vZmZzZXQrci5zaXplPD1BLmJ5dGVMZW5ndGgrZyYmKHk9KGE9ci5vZmZzZXQtZykrci5zaXplLG49QS5zdWJhcnJheShhLHkpLGMuc2FtcGxlcy5wdXNoKG5ldyBHaChyLmR0cyxuLHIuZHVyYXRpb24sci5pbmRleCkpKX1jLnNhbXBsZXMubGVuZ3RoPjAmJihjLmdvcElkPWMuc2FtcGxlc1swXS5nb3BJZHx8cy5nb3BJZCxjLmJhc2VNZWRpYURlY29kZVRpbWU9Yy5zYW1wbGVzWzBdLmR0cyxjLnN0YXJ0UHRzPWMuc2FtcGxlc1swXS5wdHMvYy50aW1lc2NhbGUsYy5lbmRQdHM9Yy5zYW1wbGVzW2Muc2FtcGxlcy5sZW5ndGgtMV0ucHRzL2MudGltZXNjYWxlLHRoaXMuYXVkaW9TZW5jJiYoYy5hdWRpb1NlbmM9dGhpcy5hdWRpb1NlbmMuc2xpY2UoYy5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCxjLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0K2Muc2FtcGxlcy5sZW5ndGgpLGMua2lkVmFsdWU9RSkpfXRoaXMuZGVjb2RlckRhdGEocyxjLHQpO2Zvcih2YXIgbD0wLGQ9MDtkPHMuc2FtcGxlcy5sZW5ndGg7ZCsrKWZvcih2YXIgRj0wLEc9cy5zYW1wbGVzW2RdLmRhdGEsUj1HLmxlbmd0aC0xO0Y8UjspbD12aChHLEYpLEYrPTQscy5zYW1wbGVzW2RdLnVuaXRzLnB1c2goRy5zdWJhcnJheShGLEYrbCkpLEYrPWw7cmV0dXJuIHRoaXMuX2xhc3RSZW1haW5CdWZmZXI9QS5zdWJhcnJheShNYXRoLm1heChoLHkpKSx0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg+MD90aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3M9ZytBLmJ5dGVMZW5ndGgtdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlci5ieXRlTGVuZ3RoOnRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz0wLHt2aWRlb1RyYWNrOnMsYXVkaW9UcmFjazpjLG1ldGFkYXRhVHJhY2s6dGhpcy5tZXRhZGF0YVRyYWNrfX19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3ZpZGVvU2FtcGxlcz1bXSx0aGlzLl9hdWRpb1NhbXBsZXM9W10sdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcj1udWxsLHRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz0wLHRoaXMudmlkZW9UcmFjay5yZXNldCgpLHRoaXMuYXVkaW9UcmFjay5yZXNldCgpLHRoaXMubWV0YWRhdGFUcmFjay5yZXNldCgpfX0se2tleToiZGVjb2RlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKEEsZyxJKXtBLnVzZUVNRXx8Zy51c2VFTUV8fHNmLmRlY29kZXJBRVNDVFJEYXRhKEEsZyxJKX19XSxbe2tleToicHJvYmUiLHZhbHVlOmZ1bmN0aW9uKEEpe3JldHVybiBPaC5wcm9iZShBKX19XSksQX0oKSxoZj1YRS5maWx0ZXI7b0Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohWW8oImZpbHRlciIpfSx7ZmlsdGVyOmZ1bmN0aW9uKEEpe3JldHVybiBoZih0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pO3ZhciB5Zj1YRS5tYXA7b0Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohWW8oIm1hcCIpfSx7bWFwOmZ1bmN0aW9uKEEpe3JldHVybiB5Zih0aGlzLEEsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pO3ZhciBmZj1PLHVmPVhBLERmPVUsd2Y9SnIsbGY9UHI7TXIoIm1hdGNoIiwxLChmdW5jdGlvbihBLGcsSSl7cmV0dXJuW2Z1bmN0aW9uKGcpe3ZhciBJPURmKHRoaXMpLEI9bnVsbD09Zz92b2lkIDA6Z1tBXTtyZXR1cm4gdm9pZCAwIT09Qj9CLmNhbGwoZyxJKTpuZXcgUmVnRXhwKGcpW0FdKFN0cmluZyhJKSl9LGZ1bmN0aW9uKEEpe3ZhciBCPUkoZyxBLHRoaXMpO2lmKEIuZG9uZSlyZXR1cm4gQi52YWx1ZTt2YXIgUT1mZihBKSxDPVN0cmluZyh0aGlzKTtpZighUS5nbG9iYWwpcmV0dXJuIGxmKFEsQyk7dmFyIEU9US51bmljb2RlO1EubGFzdEluZGV4PTA7Zm9yKHZhciB0LGk9W10sZT0wO251bGwhPT0odD1sZihRLEMpKTspe3ZhciBvPVN0cmluZyh0WzBdKTtpW2VdPW8sIiI9PT1vJiYoUS5sYXN0SW5kZXg9d2YoQyx1ZihRLmxhc3RJbmRleCksRSkpLGUrK31yZXR1cm4gMD09PWU/bnVsbDppfV19KSk7dmFyIGRmPWFBLEZmPXNnO29CKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6dygoZnVuY3Rpb24oKXtGZigxKX0pKX0se2tleXM6ZnVuY3Rpb24oQSl7cmV0dXJuIEZmKGRmKEEpKX19KTt2YXIgR2Y9e2ZpbmRCb3g6ZnVuY3Rpb24gQShnLEkpe3ZhciBCPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpbXTtpZihnLnR5cGUhPT1JKXtpZihnJiZnLnN1YkJveCl7dmFyIFE9Zy5zdWJCb3guZmlsdGVyKChmdW5jdGlvbihBKXtyZXR1cm4gQS50eXBlPT09SX0pKTtRLmxlbmd0aD9RLmZvckVhY2goKGZ1bmN0aW9uKEEpe3JldHVybiBCLnB1c2goQSl9KSk6Zy5zdWJCb3guZm9yRWFjaCgoZnVuY3Rpb24oZyl7cmV0dXJuIEEoZyxJLEIpfSkpfX1lbHNlIEIucHVzaChnKTtyZXR1cm4oQj15KEIpKS5sZW5ndGg+MT9COkJbMF19LHBhZFN0YXJ0OlJmLHRvSGV4OmZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGc9YXJndW1lbnRzLmxlbmd0aCxJPW5ldyBBcnJheShnKSxCPTA7QjxnO0IrKylJW0JdPWFyZ3VtZW50c1tCXTtyZXR1cm4gSS5mb3JFYWNoKChmdW5jdGlvbihnKXt2YXIgST1OdW1iZXIoZykudG9TdHJpbmcoMTYpO0EucHVzaChSZihJLDIsMCkpfSkpLEF9LGZyb21IZXg6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPW5ldyBVaW50OEFycmF5KEEubGVuZ3RoLzIpLEk9MDtJPEEubGVuZ3RoO0krPTIpZ1tJLzJdPXdpbmRvdy5wYXJzZUludChBLnN1YnN0cihJLDIpLDE2KTtyZXR1cm4gZ30sc3VtOmZ1bmN0aW9uKCl7Zm9yKHZhciBBPTAsZz1hcmd1bWVudHMubGVuZ3RoLEk9bmV3IEFycmF5KGcpLEI9MDtCPGc7QisrKUlbQl09YXJndW1lbnRzW0JdO3JldHVybiBJLmZvckVhY2goKGZ1bmN0aW9uKGcpe0ErPWd9KSksQX0sU3RyaW5nVG9BcnJheUJ1ZmZlcjpmdW5jdGlvbihBKXtmb3IodmFyIGc9bmV3IEFycmF5QnVmZmVyKEEubGVuZ3RoKSxJPW5ldyBVaW50OEFycmF5KGcpLEI9MDtCPEEubGVuZ3RoO0IrKylJW0JdPUEuY2hhckNvZGVBdChCKTtyZXR1cm4gZ30sQXJyYXlCdWZmZXJUb1N0cmluZzpmdW5jdGlvbihBKXtmb3IodmFyIGc9IiIsST1uZXcgVWludDhBcnJheShBKSxCPTA7QjxJLmxlbmd0aDtCKyspZys9U3RyaW5nLmZyb21DaGFyQ29kZShJW0JdKTtyZXR1cm4gZ30sZnJvbUNoYXJDb2RlOlVmLEJhc2U2NFRvSGV4OmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz13aW5kb3cuYXRvYihBLnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpKSxJPSIiLEI9MDtCPGcubGVuZ3RoO0IrKylJKz0iMCIuY29uY2F0KGcuY2hhckNvZGVBdChCKS50b1N0cmluZygxNikpLnN1YnN0cigtMik7cmV0dXJuIEl9LHRvQmFzZTY0OmZ1bmN0aW9uKEEsZyl7dmFyIEk9VWYoQSk7Zz12b2lkIDA9PT1nfHxnO3ZhciBCPXdpbmRvdy5idG9hKEkpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIik7cmV0dXJuIGc/QjpCLnJlcGxhY2UoLz0qJC8sIiIpfSx0b1VURjg6ZnVuY3Rpb24oQSl7Zm9yKHZhciBnPWVuY29kZVVSSUNvbXBvbmVudChBKSxJPXVuZXNjYXBlKGcpLEI9bmV3IFVpbnQ4QXJyYXkoSS5sZW5ndGgpLFE9MDtRPEkubGVuZ3RoOysrUSlCW1FdPUkuY2hhckNvZGVBdChRKTtyZXR1cm4gQi5idWZmZXJ9LHN0clRvQnVmOmZ1bmN0aW9uKEEpe2Zvcih2YXIgZz1bXSxJPTA7STxBLmxlbmd0aDtJKz0yKWcucHVzaChwYXJzZUludChBW0ldK0FbSSsxXSwxNikpO3JldHVybiBuZXcgVWludDhBcnJheShnKX0sc3RyMmhleDpmdW5jdGlvbihBKXtpZigiIj09PUEpcmV0dXJuIiI7Zm9yKHZhciBnPVtdLEk9MDtJPEEubGVuZ3RoO0krKylnLnB1c2goQS5jaGFyQ29kZUF0KEkpKTtyZXR1cm4gZ30sZm9ybWF0SVY6ZnVuY3Rpb24oQSl7aWYoQS5sZW5ndGg+PTE2KXJldHVybiBBO2Zvcih2YXIgZz1uZXcgVWludDhBcnJheSgxNiksST0wO0k8Zy5sZW5ndGg7SSsrKWdbSV09STxBLmxlbmd0aD9BW0ldOjA7cmV0dXJuIGd9LHBhcnNlOmZ1bmN0aW9uKEEpe2lmKCFBcnJheS5pc0FycmF5KEEpKXtmb3IodmFyIGc9W10sST0iIixCPTA7QjxBLmxlbmd0aDtCKyspQiUyJiYoST1BW0ItMV0rQVtCXSxnLnB1c2gocGFyc2VJbnQoSSwxNikpLEk9IiIpO3JldHVybiBnfXJldHVybiBBLm1hcCgoZnVuY3Rpb24oQSl7cmV0dXJuIHBhcnNlSW50KEEsMTYpfSkpfSxnZW5lcmF0ZVVuaXF1ZUtleTpmdW5jdGlvbihBKXt2YXIgZz1BLnZpZCxJPUEubWVkaWFUeXBlLEI9QS5kZWZpbml0aW9uO2lmKEk9SXx8InZpZGVvIixCPUJ8fC0xLCFnKXJldHVybiBudWxsO3JldHVybiIiLmNvbmNhdChnLCIjIikuY29uY2F0KEksIiMiKS5jb25jYXQoQiwiI21wNCIpfSx2YWxpZGF0ZUZyYWdtZW50OmZ1bmN0aW9uKEEpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpbXTtpZihBIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3RyeXtpZigyPT09Zy5sZW5ndGgpe3ZhciBJPWdbMV0tZ1swXSsxO2lmKCEoQS5ieXRlTGVuZ3RoPT09SSkpcmV0dXJufX1jYXRjaChCKXtyZXR1cm4gY29uc29sZS5lcnJvcihCKSwhMX1yZXR1cm4hMH1yZXR1cm4hMX0sdHlwZU9mOmtmLG5vd1RpbWU6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHBhcnNlSW50KCIiLmNvbmNhdChwZXJmb3JtYW5jZS5ub3coKSksMTApfWNhdGNoKEEpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0sZXh0VXJsOmZ1bmN0aW9uKEEsZyl7dHJ5e2lmKCFnfHxBLnN0YXJ0c1dpdGgoImJsb2IiKSlyZXR1cm4gQTt2YXIgST1BLmluZGV4T2YoIj8iKSxCPUk8MCxRPUk9PT1BLmxlbmd0aC0xLEM9IiI7cmV0dXJuIE9iamVjdC5rZXlzKGcpLmZvckVhY2goKGZ1bmN0aW9uKEEpe3ZhciBJPWdbQV07bnVsbCE9SSYmIiIhPT1JJiYoQys9IiIuY29uY2F0KEM/IiYiOiIiKS5jb25jYXQoQSwiPSIpLmNvbmNhdChnW0FdKSl9KSksQSs9KEI/Ij8iOlE/IiI6IiYiKStDfWNhdGNoKEUpe3JldHVybiBBfX0sZGVlcE1lcmdlOmZ1bmN0aW9uIEEoZyxJKXtyZXR1cm4gT2JqZWN0LmtleXMoSSkuZm9yRWFjaCgoZnVuY3Rpb24oQil7dmFyIFEsQz1rZihJW0JdKSxFPWtmKGdbQl0pOyJBcnJheSI9PT1DPygiQXJyYXkiIT09RSYmKGdbQl09W10pLChRPWdbQl0pLnB1c2guYXBwbHkoUSx5KElbQl0pKSk6Ik9iamVjdCI9PT1DPygiT2JqZWN0IiE9PUUmJihnW0JdPXt9KSxBKGdbQl0sSVtCXSkpOmdbQl09SVtCXX0pKSxnfSxnZXRGaWxlU2l6ZTpmdW5jdGlvbihBLGcpe3RyeXtyZXR1cm4gQSYmZz9wYXJzZUludCgiIi5jb25jYXQoZypBLzgpLDEwKTowfWNhdGNoKEkpe3JldHVybiAwfX0saGFzaFZhbDpmdW5jdGlvbihBKXt2YXIgZyxJPTA7aWYoMD09PUEubGVuZ3RoKXJldHVybiBJO2ZvcihnPTA7ZzxBLmxlbmd0aDtnKyspST0oSTw8NSktSStBLmNoYXJDb2RlQXQoZyksSXw9MDtyZXR1cm4gSX0sQXJyYXlDb3B5OmZ1bmN0aW9uKEEpe3ZhciBnPVtdO2lmKCFBfHwhQS5sZW5ndGh8fDA9PT1BLmxlbmd0aClyZXR1cm4gZztmb3IodmFyIEk9MDtJPEEubGVuZ3RoO0krKyl7dmFyIEI9QVtJXSxRPXt9O2Zvcih2YXIgQyBpbiBCKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChCLEMpJiYoUVtDXT1CW0NdKTtnLnB1c2goUSl9cmV0dXJuIGd9LGNvbmNhdERhdGE6ZnVuY3Rpb24oQSxnKXt2YXIgST1bXSxCPTA7QSYmSS5wdXNoKEEpO2cmJkkucHVzaChnKTtJLmV2ZXJ5KChmdW5jdGlvbihBKXtyZXR1cm4gQSYmKEIrPUEuYnl0ZUxlbmd0aCksITB9KSk7dmFyIFE9bmV3IFVpbnQ4QXJyYXkoQiksQz0wO3JldHVybiBJLmV2ZXJ5KChmdW5jdGlvbihBKXtyZXR1cm4gQSYmKFEuc2V0KEEsQyksQys9QS5ieXRlTGVuZ3RoKSwhMH0pKSxRfSxnZXRGcmFnUmFuZ2U6ZnVuY3Rpb24oQSxnLEkpe3ZhciBCLFEsQyxFLHQ9bnVsbCxpPW51bGw7dD1BPGcubGVuZ3RoLTE/Z1tBXTpnW2cubGVuZ3RoLTFdO2k9QTxJLmxlbmd0aC0xP0lbQV06SVtJLmxlbmd0aC0xXTtyZXR1cm5bTWF0aC5taW4oKG51bGw9PT0oQj10KXx8dm9pZCAwPT09Qj92b2lkIDA6Qi5yYW5nZVswXSl8fDEvMCwobnVsbD09PShRPWkpfHx2b2lkIDA9PT1RP3ZvaWQgMDpRLnJhbmdlWzBdKXx8MS8wKSxNYXRoLm1heChudWxsPT09KEM9dCl8fHZvaWQgMD09PUM/dm9pZCAwOkMucmFuZ2VbMV0sbnVsbD09PShFPWkpfHx2b2lkIDA9PT1FP3ZvaWQgMDpFLnJhbmdlWzFdKV19LGdldEhvc3RGcm9tVXJsOmZ1bmN0aW9uKEEpe2lmKCJTdHJpbmciIT09a2YoQSl8fCFBKXJldHVybiIiO3ZhciBnPUEuc3BsaXQoIi8iKSxJPSIiO2cubGVuZ3RoPjMmJmdbMl0mJihJPWdbMl0pO3JldHVybiBJfSxuZXdVaW50OEFycmF5OmZ1bmN0aW9uKEEpe3ZhciBnLEk9MDtmb3IoO0k8MTA7KXRyeXtpZigoZz1uZXcgVWludDhBcnJheShBKSkmJmcuYnl0ZUxlbmd0aD4wKWJyZWFrO0krK31jYXRjaChCKXtJPDEwP0krKzpjb25zb2xlLmVycm9yKCJyZXBlYXQgZGF0YSBjYWNoZSAgbmV3IGFycmF5IGZhaWxlZCBmaW5hbCIsMTApfXJldHVybiBnfSxjaGVja1VybElzRXhwaXJlZDpmdW5jdGlvbihBKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtpZighQXx8IlN0cmluZyIhPT1rZihBKSlyZXR1cm4gMDt2YXIgST0wO3RyeXt2YXIgQj1uZXcgUmVnRXhwKCIoXFw/fCYpeC10b3MtZXhwaXJlcz0oW14mXSopKCZ8JCkiKSxRPUEubWF0Y2goQik7aWYobnVsbCE9PVEpST1wYXJzZUludChRWzJdLDEwKTtlbHNle3ZhciBDPUEuc3BsaXQoIi8iKTtDLmxlbmd0aD41JiY4PT09Q1s0XS5sZW5ndGgmJihJPXBhcnNlSW50KENbNF0sMTYpKX1yZXR1cm4gST4wP0k8cGFyc2VJbnQoIiIuY29uY2F0KGcmJiJudW1iZXIiPT10eXBlb2YgZz8obmV3IERhdGUpLmdldFRpbWUoKS8xZTMrZzoobmV3IERhdGUpLmdldFRpbWUoKS8xZTMpLDEwKT8xOjI6MH1jYXRjaChFKXtyZXR1cm4gMH19LGdldEJ1ZmZlclNwbGl0czpmdW5jdGlvbihBLGcpe3ZhciBJPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTo1ZTU7aWYoZy1BLUk8SS8yfHwhZylyZXR1cm5bW0EsZ11dO3ZhciBCPVtdO2Zvcig7QTxnOyl7dmFyIFE9QStJOyhRPmd8fGctUTxJLzIpJiYoUT1nKSxCLnB1c2goW0EsUV0pLEE9USsxfXJldHVybiBCfX07ZnVuY3Rpb24gUmYoQSxnLEkpe2Zvcih2YXIgQj1TdHJpbmcoSSksUT1nPj4wLEM9TWF0aC5jZWlsKFEvQi5sZW5ndGgpLEU9W10sdD1TdHJpbmcoQSk7Qy0tOylFLnB1c2goQik7cmV0dXJuIEUuam9pbigiIikuc3Vic3RyaW5nKDAsUS10Lmxlbmd0aCkrdH1mdW5jdGlvbiBVZihBKXtmb3IodmFyIGc9IiIsST0wO0k8QS5sZW5ndGg7SSs9MTZlMyl7dmFyIEI9QS5zdWJhcnJheShJLEkrMTZlMyk7Zys9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLEIpfXJldHVybiBnfWZ1bmN0aW9uIGtmKEEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoQSkubWF0Y2goLyhbXlxzLipdKykoPz1dJCkvZylbMF19b25tZXNzYWdlPWZ1bmN0aW9uKCl7dmFyIEEsQj0oQT1JKCkubWFyaygoZnVuY3Rpb24gQShCKXt2YXIgUSxDLEUsdCxpLGUsbyxyLG4sYSxzLGMsaCx5LGYsdSxELHcsbCxkLEYsRyxSLFUsayxTLHAsTj10aGlzO3JldHVybiBJKCkud3JhcCgoZnVuY3Rpb24oQSl7Zm9yKDs7KXN3aXRjaChBLnByZXY9QS5uZXh0KXtjYXNlIDA6UT1CLmRhdGEsQS50MD1RLm1ldGhvZCxBLm5leHQ9ImluaXQiPT09QS50MD80OiJ1cGRhdGVWYWx1ZSI9PT1BLnQwPzEyOiJ0cmFuc211eCI9PT1BLnQwPzE3OiJyZXNldCI9PT1BLnQwPzQxOiJkZXN0cm95Ij09PUEudDA/NDc6NDk7YnJlYWs7Y2FzZSA0OnJldHVybiB0aGlzLmNvZGVjVHlwZT1RLmFyZ3MuY29kZWNUeXBlLHRoaXMub3BlbkxvZz1RLmFyZ3Mub3BlbkxvZyx0aGlzLk1QNERlbXV4ZXI9bnVsbCx0aGlzLkZNUDRSZW11eGVyPW51bGwsdGhpcy5fbmVlZEluaXRTZWdtZW50PSEwLHRoaXMuc3VwcG9ydEhldmM9US5hcmdzLnN1cHBvcnRIZXZjLHRoaXMuYXdNYW5hZ2VyPW51bGwsQS5hYnJ1cHQoImJyZWFrIiw0OSk7Y2FzZSAxMjpyZXR1cm4gdD1udWxsPT09KEM9Qi5kYXRhKXx8dm9pZCAwPT09Q3x8bnVsbD09PShFPUMuYXJncyl8fHZvaWQgMD09PUU/dm9pZCAwOkUudmFsdWUsdGhpcy5hd01hbmFnZXI9bmV3IEJoLHNlbGYucD10aGlzLmF3TWFuYWdlci5pbml0KCksc2VsZi5wLnRoZW4oKGZ1bmN0aW9uKCl7Ti5hd01hbmFnZXIuZGVzY3J5cHRLZXkodC5zZWNyZXRLZXksdC5kZWNyeXB0S2V5KX0pKSxBLmFicnVwdCgiYnJlYWsiLDQ5KTtjYXNlIDE3OnJldHVybiBpPUIuZGF0YS5hcmdzLGU9bmV3IFVpbnQ4QXJyYXkoQi5kYXRhLmJ1ZmZlciksdGhpcy5NUDREZW11eGVyfHwodGhpcy5NUDREZW11eGVyPW5ldyBjZihudWxsLG51bGwsbnVsbCx7b3BlbkxvZzp0aGlzLm9wZW5Mb2d9KSksQS5uZXh0PTIyLHNlbGYucDtjYXNlIDIyOnJldHVybiBvPXRoaXMuTVA0RGVtdXhlci5kZW11eFBhcnQoZSxpLnN0YXJ0LGkudmlkZW9JZHgsaS5hdWRpb0lkeCxpLm1vb3YsaS51c2VFTUUsaS5raWRWYWx1ZSwoZnVuY3Rpb24oQSxnLEkpe3ZhciBCPUdmLmZvcm1hdElWKEkpO3JldHVybiBOLmF3TWFuYWdlci5kZXNjcnlwdChBLEIpfSkpLHRoaXMuRk1QNFJlbXV4ZXJ8fCJoMjY1Ij09PXRoaXMuY29kZWNUeXBlJiYhdGhpcy5zdXBwb3J0SGV2Y3x8KHRoaXMuRk1QNFJlbXV4ZXI9bmV3IEF5KHRoaXMuTVA0RGVtdXhlci52aWRlb1RyYWNrLHRoaXMuTVA0RGVtdXhlci5hdWRpb1RyYWNrLHtvcGVuTG9nOnRoaXMub3BlbkxvZ30pKSxyPW8udmlkZW9UcmFjayxuPW8uYXVkaW9UcmFjayxhPW51bGw9PXI/dm9pZCAwOnIuc2FtcGxlcyxzPShudWxsPT1hP3ZvaWQgMDphLmxlbmd0aCk+MD9hWzBdLnNhbXBsZU9mZnNldDotMSxjPShudWxsPT1hP3ZvaWQgMDphLmxlbmd0aCk+MD9hW2EubGVuZ3RoLTFdLnNhbXBsZU9mZnNldDotMSxoPW51bGw9PW4/dm9pZCAwOm4uc2FtcGxlcyx5PShudWxsPT1oP3ZvaWQgMDpoLmxlbmd0aCk+MD9oWzBdLnNhbXBsZU9mZnNldDotMSxmPShudWxsPT1oP3ZvaWQgMDpoLmxlbmd0aCk+MD9oW2gubGVuZ3RoLTFdLnNhbXBsZU9mZnNldDotMSx1PWkuY29udGV4dC5zdGF0ZS5zdGF0ZSxEPS0xLHc9LTEsbD0tMSxkPS0xLCh1fHwobnVsbD09YT92b2lkIDA6YS5sZW5ndGgpPjApJiYoRD1udWxsPT1vfHxudWxsPT09KEY9by52aWRlb1RyYWNrKXx8dm9pZCAwPT09Rj92b2lkIDA6Ri5zdGFydFB0cyx3PW51bGw9PW98fG51bGw9PT0oRz1vLnZpZGVvVHJhY2spfHx2b2lkIDA9PT1HP3ZvaWQgMDpHLmVuZFB0cyksKHV8fChudWxsPT1oP3ZvaWQgMDpoLmxlbmd0aCk+MCkmJihsPW51bGw9PW98fG51bGw9PT0oUj1vLmF1ZGlvVHJhY2spfHx2b2lkIDA9PT1SP3ZvaWQgMDpSLnN0YXJ0UHRzLGQ9bnVsbD09b3x8bnVsbD09PShVPW8uYXVkaW9UcmFjayl8fHZvaWQgMD09PVU/dm9pZCAwOlUuZW5kUHRzKSx0aGlzLkZNUDRSZW11eGVyJiYoKFM9dGhpcy5GTVA0UmVtdXhlci5yZW11eCh0aGlzLl9uZWVkSW5pdFNlZ21lbnQse2luaXRNZXJnZTohMH0pKS5pbml0U2VnbWVudCYmKHRoaXMuX25lZWRJbml0U2VnbWVudD0hMSkscD1HZi5jb25jYXREYXRhKFMuYXVkaW9TZWdtZW50LFMudmlkZW9TZWdtZW50KSxrPXtidWZmZXI6cCxyYW5nZTppLmNvbnRleHQucmFuZ2Usc3RhdGU6aS5jb250ZXh0LnN0YXRlLGNvbnRleHQ6e3JhbmdlOmkuY29udGV4dC5yYW5nZSxmcmFnSW5kZXg6aS5jb250ZXh0LmZyYWdJbmRleCx2UHRzUmFuZ2U6W0Qsd10sYVB0c1JhbmdlOltsLGRdLHZpZGVvU2FtcGxlSWR4UmFuZ2U6W3MsY10sYXVkaW9TYW1wbGVJZHhSYW5nZTpbeSxmXX0saW5pdFNlZzpTLmluaXRTZWdtZW50fSksdGhpcy5wb3N0TWVzc2FnZSh7bWV0aG9kOiJ0cmFuc211eCIsaWQ6Qi5kYXRhLmlkLGFyZ3M6Zyh7fSxrKX0pLEEuYWJydXB0KCJicmVhayIsNDkpO2Nhc2UgNDE6cmV0dXJuIHRoaXMuRk1QNFJlbXV4ZXImJnRoaXMuRk1QNFJlbXV4ZXIucmVzZXQoKSx0aGlzLk1QNERlbXV4ZXImJnRoaXMuTVA0RGVtdXhlci5yZXNldCgpLHRoaXMuRk1QNFJlbXV4ZXI9bnVsbCx0aGlzLk1QNERlbXV4ZXI9bnVsbCx0aGlzLl9uZWVkSW5pdFNlZ21lbnQ9ITAsQS5hYnJ1cHQoImJyZWFrIiw0OSk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5hd01hbmFnZXImJih0aGlzLmF3TWFuYWdlci5kZXN0cm95KCksdGhpcy5hd01hbmFnZXI9bnVsbCksQS5hYnJ1cHQoImJyZWFrIiw0OSk7Y2FzZSA0OTpjYXNlImVuZCI6cmV0dXJuIEEuc3RvcCgpfX0pLEEsdGhpcyl9KSksZnVuY3Rpb24oKXt2YXIgZz10aGlzLEk9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oQixDKXt2YXIgRT1BLmFwcGx5KGcsSSk7ZnVuY3Rpb24gdChBKXtRKEUsQixDLHQsaSwibmV4dCIsQSl9ZnVuY3Rpb24gaShBKXtRKEUsQixDLHQsaSwidGhyb3ciLEEpfXQodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihBKXtyZXR1cm4gQi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSgpOwo=",Ra="undefined"!=typeof window&&window.Blob&&new Blob([atob(Ba)],{type:"text/javascript;charset=utf-8"});function ua(){var e;try{if(!(e=Ra&&(window.URL||window.webkitURL).createObjectURL(Ra)))throw"";return new Worker(e)}catch(t){return new Worker("data:application/javascript;base64,"+Ba)}finally{!("undefined"!=typeof window&&navigator.userAgent.indexOf("Trident/")>0)&&e&&(window.URL||window.webkitlRL).revokeObjectURL(e)}}var ha=function(e){g(n,e);var t=G(n);function n(){var e,U=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return b(this,n),(e=t.call(this)).options=U,e.worker=new ua,e.worker.onmessage=function(t){e.emit(t.data.method,t.data)},e.worker.postMessage({method:"init",id:U.id||0,args:{openLog:e.options.openLog,supportHevc:e.options.supportHevc,codecType:e.options.codecType}}),e}return N(n,[{key:"updateValue",value:function(e){var t,n;null===(t=this.worker)||void 0===t||t.postMessage({method:"updateValue",id:(null===(n=this.options)||void 0===n?void 0:n.id)||0,args:{value:e}})}},{key:"transmux",value:function(e,t,n,U,i,r,a,F,l){var Q=t.buffer;this.worker&&this.worker.postMessage({method:"transmux",id:e,buffer:Q,args:{start:n,videoIdx:U,audioIdx:i,moov:r,useEME:a,kidValue:F,context:l}},[Q])}},{key:"reset",value:function(){this.worker&&this.worker.postMessage({method:"reset"})}},{key:"destroy",value:function(){this.worker&&this.worker.postMessage({method:"destroy"}),this.worker&&this.worker.terminate()}}]),n}(ot),Va="error",Za="metaReady",pa="moov_request_progress",Sa="progress_event",ma="update_eme",Ja="init_mse",Wa="change_url",ka="update_load_fragmentIdx",Ea="remove_pcdn_node",ya="load_error",fa="cancel_loaded_len",ba="load_len_not_match_error",va="cdn",Na="pcdn",Ta="close",ga="open",Ca="forbidden",La={},Xa=function(e){g(c,e);var t,n,U,i,r,a,F,l,Q,d,o,s=G(c);function c(e,t,n,U,i){var r,a;return b(this,c),T(D(a=s.call(this)),"markErrHost",(function(e){e&&(La[e]=!0,a.log(xe.WARN,"[mp4loader markErrHost]",e))})),T(D(a),"onprogressDataArrive",function(){var e=f(k().mark((function e(t,n,U,i){var r,F,l,Q,d,o,s,c,B,R;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(F=(null===(r=U.priOptions)||void 0===r?void 0:r.type)||va,l=a.adaptTimeRange[U.index].range,Q=t&&t.byteLength>0,a.log(xe.LOG,"[onprogressDataArrive] receive data is ".concat(Q?"not":""," null"),"index: ".concat(U.index,", range: ").concat(JSON.stringify(U.range),", dataLen: ").concat(null==t?void 0:t.byteLength),"loadType: ".concat(F,", state: ").concat(n)),Q&&(!a._optionDataLenInfo[F]&&(a._optionDataLenInfo[F]=0),a._optionDataLenInfo[F]+=t.byteLength,a._receiveDataPos=null==U?void 0:U.range[1],l&&U.range[1]>l[1]&&!n&&(n=!0,a.log(xe.LOG,"[onprogressDataArrive] receive data, set state true","index: ".concat(U.index,", range: ").concat(JSON.stringify(U.range)))),a.cacheRepeatData(a.adaptTimeRange[U.index].repeatRange,U.range,t),a._mux(t,U.range[0],U.index,n)),!n){e.next=23;break}if(a._optionDataLenInfo[F]=0,!((null==l?void 0:l.length)>=0&&(!Number(l[1])||Number(l[1])&&(null==U?void 0:U.range[1])===l[1]+1))){e.next=12;break}a.adaptTimeRange[U.index].downloaded=!0,a.log(xe.LOG,"[FragLoadDowned],fragmentIdx,",U.index,",rangeEnd,",U.range[1]),e.next=23;break;case 12:return d=sa(i.headers),e.next=15,a.cancelLoading();case 15:return o=a.adaptTimeRange[U.index],s=o.startTime,c=o.endTime,a.emit(ba,[s,c]),B=F===va?a.url:a._pcdnNodeList[0].url,R=Fa.getHostFromUrl(B),a.emit(ya,{src:B,host:R,errorCode:yn.contentError,message:"progress dataLen not match",range:JSON.stringify(l),headers:d}),a.log(xe.LOG,"[FragLoadDowned check false, len is not match],fragmentIdx: ".concat(U.index),"rangeEnd: ".concat(U.range[1],", ").concat(JSON.stringify(l)),"headers: ".concat(JSON.stringify(d),", url: ").concat(B,", ").concat(null==i?void 0:i.url)),e.next=23,a.loadAllFragmentData(a._curLoadSegIdx,a._loadSuccessCallBack);case 23:case"end":return e.stop()}}),e)})));return function(t,n,U,i){return e.apply(this,arguments)}}()),U=U||[],a.timeRecord={startMuxTime:-1,startLoadTime:-1,newMP4Time:Fa.nowTime(),startLoadMetaTime:-1},a.updateUrl(e,U||[]),a._bitRate=t||0,a.options=c.getDefaultConfig(),Object.keys(n).map((function(e){void 0!==n[e]&&null!==n[e]&&(a.options[e]=n[e])})),a.logger=n.logger,a.timeRange=[],a.adaptTimeRange=[],a.firstFrameTime=i||{},a.fileSize=null==n?void 0:n.fileSize,a.CHUNK_SIZE=(null===(r=a.options)||void 0===r?void 0:r.firstLoadSize)||ea(n.duration,a.options.chunkSize,a.fileSize),a._firstLoadSize=a.CHUNK_SIZE,a.log(xe.LOG,"[getFirstLoadSize], firstLoadSize ".concat(a._firstLoadSize),"dur ".concat(n.duration,", chunkSize ").concat(a.CHUNK_SIZE,",fileSize ").concat(a.fileSize)),a._repeatInfo={startPos:-1,curDataPos:0,usedPos:0,data:Fa.newUint8Array(1048576)},a.meta=null,a.preloadCache=null,a.videoTrak=null,a.audioTrak=null,a._loadSuccessCallBack=null,a._isPending=!1,a.metaLoading=!1,a.MP4Loader=new qr(W(W({url:e,vid:"".concat(n.vid,"-").concat(t),retry:n.retryCount||2,retryDelay:n.retryDelay||1e3,timeout:n.timeout||3e3,segmentDuration:n.segmentDuration,audioGroupingStrategy:n.audioGroupingStrategy,fixEditListOffset:n.fixEditListOffset,fixEditListOffsetThreshold:n.fixEditListOffsetThreshold},n.reqOptions),{},{loaderType:n.loaderType,retryCheckFunc:ra,openLog:rn})),a.MP4Demuxer=null,a.FMP4Remuxer=null,a._needInitSegment=!0,a._bitRateInfoMap=new Map,a._switchBitRate=!1,a._segmentToBitRateMap=new Map,a.useEME=!1,a.secretKey=null,a.decryptKey=null,a.keyValue=null,a.initTransMuxWorker(),a.seekTime=-1,a.changeBitRateTime=-1,a._PCDNState=Ta,a._pcdnNodeList=[],a.loadInfo={},a.pcdnTraceInfo=null,a._loadedDataState=!1,a._PCDNSwitchCnt=0,a._isUseCDN=!0,a._curLoadSegIdx=0,a._receiveDataPos=-1,a._optionDataLenInfo={},a._lastPCDNUrl="",a.lastTargetDur=0,a.pcdnVVStat=a.resetPcdnVVStat(),a.pSCCancelCnt=0,a._lastDemuxSampleIdxRange={video:0,audio:0},a._mediaEndTime=-1,a}return N(c,[{key:"size",get:function(){return this.fileSize}},{key:"initTransMuxWorker",value:function(){var e=this,t=this.options;if(this.enableWorker=t.enableWorker&&("h265"!==t.codecType||t.supportHevc),this.enableWorker&&"undefined"!=typeof Worker){try{this.workerSequence=0,this.transmuxerWorkerControl=new ha({id:this.workerSequence,codecType:t.codecType,supportHevc:this.options.supportHevc,openLog:rn}),this.transmuxerWorkerControl.on("transmux",(function(t){var n=t.args,U=n.context;e.updateDemuxSampleIdxRange(null==U?void 0:U.videoSampleIdxRange,null==U?void 0:U.audioSampleIdxRange),e.log(xe.LOG,"[transmuxerWorker end], range: ".concat(JSON.stringify(n.range)),"dataLen: ".concat(n.buffer.byteLength),JSON.stringify(n.context)),e.firstFrameTime.firstmux<0&&e.timeRecord.startMuxTime>0&&(e.firstFrameTime.firstmux=Fa.nowTime()-e.timeRecord.startMuxTime),e._loadSuccessCallBack&&e._loadSuccessCallBack(n)}))}catch(n){this.log(xe.ERROR,"Error in worker:",n),this.enableWorker=!1,this.transmuxerWorkerControl=null}this.enableWorker||(this.MP4Demuxer=null,this.FMP4Remuxer=null)}}},{key:"updateSecretKey",value:function(e,t,n,U){var i;this.useEME=e,!e&&t?(this.log(xe.LOG,"[updateSecretKey] ,force enableWorker"),this.options.enableWorker=!0,this.transmuxerWorkerControl||this.initTransMuxWorker()):!e&&U&&(this.keyValue=U),this.log(xe.LOG,"[updateSecretKey] ,useEME, ",e,",secretKey,",t,",decryptKey",n),null===(i=this.transmuxerWorkerControl)||void 0===i||i.updateValue({secretKey:t,decryptKey:n})}},{key:"updateLoadedDataDone",value:function(){this._loadedDataState=!0}},{key:"PCDNSwitchCnt",get:function(){return this._PCDNSwitchCnt}},{key:"updateLoadInfo",value:function(e,t){this.loadInfo||(this.loadInfo={}),this.loadInfo[e]||(this.loadInfo[e]={},this.loadInfo[e].loadLen=0),this.loadInfo[e].loadLen+=t}},{key:"updatePCDNState",value:(o=f(k().mark((function e(t){var n,U,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._PCDNState!==Ca&&this._PCDNState!==t&&this.log(xe.LOG,"[pcdn state update]",this._PCDNState," - ",t),t!==Ca){e.next=5;break}this._PCDNState=t,e.next=25;break;case 5:if(this._PCDNState===Ca||this._PCDNState===t){e.next=25;break}if(this._isUseCDN||t!==Ta){e.next=23;break}if(this._PCDNState=t,!this.adaptTimeRange[this._curLoadSegIdx].downloaded&&!this._switchBitRate){e.next=11;break}return this.log(xe.LOG,"[pcdn] switch cdn ",this._curLoadSegIdx,"downloaded",",switchBitRate, ",this._switchBitRate),e.abrupt("return");case 11:return e.next=13,this.cancelLoading();case 13:return this.pSCCancelCnt++,n=this._curLoadSegIdx,this.log(xe.LOG,"[pcdn] cancelLoading ",n,"switch cdn load"),U=this.getFragRange(n),this._receiveDataPos&&this._receiveDataPos>=U[0]&&this._receiveDataPos<=U[1]&&(i=U[0],U[0]=this._receiveDataPos,this.log(xe.LOG,"[pcdn] switch cdn, adjust range",n,JSON.stringify(U),",oldRange,","".concat(i," - ").concat(U[1]))),this._receiveDataPos=-1,e.next=21,this.startLoad(U,n);case 21:e.next=24;break;case 23:this._PCDNState=t;case 24:this.log(xe.LOG,"[pcdn] openPCDN ",t);case 25:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"updateNode",value:function(e){if(e&&e.length>0){var t=e.filter((function(e){if(!Object.prototype.hasOwnProperty.call(La,Fa.getHostFromUrl(null==e?void 0:e.url)))return e}));this._pcdnNodeList=t}}},{key:"clearPCDNNodeList",value:function(){this.log(xe.LOG,"[pcdn] clearPCDNNodeList"),this._pcdnNodeList=[]}},{key:"isUpdateNode",get:function(){return!this._pcdnNodeList||!this._pcdnNodeList.length}},{key:"isUsePCDN",value:function(){var e;return this._PCDNState===ga&&(null===(e=this._pcdnNodeList)||void 0===e?void 0:e.length)>0}},{key:"changeBitRate",value:(d=f(k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.bitrate===this._bitRate){e.next=11;break}return this.updateUrl(t._mainURL,t._backupURL),this._bitRate=t.bitrate,this._receiveDataPos=-1,e.next=6,this.MP4Loader.changeUrl(this.url,"".concat(this.options.vid,"-").concat(this._bitRate),this.CHUNK_SIZE);case 6:this._pcdnNodeList=null,this.emit(Wa,this.url),this._switchBitRate=!0,this._mediaEndTime=-1,this.log(xe.LOG,"[switchBitrate] changeUrl, bitRate,",this._bitRate,"url",this.url);case 11:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"_getByPreload",value:function(e,t,n,U){try{if(e&&e.byteLength>=t){var i={endTime:(new Date).getTime(),startTime:(new Date).getTime(),index:U,range:[],vid:this.options.vid,from:"local"};if(n<=e.byteLength){var r=e.slice(t,n);return i.range=[t,n],i.state=!0,{buffer:r,context:i,state:!0}}var a=e.byteLength-1,F=e.slice(t,a);return i.range=[t,a],{context:i,buffer:F,state:!1}}return null}catch(l){return console.error("[MP4] _getByPreload",t,n,l),null}}},{key:"log",value:function(e,t){for(var n=this.options,U=n&&n.vid?"[MP4]".concat(this.logTag," ").concat(n.vid," ").concat(t):"[MP4]".concat(this.logTag," ").concat(t),i=arguments.length,r=new Array(i>2?i-2:0),a=2;a<i;a++)r[a-2]=arguments[a];ln.apply(void 0,[this.logger,e,U].concat(r))}},{key:"errorHandler",value:(Q=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=s.length>2&&void 0!==s[2]?s[2]:{},i=t.response,r=t.message,a=this.options?this.options.vid:"",F=null,this._isPending=!0,!i){e.next=36;break}if(l=sa(i.headers),F=new bn("network",i.status,{httpText:i.httpText,message:r,url:i.url,range:U.range,headers:l}),this.log(xe.LOG,"[MP4] [".concat(a,"] errorHandler error state:[").concat(n,"],\n _isPending:[").concat(this._isPending,"] "),null==i?void 0:i.status,r),!(this.backUrl&&this.backUrl.length>0)){e.next=30;break}if(Q=this.backUrl.shift(),this.updateUrl(Q,this.backUrl),this.log(xe.LOG,"[".concat(a,"] errorHandler start backUpUrl retry"),this.backUrl.length,Q),this._isPending=!1,!this.MP4Loader){e.next=18;break}return e.next=17,this.MP4Loader.changeUrl(this.url,"".concat(this.url,"-").concat(this._bitRate),this.CHUNK_SIZE);case 17:this.emit(Wa,this.url);case 18:if(this.emit(Sa,{type:"error",error:t}),"getMetaInfo"!==n){e.next=24;break}return this.getMetaInfo(),e.abrupt("return");case 24:if("loadFragment"!==n){e.next=30;break}if(d=U.fragIndex,o=U.range,!(null!==d&&d>=0&&o)){e.next=30;break}return this.resetFragmentLoadState(d),this.loadFragment(d,o),e.abrupt("return");case 30:F.context=U,F.response=i,this.log(xe.LOG,"errorHandler end, ".concat(JSON.stringify(U))),this.emit(Va,F,n),e.next=40;break;case 36:this.log(xe.LOG,"errorHandler other end, ".concat(n,",").concat(null==i?void 0:i.status,", ").concat(r)),(F=t).context=U,this.emit(Va,F,n);case 40:case"end":return e.stop()}}),e,this)}))),function(e,t){return Q.apply(this,arguments)})},{key:"init",value:(l=f(k().mark((function e(t){var n,U,i,r,a,F,l,Q,d,o,s,c,B,R,u;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||(t={}),!this.url){e.next=4;break}return e.next=4,this.MP4Loader.changeUrl(this.url,"".concat(this.options.vid,"-").concat(this._bitRate),this.CHUNK_SIZE);case 4:if(this.emit(Wa,this.url),this.meta=null,U=(n=t).meta,i=n.mediaSegList,r=n.buffer,a=n.fileSize,F=n.initSeg,l=n.bitrate,Q=n.adaptTimeRange,d=n.repeatData,o=n.generateBy,!U||!U.ext){e.next=25;break}for(a&&(this.fileSize=a),this.meta=U,this.videoTrak=U.ext.videoTrak,this.audioTrak=U.ext.audioTrak,this.meta.videoSamplesLen=this.videoTrak.reduce((function(e,t){return e+t.frames.length}),0),this.meta.audioSamplesLen=this.audioTrak.reduce((function(e,t){return e+t.frames.length}),0),this._bitRate=l,this.timeRange=this.getTimeRange(),this.adaptTimeRange=Fa.ArrayCopy(Q),i?(this.preloadCache={segList:i||[],initSeg:F},(null===(s=this.adaptTimeRange)||void 0===s?void 0:s.length)>0&&(null==d?void 0:d.byteLength)>0&&this.cacheRepeatData(this.adaptTimeRange[0].repeatRange,this.adaptTimeRange[0].repeatRange,d)):r&&(null===(c=this.adaptTimeRange)||void 0===c?void 0:c.length)>0&&(null==r?void 0:r.byteLength)>0&&this.cacheRepeatData(this.adaptTimeRange[0].range,this.adaptTimeRange[0].range,r),"preloader"!==o&&this.adaptTimeRange.map((function(e){e.downloaded=!1,e.isLoading=!1})),B=0;B<this.adaptTimeRange.length;B++)null===(R=this.updateTimeRangeInAdaptTimeRangeIdx)||void 0===R||R.call(this,this.adaptTimeRange[B].timeRangeIdx,B);u={meta:U,videoSegments:U.ext.videoTrak,audioSegments:U.ext.audioTrak,bufferLoaded:r||null},this._bitRateInfoMap.set(this._bitRate,u),this.emit(Za,this.meta,this),e.next=27;break;case 25:return e.next=27,this.getMetaInfo();case 27:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"getTimeRange",value:function(){for(var e=[],t=null,n=0;this.videoTrak&&n<this.videoTrak.length;n++){var U=this.videoTrak[n].startTime,i=this.videoTrak[n].endTime;t={startTime:U,endTime:i,duration:i-U,downloaded:!1,isLoading:!1},e.push(t)}if(this.audioTrak&&this.audioTrak.length>e.length)for(var r=e.length;r<this.audioTrak.length;r++){var a=Math.max(this.audioTrak[r].startTime,t?t.endTime:0),F=Math.max(this.audioTrak[r].endTime,t?t.endTime:0);t={startTime:a,endTime:F,duration:F-a,downloaded:!1,isLoading:!1},e.push(t)}return this._emitMediaList(e),e}},{key:"_emitMediaList",value:function(e){for(var t=[],n=0;n<e.length;n++){var U=e[n].startTime,i=this.getFragmentIdx(U),r=Fa.getFragRange(i,this.videoTrak,this.audioTrak);t.push(W(W({},e[n]),{},{range:r,url:this._addRangeToUrl(this.url,r)}))}this.emit(sn.MEDIA_LIST,t)}},{key:"_addRangeToUrl",value:function(e,t){return this.options.isAddRange?Fa.extUrl(e,{range:"".concat(t[0],"-").concat(t[1])}):e}},{key:"getMetaInfo",value:(F=f(k().mark((function e(){var t,n,U,i,r=this,a=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!(a.length>0&&void 0!==a[0])||a[0],e.prev=1,n=Fa.nowTime(),this.metaLoading=!0,this.log(xe.LOG,"getMetaInfo start, bitRate: ".concat(this._bitRate,", firstLoadSize: ").concat(this._firstLoadSize),"url: ".concat(this.MP4Loader.url)),this.resetRepeatInfo(),U=function(){var e=f(k().mark((function e(U,i,a,F,l){var Q,d,o,s,c,B,R;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!F){e.next=6;break}return e.next=3,r.cancelLoading();case 3:return d=new vn(fn.DEMUX,yn.metaError,{msg:JSON.stringify(F)}),r.errorHandler(d,"getMetaInfo",{range:[0,r._firstLoadSize]}),e.abrupt("return");case 6:r.fileSize||(r.fileSize=Number(ca(l.headers))),o=(null==a||null===(Q=a.priOptions)||void 0===Q?void 0:Q.type)||va,U&&(r.cacheRepeatData([0,r._firstLoadSize],a.range,U),!r._optionDataLenInfo[o]&&(r._optionDataLenInfo[o]=0),r._optionDataLenInfo[o]+=U.byteLength),i&&r._optionDataLenInfo[o]&&(r._optionDataLenInfo[o]=0),a.meta&&!r.meta&&(r.firstFrameTime.metaload=Fa.nowTime()-n,s=a.meta,r.videoTrak=s.videoSegments,r.audioTrak=s.audioSegments,r.timeRange=r.getTimeRange(),c=r.videoTrak.reduce((function(e,t){return e+t.frames.length}),0),B=r.audioTrak.reduce((function(e,t){return e+t.frames.length}),0),r.meta=W(W({},s.meta),{},{ext:{videoTrak:r.videoTrak,audioTrak:r.audioTrak},videoSamplesLen:c,audioSamplesLen:B,fileSize:r.fileSize}),r._bitRateInfoMap.set(r._bitRate,s),r.log(xe.LOG,"meta reach, bitRate,",r._bitRate,r._repeatInfo.curDataPos),t&&r.emit(Za,r.meta,r)),r.meta&&i&&(r.log(xe.LOG,"[getMetaInfo req end]",r._repeatInfo.curDataPos),r.metaLoading=!1),r._loadedDataState?(R=!1,r._repeatInfo.curDataPos-r._repeatInfo.usedPos>=r.options.afterLoadeddataCallBackLen&&(R=!0),r.meta&&(R||i)&&(r.log(xe.LOG,"emit moov_req_progress loadeddata after",JSON.stringify(a.range)),r.emit(pa))):r.meta&&(U||i)&&(r.log(xe.LOG,"emit moov_req_progress loadeddata before",JSON.stringify(a.range)),r.emit(pa));case 13:case"end":return e.stop()}}),e)})));return function(t,n,U,i,r){return e.apply(this,arguments)}}(),e.next=9,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this._firstLoadSize],U);case 9:e.next=15;break;case 11:e.prev=11,e.t0=e.catch(1),this.log(xe.ERROR,"[MP4] trigger errorHandler getMetaInfo",null===e.t0||void 0===e.t0||null===(i=e.t0.response)||void 0===i?void 0:i.status,null===e.t0||void 0===e.t0?void 0:e.t0.message),this.loadError(e.t0,"getMetaInfo",!1,{url:e.t0.url||this.url,range:[0,this._firstLoadSize]});case 15:case"end":return e.stop()}}),e,this,[[1,11]])}))),function(){return F.apply(this,arguments)})},{key:"getFragmentIdx",value:function(e){var t,n;if(this.videoTrak.length){if(t=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),t&&n)return Math.min(t.index,n.index);if(t||n)return t?t.index:n.index;var U=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(U=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(U=Math.min(this.audioTrak.length-1,U)),U}return(n=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})))?n.index:0}},{key:"_checkHasMeta",value:(a=f(k().mark((function e(){var t,n,U,i,r,a,F,l,Q,d,o,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._bitRateInfoMap.get(this._bitRate)){e.next=21;break}return this.log(xe.LOG,"[switchBitrate], need load InitSegment, bitRate, ",this._bitRate),this.metaLoading=!0,e.next=6,this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));case 6:r=e.sent,this.log(xe.LOG,"[switchBitrate], loadMeta end, ",this._bitRate),this.metaLoading=!1,a=this.videoTrak,F=this.audioTrak,l=a.reduce((function(e,t){return e+t.frames.length}),0),Q=F.reduce((function(e,t){return e+t.frames.length}),0),d=Number(ca(null==r||null===(n=r.responses)||void 0===n||null===(U=n[0])||void 0===U||null===(i=U.response)||void 0===i?void 0:i.headers)),this.fileSize=d,this.log(xe.LOG,"[switchBitrate], fileSize set , ",d),this.meta=W(W({},r.meta),{},{ext:{videoTrak:r.videoSegments,audioTrak:r.videoSegments},videoSamplesLen:l,audioSamplesLen:Q,fileSize:d}),(t=r).fileSize=d,this._bitRateInfoMap.set(this._bitRate,r),e.next=23;break;case 21:this.log(xe.LOG,"[switchBitrate], not need load InitSegment, bitRate, ",this._bitRate),this.meta=t.meta;case 23:for(this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.fileSize=t.fileSize,this.emit(ma,this.meta),this.emit(Ja,this.meta),this.timeRange=this.getTimeRange(),o=0;o<this.adaptTimeRange.length;o++)null===(s=this.updateTimeRangeInAdaptTimeRangeIdx)||void 0===s||s.call(this,this.adaptTimeRange[o].timeRangeIdx,o);return this._firstLoadSize=0,e.abrupt("return",!0);case 32:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"load",value:(r=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._loadSuccessCallBack=n,!this._switchBitRate||this.metaLoading){e.next=25;break}return this.log(xe.LOG,"[switchBitrate], switch bitRate start load, bitRate,",this._bitRate,", fragIndex,",t),e.next=5,this._checkHasMeta();case 5:if(U=e.sent,!(this.changeBitRateTime>0)){e.next=21;break}if(this.resetFragmentLoadState(t,!0),this.resetRepeatInfo(),i=this.getFragmentIdx(this.changeBitRateTime),r=t,!((t=this.getAdaptIdxBySrcIdx(i))<0)){e.next=15;break}return this.log(xe.ERROR,"[switchBitrate] start new bitrate fragIndex error"),e.abrupt("return");case 15:r!==t&&this.resetFragmentLoadState(t),this._curLoadSegIdx=t,this.log(xe.LOG,"[switchBitrate], need update load fragIndex: ".concat(t,"/").concat(r),"stTime: ".concat(this.changeBitRateTime),"adaptTimeRange: ".concat(this.adaptTimeRange[t].startTime,"-").concat(this.adaptTimeRange[t].endTime)),this.emit(ka,t),this.seekTime=this.changeBitRateTime,this.changeBitRateTime=-1;case 21:this.log(xe.LOG,"[switchBitrate], reset adaptTimeRange state,",t),this._needInitSegment=!0,this.resetTransmuxer(),U&&(this._switchBitRate=!1);case 25:if(!this._switchBitRate||!this.metaLoading){e.next=27;break}return e.abrupt("return");case 27:a=this.getFragRange(t),(F=this.getFragmentFromCache(t,a))&&this._needInitSegment&&!F.initSeg&&(F=null,this.log(xe.LOG,"[mp4.load] fragIndex ".concat(t,", Data In Cache but not has init, so not use cacheData"))),F?(l=F.muxSampleIdxRange,Q=l.video,d=l.audio,this._lastDemuxSampleIdxRange.video=Q,this._lastDemuxSampleIdxRange.audio=d,this.log(xe.LOG,"[mp4.load] fragIndex: ".concat(t," Data In Cache"),"needInit: ".concat(this._needInitSegment,", muxSampleIdxRange: ").concat(JSON.stringify(F.muxSampleIdxRange)),JSON.stringify(a)),this.adaptTimeRange[t].downloaded=!0,this.adaptTimeRange[t].isLoading=!0,this._needInitSegment=!1,this._loadSuccessCallBack&&this._loadSuccessCallBack(F)):(this.log(xe.LOG,"loadFragment ".concat(t),"bitRate: ".concat(this._bitRate,", range: ").concat(JSON.stringify(a))),this.seekTime>0?(s=this.getSubRange(t,this.seekTime,a),null===(o=this.resetDemuxSampleIdx)||void 0===o||o.call(this,this.seekTime,s),this.loadFragment(t,s),this.seekTime=-1):this.loadFragment(t,a));case 31:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{key:"getFragmentFromCache",value:function(e,t){var n=this.preloadCache;if(!n||!n.segList)return null;for(var U=-1,i=n.segList,r=n.initSeg,a=0;a<i.length;a++)if(i[a].index===e){U=a;break}if(U<0)return null;var F=i[U];if(F.range[1]>=t[1]){var l=[this.adaptTimeRange[e].startTime,this.adaptTimeRange[e].endTime];return{buffer:F.buffer,range:t,muxSampleIdxRange:F.muxSampleIdxRange,context:{range:t,fragIndex:e,state:!0,adaptTimeRange:[l[0],l[1]]},state:!0,initSeg:this._needInitSegment?r:void 0}}return null}},{key:"cacheRepeatData",value:function(e,t,n){var U;if(e&&null!=e&&e.length&&null!==(U=this._repeatInfo.data)&&void 0!==U&&U.byteLength&&!this.options.disableRepeatRange&&(this._repeatInfo.startPos<0&&t[0]+n.byteLength>=e[0]&&t[0]+n.byteLength<=e[1]+1&&(this._repeatInfo.startPos=e[0]),this._repeatInfo.startPos>=0&&t[0]+n.byteLength>=e[0]&&t[0]+n.byteLength<=e[1]+1)){var i=this._repeatInfo.startPos+this._repeatInfo.curDataPos-t[0];if(i<0)return;var r=n.slice(i);if(this._repeatInfo.curDataPos+r.byteLength<this._repeatInfo.data.byteLength)this._repeatInfo.data.set(r,this._repeatInfo.curDataPos),this._repeatInfo.curDataPos+=r.byteLength,this.log(xe.LOG,"repeatInfo pos: ".concat(this._repeatInfo.startPos,"-").concat(this._repeatInfo.startPos+this._repeatInfo.curDataPos),"curAppendLen: ".concat(r.byteLength));else try{var a=Math.max(2*this._repeatInfo.data.byteLength,2*(e[1]-e[0])),F=Fa.newUint8Array(a);if(!F)return;F.set(this._repeatInfo.data.slice(0,this._repeatInfo.curDataPos),0),F.set(r,this._repeatInfo.curDataPos),this._repeatInfo.curDataPos+=r.byteLength,delete this._repeatInfo.data,this._repeatInfo.data=F,this.log(xe.LOG,"repeatInfo pos: ".concat(this._repeatInfo.startPos,", curDataPos: ").concat(this._repeatInfo.curDataPos))}catch(l){console.error("repeat data cache new array failed")}}}},{key:"_mux",value:function(e,t,n,U){this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime<0&&(this.timeRecord.startMuxTime=Fa.nowTime(),this.firstFrameTime.startMuxTime=Fa.nowTime()-this.timeRecord.startLoadTime);var i=this.getSamplesRange(n,"video"),r=this.getSamplesRange(n,"audio");this.log(xe.LOG,"mux sampleRange,",i,r);var a=[t,t+e.byteLength];if(this.transmuxerWorkerControl){var F={range:a,state:U,fragIndex:n};this.log(xe.LOG,"[transmuxerWorker start] range: ".concat(JSON.stringify(a)),",dataLen: ".concat(e.byteLength),F),this.transmuxerWorkerControl.transmux(this.workerSequence,e,t,i,r,this.meta.moov,this.useEME,this.secretKey,F)}else try{var l,Q,d,o;this.MP4Demuxer||(this.MP4Demuxer=new wr(this.videoTrak,this.audioTrak,null,{openLog:rn}));var s=this.MP4Demuxer.demuxPart(e,t,i,r,this.meta.moov,this.useEME,this.keyValue);this.FMP4Remuxer||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new Ki(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:rn}));var c=s.videoTrack,B=s.audioTrack,R=null==c?void 0:c.samples,u=(null==R?void 0:R.length)>0?R[0].sampleOffset:-1,h=(null==R?void 0:R.length)>0?R[R.length-1].sampleOffset:-1,V=null==B?void 0:B.samples,Z=(null==V?void 0:V.length)>0?V[0].sampleOffset:-1,p=(null==V?void 0:V.length)>0?V[V.length-1].sampleOffset:-1;this.updateDemuxSampleIdxRange([u,h],[Z,p]);var S=this.meta.videoTimescale,m=(null==R?void 0:R.length)>0?R[0].dts/S:-1,J=(null==R?void 0:R.length)>0?R[R.length-1].dts/S:-1,W=U||(null==V?void 0:V.length)>0?null==s||null===(l=s.audioTrack)||void 0===l?void 0:l.startPts:-1,k=U||(null==V?void 0:V.length)>0?null==s||null===(Q=s.audioTrack)||void 0===Q?void 0:Q.endPts:-1;this.log(xe.LOG,"[mux] ".concat(n),",videoTimeRange: ".concat(m,"-").concat(J),",videoSampleIdx: ".concat(u,"-").concat(h),",audioTimeRange: ".concat(null==s||null===(d=s.audioTrack)||void 0===d?void 0:d.startPts,"-").concat(null==s||null===(o=s.audioTrack)||void 0===o?void 0:o.endPts),",audioSampleIdx: ".concat(Z,"-").concat(p),JSON.stringify(a),U);var E,y=[Math.min.apply(Math,Y([m,W].filter((function(e){return-1!==e})))),Math.max.apply(Math,Y([J,k].filter((function(e){return-1!==e}))))];if(this.FMP4Remuxer){var f=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:a});f.initSegment&&(this._needInitSegment=!1),E={buffer:Fa.concatData(f.audioSegment,f.videoSegment),range:a,state:U,context:{range:a,fragIndex:n,timeRange:y},initSeg:f.initSegment}}else E={videoTrack:s.videoTrack,audioTrack:s.audioTrack,buffer:null,range:a,state:U,context:{range:a,fragIndex:n,timeRange:y}};this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime>0&&(this.firstFrameTime.firstmux=Fa.nowTime()-this.timeRecord.startMuxTime),this._loadSuccessCallBack&&this._loadSuccessCallBack(E)}catch(N){var b=null==N?void 0:N.message;this.log(xe.ERROR,"mux err:",b);var v=new vn(fn.REMUX,yn.muxError,{msg:b});this.errorHandler(v,"mux",{fragIndex:n,range:[t,t+e.byteLength]})}}},{key:"updateDemuxSampleIdxRange",value:function(e,t){(null==e?void 0:e[1])>=0&&(this._lastDemuxSampleIdxRange.video=e[1]),(null==t?void 0:t[1])>=0&&(this._lastDemuxSampleIdxRange.audio=t[1]),this.log(xe.LOG,"updateDemuxSampleIdxRange",JSON.stringify(this._lastDemuxSampleIdxRange))}},{key:"loadFragment",value:(i=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._curLoadSegIdx=t,!this._isPending&&0!==(null==n?void 0:n[1])&&this.adaptTimeRange[t]&&!this.adaptTimeRange[t].isLoading&&0!==(null==n?void 0:n.length)){e.next=3;break}return e.abrupt("return");case 3:if(this.log(xe.LOG,"[MP4.loadFragment] fragIndex: ".concat(t),",range: ".concat(JSON.stringify(n),", len: ").concat(n[1]-n[0],","),"repeatInfo: ".concat(this._repeatInfo.startPos,"-").concat(this._repeatInfo.startPos+this._repeatInfo.curDataPos)),this._segmentToBitRateMap.set(t,this._bitRate),this.timeRecord.startLoadTime<0&&(this.timeRecord.startLoadTime=Fa.nowTime()),!(n.length>=2&&n[1]&&n[1]>0&&n[0]>=this._repeatInfo.startPos&&n[1]<this._repeatInfo.startPos+this._repeatInfo.curDataPos)){e.next=16;break}this.adaptTimeRange[t].isLoading=!0,U=Math.max(n[0],this._repeatInfo.startPos+this._repeatInfo.usedPos),i=new Uint8Array(this._repeatInfo.data.slice(U-this._repeatInfo.startPos,n[1]-this._repeatInfo.startPos+1)),this.log(xe.LOG,"[mp4.loadFragment] fragIndex: ".concat(t),"has all data: ".concat(U,", ").concat(n[1]),"repeatInfo: ".concat(this._repeatInfo.startPos,"-").concat(this._repeatInfo.startPos+this._repeatInfo.usedPos),"curDataPos: ".concat(this._repeatInfo.startPos+this._repeatInfo.curDataPos)),this.adaptTimeRange[t].downloaded=!0,this.metaLoading||0===this._repeatInfo.startPos?(this._repeatInfo.usedPos=0,this.log(xe.LOG,"[mp4.loadFragment] has all data set repeatInfo.usedPos = 0")):(r=this.adaptTimeRange[t].range[0]-this._repeatInfo.startPos,a=this.adaptTimeRange[t].range[1]+1-this._repeatInfo.startPos,F=new Uint8Array(this._repeatInfo.data.slice(r,a)),this.resetRepeatInfo(),this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,this.adaptTimeRange[t].range,F)),this._mux(i,U,t,!0),e.next=43;break;case 16:if(!(n.length>=2&&n[0]&&n[0]>=this._repeatInfo.startPos&&n[0]<=this._repeatInfo.startPos+this._repeatInfo.curDataPos)){e.next=37;break}if(this.adaptTimeRange[t].isLoading){e.next=35;break}if(l=Math.max(n[0],this._repeatInfo.startPos+this._repeatInfo.usedPos),Q=Math.min(n[1]+1,this._repeatInfo.startPos+this._repeatInfo.curDataPos),!((d=new Uint8Array(this._repeatInfo.data.slice(l-this._repeatInfo.startPos,Q-this._repeatInfo.startPos))).byteLength>0)){e.next=27;break}return this._repeatInfo.usedPos=Q-this._repeatInfo.startPos,this.log(xe.LOG,"[mp4.loadFragment] has part data: ",l,l+d.byteLength),this.log(xe.LOG,"[mp4.loadFragment] ","repeatInfo, pos: ".concat(this._repeatInfo.startPos,"-").concat(this._repeatInfo.startPos+this._repeatInfo.usedPos),",curDataPos: ".concat(this._repeatInfo.startPos+this._repeatInfo.curDataPos)),this._mux(d,l,t,n[1]<=this._repeatInfo.startPos+this._repeatInfo.usedPos),e.abrupt("return");case 27:if(this.metaLoading||this.adaptTimeRange[t].isLoading){e.next=35;break}return this.log(xe.LOG,"[mp4.loadFragment] load part data >>> ",this._repeatInfo.startPos+this._repeatInfo.curDataPos,n[1]),this.adaptTimeRange[t].isLoading=!0,s=[this._repeatInfo.startPos+this._repeatInfo.usedPos,n[1]],(c=null===(o=this.adaptTimeRange[t])||void 0===o?void 0:o.repeatRange)&&c[0]<s[0]?(B=[this.adaptTimeRange[t].repeatRange[0],s[0]],R=this._repeatInfo,u=R.startPos,h=R.curDataPos,V=R.data,Z=V.slice(B[0]-u,h),this.resetRepeatInfo(),this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,B,Z)):this.resetRepeatInfo(),e.next=35,this.startLoad(s,t);case 35:e.next=43;break;case 37:if(this.metaLoading&&!(n[0]>this._repeatInfo.startPos)||this.adaptTimeRange[t].isLoading){e.next=43;break}return this.adaptTimeRange[t].isLoading=!0,this.log(xe.LOG,"[mp4.loadFragment] ready to load all data ,fragIdx: ".concat(t,", range: ").concat(n)),this.resetRepeatInfo(),e.next=43,this.startLoad(n,t);case 43:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"resetRepeatInfo",value:function(){this.log(xe.LOG,", resetRepeatInfo"),this._repeatInfo.startPos=-1,this._repeatInfo.curDataPos=0,this._repeatInfo.usedPos=0}},{key:"setSwitchPCDNCallBack",value:function(e){this._switchPCDNCallBack=e}},{key:"updateChangeBitRateTime",value:function(e){this.changeBitRateTime=e}},{key:"startLoad",value:(U=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,B,R,u,h=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=h.length>2&&void 0!==h[2]&&h[2],0===n&&(null===(U=this.firstFrameTime)||void 0===U?void 0:U.first_gop_req_cnt)<0?this.firstFrameTime.first_gop_req_cnt=1:n>0&&(null===(i=this.firstFrameTime)||void 0===i?void 0:i.first_gop_req_cnt)<0&&(this.firstFrameTime.first_gop_req_cnt=0),a=this.selectedPCDN(r),F=a||this.url,F=this._addRangeToUrl(F,t),this.log(xe.LOG,"[startLoad], ",n,JSON.stringify(t),F),e.prev=6,l={index:n,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen,url:F,priOptions:{type:a?Na:va}},a&&(l.headers={"X-Origin-Server-Host":this._domain}),e.next=11,this.MP4Loader.loadData(t,this.MP4Loader.cache,l);case 11:e.next=30;break;case 13:if(e.prev=13,e.t0=e.catch(6),o=(null===e.t0||void 0===e.t0||null===(Q=e.t0.options)||void 0===Q||null===(d=Q.priOptions)||void 0===d?void 0:d.type)===Na||!!a,B=e.t0.url||(o?a:this.url),!o){e.next=28;break}return this.pcdnVVStat.conn_fail_num++,c.pcdn_download_failed_cnt++,s=this._pcdnNodeList.shift(),this.emit(Ea,s),this.log(xe.ERROR,"pcdn load err, retry use cdn, fragIndex: ".concat(n),"range: ".concat(JSON.stringify(t),", err: ").concat(null===e.t0||void 0===e.t0?void 0:e.t0.message,", ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(R=e.t0.response)||void 0===R?void 0:R.status)),"url: ".concat(B)),e.next=26,this.startLoad(t,n,!0);case 26:e.next=29;break;case 28:this.log(xe.ERROR,"cdn load err, fragIndex: ".concat(n),"range: ".concat(JSON.stringify(t),", err: ").concat(null===e.t0||void 0===e.t0?void 0:e.t0.message,", ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(u=e.t0.response)||void 0===u?void 0:u.status)),"url: ".concat(B));case 29:this.loadError(e.t0,"loadFragment",o,{range:t,fragIndex:n,url:B});case 30:case"end":return e.stop()}}),e,this,[[6,13]])}))),function(e,t){return U.apply(this,arguments)})},{key:"loadError",value:function(e,t,n,U){var i,r;!e.response&&(e.response={}),e.isTimeout?e.response.status=yn.timeout:null!=e&&null!==(i=e.response)&&void 0!==i&&i.status||(e.response.status=yn.networkError);var a=Fa.getHostFromUrl(null==U?void 0:U.url);this.markErrHost(a),this.emit(ya,{src:null==U?void 0:U.url,host:a,errorCode:null==e||null===(r=e.response)||void 0===r?void 0:r.status,message:null==e?void 0:e.message,range:(null==U?void 0:U.range)&&JSON.stringify(U.range),headers:null==U?void 0:U.headers}),n||this.errorHandler(e,t,U)}},{key:"loadAllFragmentData",value:(n=f(k().mark((function e(t,n,U){var i,r,a,F,l,Q,d,o,s,B,R,u,h,V,Z,p,S,m,J=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=J.length>3&&void 0!==J[3]&&J[3],!this.hasDestroyed){e.next=3;break}return e.abrupt("return");case 3:return this.resetRepeatInfo(),a=(null===(i=this.adaptTimeRange[t])||void 0===i?void 0:i.range)||this.getFragRange(t),this._curLoadSegIdx=t,F=this.selectedPCDN(r),l=Fa.extUrl(F||this.url,W({__rand:(new Date).getTime()},this.options.reqParams)),e.prev=8,this.log(xe.LOG,"loadAllFragmentData before, index: ".concat(t),"range: ".concat(JSON.stringify(a)),"use-pcdn: ".concat(!!F)),Q={index:t,url:l,priOptions:{type:F?Na:va}},F&&(Q.headers={"X-Origin-Server-Host":this._domain}),e.next=14,this.MP4Loader.loadData(a,this.MP4Loader.cache,Q);case 14:if(d=e.sent,this.log(xe.LOG,"loadAllFragmentData after, index: ".concat(t),"range: ".concat(JSON.stringify(a))),d&&d.data){e.next=20;break}return o=new Error("response null"),U?U(o):this.loadError(o,"loadFragment",!!F,{range:a,fragIndex:t,url:F||this.url}),e.abrupt("return");case 20:(s=d.data)&&a&&a.length>=2&&(null==s?void 0:s.byteLength)===a[1]-a[0]+1?(this._receiveDataPos=a[0]+(null==s?void 0:s.byteLength),this._loadSuccessCallBack=n,this.adaptTimeRange[t].downloaded=!0,this.cacheRepeatData(this.adaptTimeRange[t].repeatRange,a,s),this._mux(s,a[0],t,!0)):(R=sa(null==d||null===(B=d.response)||void 0===B?void 0:B.headers),this.log(xe.LOG,"[FragLoadDowned check false, retry load], fragmentIdx: ".concat(t),"dataLen: ".concat(null==s?void 0:s.byteLength,", range: ").concat(JSON.stringify(a)),"headers: ".concat(JSON.stringify(R),", url: ").concat(l)),u=new Error("dataLen not match"),this.resetRepeatInfo(),h=this.adaptTimeRange[t],this.emit(ba,[h.startTime,h.endTime]),this.loadError(u,"loadFragment",!!F,{range:a,fragIndex:t,url:l,headers:R})),e.next=37;break;case 24:if(e.prev=24,e.t0=e.catch(8),!(p=(null===e.t0||void 0===e.t0||null===(V=e.t0.options)||void 0===V||null===(Z=V.priOptions)||void 0===Z?void 0:Z.type)===Na||!!F)){e.next=35;break}return c.pcdn_download_failed_cnt++,this._pcdnNodeList.shift(),this.log(xe.ERROR,"[loadAllFragmentData], pcdn load err, retry use cdn","fragIndex: ".concat(t,", ").concat((null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(S=e.t0.response)||void 0===S?void 0:S.status),", ").concat(null===e.t0||void 0===e.t0?void 0:e.t0.message)),e.next=33,this.loadAllFragmentData(t,n,U,!0);case 33:e.next=36;break;case 35:this.log(xe.ERROR,"[MP4] loadAllFragmentData error: ".concat(JSON.stringify({fragIndex:t,range:a})),(null===e.t0||void 0===e.t0?void 0:e.t0.isTimeout)||(null===e.t0||void 0===e.t0||null===(m=e.t0.response)||void 0===m?void 0:m.status),null===e.t0||void 0===e.t0?void 0:e.t0.message);case 36:this.loadError(e.t0,"loadFragment",p,{range:a,fragIndex:t,url:e.t0.url||(p?F:this.url)});case 37:case"end":return e.stop()}}),e,this,[[8,24]])}))),function(e,t,U){return n.apply(this,arguments)})},{key:"currentLoadUseUrl",value:function(){return this._isUseCDN?this.url:(null===(e=this._pcdnNodeList)||void 0===e?void 0:e.length)>0?this._pcdnNodeList[0].url:"";var e}},{key:"getCurSwitchPCDNCnt",value:function(){return this._PCDNSwitchCnt}},{key:"selectedPCDN",value:function(e){if(this._PCDNState!==Ca&&!e){var t;if(this.isUsePCDN()){if(this._isUseCDN){if(this._switchPCDNCallBack){var n=this._switchPCDNCallBack();n>0&&(this.options.switchPCDNMaxCnt=n)}if(this._PCDNSwitchCnt>=this.options.switchPCDNMaxCnt)return this._isUseCDN=!0,this.log(xe.LOG,"cdn switch pcdn out limit, curSwitchCnt: ".concat(this._PCDNSwitchCnt,", maxCnt: ").concat(this.options.switchPCDNMaxCnt)),null;this._PCDNSwitchCnt++,this.log(xe.LOG,"cdn switch pcdn, curSwitchCnt: ".concat(this._PCDNSwitchCnt,", maxCnt: ").concat(this.options.switchPCDNMaxCnt))}this._isUseCDN=!1,t=Fa.extUrl(this._pcdnNodeList[0].url,W({__vid:this.options.vid},this.options.reqParams)),this._lastPCDNUrl!==t&&(this.emit(Wa,t),this._lastPCDNUrl=t,this.pcdnVVStat.conn_req_num+=1),c.pcdn_download_request_cnt++}else this._isUseCDN||(this.log(xe.LOG,"pcdn switch cdn PCDNSwitchCnt: ".concat(this._PCDNSwitchCnt,", maxCnt: ").concat(this.options.switchPCDNMaxCnt)),this.pcdnVVStat.conn_jump_num+=1),this._isUseCDN=!0;return t}this._isUseCDN=!0}},{key:"cancelLoading",value:(t=f(k().mark((function e(){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.MP4Loader){e.next=3;break}return e.next=3,this.MP4Loader.cancel();case 3:this._optionDataLenInfo[Na]&&this._optionDataLenInfo[Na]>0&&(this.emit(fa,{load_type:Na,len:this._optionDataLenInfo[Na]}),this._optionDataLenInfo[Na]=0),this._optionDataLenInfo[va]&&this._optionDataLenInfo[va]>0&&(this.emit(fa,{load_type:va,len:this._optionDataLenInfo[va]}),this._optionDataLenInfo[va]=0);case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"updateUrl",value:function(e,t){var n=Fa.getHostFromUrl(e);this._defaultDomain||(this._defaultDomain=n),n.indexOf("www.")<0?this._domain=n:this._domain=this._defaultDomain,this.url=e,this.backUrl=t||[]}},{key:"getDataBitRate",value:function(e){return this._segmentToBitRateMap.get(e)}},{key:"checkCodecH265",value:function(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}},{key:"checkCodecH266",value:function(){return this.meta&&this.meta.videoCodec.indexOf("bvc2")>-1}},{key:"destroy",value:function(){this.hasDestroyed||(this.resetTransmuxer(),this.transmuxerWorkerControl&&this.transmuxerWorkerControl.destroy(),this.fileSize=0,this._isPending=!1,this.metaLoading=!1,this.resetRepeatInfo(),delete this._repeatInfo.data,this._bitRateInfoMap.clear(),this._segmentToBitRateMap.clear(),this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy()),this.removeAllListeners(),this.hasDestroyed=!0,this.pcdnVVStat=this.resetPcdnVVStat())}},{key:"resetPcdnVVStat",value:function(){return{try_req_node:0,req_node_succ:0,has_ret_node:0,conn_req_num:0,conn_fail_num:0,conn_jump_num:0}}},{key:"resetTransmuxer",value:function(){var e;null===(e=this.resetDemuxSampleIdx)||void 0===e||e.call(this),this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null,this.transmuxerWorkerControl&&this.transmuxerWorkerControl.reset()}},{key:"getMediaEndTime",value:function(){if(this._mediaEndTime>0)return this._mediaEndTime;var e=this.videoTrak,t=this.audioTrak;if((null==e?void 0:e.length)>0){var n=e[e.length-1].endTime;this._mediaEndTime=this._mediaEndTime<0?n:Math.min(n,this._mediaEndTime)}if((null==t?void 0:t.length)>0){var U=t[t.length-1].endTime;this._mediaEndTime=this._mediaEndTime<0?U:Math.min(U,this._mediaEndTime)}return this._mediaEndTime}},{key:"checkIsLoadEnd",value:function(e){var t=this.videoTrak,n=this.audioTrak;if(!t&&!n)return!1;var U=0,i=0;if((null==t?void 0:t.length)>0){var r=t[t.length-1].range;(null==r?void 0:r.length)>0&&(U=r[1])}if((null==n?void 0:n.length)>0){var a=n[n.length-1].range;(null==a?void 0:a.length)>0&&(i=a[1])}return e>=Math.max(U,i)}}],[{key:"pcdnDownLoadReqCnt",get:function(){var e=c.pcdn_download_request_cnt,t=c.pcdn_download_failed_cnt;return c.pcdn_download_request_cnt=0,c.pcdn_download_failed_cnt=0,{pcdn_download_request_cnt:e,pcdn_download_failed_cnt:t}}},{key:"getDefaultConfig",value:function(){return{onProcessMinLen:1024,xhrSetup:null,chunkSize:8e5,isCache:!1,playerId:"",vid:"",afterLoadeddataCallBackLen:0,ext:{}}}}]),c}(ot);T(Xa,"pcdn_download_request_cnt",0),T(Xa,"pcdn_download_failed_cnt",0);var xa=function(e){g(n,e);var t=G(n);function n(e,U,i,r,a,F){var l;return b(this,n),(l=t.call(this,e,U,i,r,a,F)).logTag="".concat(F,"_").concat(Zn.GOP)||"",l}return N(n,[{key:"updateAdaptTimeRange",value:function(e,t){this.lastTargetDur=t;for(var n=this.adaptTimeRange,U=0;U<n.length;U++){var i=n[U].timeRangeIdx;if(e>=i[0]&&e<i[1])return this.log(xe.LOG,"has adaptTimeRange,startSrcIdx: ".concat(e,", adaptTimeRangeIdx: ").concat(U,", dur: ").concat(t),JSON.stringify(n[U])),U}var r=n.length>0?n[n.length-1].timeRangeIdx[1]:0;if(r>=this.timeRange.length)return n.length-1;for(;r<e;){var a=this.timeRange[r].startTime,F=this.timeRange[r].endTime,l={startTime:a,endTime:F,timeRangeIdx:[r,r+1],duration:F-a,downloaded:!1,isLoading:!1};this.adaptTimeRange.push(l),this.updateTimeRangeInAdaptTimeRangeIdx(l.timeRangeIdx,this.adaptTimeRange.length-1),this.log(xe.LOG,"gap adaptTimeRange,adaptTimeRangeIdx: ".concat(this.adaptTimeRange.length-1),JSON.stringify(l)),r++}for(var Q=0,d=r,o=r;o<this.timeRange.length;o++){if(!(Q<t)){d=o;break}Q+=this.timeRange[o].endTime-this.timeRange[o].startTime}o===this.timeRange.length&&(d=this.timeRange.length);var s=[r,d],c=this.timeRange[s[0]].startTime,B=s[1]===this.timeRange.length?this.timeRange[s[1]-1].endTime:this.timeRange[s[1]].startTime,R={startTime:c,endTime:B,timeRangeIdx:s,duration:B-c,downloaded:!1,isLoading:!1};return this.log(xe.LOG,"update adaptTimeRange,startIdx,",s[0],", dur,",t,JSON.stringify(R)),this.adaptTimeRange.push(R),this.updateTimeRangeInAdaptTimeRangeIdx(s,this.adaptTimeRange.length-1),this.adaptTimeRange.length-1}},{key:"updateTimeRangeInAdaptTimeRangeIdx",value:function(e,t){for(var n=e[0];n<e[1];n++)n<this.timeRange.length&&(this.timeRange[n].adaptTimeRangeIdx=t)}},{key:"getAdaptIdxBySrcIdx",value:function(e,t){var n,U=this.adaptTimeRange.length;if(!t&&e>=(null===(n=this.adaptTimeRange[U-1])||void 0===n?void 0:n.timeRangeIdx[1])){var i=this.lastTargetDur||5;this.updateAdaptTimeRange(e,i)}for(var r=0;r<this.adaptTimeRange.length;r++){var a=this.adaptTimeRange[r].timeRangeIdx;if(a&&e>=a[0]&&e<a[1])return r}return-1}},{key:"getFragmentIdx",value:function(e){var t,n,U,i;if(null!==(t=this.videoTrak)&&void 0!==t&&t.length){var r;if(n=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),U=null===(r=this.audioTrak)||void 0===r?void 0:r.find((function(t){return t.startTime<=e&&t.endTime>e})),n&&U)return Math.min(n.index,U.index);if(n||U)return n?n.index:U.index;var a=Number.MAX_VALUE;return this.videoTrak.length>0&&(a=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(a=Math.min(this.audioTrak.length-1,a)),a}return(U=null===(i=this.audioTrak)||void 0===i?void 0:i.find((function(t){return t.startTime<=e&&t.endTime>e})))?U.index:0}},{key:"resetFragmentLoadState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log(xe.LOG,", resetFragmentLoadState, fragIndex, ",e,",changeBitrate,",t);for(var n=0;n<this.adaptTimeRange.length;n++)if(n<e?(this.adaptTimeRange[n].downloaded=!0,this.adaptTimeRange[n].isLoading=!0):(this.adaptTimeRange[n].downloaded=!1,this.adaptTimeRange[n].isLoading=!1),t){this.adaptTimeRange[n].range=null;var U=this.adaptTimeRange[n].timeRangeIdx;if(U[0]>=this.timeRange.length){this.log(xe.WARN,"fix adaptTimeRange fragIndex ".concat(e)," ,timeRangeIdx[0] >= this.timeRange.length, so end",U[0],this.timeRange.length,",endFragment,",n),this.adaptTimeRange=this.adaptTimeRange.slice(0,n);break}U[1]>=this.timeRange.length&&(this.log(xe.WARN,"fix adaptTimeRange fragIndex",e," ,timeRangeIdx[1],",U[1],">>>>",this.timeRange.length,",endFragment,",n),U[1]=this.timeRange.length,this.adaptTimeRange=this.adaptTimeRange.slice(0,n+1)),this.adaptTimeRange[n].startTime=this.timeRange[U[0]].startTime,this.adaptTimeRange[n].endTime=U[1]>=this.timeRange.length?this.timeRange[this.timeRange.length-1].endTime:this.timeRange[U[1]].endTime,this.adaptTimeRange[n].range=this.getFragRange(n)}}},{key:"calculateRange",value:function(e){var t,n,U,i,r=null,a=null,F=null,l=null,Q=e<this.adaptTimeRange.length?this.adaptTimeRange[e].timeRangeIdx:null;if(Q){var d=Q[0],o=Q[1];this.log(xe.LOG,"getFragRange, timeRangeIdx,",JSON.stringify(Q));var s=this.videoTrak;s&&(r=d<s.length?s[d]:s[s.length-1],a=o<s.length?s[o-1]:s[s.length-1]);var c=this.audioTrak;c&&(F=d<c.length?c[d]:c[c.length-1],l=o<c.length?c[o-1]:c[c.length-1]);var B=[Math.min((null===(t=r)||void 0===t?void 0:t.range[0])||1/0,(null===(n=F)||void 0===n?void 0:n.range[0])||1/0),Math.max.apply(Math,Y([null===(U=a)||void 0===U?void 0:U.range[1],null===(i=l)||void 0===i?void 0:i.range[1]].filter((function(e){return"number"==typeof e}))).concat([0]))];return this.log(xe.LOG,"calculateRange",e,B[0],"-",B[1]),B}this.log(xe.WARN,"calculateRange err",e,JSON.stringify(this.adaptTimeRange))}},{key:"getTimeRangeByIdx",value:function(e){var t,n,U,i=null,r=this.videoTrak;r&&(i=e<r.length?r[e]:r[r.length-1]);var a=null,F=this.audioTrak;return F&&(a=e<F.length?F[e]:F[F.length-1]),[Math.min((null===(t=i)||void 0===t?void 0:t.range[0])||1/0,(null===(n=a)||void 0===n?void 0:n.range[0])||1/0),Math.max(i?i.range[1]-1:0,a?(null===(U=a)||void 0===U?void 0:U.range[1])-1:0)]}},{key:"getFragRange",value:function(e){var t;if(e<this.adaptTimeRange.length&&null!==(t=this.adaptTimeRange[e])&&void 0!==t&&t.range)return this.log(xe.LOG,"getFragRange exist",e,JSON.stringify(this.adaptTimeRange[e].range)),this.adaptTimeRange[e].range;var n=this.calculateRange(e);if(n&&e<this.adaptTimeRange.length){this.adaptTimeRange[e].range=n;var U=this.adaptTimeRange[e].timeRangeIdx[1];if(U<this.timeRange.length){var i=this.getTimeRangeByIdx(U);(null==i?void 0:i.length)>1&&i[0]<i[1]&&n[1]>i[0]&&(this.adaptTimeRange[e].repeatRange=[i[0],n[1]])}}return n}},{key:"getSubRange",value:function(e,t,n){for(var U=this.adaptTimeRange[e].timeRangeIdx,i=U[0],r=U[0];r<U[1];r++)if(t>=this.timeRange[r].startTime&&t<this.timeRange[r].endTime){i=r;break}var a=[this.getSrcFragRange(i)[0],n[1]];return this.log(xe.LOG,">>>>>getSubRange finalRange ",JSON.stringify(a),",oldRange,",JSON.stringify(n)),a}},{key:"getSrcFragRange",value:function(e){var t,n,U,i=null,r=null;this.log(xe.LOG,"getFragRange, timeRangeIdx, srcFragment,",JSON.stringify(e));var a=this.videoTrak;a&&(i=e<a.length?a[e]:a[a.length-1]);var F=this.audioTrak;F&&(r=e<F.length?F[e]:F[F.length-1]);var l=[Math.min((null===(t=i)||void 0===t?void 0:t.range[0])||1/0,(null===(n=r)||void 0===n?void 0:n.range[0])||1/0),Math.max(i&&(null===(U=i)||void 0===U?void 0:U.range[1])-1||0,r&&r.range[1]-1||0)];return this.log(xe.LOG,",getSrcFragRange",e,l),l}},{key:"getSamplesRange",value:function(e,t){var n=[],U=this.adaptTimeRange[e].timeRangeIdx;switch(t){case"video":if(this.videoTrak&&U[0]<this.videoTrak.length){var i=this.videoTrak[U[0]].frames;n.push(i[0].index);var r=this.videoTrak.length,a=U[1]-1,F=a<r?this.videoTrak[a].frames:this.videoTrak[r-1].frames;n.push(F[F.length-1].index)}break;case"audio":if(this.audioTrak&&U[0]<this.audioTrak.length){var l=this.audioTrak[U[0]].frames;n.push(l[0].index);var Q=this.audioTrak.length,d=U[1]-1,o=d<Q?this.audioTrak[d].frames:this.audioTrak[Q-1].frames;n.push(o[o.length-1].index)}break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return n}}]),n}(Xa),Da=function(e){g(n,e);var t=G(n);function n(e,U,i,r,a,F){var l;return b(this,n),(l=t.call(this,e,U,i,r,a,F)).logTag="".concat(F,"_").concat(Zn.SIZE)||"",l}return N(n,[{key:"updateAdaptTimeRange",value:function(e,t,n){this.lastTargetDur=t;var U=this.adaptTimeRange,i=this.timeRange;if(0===(null==U?void 0:U.length)){var r;null!==(r=i[0])&&void 0!==r&&r.range||(i[0].range=this.calculateRange(0));var a=i[0],F={startTime:a.startTime,endTime:a.endTime,range:a.range,duration:a.duration,downloaded:!1,isLoading:!1};return U.push(F),this.log(xe.LOG,"first adaptTimeRange,adaptTimeRangeIdx",this.adaptTimeRange.length-1,JSON.stringify(F)),this.adaptTimeRange.length-1}if(null!==e&&e>=0){var l,Q;null!==(l=i[e])&&void 0!==l&&l.range||(i[e].range=this.calculateRange(e),this.log(xe.LOG,"adaptTimeRange update timeRange.range ,fragmentIdx",e,JSON.stringify(i[e])));var d=this.getAdaptIdxBySrcIdx(e,!0);if(d>=0)return this.log(xe.LOG," adaptTimeRange find range of timeRange,timeRangeIdx,",e,JSON.stringify(i[e])," ,addaptIdx,",d,JSON.stringify(U[d])),d;for(var o=null===(Q=U[U.length-1])||void 0===Q?void 0:Q.range;(null===(s=i[e])||void 0===s?void 0:s.range[0])>(null==o?void 0:o[1]);){var s,c=this.createAdaptTimeRange(t,n);if(c){var B;if((null==c?void 0:c.range[1])>=(null===(B=i[e])||void 0===B?void 0:B.range[0])){this.log(xe.LOG,"gap adaptTimeRange ignore,adaptTimeRangeIdx",JSON.stringify(c));break}U.push(c);var R=U.length;U[R-1].isLoading=!0,U[R-1].downloaded=!0,this.log(xe.LOG,"gap adaptTimeRange,adaptTimeRangeIdx",this.adaptTimeRange.length-1,JSON.stringify(c))}}}var u=this.createAdaptTimeRange(t,n);return u&&(U.push(u),this.log(xe.LOG,"update adaptTimeRange,startIdx",this.adaptTimeRange.length-1,JSON.stringify(u))),this.adaptTimeRange.length-1}},{key:"createAdaptTimeRange",value:function(e,t,n){this.log(xe.LOG,"createAdaptTimeRange, mergeDuration, ",e,",loadSize,",t,", adaptIdx,",n);var U=this.adaptTimeRange,i=U[!n||n<=0?U.length-1:n-1],r=i.range[1]+1;if(r>=this.fileSize)return null;(!t||t<0)&&(t=this.getCurLoadSize(e));var a=Math.min(r+t,this.fileSize-1);return{startTime:i.endTime,endTime:this.updateAdaptRangeEndTime(a),range:[r,a],duration:e,downloaded:!1,isLoading:!1}}},{key:"getCurLoadSize",value:function(e){(!e||e<=0)&&(e=5);var t=Math.floor(this._bitRate/8||this.fileSize/this.meta.duration);return Math.ceil(e*t)}},{key:"getFragRange",value:function(e){var t,n=this.adaptTimeRange;if(e<n.length&&null!==(t=n[e])&&void 0!==t&&t.range)return this.log(xe.LOG,"getFragRange exist",e,JSON.stringify(n[e].range)),n[e].range;var U=this.updateAdaptTimeRange(null,n[e].duration);return this.adaptTimeRange[U].range}},{key:"getSamplesRange",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1,U=[],i=this._lastDemuxSampleIdxRange,r=i.video,a=i.audio;switch(t){case"video":n<0?U.push(0===r?0:r+1,this.meta.videoSamplesLen-1):this.resetDemuxSampleIdx();break;case"audio":n<0?U.push(0===a?0:a+1,this.meta.audioSamplesLen-1):this.resetDemuxSampleIdx();break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return U}},{key:"getAdaptIdxBySrcIdx",value:function(e,t){var n=this.adaptTimeRange,U=this.timeRange;if(null==n||!n.length||null==U||!U.length)return-1;var i=n.length;if(t)return this.getAdaptIdx(e);var r=this.getAdaptIdx(e);if(r>=0)return this.log(xe.LOG,",getAdaptIdxBySrcIdx, fragIndex, ",e,",adaptIdx,",r),r;if(n[i-1].range[1]<this.fileSize-1)for(;(null===(a=U[e].range)||void 0===a?void 0:a[1])<(null===(F=n[r].range)||void 0===F?void 0:F[1]);){var a,F;this.updateAdaptTimeRange(e,this.lastTargetDur||5);var l=this.getAdaptIdx(e);if(l>0)return this.log(xe.LOG,"new make, getAdaptIdxBySrcIdx, fragIndex, ",e,",adaptIdx,",r),l}return-1}},{key:"getAdaptIdx",value:function(e){var t,n=this.adaptTimeRange,U=this.timeRange,i=null===(t=U[e])||void 0===t?void 0:t.range;i||(i=Fa.getFragRange(e,this.videoTrak,this.audioTrak),U[e].range=i,this.log(xe.LOG,",updateTimeRange.range, fragIndex, ",e,JSON.stringify(U[e])));var r=n.findIndex((function(e){var t,n;return(null==e?void 0:e.range[0])<=(null===(t=i)||void 0===t?void 0:t[0])&&(null==e?void 0:e.range[1])>=(null===(n=i)||void 0===n?void 0:n[0])}));return this.log(xe.LOG,",getAdaptIdx, srcIdx, ",e,JSON.stringify(U[e],", adaptIdx,",JSON.stringify(n[r]))),r}},{key:"resetFragmentLoadState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log(xe.LOG,", resetFragmentLoadState, fragIndex, ",e,",changeBitrate,",t);for(var n=this.adaptTimeRange,U=0;U<n.length;U++)if(U<e?(n[U].downloaded=!0,n[U].isLoading=!0):(n[U].downloaded=!1,n[U].isLoading=!1),t)if(n[U].range=null,0===U){var i=this.timeRange[U],r=i.range,a=i.startTime,F=i.endTime,l=i.duration;r||(this.timeRange[U].range=this.calculateRange(U)),n[U].range=this.timeRange[U].range,n[U].startTime=a,n[U].endTime=F,n[U].duration=l}else{var Q=this.createAdaptTimeRange(n[U].duration,null,U);Q?(n[U].range=Q.range,n[U].startTime=n[U-1].endTime,n[U].endTime=Q.endTime,n[U].duration=n[U].endTime-n[U].startTime):(this.adaptTimeRange=n.slice(0,U),this.log(xe.WARN,"fix adaptTimeRange fragIndex",U,JSON.stringify(this.adaptTimeRange[U-1])))}}},{key:"getSubRange",value:function(e,t,n){var U,i,r=this.adaptTimeRange,a=this.timeRange,F=null===(U=r[e])||void 0===U?void 0:U.range,l=this.getFragmentIdx(t);null!==(i=a[l])&&void 0!==i&&i.range||(a[l].range=this.calculateRange(l));var Q=[a[l].range[0],F[1]];return this.log(xe.LOG,">>>>>getSubRange finalRange ",JSON.stringify(Q),",oldRange,",JSON.stringify(n),",adaptIdx,",e,",srcFragIndex,",l,JSON.stringify(a[l])),Q}},{key:"resetDemuxSampleIdx",value:function(e){if(e){var t=this.videoTrak,n=this.audioTrak;if(t){var U=t.find((function(t){return t.startTime<=e&&t.endTime>e}));if(U){var i=U.frames;this._lastDemuxSampleIdxRange.video=Math.max(i[0].index-1,0)}}if(n){var r=n.find((function(t){return t.startTime<=e&&t.endTime>e}));if(r){var a=r.frames;this._lastDemuxSampleIdxRange.audio=Math.max(a[0].index-1,0)}}this.log(xe.LOG,"resetDemuxSampleIdx",JSON.stringify(this._lastDemuxSampleIdxRange))}else this._lastDemuxSampleIdxRange={video:0,audio:0}}},{key:"updateAdaptRangeEndTime",value:function(e){var t=this.findFrameInfoByRange("video",e),n=this.findFrameInfoByRange("audio",e),U=-1,i=-1;t&&(U=t.pts/this.meta.videoTimescale),n&&(i=(n.pts||n.dts)/this.meta.audioTimescale);return U>=0&&i>=0?Math.min(U,i):U>=0?U:i}},{key:"findFrameInfoByRange",value:function(e,t){var n,U="video"===e?this.videoTrak:this.audioTrak;if(U){var i=U.findIndex((function(e){return e.range[0]>t})),r=Math.max(0,i-1);if(r>=0){for(var a=U[r].frames,F=a.length-1;F>=0&&!(a[F].offset+a[F].size<=t);F--);F<0&&(F=0),n=a[F]}this.log(xe.LOG,"findFrameInfoByRange, findTrakIdx",r,", frameInfo,",JSON.stringify(n),",type,",e,",rangeEnd,",t)}return n}},{key:"calculateRange",value:function(e){return Fa.getFragRange(e,this.videoTrak,this.audioTrak)}}]),n}(Xa);function Ga(){var e=window.navigator.userAgent,t=e.indexOf("MSIE "),n=e.indexOf("Trident/");return t>0||n>0}function Ia(){return/Safari/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)}function Ma(){var e,t,n,U,i;return!(!navigator.requestMediaKeySystemAccess||(e=Ia(),t=Ga(),n=function(){var e=navigator.mimeTypes,t=navigator.userAgent,n=!1;return e&&t.indexOf("Chrome")>1&&(n=Object.keys(e).some((function(t){return!!(e[t].type&&e[t].type.indexOf("360")>-1)||!!(e[t].type&&e[t].type.indexOf("application/vnd.chromium.remoting-viewer")>-1)||!!(e[t].description&&e[t].description.indexOf("360")>-1)}))),n}(),U=navigator.userAgent.indexOf("Firefox")>0,i=navigator.userAgent.indexOf("Edge")>0,e||t||n||U||i))}function Ya(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":E(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(t){console.log(t)}return!1}function Ka(){if("undefined"==typeof self)return!1;var e=function(){if("undefined"!=typeof self)return self.MediaSource||self.WebKitMediaSource}(),t=!!e&&"function"==typeof e.isTypeSupported;return t&&void 0===self.MediaSource&&(self.MediaSource=e),t}var wa=function(){function e(){var t,n;b(this,e);var U=new Promise((function(e,U){t=e,n=U}));return U.resolve=function(e){t(e),U.state="fulfilled"},U.reject=function(e){n(e),U.state="rejected",U.isBreak="DESTROYED"===e},U.state="pending",U}return N(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),Ha="DESTROYED",Pa="xglog_cache",ja="degrade",_a="UPDATE_URL",za=null,Oa=null,Aa=null,qa=null,$a=0,eF=function(e){g(Q,e);var t,n,U,i,r,a,F,l=G(Q);function Q(e){var t,n,U;return b(this,Q),T(D(U=l.call(this,e)),"_onChangeConfig",(function(e){if(e){var t=e.nextBufferLength===U.config.minBufferLength;if(U.setConfig(e),e.nextBufferLength&&!t)try{U._onTimeUpdate()}catch(n){}}})),T(D(U),"fpsStuckHandle",(function(e){var t=D(U),n=t.player,i=t.mse;if(U.fpsStuckTime||(U.fpsStuckTime=e.currentTime,U.log(xe.LOG,"fpsStuckHandle, currentTime,",e.currentTime)),i&&U.fpsStuckTime>0){var r=n.bufferedPoint;i.clearOpQueues(_e.VIDEO),U.log(xe.LOG,"fpsStuckHandle, remove: ".concat(r.start,"-").concat(r.end,","),"stuckTime: ".concat(U.fpsStuckTime)),i.remove(_e.VIDEO,r.start,r.end).then((function(){n.currentTime=U.fpsStuckTime,U.fpsStuckTime=null}))}})),T(D(U),"_replayHook",(function(e){})),T(D(U),"_retryHook",(function(){var e=D(U),t=e.player,n=e.playerConfig,i=t.paused;U.softDecode?t.vtype=ee.MP4_MSE_SOFT:t.vtype=ee.MP4_MSE,U._defInited=!1;var r=t.currentTime||0;return U.log(xe.LOG,"retryHook ",n.vid,U.codecType,r),U.__onmetadataHandle=function(){r&&(t.currentTime=r,U.log(xe.LOG,"retryHook update currentTime",n.vid,U.codecType,r)),i?t.pause():t.play(),t.video.removeEventListener("loadedmetadata",U.__onmetadataHandle),U.__onmetadataHandle=null},t.video.addEventListener("loadedmetadata",U.__onmetadataHandle),U.destroyMSE(),U._reset(),U.states=[],U.playerStartInit(n.url),!1})),T(D(U),"_playHook",(function(e){U._usePaused=!1,U._cancelLoading=!1,U.log(xe.LOG,"playHook"),U._startProgress()})),T(D(U),"_pauseHook",(function(e){var t;U._usePaused=!0;for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];U.log(xe.LOG,"pauseHook",i[0],null===(t=U.player)||void 0===t?void 0:t.currentTime),i.indexOf(null==pn?void 0:pn.BUFFER_CONTROLS)<0&&(clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=null,U.log(xe.LOG,"pause hook clear buffer_control state")),U._loadStuckCheck()})),T(D(U),"abrSwitchURL",function(){var e=f(k().mark((function e(t){var n,i,r,a,F,l;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=D(U),i=n.playerConfig,r=i.definition.list,a=0,F=0;case 4:if(!(F<r.length)){e.next=11;break}if(t.definition!==r[F].definition){e.next=8;break}return a=F,e.abrupt("break",11);case 8:F++,e.next=4;break;case 11:l=U.player.curDefinition,U.changeDefinition(r[a],l,!0);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),T(D(U),"timerHandle",(function(){U._requestTimer&&U._onTimeUpdate()})),T(D(U),"changeDefineCanPlay",(function(e,t,n,i){var r=D(U).player;r.ended?r.currentTime=0:(r.currentTime=U._changeDefState?U._changeDefState.currentTime:e,(U._changeDefState?U._changeDefState.paused:t)?r.pause():r.play(),U._changeDefState=null,r.emit(m.Events.AFTER_DEFINITION_CHANGE,{from:n,to:i}))})),T(D(U),"changeDefinition",(function(e,t,n){var i=D(U),r=i.player,a=i.playerConfig,F=i.mp4,l=i.config;if(t||(t=r.curDefinition),U._MSEError=!1,U._isReceiveEndedEvent=!1,U.useVideoLoad)return"__auto__"===e.url&&(e.url=r.config.definition.list[0].url),void Aa.call(U.player,e,t);var Q=r.definitionList.filter((function(t){return t.definition===e.definition}));if(Q.length>0&&(e=Q[0]),U._handlerUrl(e.url),e._mainURL=l._mainURL,e._backupURL=l._backupURL,!U._switchBitRateWay||n){var d="自动"===e.definition||"auto"===e.definition;if(n)U.log(xe.LOG,"[switchBitrate:ABR], ready to switch bitRate, ",e.bitrate,e.definition);else{var o,s=!1;if(d)U._abrService&&U._abrService.enable(),s=!0;else{var c;U._abrService&&U._abrService.disable();var B=null===(c=a.definition)||void 0===c?void 0:c.list;if(B&&(!e.bitrate||!e.uri||!e.size||!e.duration))for(var R=0;R<B.length;R++)if(e.definition===B[R].definition){e.bitrate=B[R].bitrate,e.uri=B[R].uri||t.uri,e.size=B[R].size||Fa.getFileSize(e.bitrate,a.duration),e.duration=B[R].duration||U.playerConfig.duration;break}}null===(o=U.adaptRange)||void 0===o||o.updateBitrate(e.bitrate),r.emit(m.Events.DEFINITION_CHANGE,{from:t,to:e}),setTimeout((function(){U._abrService&&U._abrService.updateAutoDefiDesc(r.curDefinition.definition,!d)})),s&&(e=r.curDefinition),U.log(xe.LOG,"[switchBitrate:CBS],switch bitRate, ",e.bitrate,e.definition)}if(r.curDefinition=e,U.mp4.clearPCDNNodeList(),U.checkPCDN(),F){["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){l[t]=e[t]}));var u=U.config,h=u.kid,V=u.drmKeyToken,Z=u.secretKey,p=u.keyValue,S=u.drm,J=null;if(h||V||Z||p||S)U._secretkey?U._secretkey.updateConfig(U.config):(U._secretkey=new A.XGSecretKey(U.config),U._secretkey.on(A.EVENT_EME.ERROR,U._errorHandler)),J=U._secretkey.getLicenseSecret();else{var W=Promise.withResolvers();J=W.promise,(0,W.resolve)()}J.then(function(){var i=f(k().mark((function i(Q){var d,o,s,c,B,R,u,h,V,Z;return k().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(null!=Q&&Q.secretKey&&(!l.keyValue&&(l.secretKey=Q.secretKey),l.decryptKey=Q.decryptKey),a.url=e.url,o=0,s=!1,U._abrService&&U._abrService.isCurrentInAbr()?(c=r.getBufferedRange(r.buffered2),(o=c[1])<r.currentTime&&(o=r.currentTime,U.log(xe.LOG,"abr,bufferRange is invalid, adjust",c,",timeStart,",o))):(o=r.currentTime,s=!0),B=F.getFragmentIdx(o),(R=U.getAdaptTimeRangeIdx(B))<0&&(R=U._curLoadSegmentIdx),U.log(xe.LOG,"switchBitrate point: ".concat(R),"startTime: ".concat(F.adaptTimeRange[R].startTime),"currentTime: ".concat(r.currentTime,", timeStart: ").concat(o)),s&&r.emit("definitionSwitchTime",F.adaptTimeRange[R].startTime+1),u=Math.max(F.adaptTimeRange[R].startTime,r.currentTime),U._definitionChangePointInfo={changeStartTime:u,changeInfo:{from:t,to:e}},U.changeState("changeDefinition",{abr:n,fragIndex:R,startTime:F.adaptTimeRange[R].startTime,currentTime:r.currentTime}),!F){i.next=19;break}return F.updateChangeBitRateTime(o),U.canDownload=!1,i.next=18,F.cancelLoading();case 18:F.metaLoading&&(F.metaLoading=!1);case 19:return U._removeBuffEndTime=F.adaptTimeRange[R].startTime,U._isChangeDefinition=!0,h=r.getBufferedRange(r.buffered),V=null===(d=U._abrService)||void 0===d?void 0:d.isCurrentInAbr(),!(h[1]>0&&h[1]-r.currentTime>5)||U._abrService&&V||(U.mse.clearOpQueues(_e.VIDEO),U.removeBuffer(_e.VIDEO,r.currentTime+5,h[1])),U.log(xe.LOG,"switchBitrate: resetFragmentLoadState,",R),F.resetFragmentLoadState(R),U._curLoadSegmentIdx=R,i.next=29,U.mp4.changeBitRate(e);case 29:U._setCurrentDefinition(e.bitrate),U._emitDefinitionChangeDetailEvent(o),U.canDownload=!0,U._onTimeUpdate(),Z={width:e.width||e.vwidth,height:e.height||e.vheight},r.emit("RESOLUTION_UPDATE",Z);case 35:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(t){U.log(xe.ERROR,"switchBitrate: GET_LICENSE_ERROR,",null==t?void 0:t.message);var n=new m.Errors(U.player,{errorType:fn.DRM,errorCode:yn.drm,errorMessage:(null==t?void 0:t.message)||"GET_LICENSE_ERROR",vid:a.vid});t.errorType="GET_LICENSE_ERROR",U.emit("GET_LICENSE_ERROR",n),U.changeState("LICENSE_ERROR",{d:e.definition})}))}}else U.oldChangeDefinition(e,t)})),T(D(U),"_onVideoError",(function(e){var t,n,i,r,a=D(U).player;U.changeState("video_error",{code:e.code||(null==a||null===(t=a.video)||void 0===t||null===(n=t.error)||void 0===n?void 0:n.code),message:e.message||(null==a||null===(i=a.video)||void 0===i||null===(r=i.error)||void 0===r?void 0:r.message),videoType:U.useVideoLoad})})),T(D(U),"removeBuffer",(function(e,t,n,i){var r,a=U.getBufferDur();null===(r=U.mse)||void 0===r||r.remove(e,t,n).then((function(){var e=U.getBufferDur(),t=a-e;t>0&&(U.emit("removeBuffer",{removeDur:t}),U.log(xe.LOG,"removeBuffer dur,",t)),i&&i()}))})),T(D(U),"_onPlaying",(function(){var e,t;U.changeState("playing",{curtime:U.player.currentTime,buffer:JSON.stringify(null===(e=U.player)||void 0===e||null===(t=e.buffered2)||void 0===t?void 0:t.bufferedList)}),U._waitAdjustTimeCnt>0&&U._waitInBufferTimer&&(U._waitAdjustTimeCnt-=1,U.changeState("waitInBuffer_resume"),U.log(xe.WARN,"[waitInBuffer resume play], waitAdjustTimeCnt,",U._waitAdjustTimeCnt)),clearTimeout(U._waitInBufferTimer),U._waitInBufferTimer=null;var n=D(U),i=n.mp4,r=n.player,a=U.config.resumePlayWaterLevel;if(i){if(!(i&&i.meta&&i.meta.duration-r.currentTime<=a)&&(U.waitLevelStartTime<0&&(U.waitLevelStartTime=r.currentTime),U.playFlag||(U.playFlag=!0),!(void 0===r.isBufferControlPaused||a<=0)&&a>0&&r.currentTime-U.waitLevelStartTime>=2)){var F=r.getBufferedRange(r.buffered2);F[1]>0&&F[1]-r.currentTime<a?(r.paused||(U.emit(Rn,{type:un}),r.pause(null==pn?void 0:pn.BUFFER_CONTROLS),U.log(xe.LOG,"[!!!!!buffer not rich, pause],currentTime, ",r.currentTime,", bufferEnd,",F[1])),clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=setTimeout(U._onPlaying,a/2*1e3)):r.isBufferControlPaused&&r.paused&&(U.log(xe.LOG,"[!!!!!buffer rich, play],, currentTime, ",r.currentTime,", bufferEnd,",F[1]),clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=null,r.isBufferControlPaused=!1,U.emit(Rn,{type:hn}),r.play())}}else U.checkResumePlayTimer>0&&(clearTimeout(U.checkResumePlayTimer),U.checkResumePlayTimer=null,r.isBufferControlPaused&&(r.isBufferControlPaused=!1),r.paused&&r.play())})),T(D(U),"_lowDecoder",(function(){var e="function"==typeof U.player.video.getStats?U.player.video.getStats():null;U.log(xe.WARN,"H265 lowdecode: ".concat(U.playerConfig.vid," "),e,", h265Degrade, ",U.config.h265Degrade),U.config.h265Degrade&&U._onDegrade()})),T(D(U),"_onError",(function(e){U._onDegrade(e)})),T(D(U),"_onDegrade",(function(e){var t,n,i=D(U),r=i.player,a=i.playerConfig,F=i.config;r.video.removeEventListener("lowdecode",U._onDegrade),r.video.removeEventListener("error",U._onError),null===(t=U.mp4)||void 0===t||t.destroy();var l=r.currentTime;if(U.log(xe.WARN,"[h265 degrade], vid,",a.vid,",currtime,",l),U.emit(ja,{errc:null==e?void 0:e.errorCode,err_msg:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),CodecTypes:U.codecType,media_type:a.mediaType}),null!=F&&F.H264Config){var Q=F.H264Config;["drm","getLicenseUrl","kid","keyValue","secretKey","isEncrypt","useEME"].forEach((function(e){F[e]=Q[e]||null}))}var d={mp4encryptplayer:F,mediaType:"video",codecType:ne.H264};if((null==a||null===(n=a.H264DefinitionList)||void 0===n?void 0:n.length)>0){var o=U._processArrayUrl(a.H264DefinitionList);a.H264DefinitionList=o,r.config.definition.list=o,r.config.url=o[0].url,r.config.defaultBitrate=a.H264DefinitionList[0].bitrate,r.config.defaultDefinition=a.H264DefinitionList[0].definition,U.isH265DegradeH264=!0,r.playNext(d),U.__onmetadataHandle=function(){r.currentTime=l,U.isH265DegradeH264=!1,U.log(xe.LOG,"H265DegradeH264 update currentTime",l),r.video.removeEventListener("loadedmetadata",U.__onmetadataHandle),U.__onmetadataHandle=null},r.video.addEventListener("loadedmetadata",U.__onmetadataHandle)}else r.pause(),U._reset(),U.states=[],U.checkReUseMSE(!1),U.log(xe.ERROR,"H265 error,degrade h264 but no h264 url"),U.emit("error",e)})),T(D(U),"_onMp4MetaReady",(function(e,t){if(t&&!t.hasDestroyed){rn&&console.log(">>>>_onMp4MetaReady",Fa.nowTime()),U.firstFrameTime.metaload=t.firstFrameTime.metaload,U.firstFrameTime.bitrate=U.player.curDefinition.bitrate;var n=U._checkMetaInfo(e);if(n)U._errorHandler(n);else{try{U._initEME(t,e),U.softDecode?(U.log(xe.LOG,"initH265MseProxy"),U._initH265MseProxy()):U.player.video instanceof HTMLVideoElement&&(U.log(xe.LOG,"initMse"),U._initMse(e)),U._initPromise.resolve()}catch(r){return void U._errorHandler(new m.Errors(U.player,{errorType:fn.MEDIA,errorCode:yn.eme_hijack,errorMessage:(null==r?void 0:r.message)||"eme or mse catch err",vid:U.playerConfig.vid}))}if(null!=t&&t.timeRange){var i=[];t.timeRange.every((function(e){return i.push({startTime:e.startTime,endTime:e.endTime}),!0})),U.emit("KEYFRAMETIME",i)}t===U.mp4&&U._loadData()}}})),T(D(U),"_onMp4Error",function(){var e=f(k().mark((function e(t,n){var i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=U.playerConfig.vid,console.error("[Index] _onMp4Error",i,t),U.changeState("MP4_ERROR",{state:n,errmsg:(null==t?void 0:t.errorMessage)||(null==t?void 0:t.message),errorType:null==t?void 0:t.errorType,code:null==t?void 0:t.errorCode,httpCode:null==t?void 0:t.httpCode}),U._errorHandler(t);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),T(D(U),"_onMp4Progress",(function(e){U.emit("progress_event",e)})),T(D(U),"_onMp4DataCallBack",(function(){U._isMseInit&&U._onTimeUpdate()})),T(D(U),"_updateDrmConfig",(function(e){var t=D(U),n=t.config;t.mp4.updateSecretKey(n.useEME,n.secretKey,n.decryptKey,n.keyValue),U._secretkey&&e.kid&&U._secretkey.updateKid(e.kid)})),T(D(U),"_updateMSE",(function(e){D(U).player.video instanceof HTMLVideoElement&&(U.log(xe.LOG,"updateMse",e.videoCodec),U._initMse(e))})),T(D(U),"_onVideoTimeUpdate",(function(){var e,t,n,i,r,a,F=D(U),l=F.mse,Q=F.player;(U.waitLevelStartTime<0&&(U.waitLevelStartTime=Q.currentTime),U.checkReStartTimer(),U._isEnded(),Q.isSeeking&&(Q.isSeeking=!1),!U.useVideoLoad&&l&&U._removeBuffEndTime>0&&Q.currentTime>U._removeBuffEndTime+1&&(U.log(xe.LOG,"remove old bitrate buffer",U._removeBuffEndTime),U.removeBuffer(_e.VIDEO,0,U._removeBuffEndTime-1),U._removeBuffEndTime=0),U._definitionChangePointInfo&&Q.currentTime>U._definitionChangePointInfo.changeStartTime)&&(Q.emit(m.Events.AFTER_DEFINITION_CHANGE,U._definitionChangePointInfo.changeInfo),U.log(xe.LOG,m.Events.AFTER_DEFINITION_CHANGE,", currentTime,",Q.currentTime,",from ",null===(e=U._definitionChangePointInfo)||void 0===e||null===(t=e.changeInfo)||void 0===t||null===(n=t.from)||void 0===n?void 0:n.definition," to ",null===(i=U._definitionChangePointInfo)||void 0===i||null===(r=i.changeInfo)||void 0===r||null===(a=r.to)||void 0===a?void 0:a.definition),U._definitionChangePointInfo=null);U.useVideoLoad||null!==U._requestTimer||!U._offineLine&&!U._cancelLoading&&U._startProgress(),U._lastBufferPoint=Q.bufferedPoint})),T(D(U),"_onBufferedReset",(function(){U.mp4&&U.mp4.videoTrak&&U.mp4.resetFragmentLoadState(0)})),T(D(U),"_onOnlineHandler",(function(){U._offineLine=!1;var e=D(U),t=e.playerConfig,n=e.player,i=n.currentTime,r=n.paused;U.log(xe.LOG,"online useVideoLoad:",U.useVideoLoad,U._hasStartProgressBack),U.useVideoLoad?(U.__onmetadataHandle=function(){i&&(n.currentTime=i),U.log(xe.LOG,"onOnlineHandler update currentTime",t.vid,U.codecType,U._currentTime),r?n.pause():n.play(),n.video.removeEventListener("loadedmetadata",U.__onmetadataHandle),U.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",U.__onmetadataHandle),U._setPlayerSrc(t.url)):(U._hasStartProgressBack&&U._startProgress(),U._hasStartProgressBack=!1)})),T(D(U),"_onOfflineHandler",(function(){U._offineLine=!0,U.log(xe.LOG,"offline, ",U._hasStartProgress),U._hasStartProgress&&(U._stopProgress(),U._hasStartProgressBack=!0)})),T(D(U),"_loadDataSuccess",(function(e){if(!U.isDestroy&&(U.mse||U.mseProxy)){U.firstFrameTime.startload_stmux<0&&(U.firstFrameTime.startload_stmux=U.mp4.firstFrameTime.startMuxTime,U.firstFrameTime.firstmux=U.mp4.firstFrameTime.firstmux),U.firstFrameTime.loadst_loadeddata<0&&(U.firstFrameTime.loaddata=Fa.nowTime()-U.loadstart);try{var t,n;e.initSeg&&(U._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&U._onTimeUpdate());var i=e.buffer,r=e.state,a=e.context,F=e.videoTrack,l=e.audioTrack;if(U.debugInfo.loadIndx=a?a.fragIndex:-1,U.mse&&r&&!i||i.byteLength<=0&&null!==(t=U.mp4)&&void 0!==t&&t.checkIsLoadEnd(null===(n=a.range)||void 0===n?void 0:n[1])){var Q=U.player.buffered;U._loadedEnd=!0;var d=0;Q&&(null==Q?void 0:Q.length)>0&&(d=Q.end(Q.length-1)),U._isEnded(),U.log(xe.LOG,"loaded ended !!!==>>>","range: ".concat(JSON.stringify(a.range)),"fragIndex: ".concat(a.fragIndex),"bufferEndTime: ".concat(d),"meta_duration: ".concat(U.mp4.meta.duration))}if(i&&U.mse){if(i&&i.byteLength>0){U._appendBuffer(_e.VIDEO,i,a,r);var o=U.getDataBitRate(a.fragIndex);U.player.emit("addVideoBufferEnd",{start:Math.floor(a.startPts),end:a.endPts,bandwidth:o.bitrate})}}else if(U.mseProxy&&(F&&F.samples.length>0||l&&l.samples.length>0)){if(F.editListApplied){var s,c=F.editList,B=F.samples,R=0;(null==c||null===(s=c.entries)||void 0===s?void 0:s.length)>0&&(R=c.entries[0].media_time),B.forEach((function(e){e.dts+=R,e.pts+=R,e.originDts+=R,e.originPts+=R})),F.baseMediaDecodeTime+=R}U.log(xe.LOG,"[xgvideo] append","index: ".concat(a.fragIndex),"range: ".concat(JSON.stringify(e.context.range)),"timeRange: ".concat(a.timeRange)),U.mseProxy.appendBuffer(F,l)}}catch(h){U.changeState("APPEND_DATA_ERROR",{errMsg:null==h?void 0:h.message});var u=new m.Errors(U.player,{errorType:fn.MEDIA,errorCode:yn.mseAppend,vid:U.playerConfig.vid,errorMessage:h.message,mediaError:{code:yn.mseAppend,message:h.message}});U._errorHandler(u)}null!=e&&e.state&&U._onTimeUpdate()}})),T(D(U),"_onResumePlaying",(function(){U._resumePlay=!0})),T(D(U),"_seekOnce",(function(e){var t=D(U).player;t&&(t.currentTime=e+.1*Math.pow(2,U._currentSeekTimes||0),U._currentSeekTimes++,U.log(xe.LOG,"当前第".concat(U._currentSeekTimes,"次Seek,currentTime=").concat(null==t?void 0:t.currentTime)))})),T(D(U),"_onWaiting",(function(){var e,t,n,i;U.checkReStartTimer(),U._isEnded(),U.changeState("waiting",{curtime:U.player.currentTime,buffer:JSON.stringify(null===(e=U.player)||void 0===e||null===(t=e.buffered2)||void 0===t?void 0:t.bufferedList)});var r=D(U),a=r.player,F=r.config,l=r.playerConfig,Q=r.mp4;clearTimeout(U._waitInBufferTimer),U._waitInBufferTimer=null;var d=a.currentTime;U.log(xe.LOG,",[onWaiting],curTime, ",d,",buffer,",JSON.stringify(null==a||null===(n=a.buffered2)||void 0===n?void 0:n.bufferedList),",dur,",null==Q||null===(i=Q.meta)||void 0===i?void 0:i.duration);var o=a.bufferedPoint;o.end>0&&o.end-d>=2?U._waitAdjustTimeCnt<F.waitJampBufferMaxCnt?U._waitInBufferTimer=setTimeout((function(){U._waitAdjustTimeCnt++,U.changeState("waitInBuffer_seek",{waitAdjustTimeCnt:U._waitAdjustTimeCnt,curTime:d}),a.currentTime=a.currentTime+.5}),F.waitingInBufferTimeOut):U._errorHandler(new m.Errors(U.player,{errorType:fn.RUNTIME,errorCode:yn.waitTimeout,errorMessage:"onWaitTimeout_in_buffer",vid:l.vid})):U._loadStuckCheck()})),T(D(U),"_onEnded",(function(){U.log(xe.LOG,"[player.onEnded], stopProgress"),U._stopProgress()})),T(D(U),"_errorHandler",(function(e){var t,n,i,r=D(U),a=r.player,F=r.playerConfig,l=r.preLoadData;if(a&&!U.useVideoLoad){if(e.errorCode===yn[403]&&U._emitExpireEvent(e)&&U.config.urlExpireDisableErrorEvent)return U.log(xe.LOG,"_errorHandler urlExpireDisableErrorEvent",U.config.urlExpireDisableErrorEvent,",errorCode,",e.errorCode),U._stopProgress(),void U.emit(Pa);if("object"!==E(e)){var Q={};Q.err=e,e=Q}e.ext||(e.ext={});var d=a.paused;if(e.ext.vid=F.vid,e.ext.preloadHit=U.hitpreload?1:0,e.ext.preloadCached=l?l.duration:0,e.ext.timerStep=Math.max.apply(Math,Y(U.timerStepList)),e.ext.codectype=U.codecType,e.errorMessage=e.message,e=new m.Errors(a,e),U.log(xe.ERROR,"_errorHandle","preState is ".concat(d),null===(t=e)||void 0===t?void 0:t.errorCode,(null===(n=e)||void 0===n?void 0:n.message)||(null===(i=e)||void 0===i?void 0:i.errorMessage)),!e.url&&(e.url=a.src),U.player.emit("playCatch",U.player.vtype,e),e.errd&&"object"===E(e.errd)&&U.mp4&&(e.errd.url=U.mp4.url,e.url=U.mp4.url),U.emit("DATA_REPORT",e),U.mp4&&U.mp4.cancelLoading(),U._abrService&&U._abrService.disable(),U.canDownload=!1,U.mp4&&U.mp4.bufferCache&&U.mp4.bufferCache.clear(),U.checkIsDegraded(e))U.player.vtype=ee.MP4_2,U._initPromise&&U.removeAndRejectInitPromise(e),U._startDegradedPlayback(e,d);else{var o,s,c;U.log(xe.ERROR,"final error !!!!, ",F.vid,null===(o=e)||void 0===o?void 0:o.errorCode,(null===(s=e)||void 0===s?void 0:s.errorMessage)||(null===(c=e)||void 0===c?void 0:c.message)),U.player.pause(),U._reset(),U.states=[];var B=a.currentTime;U.destroyMSE(),a.currentTime=B,U.emit("error",e)}U.emit(Pa)}})),T(D(U),"_onSeeking",f(k().mark((function e(){var t,n,i,r,a,F,l,Q,d,o,s,c,B,R,u,h;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U._isReceiveEndedEvent=!1,!U.useVideoLoad){e.next=3;break}return e.abrupt("return");case 3:if(i=D(U),r=i.player,a=i.mp4,F=i.mse,l=i.config,Q=r.currentTime,d=r.bufferedPoint,U.waitLevelStartTime=Q,U.changeState("seeking",{curTime:Q,buffered:d,lastBuffered:U._lastBufferPoint}),U.log(xe.LOG,"[seeking], curTime: ".concat(Q,", duration: ").concat(null==a||null===(t=a.meta)||void 0===t?void 0:t.duration),"buffer: ".concat(JSON.stringify(r.buffered2.bufferedList))),a&&a.meta){e.next=11;break}return e.abrupt("return");case 11:if(U._startProgress(),a.bufferUsedPos=0,a.metaLoading=!1,U._loadedEnd=!1,U._definitionChangePointInfo&&(U._definitionChangePointInfo.changeStartTime=Q,U.log(xe.LOG,"[seeking update definitionChangePointInfo]",Q)),a.changeBitRateTime>0&&(a.updateChangeBitRateTime(Q),U.log(xe.LOG,"[seeking update changeBitRateTime]",Q)),o=0,!(d.end>0)){e.next=26;break}if(!U.isSeekingInSameBuffer(Q,d)){e.next=22;break}return U.log(xe.LOG,"[seeking in buffered], linear buffer,",d.end),e.abrupt("return");case 22:a.seekTime=d.end,U.log(xe.LOG,"[seeking in buffered], but jump to another piece: ".concat(d.start,"-").concat(d.end)),e.next=28;break;case 26:a.seekTime=Q,U.log(xe.LOG,"[seeking out buffered], seekTime: ".concat(Q));case 28:if(s=a.getFragmentIdx(a.seekTime),c=U.getAdaptTimeRangeIdx(s),o=c<0?U._curLoadSegmentIdx:c,a.seekTime===Q&&null!=F&&F.isFull()&&(B=r.buffered2.bufferedList,R=B[B.length-1],U._checkRemovePlayedBuffer([R.start,R.end],Q,!0,!0)),U._curLoadSegmentIdx!==o||null===(n=a.adaptTimeRange[o])||void 0===n||!n.isLoading){e.next=35;break}return U.log(xe.LOG,"[seeking in buffered range], seek fragIndex is current load segmentIdx",o),e.abrupt("return");case 35:return U.log(xe.LOG,"[seekTime resetFragmentLoadState], adaptIdx: ".concat(o)),a.resetFragmentLoadState(o),null==F||F.clearOpQueues(_e.VIDEO),l.removeBufferAtSeek&&(u=a.seekTime,h=1/0,U.log(xe.LOG,"[seeking mse remove], ".concat(u,"-").concat(h)),null==F||F.remove(_e.VIDEO,u,h)),U.canDownload=!1,e.next=42,a.cancelLoading();case 42:U.canDownload=!0,U._curLoadSegmentIdx=o,U._onTimeUpdate(),U._isEnded();case 46:case"end":return e.stop()}}),e)})))),U.initLog(null===(t=U.player.playerId)||void 0===t||null===(n=t.toString())||void 0===n?void 0:n.slice(-4)),U.log(xe.LOG,"plugin version: ".concat(En),"playerId: ".concat(U.playerId),"vid: ".concat(U.playerConfig.vid)),U._pendingPromises=[],U._allInitPromise=new wa,U._isInit=!1,U._isEventInit=!1,U.preloader=null,U._useVideoLoad=!1,U.mse=null,U.mp4=null,U.eme=null,U._isMseInit=!1,U._corePromise=null,U._initPromise=null,U._hasStartProgress=!1,U._hasStartProgressBack=!1,U._curLoadSegmentIdx=0,U._abrService=null,U._checkRemoveBufferLastTime=Fa.nowTime(),U.playFlag=!1,U.config.resumePlayWaterLevel=Math.min(U.config.minBufferLength,U.config.resumePlayWaterLevel),U.checkResumePlayTimer=null,U._MSEError=!1,U.loadstart=-1,U._loadStartEventTime=-1,U._waitAdjustTimeCnt=0,U._waitInBufferTimer=null,U.isActive=!0,U.firstFrameTime={newplayer:Fa.nowTime(),initmse_sbopen:-1,mseopen:-1,metaload:-1,metaready_initsegend:-1,startload_stmux:-1,firstmux:-1,apcnt:0,aplen:0,data_ap:-1,loaded_data:-1,loadst_loadeddata:-1,new_loadeddata:-1,bitrate:-1,hitpreload:-1,first_gop_req_cnt:-1},U.debugInfo={},U.states=[],U.removeVideoList=[],U._lastCheckTime=Fa.nowTime(),U._lastCheckLagTime=Fa.nowTime(),U._changeDefState=null,U._defInited=!1,U._removeBuffEndTime=0,U._isChangeDefinition=!1,U._lastTimeupdateTime2=0,U.waitLevelStartTime=-1,U.preLoadData=null,U.forPreloadTimeCache=null,U._usePaused=!1,U.hitpreload=!1,U.isH265DegradeH264=!1,U.loadstartTimer=null,U.loadeddataTimer=null,U.canplayTimer=null,U.adaptRangeRes=[],U._isReceiveEndedEvent=!1,U._checkEndedTimer=null,U._definitionChangePointInfo=null,U._lastTimeupdateTime2=0,U.waitLevelStartTime=-1,U.timerStepList=[],U._isH265SoftDecoder=!1,U._beforeLoadStartCostTime=0,U._requestTimer=null,U._updatePropsByConfig(),U.player._customExpiryCheck=U.config.enableCusExpiryCheck,U}return N(Q,[{key:"setConfig",value:function(e){this.config=Object.assign(this.config,e),this._updatePropsByConfig()}},{key:"_updatePropsByConfig",value:function(){this._maxBufferLength=this.config.maxBufferLength,this._minBufferLength=this.config.minBufferLength,this._nextBufferLength=this.config.nextBufferLength,this._switchBitRateWay=this.config.switchBitRateWay,this._tickInSeconds=this.config.tickInSeconds||.2}},{key:"initLog",value:function(e){var t=this.config.logCacheConfig,n=t.logCacheLevel,U=t.logMaxSize;this.logger=new Ge(Q.pluginName+e,{logCacheLevel:n,logMaxSize:U}),rn&&Ge.enable()}},{key:"playerlogger",value:function(e){e?Ge.enable():Ge.disable()}},{key:"afterCreate",value:function(){var e=this,t=this.playerConfig,n=this.config,U=this.player;n.width=t.width||0,n.height=t.height||0,t.vid=t.vid||n.vid,"object"!==E(n.reqParams)&&(n.reqParams={}),_e.isSupported('video/mp4; codecs="avc1.64001E, mp4a.40.5"')&&(void 0===n.supportHevc&&null!==m.Sniffer&&void 0!==m.Sniffer&&m.Sniffer.isHevcSupported&&m.Sniffer.isHevcSupported()&&this.player.video instanceof HTMLVideoElement&&(n.supportHevc=!0),n.supportVvcc=!("undefined"==typeof MediaSource||!MediaSource.isTypeSupported)&&MediaSource.isTypeSupported("video/mp4;codecs=bvc2.1.6.L93.B0"),this.softDecode?U.vtype=ee.MP4_MSE_SOFT:U.vtype=ee.MP4_MSE,Ma()&&!this.softDecode||(n.useEME=!1),n.useEME=!(!1===n.useEME),this.checkConfig(),n.onlyInit&&(t.autoplay=!1,t.videoInit=!1,this._hasStartProgress=!1,this._hasStartProgressBack=!1),t.useWaterLevel&&(!t.userGestureEventMiddleware&&(t.userGestureEventMiddleware=ta),!t.videoEventMiddleware&&U.setEventsMiddleware(na)),this._proxyPlayer(),U.useHooks("replay",this._replayHook),U.useHooks("play",this._playHook),U.useHooks("pause",this._pauseHook),U.useHooks("retry",this._retryHook),U.video.addEventListener(sn.BUFFERED_RESET,this._onBufferedReset),this._bindNetworkStateChange(),this.on(m.Events.TIME_UPDATE,this._onVideoTimeUpdate),this.on(m.Events.LOADED_DATA,(function(){var t;e.changeState("LOADED_DATA"),e.deleteVideo(),e.mp4&&e.mp4.updateLoadedDataDone(),e._firstFrameTime(),e._onTimeUpdate(),e.firstFrameTime.loaded_data=e._loadStartEventTime>0?Fa.nowTime()-e._loadStartEventTime:-1,null!==(t=e.config)&&void 0!==t&&t.enableFPSStuckHandle&&e.on(m.Events.FPS_STUCK,e.fpsStuckHandle)})),this.on(m.Events.LOAD_START,(function(){e.changeState("LOAD_START"),e._loadStartEventTime=Fa.nowTime(),e._beforeLoadStartCostTime=(new Date).getTime()-e._tm,e.codecType!==ne.H265||e.config.supportHevc||(e._isMseInit=!0,e._onTimeUpdate())})),this.on(m.Events.ENDED,(function(){e.log(xe.LOG,"mp4plugin receive player video ended event"),e._onEnded()})),this.on(m.Events.PAUSE,(function(){e._usePaused=!0})),this.on(m.Events.PLAY,(function(){e._usePaused=!1})),this.on("xglog",(function(t){if("firstFrame"===t.eventType){var n=e.preLoadData&&e.preLoadData.definition?e.preLoadData.definition:-1,U=e.player,i=e.firstFrameTime;rn&&console.log("[xgplayer-encrypt-mp4]>>>>firstFrame ".concat(e.playerConfig.vid,", ").concat(t.fvt,", codecType: ").concat(e.codecType),"hitPreload: ".concat(e.hitpreload,", video: ").concat(e._useVideoLoad,", preloadBitrate: ").concat(n)," metaLoad: ".concat(i.metaload,", mseOpen: ").concat(i.mseopen),"curDefinition: ".concat(U.curDefinition.definition,",appendInit: ").concat(i.metaready_initsegend))}})),U.mp4MseFlag=!0)}},{key:"_startBufferCheck",value:function(){var e=this.player;if(e.video){var t=[];if(e.video.buffered){for(var n=0,U=e.video.buffered.length;n<U;n++)t.push([e.video.buffered.start(n),e.video.buffered.end(n)]);t.toString()!==this.lastBuffer&&(this.lastBuffer=t.toString(),this._onBufferReachThreshold())}}}},{key:"_onBufferReachThreshold",value:function(){var e=this.player,t=this.config;if(e.video){for(var n=e.video.buffered,U=0,i=0,r=0;r<n.length&&(U=n.start(r),i=n.end(r),!(U<=e.video.currentTime&&e.video.currentTime<=i));r++);i-e.video.currentTime>=t.bufferThreshold&&!this._hasTriggerBufferThreshold&&(this._hasTriggerBufferThreshold=!0,e.emit("BUFFER_THRESHOLD",i-e.video.currentTime))}}},{key:"_startUrlExpiredCheck",value:function(){var e,t,n=this.player;if(null!==(e=this.expiryCheckPlugin)&&void 0!==e&&null!==(t=e.config)&&void 0!==t&&t.useCdnExpiryTime){var U,i;null===(U=(i=this.expiryCheckPlugin).handleUrlExpiryCheckByCdnPath)||void 0===U||U.call(i)}else{var r=n.config;r.definition&&r.definition.list&&r.definition.list.length>0&&(this.urlExpireTimestamp=r.definition.list[0].url_expire||0,this._handleUrlExpire())}}},{key:"cancelLoading",value:(F=f(k().mark((function e(){var t,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mp4){e.next=2;break}return e.abrupt("return");case 2:return this._cancelLoading=!0,this.log(xe.LOG,"player cancelLoading",this.playerConfig.vid),this._stopProgress(),null===(t=this.preloader)||void 0===t||null===(n=t.cancelLoading)||void 0===n||n.call(t),e.next=8,this.mp4.cancelLoading();case 8:case"end":return e.stop()}}),e,this)}))),function(){return F.apply(this,arguments)})},{key:"checkConfig",value:function(){var e=this.playerConfig,t=this.config,n=e.defaultDefinition,U=e.defaultBitrate;if(!n){var i=this.playerConfig.definition;n=i&&i.defaultDefinition?i.defaultDefinition:t.definition}!U&&t.bitrate&&(U=t.bitrate),e.defaultDefinition=n,e.defaultBitrate=U}},{key:"beforePlayerInit",value:function(){var e=this,t=this.player,n=this;this._isInit||(m.BasePlugin.defineGetterOrSetter(t,{__url:{get:function(){return n.mse?n.mse.url:t.config.url},configurable:!0},downloadSpeed:{get:function(){return $a/8},configurable:!0},playerVersion:{get:function(){return En},configurable:!0},menuCodeType:{get:function(){return n.mp4&&n.mp4.meta?n.mp4.meta.videoCodec:n.codecType===ne.H264?"avc":"hevc"},configurable:!0},playerType:{get:function(){return"MP4"},configurable:!0},supportMenus:{get:function(){return{speed:null==t?void 0:t.mp4MseFlag,cdn:null==t?void 0:t.mp4MseFlag,resolution:null==t?void 0:t.mp4MseFlag}},configurable:!0},preloadActive:{get:function(){return e.isActive},set:function(t){e.isActive=t,e.isActive&&e._startProgress()},configurable:!0},performance:{get:function(){return e.firstFrameTime},configurable:!0},domain:{get:function(){return n.domain},configurable:!0},loadURL:{get:function(){return n.loadURL},configurable:!0},abrInstance:{get:function(){return n.abrInstance},configurable:!0},pcdnReq:{get:function(){var e=St.pcdnReqCnt,t=Xa.pcdnDownLoadReqCnt;return{pcdn_tracker_request_cnt:e.pcdn_tracker_request_cnt,pcdn_tracker_failed_cnt:e.pcdn_tracker_failed_cnt,pcdn_download_request_cnt:t.pcdn_download_request_cnt,pcdn_download_failed_cnt:t.pcdn_download_failed_cnt}},configurable:!0},retryInfo:{get:function(){return La},configurable:!0},softDecoder:{get:function(){return e._isH265SoftDecoder},configurable:!0},logCache:{get:function(){if(n.logger)return n.log(xe.LOG,",timerStepList,",JSON.stringify(e.timerStepList)),n.log(xe.LOG,"Mp4EncryptPlayer version, ",En),n.logger.getLogCache()},configurable:!0},pcdnVVStat:{get:function(){var e,t=n.mp4,U=n.pcdn;return t?W(W({},t.pcdnVVStat),{},{trace_id:null===(e=t.pcdnTraceInfo)||void 0===e?void 0:e.trace_id,cancelCnt:(null==t?void 0:t.pSCCancelCnt)||0,is_try_open:U?1:0}):null},configurable:!0},beforeLoadStartCostTime:{get:function(){return e.useVideoLoad?0:e._beforeLoadStartCostTime},configurable:!0},bandwidth:{get:function(){var e,t,U=n.mp4,i=U?U.loadInfo:null;return{vid:null===(e=n.playerConfig)||void 0===e?void 0:e.vid,cdn:{speed:null==U||null===(t=U.loadInfo[va])||void 0===t?void 0:t.loadSpeed,size:i&&i[va]?i[va].loadLen:0},pcdn:W({size:i&&i[Na]?i[Na].loadLen:0},null==U?void 0:U.pcdnTraceInfo)}},configurable:!0},ext:{get:function(){var t,U,i,r,a,F,l,Q,d,o,s,c,B=[];if((null===(t=n.player)||void 0===t||null===(U=t.video)||void 0===U||null===(i=U.buffered)||void 0===i?void 0:i.length)>0)for(var R=n.player.video.buffered,u=0,h=(null==R?void 0:R.length)||0;u<h;u++)B.push([R.start(u),R.end(u)]);return{type:"MP4",usevideo:n.useVideoLoad?1:0,curTime:null===(r=n.player)||void 0===r?void 0:r.currentTime,duration:(null===(a=n.mp4)||void 0===a||null===(F=a.meta)||void 0===F?void 0:F.duration)||(null===(l=n.player)||void 0===l?void 0:l.duration),loadIdx:n._curLoadSegmentIdx,curload:null!==(Q=n.mp4)&&void 0!==Q&&Q.adaptTimeRange?n.mp4.adaptTimeRange[n._curLoadSegmentIdx]:{},buffer:B,speed:null===(d=n.debugInfo)||void 0===d?void 0:d.speed,states:null==n?void 0:n.states,msequeLen:(null===(o=n.mse)||void 0===o?void 0:o.opQueues)&&(null===(s=n.mse.opQueues.video)||void 0===s?void 0:s.length),timer:!!n._requestTimer,timerlist:JSON.stringify(e.timerStepList),maxtimerstep:Math.max.apply(Math,Y(e.timerStepList)),url:null===(c=n.playerConfig)||void 0===c?void 0:c.url}},configurable:!0},currentDefitionFromPlayer:{get:function(){return n.abrInstance&&n.abrInstance.isCurrentInAbr?t._currentDefitionFromPlayer:t.curDefinition},configurable:!0}}),this._isInit=!0)}},{key:"destroy",value:function(){var e,t,n=this.player;n.preloader&&n.preloader.removePlayingId(n.playerId),n.removeHooks("replay",this._replayHook),n.removeHooks("play",this._playHook),n.removeHooks("pause",this._pauseHook),n.removeHooks("retry",this._retryHook),null===(e=this._requestTimer)||void 0===e||e.destroy(),this._requestTimer=null,this._reset(),this.states=[],this.checkReUseMSE(!1),this._secretkey&&(this._secretkey.off(A.EVENT_EME.ERROR,this._errorHandler),this._secretkey.destroy()),this.player.playNext=za,this.player._startInit=Oa,this.player.changeDefinition=Aa,this.player.switchURL=qa,this._unbindNetworkStateChange(),this._unbindEvents(),n.video&&n.video.removeEventListener(sn.BUFFERED_RESET,this._onBufferedReset),this._bufferCheckTimer&&clearInterval(this._bufferCheckTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),(null===(t=this.logger)||void 0===t?void 0:t.reset)&&this.logger.reset(),this.__onmetadataHandle&&n.video.removeEventListener("loadedmetadata",this.__onmetadataHandle),this.timerStepList=[]}},{key:"_proxyPlayer",value:function(){var e=this;"function"==typeof this.player.playNext&&(za=this.player.playNext),this.player.playNext=function(){e.playNext.apply(e,arguments)},Oa=this.player._startInit,qa=this.player.switchURL,Aa=this.player.changeDefinition,this.player._startInit=this.playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this)}},{key:"getInitBitrate",value:function(){var e,t,n,U,i,r,a=this.player,F=this.playerConfig,l=null,Q=a.definitionList;if(Q&&Q.length>0){var d={},o=a.preloader;if(o){var s=o.getPreloadMetaByVid(F.vid);if(s){var c=o.getDataUniqueKey(s),B=(t=Q,n=(e=s).vtype,U=e.codecType,i=e.definition,r=null,t.forEach((function(e){(e.definition===i||e.definition===Number(i))&&e.codecType===U&&e.vtype===n&&(r=e)})),r);B?(B.cacheKey=c,(l=B).type="preload",l.preLoadMeta=s,d={m:1,t:2,ck:c}):d={m:0,t:1,ck:c}}}else d={t:0};if(this.changeState(mn.PRELOAD_CHECK,d),l&&F.userSelectDefinition&&F.focusUserDefinition){var R={m:1,ud:F.userSelectDefinition,d:l.definition};F.userSelectDefinition!==l.definition&&(l=null,R.m=1),this.changeState(mn.USER_DEFI_CHECK,R)}!l&&this.bitRateAdapter&&(this.bitRateAdapter.speed=Xa.speed,(l=this.getDefinitonFromAdapter(Q,F.userSelectDefinition))&&(l.type="bitRateAdapter"))}if(!l||!l.url){var u,h=(null===(u=F.definition)||void 0===u?void 0:u.defaultDefinition)||F.defaultDefinition;if("Array"===m.Util.typeOf(F.url)&&F.url.length>0||"String"===m.Util.typeOf(F.url)&&F.url){var V=this._getDefinitionItem(h),Z=F.defaultBitrate||F.bitrate||(null==V?void 0:V.bitrate);l={url:F.url,definition:(null==V?void 0:V.definition)||h||-1,duration:(null==V?void 0:V.duration)||F.duration||this.config.duration||0,bitrate:Z,uri:F.uri||(null==V?void 0:V.uri),file_id:null==V?void 0:V.file_id,size:(null==V?void 0:V.size)||F.size,type:"default"}}else l=Q[Q.length-1]}return this.playerConfig.url=l.url,l.networkSpeed=Xa.speed,a.curDefinition=l,l}},{key:"_setPlayerSrc",value:function(e){var t=this.player;this._removeVideoSource();var n="Array"===m.Util.typeOf(e);e=n?this._processArrayUrl(e):this._processUrl(e),n?(t.video.removeAttribute("src"),!t._detachSourceEvents&&e.forEach((function(e){t.video.appendChild(m.Util.createDom("source","",{src:"".concat(e.src),type:"".concat(e.type||"")}))})),t._attachSourceEvents(t.video,e),t.play()):(t.video.src=e,t.play()),t.mp4MseFlag=!1,t.emit("playertypechange")}},{key:"_removeVideoSource",value:function(e){var t=this.player,n=(e=e||t.video).children;if(n.length>0)for(t._detachSourceEvents(e);n.length>0;)e.removeChild(n[0])}},{key:"_getDefinitionItem",value:function(e){var t=this.playerConfig;if(!t.definition||!t.definition.list)return null;for(var n=0;n<t.definition.list.length;n++){var U=t.definition.list[n];if(U.definition===e)return U}return null}},{key:"_initAbrDefinition",value:function(){var e=this.player,t=this.playerConfig;if(t.definition.list.length>0&&(e.curDefinition||(e.curDefinition=t.definition.list[0]),e.curDefinition.vwidth||Object.assign(e.curDefinition,this._getDefinitionItem(e.curDefinition.definition)),this._abrService.updateAbrCacheData()),this._abrService&&this._abrService.isCurrentAutoDefi){var n=t.definition.list.length;e.curDefinition=t.definition.list[n-1]}for(var U=0;U<t.definition.list.length;U++){var i=t.definition.list[U];e.curDefinition.definition===i.definition?i.selected=!0:i.selected=!1}this.player.emit("resourceReady",t.definition.list);var r=e.curDefinition.bitrate;if(!r)for(var a=0;a<t.definition.list.length;a++){var F=t.definition.list[a];F.definition===e.curDefinition.definition&&(r=F.bitrate)}this._abrService.updateBitrate(r)}},{key:"_initAbrService",value:(a=f(k().mark((function e(){var t,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.playerConfig,(n=this.config).autoBitrateOpts&&n.autoBitrateOpts.isOpenAutoDefi){e.next=3;break}return e.abrupt("return");case 3:return this._abrService=new on(this,this.abrSwitchURL),e.next=6,this._abrService.init({video:t.definition.list.concat()});case 6:this._initAbrDefinition();case 7:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"_initMp4Kernel",value:function(){var e=this,t=this.playerConfig,n=this.config,U=new wa;try{var i=this.player.curDefinition;if(this.log(xe.LOG,"[_initMp4Kernel] ".concat(t.vid," curDefinition"),null==i?void 0:i.definition),!this._handlerUrl(t.url))return this.log(xe.LOG,"emptyUrl"),U.reject(new Error("emptyUrl")),U;if(n.forceVideoPlay&&(this.codecType===ne.H264||n.supportHevc))return this.useVideoLoad=!0,this.log(xe.LOG,"forceVideoPlay"),U.reject(new Error("forceVideoPlay")),U;var r=[];this._secretkey&&r.push(this._secretkey.getLicenseSecret()),r.push(this._checkPreloader()),Promise.all(r).then((function(t){if(e.isDestroy)U.reject(new Error("destroy"));else{var r=null;if(t&&t.length>0&&(t.length>1&&(!n.keyValue&&(n.secretKey=t[0].secretKey),n.decryptKey=t[0].decryptKey),r=t[t.length-1].data,e.firstFrameTime&&(e.firstFrameTime.hitpreload=r?1:0)),r||!n.needPreloadCheck||e.codecType===ne.H265&&!n.supportHevc)if(e.vtype&&"MP3"===e.vtype)e.useVideoLoad=!0,e.log(xe.LOG,"vtype_not_MP4"),U.reject(new Error("vtype_not_MP4"));else{var a,F=n._mainURL;e._initMp4(F,r,{fileSize:i?i.size:0}),e.updateLoadInfo(null===(a=r)||void 0===a?void 0:a.cacheKey),e.checkPCDN(),e.initAdaptRange(),e._initAbrService()}else e.useVideoLoad=!0,e.log(xe.LOG,"no_preload"),U.reject(new Error("no_preload"))}})).catch((function(n){e.log(xe.ERROR,"getLicense or checkPreloader reject",null==n?void 0:n.message);var r=new m.Errors(e.player,{errorType:fn.DRM,errorCode:yn.drm,errorMessage:(null==n?void 0:n.message)||"getLicense or checkPreloader reject",vid:t.vid});e.emit("GET_LICENSE_ERROR",r),e.changeState("LICENSE_ERROR",{d:i?i.definition:0}),U.reject(r)}))}catch(a){U.reject(a)}return U}},{key:"updateLoadInfo",value:function(e){var t;e&&this.mp4&&(this.mp4.loadInfo=null===(t=this.preloader)||void 0===t?void 0:t.getLoadInfoAndDelete(e))}},{key:"initAdaptRange",value:function(){var e=this.config,t=this.player,n=this.playerConfig,U=t.curDefinition,i=U.bitrate,r=U.duration;null!=e&&e.adaptRange&&((null==e?void 0:e.loadRangeType)===Zn.SIZE?this.adaptRange=new $(t,i,r||n.duration,e.adaptRange):this.adaptRange=new q(t,i,r||n.duration,e.adaptRange))}},{key:"getPCDNReqId",value:function(){var e=this.player.curDefinition,t=this.playerConfig.vid;return e.uri?e.uri.slice(-20)+e.bitrate:t?t.slice(-20)+e.bitrate:void 0}},{key:"checkPCDN",value:function(){var e,t=this,n=this.config,U=this.player,i=this.mp4,r=U.curDefinition;if(null!==(e=n.pcdnConfig)&&void 0!==e&&e.openPCDN&&r.duration>=n.pcdnConfig.minDuration){var a;n.pcdnConfig.app_id&&(Vn.app_id=n.pcdnConfig.app_id),n.pcdnConfig.sid&&(Vn.sid=n.pcdnConfig.sid);var F=n._mainURL;if(!r.uri||!r.bitrate||F.indexOf("video/")<=0)return this.log(xe.LOG,"uri null or bitrate null or url not contain video cannot use pcdn"),void(this.pcdn=null);if(!Ua(F))F=document.location.protocol+F;var l={vid:r.uri,sfid:r.file_id,cdn_url:F,file_type:null===(a=this.vtype||"MP4")||void 0===a?void 0:a.toLowerCase(),bitrate:r.bitrate,duration:Math.floor((null==r?void 0:r.duration)||0),size:(null==r?void 0:r.size)||Fa.getFileSize(r.bitrate,r.duration)};if(this.pcdn)this.pcdn.resetTrackeArgs();else{var Q=Object.assign({},{productConfig:Vn},n.pcdnConfig),d=l.bitrate,o=l.duration;this.pcdn=new St(Q,U,d,o)}this.pcdn.fetchPCDNNode(null,l,this.getPCDNReqId()).then((function(e){var n,U,r=t.getPCDNReqId();null!=e&&e.req_id&&r!==e.req_id?t.log(xe.LOG,",fetchPCDNNode is not match curDefinition reqId",r,", pcdnRet.req_id",e.req_id):i&&e&&(t.log(xe.LOG,"".concat(t.playerConfig.vid," get peer end,pcdn node update,"),null==e||null===(n=e.nodes)||void 0===n?void 0:n.length),i.updateNode(null==e?void 0:e.nodes),i.pcdnTraceInfo={uri:e.vid,fid:e.fid,trace_id:null==e?void 0:e.trace_id},i.pcdnVVStat&&(i.pcdnVVStat.try_req_node+=1,i.pcdnVVStat.req_node_succ+=1,i.pcdnVVStat.has_ret_node+=(null==e||null===(U=e.nodes)||void 0===U?void 0:U.length)>0?1:0))})).catch((function(e){(null==i?void 0:i.pcdnVVStat)&&(i.pcdnVVStat.try_req_node+=1),t.checkURLExpired(e,"_fetchPCDNNode")}))}else this.pcdn=null}},{key:"initTimer",value:function(){if(!this._requestTimer){var e=this.config.timerInWorker;this._requestTimer=new kn({frequency:this._tickInSeconds,timerInWorker:e}),this._requestTimer.on(Sn,this.timerHandle)}}},{key:"playerStartInit",value:function(e){var t=this;if(this.log(xe.LOG,"playerStartInit",this.player.hasStart,this.playerId,e),!this.isDestroy){var n,U=this.playerConfig,i=this.player,r=this.config;if(this.states=[],this._sTime=Fa.nowTime(),this._lastBufferPoint=void 0,this._usePaused=!1,this.isActive&&0!==(null==i?void 0:i.currentTime))this.log(xe.LOG,"[playerStartInit] reset current = 0 ,buffer,",JSON.stringify(null==i||null===(n=i.buffered2)||void 0===n?void 0:n.bufferedList)),this.player.currentTime=0;if(this._isH265SoftDecoder=this.softDecode,r.reUseMSE&&this.mse&&"String"===m.Util.typeOf(e)&&/^blob/.test(e)&&e!==this.mse.url&&(e=U.url,this.destroyMSE()),!e||"__auto__"===e||"anytext"===e){var a=U.definition;if(a&&a.list&&a.list.length>0&&a.defaultDefinition&&(a.list.map((function(e){e.definition===a.defaultDefinition&&(U.url=e.url,t.player.curDefinition=e)})),!U.url||"__auto__"===e||"anytext"===e)){var F=a.list[0];e=F.url,U.url=F.url,a.defaultDefinition=F.definition,this.player.curDefinition=F}}this.initTimer();var l=this._defInited?null:this.getInitBitrate(),Q=this.config,d=Q.kid,o=Q.drmKeyToken,s=Q.secretKey,c=Q.keyValue,B=Q.drm;d||o||s||c||B?this._secretkey?this._secretkey.updateConfig(this.config):(this._secretkey=new A.XGSecretKey(this.config),this._secretkey.on(A.EVENT_EME.ERROR,this._errorHandler)):this._secretkey=null,this._defInited=!0,this.log(xe.LOG,"[playerStartInit] ".concat(U.vid," curDefinition"),l||this.player.curDefinition);var R=this.player,u=R.preloader,h=R.playerId;if(u&&u.addPlayingId(U.vid,h),r.needPreloadCheck&&!this.softDecode&&!this._secretkey){var V=!1,Z="";if(u){var p=aa(this.player.curDefinition),S=u.hasItemSameVid(p);Z=u.getDataUniqueKey(p),S&&(V=!0)}if(!V){var J=u?"no preload data":"no preloader";this.useVideoLoad=!0,this.player.vtype=ee.MP4_0,this.log(xe.LOG,"[playerStartInit] ".concat(U.vid," ").concat(J),!!u);var W=new m.Errors(this.player,{errorType:"runtime",errorTypeCode:fn.runtime,errorCode:yn.other,vid:this.playerConfig.vid,errorMessage:J});this.changeState(mn.PRELOAD_MATCH,{m:0,ck:Z}),this.player.emit("playCatch",this.player.vtype,W)}}if(this.useVideoLoad){if(e=this.playerConfig.url,r.closeDowngrade)return;return Oa.call(this.player,e),void this._startProgress()}if(!this.isDestroy){this.player.mp4MseFlag=!0,this._tm=(new Date).getTime(),this._reset();var k=this.playerConfig.vid;this.changeState("PLAYER_START_INIT");var E=this._initMp4Kernel();this._initPromise=E,this._addPendingPromise(this._initPromise),E.then((function(){t.isDestroy||(t.mse&&(e=t.mse.url),t.changeState("PLAY_INIT_OK"),t._bindEvents(),t._startProgress())})).catch((function(n){var U,i,a=!!t._initPromise&&t._initPromise.isBreak;if(!t.isDestroy&&!a&&n!==Ha){if(t.log(xe.LOG,"_initMp4Kernel.catch: ".concat(k," isDestroy:").concat(t.isDestroy,",\n errorCode:").concat((null==n?void 0:n.errorCode)||yn.other,",errMsg:").concat((null==n?void 0:n.errorMessage)||(null==n?void 0:n.message))),(null==n?void 0:n.errorCode)===yn[403]&&t._emitExpireEvent(n)&&r.urlExpireDisableErrorEvent)return t._initPromise=null,t.log(xe.LOG,"initMp4Kernel urlExpireDisableErrorEvent",r.urlExpireDisableErrorEvent,",errorCode,",n.errorCode),t._stopProgress(),void t.emit(Pa);var F=n;F.errorCode||((F=new m.Errors(t.player,{errorType:fn.RUNTIME,errorCode:(null==n?void 0:n.errorCode)||yn.other,vid:t.playerConfig.vid,errorMessage:(null==n?void 0:n.errorMessage)||(null==n?void 0:n.message),mediaError:{code:(null==n?void 0:n.httpCode)||yn.other,message:(null==n?void 0:n.errorMessage)||(null==n?void 0:n.message),errorType:null==n?void 0:n.errorType}})).url=e),t.changeState("PLAY_INIT_CATCH",{c:F.errorCode,m:(null==n?void 0:n.errorMessage)||(null==n?void 0:n.message),t:null==n?void 0:n.errorType}),t.useVideoLoad=!0,t.player.vtype=ee.MP4_1,t.player.emit("playCatch",t.player.vtype,F);var l=t.checkIsDegraded(F);return t.log(xe.WARN,"PLAY_INIT_CATCH final error !!!!, ",k,null===(U=F)||void 0===U?void 0:U.errorCode,null===(i=F)||void 0===i?void 0:i.errorMessage,",degrade:",l),t.emit(Pa),l?void 0:(t.player.pause(),t._reset(),t.states=[],t.emit("error",F),void(t._initPromise=null))}})).finally((function(){var n;if(t._initPromise){var U=t._initPromise.isBreak;t._initPromise&&t._removePendingPromise(t._initPromise),t._initPromise=null,t._usePaused&&(t.playerConfig.autoplay=!1),t.softDecode&&"Array"===m.Util.typeOf(e)&&(e=e[0].src),"String"!==m.Util.typeOf(e)||/^blob/.test(e)||t.destroyMSE();var i=(null===(n=t.player)||void 0===n?void 0:n.currentSrc)===e;t.changeState("PLAY_INIT_FINALLY",{isDestroy:t.isDestroy,isBreak:U,reUseSrc:i}),!t.isDestroy&&!U&&Oa.call(t.player,e),t.reUseMSEEmitEvents(i),t._abrService&&t._abrService.isCurrentInAbr()&&(t._abrService.enable(),t._abrService.execute())}}))}}}},{key:"destroyMSE",value:(r=f(k().mark((function e(){var t;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(t=this.mse)||void 0===t?void 0:t.unbindMedia();case 2:this.mse&&this.log(xe.LOG,"destroyMSE ",this.playerConfig.vid),this.mse=null;case 4:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"reUseMSEEmitEvents",value:function(e){var t,n=this;e&&/^blob/.test(null===(t=this.player)||void 0===t?void 0:t.currentSrc)&&(clearTimeout(this.loadstartTimer),clearTimeout(this.loadeddataTimer),clearTimeout(this.canplayTimer),this.loadstartTimer=setTimeout((function(){clearTimeout(n.loadstartTimer),n.loadstartTimer=null,n.emit(m.Events.LOAD_START),n.log(xe.LOG,"reUseMSE add emit loadstart event")}),10),this.loadeddataTimer=setTimeout((function(){clearTimeout(n.loadeddataTimer),n.loadeddataTimer=null,n.emit(m.Events.LOADED_DATA),n.log(xe.LOG,"reUseMSE add emit loadeddata event")}),50),this.canplayTimer=setTimeout((function(){clearTimeout(n.canplayTimer),n.canplayTimer=null,n.emit(m.Events.CANPLAY),n.log(xe.LOG,"reUseMSE add emit canplay event")}),90))}},{key:"playNext",value:function(e){var t=this,n=this.player;this._defInited=!1,this._hasTriggerBufferThreshold=!1,n.resetState(),n._currentTime=0,n._duration=0,n.isPlaying=!1,this._useVideoLoad=!1,this._MSEError=!1;var U=this.softDecode;n.pause(),this._reset(),this.states=[],e.vtype&&(this.vtype=e.vtype.toUpperCase()),n.setConfig(e),this.checkReUseMSE(this.config.reUseMSE,!0),this.softDecode?n.vtype=ee.MP4_MSE_SOFT:n.vtype=ee.MP4_MSE,this.codecType=this.playerConfig.codecType?this.playerConfig.codecType.toLowerCase():ne.H264,U!==this.softDecode&&this.h265_h264_switch(this.playerConfig.mediaType||"video"),this.checkConfig(),this.log(xe.LOG,"[Index] playNext",e.vtype,e.vid),n.start(),this.config.reUseMSE&&(this.isH265DegradeH264||(this.__onmetadataHandle=function(){t.log(xe.LOG,"[Index] playNext metadata update currentTime = 0"),0!==n.currentTime&&(n.currentTime=0),n.video.removeEventListener("loadedmetadata",t.__onmetadataHandle),t.__onmetadataHandle=null},n.video.addEventListener("loadedmetadata",this.__onmetadataHandle))),this.emit("playnext")}},{key:"h265_h264_switch",value:function(e){this.log(xe.LOG,"[Index],h265_switch_h264",e);var t=this.player,n=m.Util.createDom(e,"",this.getVideoConfig(this.playerConfig),"xgplayer-".concat(e,"-img"));this.removeVideoList.push(t.video),n.muted=t.video.muted,n.volume=t.video.volume,t.media?t.media=n:t.video=n,t.attachVideoEvents(t.video)}},{key:"getVideoConfig",value:function(e){var t=Object.assign({},{controls:!1,autoplay:e.autoplay,playsinline:e.playsinline,"x5-playsinline":e.playsinline,"webkit-playsinline":e.playsinline,"x5-video-player-fullscreen":e["x5-video-player-fullscreen"]||e.x5VideoPlayerFullscreen,"x5-video-orientation":e["x5-video-orientation"]||e.x5VideoOrientation,airplay:e.airplay,"webkit-airplay":e.airplay,tabindex:2,mediaType:e.mediaType||"video"},e.videoConfig,e.videoAttributes);return e.loop&&(t.loop="loop"),t}},{key:"next",value:function(e){this.playNext(e)}},{key:"oldChangeDefinition",value:function(e,t){var n=this,U=this.config,i=this.player,r=this.playerConfig;i.emit(m.Events.DEFINITION_CHANGE,{from:t,to:e}),i.emit(m.Events.WAITING);var a=i.definitionList,F=a.filter((function(t){return t.definition===e.definition||t.definition===Number(e.definition)})),l=a.filter((function(e){return e.definition===t.definition||e.definition===Number(t.definition)}));if(l.length>0&&(l[0].selected=!1),F.length>0){(e=F[0]).selected=!0,i.curDefinition=e,this.log(xe.LOG,"[oldChangeDefinition],currentTime,",i.currentTime,",from,",t,",to,",e);var Q=i.currentTime,d=i.paused;this._changeDefState||(this._changeDefState={currentTime:Q,paused:d}),U.definition=e.definition;["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){U[t]=e[t]})),r.url=e.url,r.userSelectDefinition=e.definition,r.defaultDefinition=e.definition,i.currentTime=0,i.pause(),this._reset(),this.states=[],this.checkReUseMSE(),this._isMseInit=!1,this.eme=null,this._handlerUrl(e.url),this._changeDefineCanPlay&&i.off("canplay",this._changeDefineCanPlay),this._changeDefineCanPlay=function(){n.changeDefineCanPlay(Q,d,t,e),n._changeDefineCanPlay=null},i.once("canplay",this._changeDefineCanPlay),this.player.video.load(),this.playerStartInit(r.url)}}},{key:"_emitDefinitionChangeDetailEvent",value:function(e){var t=this._currDefinition,n=t.bitrate,U=t.definition,i=t.file_id,r=t.width,a=t.vwidth,F=t.height,l=t.vheight;this.player.emit("definitionChangeDetail",{start:e,bitrate:n,definition:U,mediaType:"video",url:this.config._mainURL,fileid:i});var Q={width:r||a,height:F||l};this.player.emit("RESOLUTION_UPDATE",Q)}},{key:"_setCurrentDefinition",value:function(e){var t=this.player.config;if(t.definition&&t.definition.list){var n=t.definition.list.filter((function(t){return t.bitrate===e}));this._currDefinition=n&&n[0]}this._currDefinition||(this._currDefinition={})}},{key:"switchURL",value:function(e,t){var n=this;if(t&&"object"===E(t)&&t.action===_a)this._updateURL({url:null==e?void 0:e.url});else if(this.useVideoLoad)qa.call(this.player,e);else{var U=this.player,i=this.config;U.config.definition.list=[e],U.config.url=e.url,U.config.defaultBitrate=e.bitrate,U.config.defaultDefinition=e.definition;["keyValue","kid","secretKey","drm","getLicenseUrl","drmKeyToken","sessionId"].forEach((function(t){i[t]=e[t]})),this.__onmetadataHandle=function(){U.currentTime=0,U.video.removeEventListener("loadedmetadata",n.__onmetadataHandle),n.__onmetadataHandle=null},U.video.addEventListener("loadedmetadata",this.__onmetadataHandle),this.playNext(i)}}},{key:"_updateURL",value:function(e){var t=this.player,n=this.config,U=(e||{}).url;return!(!t||!U)&&(t.config.url=U,t.curDefinition&&(t.curDefinition.url=U),this._handlerUrl(U),!this.useVideoLoad&&this.mp4?(this.mp4.updateUrl(n._mainURL,n._backupURL),!0):!!this.useVideoLoad&&(qa.call(this.player,U),!0))}},{key:"_handlerUrl",value:function(e){var t,n=this.config,U=this.playerConfig;if(!e)return!1;var i=[];if("String"===m.Util.typeOf(e))t=e,U.backupURL&&i.push(U.backupURL);else if("Array"===m.Util.typeOf(e)&&e.length>0&&(t=e[0].src,e.length>1))for(var r=1;r<e.length;r++){var a=this._processUrl(e);i.push(a)}return!(!t&&0===i.length)&&(n._mainURL=this._processUrl(t),n._backupURL=i,!0)}},{key:"_processUrl",value:function(e){var t=this.config,n=this.playerConfig,U=Fa.extUrl(e,W({__vid:n.vid},t.reqParams));if(n&&"function"==typeof n.preProcessUrl){var i=n.preProcessUrlOptions||{};U=n.preProcessUrl(U,i).url}return U}},{key:"_processArrayUrl",value:function(e){var t=this;return e.map((function(e){return W(W({},e),{},{src:t._processUrl(e.src)})}))}},{key:"_firstFrameTime",value:function(){if(this.codecType===ne.H264||this.config.supportHevc){if(this.firstFrameTime.new_loadeddata<0){this.firstFrameTime.loadst_loadeddata=Fa.nowTime()-this.loadstart,this.firstFrameTime.new_loadeddata=Fa.nowTime()-this.firstFrameTime.newplayer;var e={};for(var t in this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,t)&&(e[t]=this.firstFrameTime[t])}}else if(this.codecType===ne.H265){var n,U,i=(null===(n=this.player)||void 0===n||null===(U=n.video)||void 0===U?void 0:U.getStats)&&this.player.video.getStats(),r=this.firstFrameTime.metaload,a=this.firstFrameTime.startMuxTime;this.firstFrameTime=i||{},this.firstFrameTime.metaload=r,this.firstFrameTime.startload_stmux=a,this.firstFrameTime.firstmux=this.mp4?this.mp4.firstFrameTime.firstmux:-1;for(var F=0;F<(null==i||null===(l=i.bootStats)||void 0===l?void 0:l.length);F++){var l;this.firstFrameTime[i.bootStats[F].action]=i.bootStats[F].dot}delete this.firstFrameTime.bootStats}}},{key:"_bindEvents",value:function(){var e=this;this.log(xe.LOG,"bindEvents,",this._isEventInit);var t=this.config,n=this.player;this._isEventInit||(this.on("seeking",this._onSeeking),this.on("waiting",this._onWaiting),this.on("error",this._onVideoError),this.on("playing",this._onPlaying),this.on("detectGap",(function(){t.gapDegrade&&t.useEME&&(t.useEME=!1,e._replay())})),this.on(ie.CHANGE_FLYING_PLUGIN_CONFIG,this._onChangeConfig),n.setEventsMiddleware({error:function(t,U){var i,r,a,F,l={errorCode:null==t||null===(i=t.error)||void 0===i?void 0:i.code,errorMessage:null==t||null===(r=t.error)||void 0===r?void 0:r.message,videoType:e.useVideoLoad};if(e.changeState("video_error.Middleware",l),e.codecType===ne.H265&&(null==t||null===(a=t.error)||void 0===a?void 0:a.message.indexOf("video decoder initialization failed"))>=0&&e.emit("DECODER_FAILED",{codecType:e.config.codecType,vid:e.playerConfig.vid}),e.log(xe.ERROR,"error middleware",JSON.stringify(l),", isDegrade,",!e._MSEError&&!e.useVideoLoad,n.currentTime),!e._MSEError&&!e.useVideoLoad)return n.vtype=ee.MP4_2,e._MSEError=!0,null===(F=e.mp4)||void 0===F||F.cancelLoading(),e._startDegradedPlayback(l,n.paused),void e.emit(Pa);e.emit(Pa),e.useVideoLoad&&U(t.eventName,null==t?void 0:t.error)}})),this._isEventInit=!0}},{key:"getBufferDur",value:function(){var e;if(null===(e=this.player)||void 0===e||!e.buffered)return 0;for(var t=this.player.buffered,n=0,U=0,i=t.length;U<i;U++)n+=t.end(U)-t.start(U);return n}},{key:"deleteVideo",value:function(){var e;if((null===(e=this.removeVideoList)||void 0===e?void 0:e.length)>0){for(var t=0;t<this.removeVideoList.length;t++){var n=this.removeVideoList[t],U=n.parentNode;U&&U.removeChild(n),this.log(xe.WARN,"[_removeVideoSource]")}this.removeVideoList=[]}}},{key:"_unbindEvents",value:function(){var e;this.log(xe.LOG,"unbindEvents,",this._isEventInit),this.off("seeking",this._onSeeking),this.off("waiting",this._onWaiting),this.off("ended",this._onEnded),this.off("error",this._onError),this.off("playing",this._onPlaying),this.off(ie.CHANGE_FLYING_PLUGIN_CONFIG,this._onChangeConfig),this._isEventInit=!1,null!==(e=this.config)&&void 0!==e&&e.enableFPSStuckHandle&&this.off(m.Events.FPS_STUCK,this.fpsStuckHandle)}},{key:"changeState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._pTime||(this._pTime=Fa.nowTime());var n=Fa.nowTime()-this._pTime,U=Fa.nowTime()-this._sTime;this.log(xe.LOG,">>>changeState[".concat(e,"]"),n,U,JSON.stringify(t)),this.states.push({state:e,t1:n,t2:U,data:t}),this._pTime=Fa.nowTime()}},{key:"_initH265MseProxy",value:function(){this.player.video instanceof HTMLVideoElement&&this.h265_h264_switch(this.playerConfig.mediaType);var e=this.player.video;this.softDecode&&e.setPlayMode&&e.setPlayMode("VOD"),this.mseProxy=e,this.softDecode&&(this.player.forceDegradeToVideo=function(){},this.player.video.addEventListener("lowdecode",this._lowDecoder),this.player.video.addEventListener("error",this._onError))}},{key:"notSupportError",value:function(e){return this.log(xe.LOG,e,Bn),new m.Errors(this.player,{errorType:fn.MEDIA,errorCode:yn.mse,errorMessage:"".concat(e," ").concat(Bn),vid:this.playerConfig.vid})}},{key:"removeAndRejectInitPromise",value:function(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}},{key:"_initMp4",value:function(e,t){var n,U,i,r,a,F,l,Q,d,o=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},c=this.config,B=this.player,R=this.playerConfig;this.mp4&&(this.mp4.destroy(),this.mp4=null),this.changeState("MP4_NEW",{});var u,h=0;null!=c&&null!==(n=c.pcdnConfig)&&void 0!==n&&n.openPCDN&&(h=(null==c||null===(u=c.pcdnConfig)||void 0===u?void 0:u.switchPCDNMaxCnt)||2);null!=c&&null!==(U=c.pcdnConfig)&&void 0!==U&&U.adaptPCDNConfig&&null!=c&&null!==(i=c.pcdnConfig)&&void 0!==i&&null!==(r=i.adaptPCDNConfig)&&void 0!==r&&r.PCDNBufferControl&&(h=0),this._setCurrentDefinition(B.curDefinition.bitrate);var V=xa;(null==c?void 0:c.loadRangeType)===Zn.SIZE&&(V=Da);var Z,p=null===(a=B.curDefinition)||void 0===a||null===(F=a.pktOffsetMap)||void 0===F?void 0:F.find((function(e){return(null==e?void 0:e.time)===((null==c?void 0:c.firstLoadTimePos)||5)})),S=null==p?void 0:p.offset;(this.mp4=new V(e,B.curDefinition.bitrate,{segmentDuration:c.segmentMinDuration,enableWorker:c.enableWorker,codecType:this.codecType,chunkSize:c.preloadSize,firstLoadSize:S,duration:R.duration||0,fileSize:s.fileSize||0,playerId:this.playerId,vid:R.vid,useUrlRange:c.useUrlRange,retryCount:c.retryCount,retryDelay:c.retryDelay,timeout:c.timeout,onProcessMinLen:c.onProcessMinLen,supportHevc:c.supportHevc,afterLoadeddataCallBackLen:c.afterLoadeddataCallBackLen,firstLoadBuffer:c.firstLoadBuffer,logger:this.logger,switchPCDNMaxCnt:h,reqOptions:c.reqOptions,audioGroupingStrategy:c.audioGroupingStrategy,fixEditListOffset:c.fixEditListOffset,fixEditListOffsetThreshold:c.fixEditListOffsetThreshold,isAddRange:c.isAddRange,disableRepeatRange:c.disableRepeatRange},this.config._backupURL,this.firstFrameTime,""),this.mp4.once(Za,this._onMp4MetaReady),this.mp4.on(Va,this._onMp4Error),this.mp4.on(ma,this._updateDrmConfig),this.mp4.on(Ja,this._updateMSE),this.mp4.on(Sa,this._onMp4Progress),this.mp4.on(pa,this._onMp4DataCallBack),this.mp4.on(ya,(function(e){var t;null===(t=o.player)||void 0===t||t.emit("source_error",e)})),this.mp4.on(ba,(function(e){var t,n,U=o.player,i=o.config;o.emit(Pa),o.log(xe.LOG,"not match remove buffer start,buffer,",JSON.stringify(null==U||null===(t=U.buffered2)||void 0===t?void 0:t.bufferedList),", removeRange,",JSON.stringify(e)),null===(n=o.mse)||void 0===n||n.remove(_e.VIDEO,e[0]+.1,e[1]-.1).then((function(){var e;o.log(xe.LOG,"not match remove buffer end,",JSON.stringify(null==U||null===(e=U.buffered2)||void 0===e?void 0:e.bufferedList));var t=U.currentTime;(null==i?void 0:i.loadRangeType)===Zn.SIZE&&(U.currentTime=t,o.log(xe.LOG,"not match remove buffer end, fix currentTime",U.currentTime))})).catch((function(){}))})),this.mp4.on(Ea,(function(e){o.pcdn&&e&&o.pcdn.removePCDNNode(e.vid,e.bitrate,e.url)})),this.mp4.on(Wa,(function(e){o.player&&(o.player.emit("initialUrl",{url:e}),o.player.emit("changeHost",Fa.getHostFromUrl(e)))})),this.mp4.on(ka,function(){var e=f(k().mark((function e(t){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(n=o.mp4)||void 0===n?void 0:n.cancelLoading();case 2:o._curLoadSegmentIdx=t,o.log(xe.LOG,"[update curLoadSegmentIdx]",t);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),this.mp4.on(fa,(function(e){var t;if(o.player){var n,U,i=R.vid,r=(null==e?void 0:e.load_type)||va,a=null===(t=o.mp4)||void 0===t?void 0:t.getCurSwitchPCDNCnt(),F=o._currDefinition,l=F.bitrate,Q=F.definition,d=F.file_id;if(r===va)o.player.emit("prf_data_size",{vid:i,task_type:1,cdn_size:e.len,change_cnt:a,definition:Q,bitrate:l,fileid:d});else o.player.emit("prf_data_size",{vid:i,task_type:1,pcdn_size:e.len,trace_id:null===(n=o.mp4)||void 0===n||null===(U=n.pcdnTraceInfo)||void 0===U?void 0:U.trace_id,change_cnt:a,definition:Q,bitrate:l,fileid:d});o.mp4&&o.mp4.updateLoadInfo(r,e.len),an&&console.log("prf_data_size emit, vid,",i,",loadType,",r,", task_type, 1",",len,",e.len)}})),this.mp4.MP4Loader.on(cn,(function(e){var t,n;$a=e.speed,o.debugInfo.speed||(o.debugInfo.speed=[]),o.debugInfo.speed.push($a),o.debugInfo.speed.length>10&&o.debugInfo.speed.shift();var U=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||va;o.emit(cn,{speed:$a,type:U});var i=(null===(n=o.playerConfig)||void 0===n?void 0:n.vid)||(null==e?void 0:e.vid);if((null==e?void 0:e.len)>0){var r,a,F,l,Q,d;if(!o.player)return;var s=(null==e||null===(r=e.priOptions)||void 0===r?void 0:r.type)||va,c=ia(e.len,e.time),B=(null===(a=o.adaptRangeRes)||void 0===a?void 0:a.length)>0?o.adaptRangeRes.shift():{},R=B.cachedBufferDur,u=B.loadTarDuration,h=B.loadDuration,V=B.forceSetMin,Z=B.idx,p=B.PCDNInBuffer,S=B.PCDNOutBuffer,m=B.loadSize,J=null===(F=o.mp4)||void 0===F?void 0:F.getCurSwitchPCDNCnt(),W=o._currDefinition,k={vid:i,task_type:1,buffer_dur:R||-1,load_tar_dur:u||-1,load_dur:h||-1,force_set_min:V,in_buf:p||-1,out_buf:S||-1,change_cnt:J,bitrate:W.bitrate,definition:W.definition,fileid:W.file_id,load_size:m||-1};s===va?(k.cdn_size=e.len,k.cdn_speed=c):(k.pcdn_size=e.len,k.pcdn_speed=c),o.player.emit("prf_data_size",k),an&&console.log("prf_data_size emit,",Z,JSON.stringify(k));var E=e.index?null===(l=o.mp4)||void 0===l||null===(Q=l.adaptTimeRange[e.index])||void 0===Q||null===(d=Q.timeRangeIdx)||void 0===d?void 0:d[1]:null;if(E&&E>=o.mp4.timeRange.length-1)for(;(null===(y=o.adaptRangeRes)||void 0===y?void 0:y.length)>0;){var y,f,b=o.adaptRangeRes.shift(),v=b.cachedBufferDur,N=b.loadTarDuration,T=b.loadDuration,g=b.forceSetMin,C=b.idx,L=b.loadSize,X=b.PCDNInBuffer,x=b.PCDNOutBuffer,D=null===(f=o.mp4)||void 0===f?void 0:f.getCurSwitchPCDNCnt();k.buffer_dur=v||-1,k.load_tar_dur=N||-1,k.load_dur=T||-1,k.force_set_min=g||-1,k.in_buf=X||-1,k.out_buf=x||-1,k.load_size=L||-1,k.change_cnt=D,o.player.emit("prf_data_size",k),an&&console.log("prf_data_size emit,",C,JSON.stringify(k))}o.mp4&&o.mp4.updateLoadInfo(s,e.len)}})),this.mp4.on(sn.MEDIA_LIST,(function(e){var t;null===(t=o.player)||void 0===t||t.emit(sn.MEDIA_LIST,e)})),null!=c&&null!==(l=c.pcdnConfig)&&void 0!==l&&l.adaptPCDNConfig&&null!=c&&null!==(Q=c.pcdnConfig)&&void 0!==Q&&null!==(d=Q.adaptPCDNConfig)&&void 0!==d&&d.PCDNBufferControl)&&(null===(Z=this.mp4)||void 0===Z||Z.setSwitchPCDNCallBack((function(){var e=o.pcdn;if(!e)return-1;var t=e.getPCDNChangeCnt()||-1;return o.log(xe.LOG,"[updateSwitchPCDNMaxCnt]",t),t})));this.changeState("MP4_INIT",{}),this.emit("loadstart_mse"),this.mp4.init(t),this._emitDefinitionChangeDetailEvent(0)}},{key:"_checkPreloader",value:(i=f(k().mark((function e(){var t,n,U,i,r,a,F,l,Q,d,o,s,c;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.player,n=t.curDefinition,U=t.preloader,i=Promise.withResolvers(),r=i.promise,a=i.resolve,F={method:"checkPreloader",success:0,type:"error",cacheKey:""},U){e.next=9;break}return this.changeState(mn.ERROR,{t:2}),F.success=0,F.error=new Error("no_preloader"),a(F),e.abrupt("return",r);case 9:if(l=aa(n),Q=U.getDataUniqueKey(l),console.log(">>>_checkPreloader cacheKey",n,l,Q),F.cacheKey=Q,!Q){e.next=48;break}return e.next=16,U.getPreLoadData(l);case 16:if(d=e.sent,console.log(">>>_checkPreloader result",d),!d){e.next=41;break}if(s=d.bitrate,c=d.orgDefinition,delete d.generateBy,!s||!n.bitrate||s===n.bitrate){e.next=29;break}return this.preLoadData=null,F.success=0,F.error=new Error("bitrate_not_match_cut_".concat(n.bitrate,"_cache_").concat(s)),this.changeState(mn.PRELOAD_ERROR,{bitrate:s,ck:Q}),a(F),this.log(xe.LOG,">>>check Preloader bitrate_not_match cacheKey".concat(Q,"\n curDefinition:").concat(n.bitrate," cache:").concat(s)),e.abrupt("return");case 29:n.orgDefinition=c,rn&&console.log(">>>>check Preloader result",Q,d),this.preLoadData=d,this.emit("PRELOAD_INFO",this.preLoadData),F.success=1,F.data=d,null===(o=this.preloader)||void 0===o||o.setUsePreloadInfo(Q,!0),this.changeState(mn.PRELOAD_OK,{t:4,l:this.preLoadData.byteLength,ck:Q}),d.mediaSegList&&d.mediaSegList.length>0||d.buffer&&d.buffer.byteLength>0?this.hitpreload=!0:this.hitpreload=!1,a(F),e.next=46;break;case 41:this.preLoadData=null,this.changeState(mn.PRELOAD_ERROR,{t:0,ck:Q}),F.success=0,F.error=new Error("none_preload"),a(F);case 46:e.next=52;break;case 48:this.changeState(mn.PRELOAD_ERROR,{t:3,ck:Q}),F.success=0,F.error=new Error("none_preload"),a(F);case 52:return e.abrupt("return",r);case 53:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"_initEME",value:function(e,t){var n,U,i=this.config,r=i.kid,a=i.drmKeyToken,F=i.secretKey,l=i.keyValue,Q=i.drm,d=i.useEME;if((r||a||F||l||Q)&&d&&!A.checkEMEValid())return this.log(xe.ERROR,"checkEMEInValid"),void this._errorHandler(new m.Errors(this.player,{errorType:fn.MEDIA,errorCode:yn.eme_hijack,errorMessage:"checkEMEInValid",vid:this.playerConfig.vid}));var o=this.player,s=this.config;this._updateDrmConfig(t),this.log(xe.LOG,"useEME: ",s.useEME),null===(n=this._secretkey)||void 0===n||n.setOptions('video/mp4; codecs="avc1.64001E"','audio/mp4; codecs="mp4a.40.2"'),null===(U=this._secretkey)||void 0===U||U.setupEME(o.video)}},{key:"_initMse",value:(U=f(k().mark((function e(t){var n,U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z,p,S=this,J=arguments;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U=J.length>1&&void 0!==J[1]&&J[1],i=this.config,r=i.kid,a=i.drmKeyToken,F=i.secretKey,l=i.keyValue,Q=i.drm,d=i.useEME,!(r||a||F||l||Q)||!d||A.checkMSEValid()){e.next=6;break}return this.log(xe.ERROR,"checkMSEInValid "),this._errorHandler(new m.Errors(this.player,{errorType:fn.MEDIA,errorCode:yn.mse_hijack,errorMessage:"checkMSEInValid",vid:this.playerConfig.vid})),e.abrupt("return");case 6:null===(n=this.player)||void 0===n||n.emit("codecsupdate",t.videoCodec),this.updateMSEDuration(),o=this.mp4&&this.mp4.checkCodecH265(),s=this.mp4&&this.mp4.checkCodecH266(),c=!!t.videoCodec,B=!!t.audioCodec,R=c&&B?o?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':s?'video/mp4; codecs="bvc2.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':c?o?'video/mp4; codecs="hev1.1.6.L93.B0"':s?'video/mp4; codecs="bvc2.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"',u=T({},_e.VIDEO,{mimeType:"video/mp4",codec:R}),this.mse?(this.log(xe.LOG,"MSE exist"),V=Promise.withResolvers(),Z=V.promise,p=V.resolve,h=Z,p()):(this.log(xe.LOG,"new MSE"),this.mse=new _e,h=this.mse.bindMedia(this.player.video)),h.then((function(e){S.changeState("MSE_OPEN"),S.firstFrameTime.initmse_sbopen=null==e?void 0:e.costtime,S._loadStartEventTime>0&&(S.firstFrameTime.mseopen=Fa.nowTime()-S._loadStartEventTime);var t=Object.keys(u);try{for(var n=0;n<t.length;n++){var i,r=t[n];null===(i=S.mse)||void 0===i||i.createOrChangeSource(r,u[r].codec).then((function(){S.changeState("MSE_OPEN_DONE"),S._isMseInit=!0,S._onTimeUpdate()})).catch(function(){var e=f(k().mark((function e(t){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return S.config.reUseMSE=!1,S.log(xe.WARN,"MSE createOrChangeSource catch err: ",null==t?void 0:t.message),e.next=4,null===(n=S.mse)||void 0===n?void 0:n.unbindMedia();case 4:S.mse=null,S._isMseInit=!1,U?S.MSEErrorHandle(t):S._initMse(S.mp4.meta,!0);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}}catch(a){S.MSEErrorHandle(a)}})),this.changeState("MSE_INIT");case 17:case"end":return e.stop()}}),e,this)}))),function(e){return U.apply(this,arguments)})},{key:"MSEErrorHandle",value:function(e){var t=new m.Errors(this.player,{errorType:fn.mse,errorCode:yn.mse,vid:this.playerConfig.vid,errorMessage:e.message,mediaError:{code:yn.mse,message:e.message}});this.log(xe.ERROR,"initMse error: ",null==e?void 0:e.message),this._errorHandler(t)}},{key:"_appendInitSeg",value:function(e){var t=this;this.mse&&!this._MSEError&&(this.changeState("MSE_INITSEG"),this.mse.append(_e.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}).then((function(e){t.firstFrameTime.metaready_initsegend=null==e?void 0:e.costtime,t.changeState("MSE_INITSEG_OK",{costtime:null==e?void 0:e.costtime})})),this.config.useEME&&this._secretkey&&this._secretkey.emit(A.EVENT_EME.ENCRYPTED))}},{key:"_checkMetaInfo",value:function(e){if(!e)return new m.Errors(this.player,{errorType:fn.DEMUX,errorCode:yn.metaError,errorMessage:"meta is null",vid:this.playerConfig.vid});var t=this.mp4.checkCodecH265(),n=this.mp4.checkCodecH266();if(this.changeState("MP4_META_READY",{isH265:t,isH266:n}),t&&(this.codecType!==ne.H265&&(this.codecType=ne.H265,this.log(xe.LOG,"codecType fix ",this.codecType)),!this.softDecode&&!this.config.supportHevc))return this.notSupportError(this.codecType);if(n&&(this.codecType!==ne.H266&&(this.codecType=ne.H266,this.log(xe.LOG,"codecType fix ",this.codecType)),!this.config.supportVvcc))return this.notSupportError(this.codecType);var U=this.config,i=U.enableCheckTrackGap,r=U.trackGap;if(e.videoCodec&&e.audioCodec&&i){var a=e.moov.trak,F=e.moov.mvhd.timescale,l=this._getTrakDuration(a[0],F),Q=this._getTrakDuration(a[1],F);if(Math.abs(l-Q)>r)return new m.Errors(this.player,{errorType:fn.DEMUX,errorCode:yn.metaError,errorMessage:"video track and audio track duration long gap, mse cannot play to end",vid:this.playerConfig.vid})}return null}},{key:"_getTrakDuration",value:function(e,t){return e.tkhd.duration/t}},{key:"_stopProgress",value:function(){this.log(xe.LOG,"stopProgress",this._hasStartProgress),this._hasStartProgress=!1,this._requestTimer&&this._requestTimer.stop(),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0),this._seekResumTimer&&(clearTimeout(this._seekResumTimer),this._seekResumTimer=null)}},{key:"checkReStartTimer",value:function(){var e=Fa.nowTime()-this._lastTimeupdateTime2;e>2*this._tickInSeconds*1e3&&!this._offineLine&&(this.log(xe.LOG,"checkReStartTimer reStart timer",e,Fa.nowTime()),this._stopProgress(),this._startProgress(),this._lastTimeupdateTime2=Fa.nowTime())}},{key:"_bindNetworkStateChange",value:function(){window.addEventListener("online",this._onOnlineHandler),window.addEventListener("offline",this._onOfflineHandler)}},{key:"_unbindNetworkStateChange",value:function(){window.removeEventListener("online",this._onOnlineHandler),window.removeEventListener("offline",this._onOfflineHandler)}},{key:"_onSuperStart",value:function(e){var t=this,n=this.player;ln("_onSuperStart:".concat(e),this.mse),n.video.src=e,this.once("canplay",(function(){n.play(),t.on("waiting",t._onWaiting)}))}},{key:"_appendBuffer",value:function(e,t,n,U){var i=this,r=this.mse,a=this.playerConfig,F=this.player,l=a.vid;n=n||{},this.log(xe.LOG,"appendStart",n.fragIndex,JSON.stringify(n.range)),this._MSEError?this.log(xe.ERROR,"_MSEError, not append return"):r.append(e,t,{vid:l,state:U,context:JSON.stringify(n)}).then((function(e){var t,r,a,l=F.getBufferedRange(),Q=JSON.parse(null==e||null===(t=e.context)||void 0===t?void 0:t.context);if(i.log(xe.LOG,"appendEnd ",null==Q?void 0:Q.fragIndex,JSON.stringify(null==Q?void 0:Q.range),", costTime,",null==e?void 0:e.costtime,", opt,",null==e?void 0:e.name,",buffer,",JSON.stringify(l),F.currentTime),i.firstFrameTime.loadst_loadeddata<0){var d;i.firstFrameTime.apcnt++;var o=(null==e||null===(d=e.context)||void 0===d?void 0:d.dataLen)||0,s=(null==e?void 0:e.costtime)||0;i.firstFrameTime.aplen+=o,i.firstFrameTime.data_ap+=s;for(var c=!1,B=i.states.length-1;B>=0;B--)if("APPEND_DATA_OK"===i.states[B].state){i.states[B].data.cnt+=1,i.states[B].data.costime+=s,i.states[B].data.dataLen+=o,c=!0;break}c||i.changeState("APPEND_DATA_OK",{costime:s,dataLen:o,cnt:1})}if(i.mse&&U&&null!==(r=i.mp4)&&void 0!==r&&r.checkIsLoadEnd(null===(a=n.range)||void 0===a?void 0:a[1])){var R=i.player.buffered;i._loadedEnd=!0;var u=0;R&&(null==R?void 0:R.length)>0&&(u=R.end(R.length-1)),i._isEnded(),i.log(xe.LOG,"loaded ended !!!===>>>",JSON.stringify(n.range),", fragIndex,",n.fragIndex,", bufferEndTime,",u,",meta_duration,",i.mp4.meta.duration)}})).catch((function(e){var t=i.player,U=i.mse;if(!i._MSEError&&t){var r=t.media||t.video;if(e&&null!=U&&U.isFull()){i.log(xe.WARN,"[MSE is full]");var a=t.getBufferedRange(t.buffered2);i._checkRemovePlayedBuffer(a,t.currentTime,!0)}else{var F,Q,d,o,s="".concat(null!=r&&r.error?[r.error.code,r.error.message].join("-"):"MEDIA_EMPTY"),c="".concat((null==e?void 0:e.errorCode)||"","-").concat((null==e?void 0:e.errorMessage)||(null==e?void 0:e.message)||"MSE_EMPTY"),B="".concat(c,"|").concat(s);i._MSEError=!0,i.changeState("_MSEError",{fragIndex:null===(F=n)||void 0===F?void 0:F.fragIndex,range:null===(Q=n)||void 0===Q?void 0:Q.range}),i.log(xe.LOG,"MSE append error",null===(d=n)||void 0===d?void 0:d.fragIndex,null===(o=n)||void 0===o?void 0:o.range);var R=new m.Errors(t,{errorType:fn.MEDIA,errorCode:yn.mseAppend,vid:l,errorMessage:B,mediaError:{code:yn.mseAppend,message:B}});i._errorHandler(R)}}}))}},{key:"_loadData",value:(n=f(k().mark((function e(){var t,n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.mp4&&this._isMseInit){e.next=2;break}return e.abrupt("return");case 2:if(this.loadstart<0&&(this.loadstart=Fa.nowTime()),e.prev=3,t=this.player,n=Te.info(Te.get(t.media||t.video),t.currentTime),this.config.alwaysStreamingLoad||!(n.remaining>5)){e.next=11;break}return e.next=9,this.mp4.loadAllFragmentData(this._curLoadSegmentIdx,this._loadDataSuccess);case 9:e.next=13;break;case 11:return e.next=13,this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess);case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(3),this.log(xe.ERROR,"[Index] _loadData error",this.playerConfig.vid,null===e.t0||void 0===e.t0?void 0:e.t0.message);case 18:case"end":return e.stop()}}),e,this,[[3,15]])}))),function(){return n.apply(this,arguments)})},{key:"getDataBitRate",value:function(e){var t=this.mp4,n=this.playerConfig;if(!t)return 0;for(var U=t.getDataBitRate(e),i=n.definition.list,r=0,a=0;i&&a<i.length;a++)if(i[a].bitrate===U){r=i[a];break}return r}},{key:"_loadStuckCheck",value:function(){var e=this,t=this.config,n=this.player;if(!t.disableBufferBreakCheck){if(!this.playerConfig.autoplay&&!this.playFlag)return;var U=n.isUserActive;if(n.currentTime-(this._lastCurrentTime||0)>.1||!U&&n.paused||U&&this.playFlag&&n.paused)1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log(xe.LOG,"视频没有卡死,重置卡死标记,curtime,",n.currentTime),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null);else if(!this._bufferBreakFlag){var i;this._bufferBreakFlag=1;var r=JSON.stringify(null==n||null===(i=n.buffered2)||void 0===i?void 0:i.bufferedList);this.log(xe.LOG,"卡死计时开始! ".concat(t.waitingTimeOut,"ms后确认卡死,"),n.currentTime,r),this._bufferBreakTimer=setTimeout((function(){if(!(e.isDestroy||t.disableInactiveWaitingCheck&&(!U||null!=n&&n.paused))){if(1===e._bufferBreakFlag){var i=n.currentTime,r=n.bufferedPoint;if(r.end>0&&r.end-i>=2)return void e.retrySeekResum(i)}e._bufferBreakFlag=2,e.waitTimeoutDegrade()}}),t.waitingTimeOut)}this._lastCurrentTime=n.currentTime}}},{key:"waitTimeoutDegrade",value:function(){var e,t,n,U=this.player;this.changeState("wait_timeout"),this.log(xe.LOG,"确认卡死!!!,curtime,",U.currentTime,JSON.stringify(null==U||null===(e=U.buffered2)||void 0===e?void 0:e.bufferedList),",duration,",null===(t=this.mp4)||void 0===t||null===(n=t.meta)||void 0===n?void 0:n.duration),this.emit("waittimeout");var i=document.hidden||"hidden"===document.visibilityState,r=new m.Errors(this.player,{errorType:fn.RUNTIME,errorCode:i?yn.waitTimeoutWithHidden:yn.waitTimeout,errorMessage:"wait_timeout",vid:this.playerConfig.vid});this._errorHandler(r)}},{key:"retrySeekResum",value:(t=f(k().mark((function e(t){var n,U,i,r,a=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.player,U=this.config,this.changeState("retrySeek"),this.log(xe.LOG,"卡死但有超过2s的buffer,seek下!!!"),clearTimeout(this._seekResumTimer),this._resumePlay=!1,!(U.waitingRetrySeekTimes>0&&U.waitingRetryDuration)){e.next=14;break}return i=Math.min(U.waitingRetrySeekTimes,3),this._currentSeekTimes=0,this.off("playing",this._onResumePlaying),this.once("playing",this._onResumePlaying),r=function e(){if(!n||a._resumePlay||n.paused)a.log(xe.LOG,"当前播放实例已恢复或处于暂停状态,退出重试 player=".concat(!!n,",_resumePlay=").concat(a._resumePlay,",paused=").concat(null==n?void 0:n.paused));else{if(a._currentSeekTimes<i)return a._seekOnce(t),void(a._seekResumTimer=setTimeout(e,U.waitingRetryDuration));a.waitTimeoutDegrade(),a._seekResumTimer=null}},this._seekOnce(t),this._seekResumTimer=setTimeout(r,U.waitingRetryDuration),e.abrupt("return");case 14:n.currentTime=t+1,this.once("playing",(function(){a._resumePlay=!0})),this._seekResumTimer=setTimeout((function(){a._resumePlay||a.waitTimeoutDegrade(),a._seekResumTimer=null}),Math.ceil(U.waitingTimeOut/2));case 17:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"_isInBuffer",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=!1,U=this.player.video.buffered,i=0;i<U.length;i++){var r=U.start(i)-t,a=U.end(i)+t;if(r<=e.startTime&&e.endTime<=a){n=!0;break}}return n}},{key:"_doubleCheckBuffer",value:function(e){var t=this.player;return!(e.startTime>t.currentTime)||(!t.video||!t.video.buffered||(1===t.video.buffered.length||this._isInBuffer(e,.2)))}},{key:"isOpenPCDN",value:function(e){var t=this;if(this.pcdn&&this.mp4){var n=e-this.player.currentTime,U=this.pcdn,i=this.config,r=this.mp4,a=i.pcdnConfig,F=U.getPCDNInBuffer()||a.enterMinBuffer,l=U.getPCDNOutBuffer()||a.outMaxBuffer;if(n>=F){if(r.updatePCDNState(ga),r.isUpdateNode){var Q=this.player.curDefinition,d=Q.uri,o=Q.bitrate;this.pcdn.getPCDNNode(d,o,this.getPCDNReqId()).then((function(e){if(r){var n,i=t.getPCDNReqId();if(null!=e&&e.req_id&&i!==e.req_id)t.log(xe.LOG,",getPCDNNode is not match curDefinition reqId",i,", pcdnRet.req_id",e.req_id);else if(r.updateNode(null==e?void 0:e.nodes),U.updatePCDNBitrate(o),e&&(r.pcdnTraceInfo={uri:e.vid,fid:e.fid,trace_id:null==e?void 0:e.trace_id}),e&&r.pcdnVVStat)r.pcdnVVStat.try_req_node+=1,r.pcdnVVStat.req_node_succ+=1,r.pcdnVVStat.has_ret_node+=(null==e||null===(n=e.nodes)||void 0===n?void 0:n.length)>0?1:0}})).catch((function(e){(null==r?void 0:r.pcdnVVStat)&&(r.pcdnVVStat.try_req_node+=1),t.checkURLExpired(e,"_getPCDNNode")}))}}else n<l&&r.updatePCDNState(Ta)}}},{key:"checkURLExpired",value:function(e,t){var n,U,i,r,a=Fa.checkUrlIsExpired(this.config._mainURL);1===a&&this.pcdn&&(this.pcdn=null);var F=(null==e||null===(n=e.response)||void 0===n?void 0:n.url)||(null===(U=this.config.pcdnConfig)||void 0===U?void 0:U.trackerUrl);null===(i=this.player)||void 0===i||i.emit("source_error",{host:Fa.getHostFromUrl(F),src:F,errorCode:null==e||null===(r=e.response)||void 0===r?void 0:r.status,message:"".concat(null==e?void 0:e.message,"-").concat(a).concat(t)})}},{key:"pushTimerStep",value:function(){var e;(null===(e=this.timerStepList)||void 0===e?void 0:e.length)>10&&this.timerStepList.shift(),this._lastTimeupdateTime2>0&&this.timerStepList.push(Fa.nowTime()-this._lastTimeupdateTime2)}},{key:"_onTimeUpdate",value:function(){this.pushTimerStep(),this._lastTimeupdateTime2=Fa.nowTime();var e=this.mse,t=this.mp4,n=this.player,U=this.config;if(n)if(Ia()&&n.paused!==this._usePaused&&(this._usePaused?n.pause():n.play()),!this.useVideoLoad&&t){var i=n.getBufferedRange();Fa.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=Fa.nowTime(),this._loadStuckCheck(),this._startUrlExpiredCheck(),this._checkRemovePlayedBuffer(i,n.currentTime));var r=t.timeRange;if(r&&!(r.length<1)&&(e||this.mseProxy)&&this.canDownload){var a,F,l,Q,d=this._maxBufferLength,o=!1;if((this.playFlag&&n.paused||!this.isActive)&&(o=!0),o)d=n.isInstNext&&this._nextBufferLength>=0?this._nextBufferLength:this._minBufferLength;else null!==(l=this.config)&&void 0!==l&&null!==(Q=l.adaptRange)&&void 0!==Q&&Q.targetCacheControl&&(d=this.adaptRange.getAdaptCacheBuffer());!this.preLoadData&&null!==(a=this.config)&&void 0!==a&&null!==(F=a.adaptRange)&&void 0!==F&&F.targetCacheControl&&(d+=this.config.noPreloadAddBufferLen);var s=n.currentTime+d;i[1]-s<0&&(this.isOpenPCDN(i[1]),(null==U?void 0:U.loadRangeType)===Zn.SIZE?this.sizeRangeCheckLoad(o,s,d,i[1]-n.currentTime):this.gopRangeCheckLoad(o,s,d)),this.playFlag&&!this._hasTriggerBufferThreshold&&this._startBufferCheck()}}else{var c,B;this.useVideoLoad&&null!==(c=this.expiryCheckPlugin)&&void 0!==c&&null!==(B=c.config)&&void 0!==B&&B.enableExpiryCheck&&Fa.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=Fa.nowTime(),this._startUrlExpiredCheck())}}},{key:"sizeRangeCheckLoad",value:function(e,t,n,U){var i,r=this.player,a=this.mp4,F=a.adaptTimeRange,l=F.length;if(null==F||!F.length||(null===(i=F[l-1])||void 0===i?void 0:i.range[1])<(a.size-1||r.curDefinition.size-1)||!F[l-1].downloaded){var Q=F.findIndex((function(e){return!e.isLoading}));if(null==F||!F.length||Q>=0||F[l-1].downloaded){var d,o,s=this.calculateAdaptRange(e,n),c=s.adaptRangeRes,B=s.loadDuration,R=null===(d=this.adaptRange)||void 0===d?void 0:d.getAdaptRangeSize(B);R>0&&(c.loadSize=R),c.loadDuration=B,this._curLoadSegmentIdx=Q<0?a.updateAdaptTimeRange(null,B,R):Q;var u=this._curLoadSegmentIdx;F[u].downloaded||(u=Math.max(u-1,0));var h=F[u];if(U>0&&(null==h?void 0:h.endTime)-r.currentTime>=n)return;var V=F[this._curLoadSegmentIdx];if(this._curLoadSegmentIdx>=0&&this._isInBuffer(V)&&!this._isChangeDefinition&&this._curLoadSegmentIdx>=0&&V.endTime-V.startTime>1)return F[this._curLoadSegmentIdx].downloaded=!0,F[this._curLoadSegmentIdx].isLoading=!0,this.log(xe.LOG,"onTimeUpdate, ".concat(this._curLoadSegmentIdx," download segment, has buffer"),V.startTime,V.endTime,r.currentTime),void(a.seekTime=V.endTime);c.idx=this._curLoadSegmentIdx,this.adaptRangeRes.length&&(null===(o=this.adaptRangeRes[c.length-1])||void 0===o?void 0:o.idx)===this._curLoadSegmentIdx||(this.adaptRangeRes.push(c),this.log(xe.LOG,"adaptRangeRes>>>>",c)),this.log(xe.LOG,"[onTimeUpdate],load index==>>>, ",this._curLoadSegmentIdx,JSON.stringify(F[this._curLoadSegmentIdx])),this._loadData()}}}},{key:"gopRangeCheckLoad",value:function(e,t,n){var U=this,i=this.mp4,r=i.timeRange,a=i.adaptTimeRange,F=this.player;r.every((function(i,r){if(void 0!==i.adaptTimeRangeIdx&&i.adaptTimeRangeIdx>=0&&a&&a[i.adaptTimeRangeIdx].downloaded)return!0;var l=U.mp4.getAdaptIdxBySrcIdx(r,!0),Q=l>=0?a[l]:null,d=l>=0&&U._isInBuffer(Q);if(!U._isChangeDefinition&&l>=0&&Q.endTime-Q.startTime>1&&d)return a[l].downloaded=!0,a[l].isLoading=!0,U.log(xe.LOG,"onTimeUpdate, ".concat(l," download segment, has buffer"),Q.startTime,Q.endTime,F.currentTime),!0;if(i.startTime-F.currentTime<t){var o,s,c,B;if(l<a.length&&null!==(o=a[l])&&void 0!==o&&o.isLoading)return!1;var R=U.calculateAdaptRange(e,n),u=R.adaptRangeRes,h=R.loadDuration;U._curLoadSegmentIdx=U.mp4.updateAdaptTimeRange(r,h),u.idx=U._curLoadSegmentIdx,(null===(s=U.config)||void 0===s||null===(c=s.adaptRange)||void 0===c?void 0:c.rangeControl)&&(u.loadDuration=U.mp4.adaptTimeRange[U._curLoadSegmentIdx].duration),U.adaptRangeRes.length&&(null===(B=U.adaptRangeRes[U.adaptRangeRes.length-1])||void 0===B?void 0:B.idx)===U._curLoadSegmentIdx||(U.adaptRangeRes.push(u),U.log(xe.LOG,"adaptRangeRes>>>>",u));var V=a[U._curLoadSegmentIdx];if(U._isInBuffer(V))return V.downloaded=!0,V.isLoading=!0,U.log(xe.LOG,"onTimeUpdate_, ".concat(U._curLoadSegmentIdx," download segment, has buffer"),V.startTime,V.endTime,F.currentTime),!0;U.log(xe.LOG,"[onTimeUpdate],load index==>>>, ",U._curLoadSegmentIdx,JSON.stringify(U.mp4.adaptTimeRange[U._curLoadSegmentIdx])),U._loadData()}}))}},{key:"calculateAdaptRange",value:function(e,t){var n,U,i,r,a,F,l,Q,d={forceSetMin:e};(null!==(n=this.pcdn)&&void 0!==n&&n.isOpenAdaptPCDN&&(d.PCDNInBuffer=this.pcdn.curPCDNInBuffer,d.PCDNOutBuffer=this.pcdn.curPCDNOutBuffer),!this.playFlag||e)?F=this._minBufferLength:null!==(l=this.config)&&void 0!==l&&null!==(Q=l.adaptRange)&&void 0!==Q&&Q.rangeControl?(F=this.adaptRange.getAdaptLoadDuration(),d.loadTarDuration=F):F=this.config.rangeMaxDuration;return(null===(U=this.config)||void 0===U||null===(i=U.adaptRange)||void 0===i?void 0:i.targetCacheControl)&&(d.cachedBufferDur=t),!this.playFlag&&null!==(r=this.config)&&void 0!==r&&null!==(a=r.adaptRange)&&void 0!==a&&a.rangeControl&&(d.loadTarDuration=F),{adaptRangeRes:d,loadDuration:F}}},{key:"checkReUseMSE",value:function(e,t){var n=this,U=this.mse;if(U)if(e||this.config.reUseMSE){var i;U.clearOpQueues(_e.VIDEO,t),U.abort(_e.VIDEO);var r=null===(i=this.player)||void 0===i?void 0:i.buffered;if((null==r?void 0:r.length)>0){var a=r.end(r.length-1);this.log(xe.LOG,"reUseMSE remove buffer, 0-",a),this._canUpdateDuration=!1,this.removeBuffer(_e.VIDEO,0,a,(function(){var e,t;n._canUpdateDuration=!0,(null===(e=n.mp4)||void 0===e||null===(t=e.meta)||void 0===t?void 0:t.duration)&&n.updateMSEDuration()}))}}else U.unbindMedia(),this.mse=null,this._unloadVideo()}},{key:"updateMSEDuration",value:function(){var e,t=this.mse,n=this.mp4;this._canUpdateDuration&&null!=n&&null!==(e=n.meta)&&void 0!==e&&e.duration&&n.meta.duration!==t.duration&&(this.log(xe.LOG,"updateMSEDuration ",n.meta.duration,",oldDuration,",t.duration),t.updateDuration(n.meta.duration),this._canUpdateDuration=null)}},{key:"_reset",value:function(){for(var e in this._definitionChangePointInfo=null,this._isReceiveEndedEvent=!1,this.adaptRangeRes=[],this.hitpreload=!1,this._sTime=Fa.nowTime(),this._isChangeDefinition=!1,this._removeBuffEndTime=0,this._usePaused=!1,this.useVideoLoad=!1,this._isMseInit=!1,this._curLoadSegmentIdx=0,this.emitExpireTimestamp=null,this.preLoadData=null,this.forPreloadTimeCache=null,this.playFlag=!1,this.waitLevelStartTime=-1,this._waitAdjustTimeCnt=0,this._initPromise&&"pending"===this._initPromise.state&&this._initPromise.reject(Ha),clearTimeout(this.checkResumePlayTimer),this.checkResumePlayTimer=null,this._stopProgress(),this.mp4&&(this.mp4.destroy(),this.mp4=null),this.mseProxy&&(this.player.video.removeEventListener("lowdecode",this._onDegrade),this.player.video.removeEventListener("error",this._onError)),this._unloadVideo(),this._cancelPendingPromises(),this._abrService&&(this._abrService.destroy(),this._abrService=null),this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,e)&&(this.firstFrameTime[e]="apcnt"===e||"aplen"===e?0:"newplayer"===e?Fa.nowTime():-1);clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null,this.canDownload=!0,this.loadstart=-1,this._loadStartEventTime=-1,this.startLoadData=-1}},{key:"removeErrorUrls",value:function(e,t,n){return e.errorCode===yn[403]&&this._emitExpireEvent(e),n}},{key:"checkIsDegraded",value:function(e){var t=this.config.notDegradeErrorList;return!((null==t?void 0:t.length)>0&&(e.errorCode===yn.timeout&&t.indexOf("timeout")>=0||e.errorCode===yn[403]&&(t.indexOf(403)>=0||t.indexOf("403")>=0)||e.errorCode===yn[404]&&(t.indexOf(404)>=0||t.indexOf("404")>=0)))}},{key:"_startDegradedPlayback",value:function(e,t){var n=this;this.canDownload=!1;var U=this.player,i=this.playerConfig,r=this.config;this._currentTime=U.currentTime||0,this.player.pause(),this._reset(),this.states=[],this._replay=null;var a=i.H264DefinitionList;if(this.codecType===ne.H265&&this.softDecode)this.log(xe.LOG,"h265 softDecode err,degrade use 264 play",i.vid),this._onDegrade(e);else if(this.codecType===ne.H264||r.supportHevc||r.supportVvcc||(null==a?void 0:a.length)>0){var F=r.drm,l=r.kid,Q=r.drmKeyToken,d=r.keyValue,o=r.secretKey;if(F||l||Q||d||o)F&&Object.keys(F).map((function(t){F&&(e[t]=F[t])})),this.log(xe.ERROR,"final error !!!!, ",i.vid,null==e?void 0:e.errorCode,null==e?void 0:e.errorMessage),this.emit("error",e);else{var s;this.log(xe.LOG,this.codecType,"MSE degrade video,",i.vid,U.currentTime),this.emit(ja,{errc:null==e?void 0:e.errorCode,err_msg:(null==e?void 0:e.errorMessage)||(null==e?void 0:e.message),CodecTypes:this.codecType,media_type:i.mediaType}),this.useVideoLoad=!0,this.destroyMSE(),this.__onmetadataHandle=function(){n._currentTime&&(U.currentTime=n._currentTime),n.log(xe.LOG,"DegradedPlayback update currentTime",i.vid,n.codecType,n._currentTime),t?n.player.pause():n.player.play(),U.video.removeEventListener("loadedmetadata",n.__onmetadataHandle),n.__onmetadataHandle=null},U.video.addEventListener("loadedmetadata",this.__onmetadataHandle);var c=i.url;if((null==e||null===(s=e.message)||void 0===s?void 0:s.indexOf(Bn))>=0&&(null==a?void 0:a.length)>0){var B=a.length,R=this.player.curDefinition.definition,u=R&&a.find((function(e){return e.definition===R}));u||(i.H264DefinitionList.sort((function(e,t){return e.bitrate-t.bitrate})),u=i.H264DefinitionList[Math.floor(B/2)]),u&&(c=u.url,this.playerConfig.codecType=ne.H264,this.codecType=ne.H264)}this._setPlayerSrc(c)}}else this.log(xe.ERROR,"degrade player failed"),this.emit("error",e)}},{key:"isSeekingInSameBuffer",value:function(e,t){var n=!1,U=this.mp4,i=this._lastBufferPoint;return U.meta&&U.meta.duration-t.end<.5&&(n=!0),i&&0!==e&&e>=i.start&&e<i.end&&(n=!0),this._lastBufferPoint=t,n}},{key:"getAdaptTimeRangeIdx",value:function(e){var t,n,U=this.config,i=this.adaptRange,r=U.segmentMinDuration;return i&&null!=U&&null!==(t=U.adaptRange)&&void 0!==t&&t.rangeControl&&(r=i.getAdaptLoadDuration()),null===(n=this.mp4)||void 0===n?void 0:n.updateAdaptTimeRange(e,r)}},{key:"_startProgress",value:function(){this.initTimer(),this._requestTimer.start(),this._hasStartProgress=!0}},{key:"_unloadVideo",value:function(){this.log(xe.LOG,"unloadVideo");var e=this.player;try{e.video&&e.video.src&&(/^blob/.test(e.currentSrc)||/^blob/.test(e.video.src)||(this.log(xe.LOG,"unloadVideo src"),e.video.removeAttribute("src"),e.video.load()))}catch(t){this.log(xe.ERROR,"unloadVideo error",null==t?void 0:t.message)}}},{key:"_addPendingPromise",value:function(e){this._pendingPromises.push(e)}},{key:"_removePendingPromise",value:function(e){this.log(xe.LOG,"removePendingPromise",null==e?void 0:e.id);var t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}},{key:"_cancelPendingPromises",value:function(){this._pendingPromises.length>0&&this._pendingPromises.forEach((function(e){e.reject(Ha)})),this._pendingPromises=[]}},{key:"_onMediaExpired",value:function(){this.log(xe.LOG,"MediaExpired stopProgress"),this._stopProgress(),this.emit(sn.MEDIA_EXPIRED)}},{key:"_isEnded",value:function(){var e,t,n=this.player,U=this.mp4,i=n.bufferedPoint,r=i?i.end:0,a=n.currentTime;a>1&&r>a&&(r-a>=2||n.duration-a<1)&&2===n.video.readyState?Fa.nowTime()-this._lastCheckLagTime>=3e3&&(this.log(xe.LOG,"[has buffer but waiting,seek 0.2 adjust],curTime,",a,", bufferend,",r,", duration,",null==U||null===(t=U.meta)||void 0===t?void 0:t.duration),n.currentTime=a+.2,this._lastCheckLagTime=Fa.nowTime()):this._lastCheckLagTime=Fa.nowTime();return!!(null!=U&&null!==(e=U.meta)&&void 0!==e&&e.duration&&U.meta.duration-n.currentTime<1&&(this._loadedEnd||Math.abs(U.meta.duration-i.end)<1))&&(this._stopProgress(),this.log(xe.LOG,"[isEnded],stopProgress and endOfStream,curTime, ",n.currentTime,", bufferend,",r,", duration,",U.meta.duration),this.mse&&this.mse.endOfStream().then((function(){})),!0)}},{key:"emitVideoEvent",value:function(e){var t=this;if(!this._checkEndedTimer){var n=this.player,U=this.mp4;this._checkEndedTimer=setTimeout((function(){t._checkEndedTimer=null,!t._isReceiveEndedEvent&&U.meta.duration-n.currentTime<.5&&(t.log(xe.LOG,"[ do emit video ended event],curTime,",n.currentTime,", bufferend,",e,", duration,",U.meta.duration),t.emit("ended"))}),2e3)}}},{key:"_clearMediaKeys",value:function(){var e=this.player;e.video&&"function"==typeof e.video.setMediaKeys&&e.video.setMediaKeys(null).catch((function(){}))}},{key:"_checkRemovePlayedBuffer",value:function(e,t,n,U){var i=this,r=this.mse,a=this.mp4,F=this.player;if(r&&a&&F&&(n&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=F.getBufferedRange(F.buffered2)),t||(t=F.currentTime),(n||!(Fa.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen))&&(this._checkRemoveBufferLastTime=Fa.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||r.isFull())))){var l=U?e[1]:t-(r.isFull()?0:15),Q=a.getFragmentIdx(l);if(Q>0&&(U||a.timeRange[Q].startTime<t)){var d=Math.floor(Math.min(a.timeRange[Q].startTime,e[1])),o=Math.max(a.timeRange[0].endTime+1,e[0]);o<d?(this.log(xe.LOG,"[checkremoveSourceBuffer], remove range==>>>",o,d,t),this.removeBuffer(_e.VIDEO,o,d)):r.isFull()&&!this._removeBufferTimer&&(this._removeBufferTimer=setTimeout((function(){i._checkRemovePlayedBuffer(null,null,!0)}),1e4))}}}},{key:"onMediaUpdate",value:function(e){var t=e.vid,n=e.kid,U=e.url,i=this.player,r=this.config;if(t===this.playerConfig.vid&&n===r.kid&&U){this.playerConfig.url=U,this._handlerUrl(U);var a=r._mainURL;return this.useVideoLoad?i.src=U:this.mp4&&this.mp4.updateUrl(a),!0}return!1}},{key:"enableAutoBuffer",value:function(e){var t=this;if(e){if(!this._allInitPromise)return void this.log(xe.LOG,"player destroyed!!");this._allInitPromise.then((function(){t.log(xe.LOG,"enableAutoBuffer true"),t._startProgress()}))}else this._stopProgress(),this.log(xe.LOG,"enableAutoBuffer false")}},{key:"bitRateAdapter",get:function(){return this.player&&this.player.plugins&&this.config.needAutoBitrate?this.player.plugins.bitrateselector:null}},{key:"getDefinitonFromAdapter",value:function(e,t){if(!this.bitRateAdapter)return null;var n=this.bitRateAdapter;return n.getSuitableBitrate?n.getSuitableBitrate(e,t):n.bitRateAdapter?n.bitRateAdapter.select(e):null}},{key:"log",value:function(e,t){for(var n=(this.playerConfig||{}).vid,U=n?"[Index]".concat(n," ").concat(t):"[Index] ".concat(t),i=arguments.length,r=new Array(i>2?i-2:0),a=2;a<i;a++)r[a-2]=arguments[a];ln.apply(void 0,[this.logger,e,U].concat(r))}},{key:"_emitInitFail",value:function(e){this.log(xe.ERROR,"initFail, reason:",e),this.emit(sn.INIT_FAIL,e)}},{key:"useVideoLoad",get:function(){return this._useVideoLoad},set:function(e){this._useVideoLoad=e}},{key:"ready",get:function(){return this._allInitPromise}},{key:"speed",get:function(){return parseInt(Xa.speed,10)}},{key:"version",get:function(){return En}},{key:"realTimeSpeed",get:function(){return $a}},{key:"opQueueLen",get:function(){var e=this.mse&&this.mse._queue?this.mse._queue[_e.VIDEO]:[];return e?e.length:0}},{key:"loadSegmentTimeRange",get:function(){if(!this.mp4)return[0,0,0,0];var e=this.mp4.adaptTimeRange;if(e&&e.length>0&&this._curLoadSegmentIdx>=0&&this._curLoadSegmentIdx<e.length){var t=e[this._curLoadSegmentIdx];if(t.isLoading){var n=t.range;return[Number(t.startTime),Number(t.endTime)].concat(Y(n))}}return[0,0,0,0]}},{key:"moovSize",get:function(){return 0}},{key:"isDestroy",get:function(){return!this.player}},{key:"domain",get:function(){return Fa.getHostFromUrl(this.loadURL)}},{key:"loadURL",get:function(){var e=this.player,t=e.currentSrc;return/^blob/.test(e.currentSrc)&&(t=this.mp4.currentLoadUseUrl()),t}},{key:"abrInstance",get:function(){return this._abrService?this._abrService.abrInstance:null}},{key:"expiryCheckPlugin",get:function(){return this.player&&this.player.plugins&&this.player._customExpiryCheck?this.player.plugins.expirycheck:null}},{key:"_handleUrlExpire",value:function(){var e=this,t=this.config,n=this.player,U=n.paused;(new Date).getTime()/1e3>=this.urlExpireTimestamp&&this.urlExpireTimestamp>0&&!U&&t.getServerTime&&(n.serverTimeDiffPromise=n.serverTimeDiffPromise||t.getServerTime().catch((function(){return 0})),n.serverTimeDiffPromise.then((function(t){if(t&&(n.serverTimeDiff=(new Date).getTime()/1e3-t),(new Date).getTime()/1e3>=e.urlExpireTimestamp+n.serverTimeDiff){e.urlExpireTimestamp=(new Date).getTime()/1e3+86400;var U=new bn("network",yn[403]);e._emitExpireEvent(U)}})))}},{key:"_emitExpireEvent",value:function(e){var t=this.player,n=(new Date).getTime()/1e3;return this.emitExpireTimestamp?n-this.emitExpireTimestamp>300&&(this.emitExpireTimestamp=n,t.emit("MEDIA_EXPIRED",e),!0):(this.emitExpireTimestamp=n,t.emit("MEDIA_EXPIRED",e),!0)}},{key:"reportBugPostPlayerLog",value:function(){this.emit(Pa)}}],[{key:"pluginName",get:function(){return"Mp4EncryptPlayer"}},{key:"defaultConfig",get:function(){return Jn}},{key:"speed",get:function(){return $a}},{key:"realTimeSpeed",get:function(){return $a}},{key:"version",get:function(){return En}}]),Q}(re);eF.isSupported=function(){return Ka()&&Ya()&&!Ga()},eF.isEMESupported=Ma,eF.isSupportedWithXgmse=function(){return Ya()&&!Ga()},eF.isMediaSourceSupported=Ka,eF.isWebAssemblySupported=Ya,eF.CUSTOM_EVENTS=sn,eF.updateUnionInfo=A.XGSecretKey.updateUnionInfo,eF.registerPreloader=re.registerPreloader;var tF=function(e){return e[e.DURATION=0]="DURATION",e[e.SIZE=1]="SIZE",e}(tF||{}),nF=function(e){return e[e.INDEXDB=0]="INDEXDB",e[e.MEMORY=1]="MEMORY",e}(nF||{}),UF=function(e){return e.PRELOAD_NEXT="PRELOAD_NEXT",e.PRELOAD_START="PRELOAD_START",e.PRELOAD_CANCEL="PRELOAD_CANCEL",e}(UF||{});var iF=function(){try{if("undefined"!=typeof indexedDB)return indexedDB}catch(e){}}();function rF(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function aF(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var FF={},lF="readonly",QF="readwrite";function dF(e){var t=FF[e.name],n={};n.promise=new Promise((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function oF(e,t){return new Promise((function(n,U){if(FF[e.name]=FF[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);dF(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var r=null==iF?void 0:iF.open.apply(iF,i);t&&(r.onupgradeneeded=function(t){var n=r.result;try{n.createObjectStore(e.storeName)}catch(U){if("ConstraintError"!==U.name)throw U;console.warn('The database "'.concat(e.name,'" has been upgraded from version ').concat(t.oldVersion," to\n version ").concat(t.newVersion,', but the storage "').concat(e.storeName,'" already exists.'))}}),r.onerror=function(e){e.preventDefault(),U(r.error)},r.onsuccess=function(){n(r.result),function(e){var t=FF[e.name].deferredOperations.pop();if(t)t.resolve(),t.promise}(e)}}))}function sF(e){return oF(e,!1)}function cF(e){return oF(e,!0)}function BF(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),U=e.version<e.db.version,i=e.version>e.db.version;if(U&&(e.version!==t&&console.warn('The database "'.concat(e.name,"\" can't be downgraded from version ").concat(e.db.version," to\n version ").concat(e.version,".")),e.version=e.db.version),i||n){if(n){var r=e.db.version+1;r>e.version&&(e.version=r)}return!0}return!1}function RF(e){dF(e);for(var t=FF[e.name],n=t.forages,U=0;U<n.length;U++){var i=n[U];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,sF(e).then((function(t){return e.db=t,BF(e)?cF(e):t})).then((function(U){e.db=t.db=U;for(var i=0;i<n.length;i++)n[i]._dbInfo.db=U})).catch((function(t){throw function(e,t){var n=FF[e.name].deferredOperations.pop();if(n)n.reject(t),n.promise}(e,t),t}))}function uF(e,t,n,U){void 0===U&&(U=1);try{var i=e.db.transaction(e.storeName,t);n(null,i)}catch(r){if(U>0&&(!e.db||"InvalidStateError"===r.name||"NotFoundError"===r.name))return Promise.resolve().then((function(){if(!e.db||"NotFoundError"===r.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),cF(e)})).then((function(){return RF(e).then((function(){uF(e,t,n,U-1)}))})).catch(n);n(r)}}var hF=function(){function e(){b(this,e)}return N(e,[{key:"ready",value:function(){return this._ready}},{key:"_initStorage",value:function(e){var t=this;t._defaultConfig=e;var n={db:null,name:"",version:""};if(e)for(var U in e)n[U]=e[U];var i=FF[n.name];i||(i={forages:[],db:null,dbReady:null,deferredOperations:[]},FF[n.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t._ready=t._fullyReady);var r=[];function a(){return Promise.resolve()}for(var F=0;F<i.forages.length;F++){var l=i.forages[F];l!==t&&r.push(l._initReady().catch(a))}var Q=i.forages.slice(0);return t._ready=Promise.all(r).then((function(){return n.db=i.db,sF(n)})).then((function(e){return n.db=e,BF(n,t._defaultConfig.version)?cF(n):e})).then((function(e){n.db=i.db=e,t._dbInfo=n;for(var U=0;U<Q.length;U++){var r=Q[U];r!==t&&(r._dbInfo.db=n.db,r._dbInfo.version=n.version)}})),t._ready}},{key:"probeSupport",get:function(){return function(){try{if(null==iF||!iF.open)return!1;var e=/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(n){return!1}}()}},{key:"getItem",value:function(e,t){var n=this;e=aF(e);var U=new Promise((function(t,U){n.ready().then((function(){uF(n._dbInfo,lF,(function(i,r){if(i)return U(i);try{var a=r.objectStore(n._dbInfo.storeName).get(e);a.onsuccess=function(){var e=a.result;void 0===e&&(e=null),t(e)},a.onerror=function(){U(a.error)}}catch(F){U(F)}}))})).catch(U)}));return rF(U,t),U}},{key:"setItem",value:function(e,t,n){var U=this;e=aF(e);var i=new Promise((function(n,i){U.ready().then((function(){return U._dbInfo,t})).then((function(t){uF(U._dbInfo,QF,(function(r,a){if(r)return i(r);try{var F=a.objectStore(U._dbInfo.storeName);null===t&&(t=void 0);var l=F.put(t,e);a.oncomplete=function(){void 0===t&&(t=null),n(t)},a.onabort=a.onerror=function(){var e=l.error?l.error:l.transaction.error;i(e)}}catch(Q){i(Q)}}))})).catch(i)}));return rF(i,n),i}},{key:"removeItem",value:function(e,t){var n=this;e=aF(e);var U=new Promise((function(t,U){n.ready().then((function(){uF(n._dbInfo,QF,(function(i,r){if(i)return U(i);try{var a=r.objectStore(n._dbInfo.storeName).delete(e);r.oncomplete=function(){t()},r.onerror=function(){U(a.error)},r.onabort=function(){var e=a.error?a.error:a.transaction.error;U(e)}}catch(F){U(F)}}))})).catch(U)}));return rF(U,t),U}},{key:"clear",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){uF(t._dbInfo,QF,(function(U,i){if(U)return n(U);try{var r=i.objectStore(t._dbInfo.storeName).clear();i.oncomplete=function(){e()},i.onabort=i.onerror=function(){var e=r.error?r.error:r.transaction.error;n(e)}}catch(a){n(a)}}))})).catch(n)}));return rF(n,e),n}},{key:"length",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){uF(t._dbInfo,lF,(function(U,i){if(U)return n(U);try{var r=i.objectStore(t._dbInfo.storeName).count();r.onsuccess=function(){e(r.result)},r.onerror=function(){n(r.error)}}catch(a){n(a)}}))})).catch(n)}));return rF(n,e),n}},{key:"all",value:function(e){var t=this,n=new Promise((function(e,n){t.ready().then((function(){uF(t._dbInfo,lF,(function(U,i){if(U)return n(U);try{var r=i.objectStore(t._dbInfo.storeName).openCursor(),a=[];r.onsuccess=function(){var t=r.result;t?(a.push({key:t.key,value:t.value}),t.continue()):e(a)},r.onerror=function(){n(r.error)}}catch(F){n(F)}}))})).catch(n)}));return rF(n,e),n}},{key:"_fullyReady",value:function(e){var t=this,n=t._initReady().then((function(){var e=FF[t._dbInfo.name];if(null!=e&&e.dbReady)return e.dbReady}));return function(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}(n,e,e),n}}]),e}(),VF=function(){function e(){b(this,e)}return N(e,[{key:"_initStorage",value:function(e){var t=e.name,n=e.storeName,U="".concat(t,"_").concat(n);return this.key=U,window[U]&&"object"===E(window[U])||(window[U]={}),this.store=window[U],Promise.resolve()}},{key:"getItem",value:function(e,t){var n=this.store[e];return void 0===n&&(n=null),this._internalPromise(t,n)}},{key:"setItem",value:function(e,t,n){return this.store[e]=t,this._internalPromise(n)}},{key:"removeItem",value:function(e,t){return delete this.store[e],this._internalPromise(t)}},{key:"clear",value:function(e){return this.store={},window[this.key]={},this._internalPromise(e)}},{key:"length",value:function(e){var t=Object.keys(this.store).length;return this._internalPromise(e,t)}},{key:"_internalPromise",value:function(e,t){var n=t?Promise.resolve(t):Promise.resolve();return rF(n,e),n}},{key:"all",value:function(e){for(var t=[],n=Object.keys(this.store),U=0;U<n.length;U++){var i=n[U];t.push({key:i,value:this.store[i]})}return this._internalPromise(e,t)}},{key:"probeSupport",value:function(){return!0}}]),e}(),ZF={description:"",name:"__PRE_CACHE__",storeName:"keyvaluepairs",version:1},pF="__PRE_CACHE__KEYS",SF=function(){function e(t,n){b(this,e),this._allCachedKeyMap={},this._memory=0,this._cnt=0;var U=n===nF.MEMORY?VF:hF;this._driver=new U,this._driver._initStorage(ZF).catch((function(){})),this._hasIdbForbidden=!1,this._maxCache=!t||t<=0?200:t,this.setMaxCache(this._maxCache),this._allCachedKeys={},this._allCachedTimeKeys={},this.getCachedKeysFromLocal(),this._readyPromise=new bt,this.init()}var t;return N(e,[{key:"getCachedKeysFromLocal",value:function(){var e=ft.getItem(pF);if(e)for(var t=e.split("|"),n=0;n<t.length;n++){var U=t[n],i=this._getCacheKeyInfos(U),r=i.time,a=i.cachedKey;this._allCachedKeys[a]=1,this._allCachedTimeKeys[a]=r}}},{key:"_getCacheKeyInfos",value:function(e){var t,n=e.split("$");return 2===n.length&&(t=n[0],e=n[1]),{time:t,cachedKey:e}}},{key:"writeCachedKeysToLocal",value:function(e){var t=[];this._allCachedKeys={},this._allCachedTimeKeys={};for(var n=0;n<e.length;n++){var U=e[n].key,i=this._getCacheKeyInfos(U),r=i.time,a=i.cachedKey;this._allCachedKeys[a]=1,this._allCachedTimeKeys[a]=r,t.push(U)}var F=t.join("|");ft.setItem(pF,F)}},{key:"init",value:function(){var e=this;this._driver.setItem("test","test").then((function(){})).catch((function(){e._hasIdbForbidden=!0})).finally((function(){e._driver.removeItem("test").catch((function(){})),e._hasIdbForbidden&&(e._driver=new VF,e._driver._initStorage(ZF)),e._getAll(),e._readyPromise.resolve()}))}},{key:"_getAll",value:function(){var e=this;this._memory=0,this._cnt=0,this._driver.all().then((function(t){e._cachedLength=t.length;var n=t.length-e._maxCache,U=t;if(n>0){var i=t.slice(0,n);U=t.slice(n);for(var r=0;r<i.length;r++)e.removeItem(i[r].key).then((function(){}))}e._cnt=U.length;for(var a=0;a<U.length;a++){var F=U[a];if("object"===E(F.value)){Object.values(F.value).forEach((function(t){e._memory+=(null==t?void 0:t.memory)||0}));var l=e._getCacheKeyInfos(F.key).cachedKey;e._allCachedKeyMap[l]=Object.keys(F.value)}}e.writeCachedKeysToLocal(U)})).catch((function(){}))}},{key:"getAllCachedDataKeys",value:function(){var e=[];return Object.values(this._allCachedKeyMap).forEach((function(t){e.push.apply(e,Y(t))})),e}},{key:"getItem",value:(t=f(k().mark((function e(t,n,U){var i,r,a,F,l;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((i=this.hasItem(t))&&U&&(r=this._allCachedKeyMap[t],i=(null==r?void 0:r.includes(U))||!1),i){e.next=4;break}return e.abrupt("return",Promise.resolve(!1));case 4:return a=this._getTimeKey(t),F=a.timeKey,e.next=7,this._driver.getItem(F,n);case 7:if(l=e.sent,!U){e.next=10;break}return e.abrupt("return",l[U]);case 10:return e.abrupt("return",l);case 11:case"end":return e.stop()}}),e,this)}))),function(e,n,U){return t.apply(this,arguments)})},{key:"setItem",value:function(e,t,n){var U=this;this._getTimeKey(e).timeKey&&this.removeItem(e);var i=(new Date).getTime();this._allCachedKeys[e]=1,this._allCachedTimeKeys[e]=i;var r=this._genTimeKey(e,i);return n=n?function(){U._getAll(),n()}:function(){U._getAll()},this._driver.setItem(r,t,n)}},{key:"_getTimeKey",value:function(e){var t=this._allCachedTimeKeys[e],n=e;return t&&(n=this._genTimeKey(e,t)),{timeKey:n,time:t}}},{key:"_genTimeKey",value:function(e,t){return"".concat(t).concat("$").concat(e)}},{key:"removeItem",value:function(e,t){var n=this._getTimeKey(e).timeKey,U=this._driver.removeItem(n,t);return delete this._allCachedKeys[e],delete this._allCachedTimeKeys[e],delete this._allCachedKeyMap[e],U}},{key:"hasItem",value:function(e){return!!this._allCachedKeys[e]}},{key:"clear",value:function(e){return this._driver.clear(e)}},{key:"length",value:function(e){return this._driver.length(e)}},{key:"setMaxCache",value:function(e){"number"==typeof e&&e>0&&(this._maxCache=e)}},{key:"getMemoryInfo",value:function(){return{memory:this._memory,cnt:this._cnt}}}]),e}(),mF=SF,JF=0,WF=function(){function e(t){var n=this;b(this,e),this._preload_bandwith_map=new Map,this._usepreload_info=new Map,this._pcdn_info_map=new Map,this._updateRealTimeSpeed=function(e){JF=e.speed,n.emit("real_time_speed",e)},this._manager=t}return N(e,[{key:"setPreloadBandwidth",value:function(e,t){this._preload_bandwith_map.set(e,t)}},{key:"getPreloadBandwidth",value:function(e){return this._preload_bandwith_map.get(e)}},{key:"_updateLoadInfo",value:function(e,t,n){var U=this._pcdn_info_map.get(e);!U&&(U={}),U[t]||(U[t]={},U[t].loadLen=0),U[t].loadLen=U[t].loadLen+n,this._pcdn_info_map.set(e,U)}},{key:"getLoadInfoAndDelete",value:function(e){var t=this._pcdn_info_map.get(e);return this._pcdn_info_map.delete(e),t}},{key:"getPreloadUnuseInfo",value:function(){var e,t={},n=H(this._preload_bandwith_map);try{for(n.s();!(e=n.n()).done;){var U=M(e.value,2),i=U[0],r=U[1];if(this._usepreload_info.get(i))this._preload_bandwith_map.delete(i);else{var a=i.split("#"),F=a.length>0?a[0]:i;t[F]?(t[F].bw+=r.bw||0,t[F].pbw+=r.pbw||0):t[F]={vid:F,bw:r.bw||0,pbw:r.pbw||0,bitrate:r.bitrate||0,duration:r.duration||0}}}}catch(l){n.e(l)}finally{n.f()}return Object.values(t)}},{key:"bwEventEmit",value:function(e){var t=e.vid,n=e.loadType,U=e.size,i=e.speed,r=e.cacheKey,a=e.vtype,F=e.duration,l=e.bitrate,Q=this.getPreloadBandwidth(r)||{bw:0,pbw:0,vid:t,duration:F,bitrate:l};n&&n!==Ue?(Q.pbw=Q.pbw+U,this.emit("prf_data_size",{vid:t,task_type:2,pcdn_size:U,pcdn_speed:i,vtype:a,bitrate:l,duration:F})):(Q.bw=Q.bw+U,this.emit("prf_data_size",{vid:t,task_type:2,cdn_size:U,cdn_speed:i,vtype:a,duration:F,bitrate:l})),this.setPreloadBandwidth(r,Q),this._updateRealTimeSpeed({speed:i,type:n||Ue}),this._updateLoadInfo(r,n,U)}},{key:"setUsePreloadInfo",value:function(e,t){this._usepreload_info.set(e,t)}},{key:"realTimeSpeed",get:function(){return JF}},{key:"emit",value:function(e,t){var n;null===(n=this._manager)||void 0===n||n.emit(e,t)}},{key:"destroy",value:function(){this._preload_bandwith_map=new Map,this._usepreload_info=new Map,this._pcdn_info_map=new Map,this._manager=null}}]),e}();function kF(e,t){var n=[0,0];if(e)for(var U=0,i=e.length;U<i&&(n[0]=e.start(U),n[1]=e.end(U),!(n[0]<=t&&t<=n[1]));U++);return n[0]-t<=0&&t-n[1]<=0?n:[0,0]}function EF(e,t,n){for(var U=0;U<e.length;U++)if(n===e[U][t])return U;return-1}var yF,fF=!1,bF=function(e){g(l,e);var t,n,U,i,r,a,F=G(l);function l(){var e;return b(this,l),(e=F.call(this))._loaders={},e._loaderInsts={},e._taskIntervalId=0,e._currentPreloadInst=null,e._preloadDataList=[],e._player=null,e._stepwise=!1,e._playingVids=[],e._isOpen=!0,e._userDefinition=null,e._startDefinition=null,e.onPreloadNext=f(k().mark((function t(){var n,U,i,r,a,F,l,Q,d,o,s,c,B,R;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=D(e),r=i._preloadDataList,a=i._config,!(!e._isOpen||e._currentPreloadInst||e._preloadDataList.length<1)){t.next=3;break}return t.abrupt("return",!1);case 3:if(F=e.findPreloadItem(r,!1),l=null==F?void 0:F.data,F&&null!=l&&l.payload){t.next=7;break}return t.abrupt("return",!1);case 7:if(null,Q=e.selectBeforeStart(l),e._filterMixPayload(l,Q),e.setStartDefinition(null===(n=Q)||void 0===n?void 0:n.definition),e.log("log","selectBeforeStart",null===(U=Q)||void 0===U?void 0:U.vtype,Q),d=e._getPreloaderKey(Q||l)){t.next=17;break}return e.log("warn","need to set vtype, no preloader",l),a.autoPreload&&e.emit(UF.PRELOAD_NEXT),t.abrupt("return",!1);case 17:if(o=e._getLoaderInst(d)){t.next=23;break}if(s=e._getLoader(d)){t.next=22;break}return t.abrupt("return",!1);case 22:o=new s(D(e),e._config);case 23:return e._currentPreloadInst=o,e._currentPreloadInst.setData(l),e._emitEvtByStart(l),t.prev=26,e.log("log","loaderInst.start",d,e.getStartDefinition(),l),t.next=30,o.start(l,e.getStartDefinition());case 30:(c=t.sent)&&c.remove&&(B=r.indexOf(F))>-1&&r.splice(B,1),t.next=37;break;case 34:t.prev=34,t.t0=t.catch(26),e.log("error","preload data error!",t.t0);case 37:return t.prev=37,null===(R=e._currentPreloadInst)||void 0===R||R.setData(null),e._currentPreloadInst=null,e._config.autoPreload&&e.emit(UF.PRELOAD_NEXT),t.finish(37);case 42:return t.abrupt("return",!0);case 43:case"end":return t.stop()}}),t,null,[[26,34,37,42]])}))),e._stats=new WF(D(e)),e}return N(l,[{key:"VTYPES",get:function(){return ee}},{key:"player",get:function(){return this._player}},{key:"stepwise",get:function(){return this._stepwise}},{key:"realTimeSpeed",get:function(){return this._stats.realTimeSpeed}},{key:"currentPreloadInst",get:function(){return this._currentPreloadInst}},{key:"cacheInst",get:function(){return this._cacheInst}},{key:"preloadDataList",get:function(){return this._preloadDataList}},{key:"log",value:function(e){for(var t,n=arguments.length,U=new Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];fF&&(t=console)[e].apply(t,["[PreloaderManager]"].concat(U))}},{key:"register",value:function(e){try{if("undefined"==typeof window)return void this.log("preloader in ssr");var t=l.getDefaultConfig();this._config=Object.assign({},t,e.config),this._options=e;var n=this._config,U=n.preloadMaxCacheCount,i=n.preloadCacheType;this._stepwise=!!this._config.stepwise,this._cacheInst=new mF(U,i),this._selector=e.BitrateSelector,this.on(UF.PRELOAD_NEXT,this.onPreloadNext);for(var r=e.loaders,a=0;a<r.length;a++)this.registerLoader(r[a].vtype,r[a])}catch(F){this.log("register error",F)}}},{key:"registerLoader",value:function(e,t){e&&(this._loaders[e]&&this.log("warn","vtype:".concat(e," Preloader already exist")),this._loaders[e]=t,this._loaderInsts[e]=new t(this,this._config))}},{key:"_checkIfCanPreload",value:function(){if(null===this._currentPreloadInst&&this._preloadDataList.length>0){var e=this.findPreloadItem(this._preloadDataList),t=null==e?void 0:e.data;if(this._wipPreloadTask=e,e&&null!=t&&t.payload){if(!this._getPreloaderKey(t))return this.log("warn","need to set vtype"),this.stopCheckTask(),!1;var n=this._config.checkIfCanPreload;return n&&"function"==typeof n?n(t):this._config.autoCheckPreload?this._autoCheckPreload(t,e):(this.stopCheckTask(),!1)}}return!1}},{key:"_autoCheckPreload",value:function(e,t){return this._media?function(e,t,n){if(!e)return!1;var U=kF(e.buffered,e.currentTime),i=t.startPreloadControl,r=t.startPreloadMinBuffer,a=t.startPreloadMinPosTime,F=t.minBufferLength;if(i){var l=Math.max(U[1]-e.currentTime,0);if(l>r){if(e.currentTime>a||e.currentTime>e.duration/2)return null==n||n("log","[checkIfStartPreload] hit buffer",l,"startPreloadMinBuffer",r),!0}else if(e.currentTime+r+1>e.duration&&e.currentTime+l>e.duration-1)return null==n||n("log","[checkIfStartPreload] hit end"),!0}else{var Q=e.duration>F+5?F:e.duration/2,d=Math.min(e.currentTime+F,e.duration),o=U[1]-d;if(e.currentTime>Q&&o>-1)return null==n||n("log","[checkIfStartPreload] hit minPos",Q,"minCacheTime",d),!0}return!1}(this._media,this._config,this.log):(this.log("warn","need set video"),!1)}},{key:"_getPreloaderKey",value:function(e){return e.vtype?e.vtype.toUpperCase():""}},{key:"_sort",value:function(e){e.sort((function(e,t){return void 0===e.order&&void 0===t.order||"number"==typeof e.order&&"number"==typeof t.order&&e.order<t.order?-1:1}))}},{key:"_addPlayingVid",value:function(e,t){var n=this._playingVids,U=EF(this._playingVids,"playerId",e);U>-1?n[U].vid=t:n.push({vid:t,playerId:e})}},{key:"selectBeforeStart",value:function(e){var t=e.targetDefinition,n=e.defaultDefinition;if(t)return W({},t);var U=this.getUserSelectDefinition(),i=this.selectBitrate(null==e?void 0:e.payload,n,U),r=(null==i?void 0:i.vtype)||e.vtype,a=W(W({},i),{},{vtype:r});return e.targetDefinition=a,this.log("log","selectBeforeStart",null==e?void 0:e.vid,r,null==i?void 0:i.definition,null==e?void 0:e.payload,i),a}},{key:"selectBitrate",value:function(e,t,n){if(e.length<1)return null;var U=null;if(this._selector){var i,r,a;U=this._selector.getSuitableBitrate(e,n),this.log("log","BitRateAdapter result",null===(i=U)||void 0===i?void 0:i.vtype,null===(r=U)||void 0===r?void 0:r.definition,null===(a=U)||void 0===a?void 0:a.bitrate)}else{for(var F=-1,l=-1,Q=0;Q<e.length;Q++){var d=e[Q];n&&d.definition===n?F=Q:t&&d.definition===t&&(l=Q)}U=e[F>=0?F:l>=0?l:0]}return W({},U)}},{key:"startCheckTask",value:function(){var e=this,t=this._preloadDataList,n=this._currentPreloadInst,U=this._config.autoCheck;(this._taskIntervalId&&(clearTimeout(this._taskIntervalId),this._taskIntervalId=0),null!=n&&n.taskInProgress&&function(e,t,n){var U=t.endPreloadControl,i=t.endPreloadMinBuffer,r=t.startPreloadMinBuffer;if(!e)return!1;if(U){if(e.currentTime+r>=e.duration)return!1;var a=kF(e.buffered,e.currentTime),F=Math.max(a[1]-e.currentTime,0);if(F<=i)return null==n||n("log","[checkIfCancelPreload] hit buffer:",F,"endPreloadMinBuffer:",i,"video:","".concat(e.currentTime,"/").concat(e.duration)),!0}return!1}(this._media,this._config,this.log))?this.cancelPreloadingTask():0!==t.length&&(this._checkIfCanPreload()&&this.onPreloadNext(),this._taskIntervalId=setTimeout((function(){e.startCheckTask()}),U.interval))}},{key:"cancelPreloadingTask",value:function(){var e=this._preloadDataList,t=this._wipPreloadTask,n=this._config.endPreloadTaskStrategy;if(this.cancel(),t){var U;if(this.stepwise)"number"==typeof(null===(U=t.data)||void 0===U?void 0:U.stepIdx)&&t.data.stepIdx>-1&&t.data.stepIdx--;else 0!==n&&e.unshift(t);this._emitEvtByCancel(t.data),this._wipPreloadTask=void 0}}},{key:"stopCheckTask",value:function(){this._taskIntervalId&&(clearTimeout(this._taskIntervalId),this._taskIntervalId=-1)}},{key:"getPreloadMetaByVid",value:function(e){for(var t=this.getAllCachedDataKeys(),n=[],U="",i=0;i<t.length;i++){var r=t[i],a=l.parseKey(r);a.vid===e&&(U=a.vtype,n.push(r))}if(0===n.length)return null;var F=this._getLoaderInst(U);return F?F.parseKey(n):null}},{key:"preloadNext",value:function(){this.onPreloadNext()}},{key:"_filterMixPayload",value:function(e,t){var n=t.vtype;if(n&&Array.isArray(e.payload)){var U=e.vtype===n;e.vtype=n,e.payload=e.payload.filter((function(e){return e.vtype===n||U}))}}},{key:"_emitEvtByStart",value:function(e){var t=this._player;if(e&&t)try{this.emit(UF.PRELOAD_START,this._getEventPayload(e,t))}catch(n){this.log("warn","preload emit start error",null==n?void 0:n.stack)}}},{key:"_emitEvtByCancel",value:function(e){var t=this._player;if(e&&t)try{this.emit(UF.PRELOAD_CANCEL,this._getEventPayload(e,t))}catch(n){this.log("warn","preload emit cancel error",null==n?void 0:n.stack)}}},{key:"_getEventPayload",value:function(e,t){var n=t.config.vid,U=this._config,i=U.minBufferLength,r=U.startPreloadControl,a=U.startPreloadMinBuffer,F=U.startPreloadMinPosTime,l=U.endPreloadMinBuffer,Q=U.endPreloadControl,d=kF(t.video.buffered,t.currentTime),o=d[1]?d[1]-t.currentTime:0;return{vid:n,pid:e.vid,buffer:d,bufferHead:o,currentTime:t.currentTime,minBufferLength:i,startPreloadControl:r,startPreloadMinBuffer:a,startPreloadMinPosTime:F,endPreloadControl:Q,endPreloadMinBuffer:l}}},{key:"addPreloadList",value:(a=f(k().mark((function e(t){var n,U,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._sort(t),n=H(t),e.prev=2,n.s();case 4:if((U=n.n()).done){e.next=10;break}return i=U.value,e.next=8,this._addData(i);case 8:e.next=4;break;case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(2),n.e(e.t0);case 15:return e.prev=15,n.f(),e.finish(15);case 18:this._checkAutoTask();case 19:case"end":return e.stop()}}),e,this,[[2,12,15,18]])}))),function(e){return a.apply(this,arguments)})},{key:"addPlayingId",value:function(e,t){for(var n=this._preloadDataList,U=-1,i=0;i<n.length;i++){if(e===n[i].data.vid){U=i;break}}if(U>-1){var r=n.splice(U,1);this.log("log","cancelPreloadByVid remove from list",r.length>0&&r[0].data.vid)}var a=this._currentPreloadInst,F=a?a.getData():null;this.log("log","_currentPreloadInst",F),F&&F.vid===e&&this.cancel(),t&&this._addPlayingVid(t,e)}},{key:"removePlayingId",value:function(e){var t=this._playingVids,n=EF(t,"playerId",e);if(n>-1){var U=t.splice(n,1);this.log("log","removePlayingId",U.length>0&&U[0].playerId)}}},{key:"addPreload",value:(r=f(k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._addData(t);case 2:if(e.sent){e.next=5;break}return e.abrupt("return");case 5:this._sort(this._preloadDataList),this._checkAutoTask();case 7:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"_addData",value:(i=f(k().mark((function e(t){var n,U,i,r,a,F,l,Q,d,o=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.data.vtype){e.next=3;break}return this.log("warn","vtype is null, can·t select loader"),e.abrupt("return",!1);case 3:if(n=t.data,U=this._getLoader(n.vtype)){e.next=8;break}return this.log("warn","the loader for ".concat(n.vtype," not registered")),e.abrupt("return",!1);case 8:if(i=this._playingVids,!((r=EF(i,"vid",t.data.vid))>=0)){e.next=14;break}return a=i[r],this.log("log","vid:".concat(a.vid," is already instantiated and loaded, playerId is ").concat(a.playerId)),e.abrupt("return");case 14:return F=this._getUniqueKey(t),e.next=17,this.getItem(t.data,!0);case 17:if(!(l=e.sent)){e.next=22;break}if(!U.isUniqueCache(l)){e.next=22;break}return this.log("log","".concat(F," already exist in cache")),e.abrupt("return",!1);case 22:if(!this._currentPreloadInst){e.next=29;break}if(!(Q=this._currentPreloadInst.getData())){e.next=29;break}if(this._getUniqueKey({data:Q,order:0})!==F){e.next=29;break}return this.log("log","currentKey repeat"),e.abrupt("return");case 29:if(d=this._preloadDataList.filter((function(e){return o._getUniqueKey(e)===F})),this.log("log","addedItems",F,d),0!==d.length){e.next=35;break}return this._stepwise&&void 0===t.data.steps&&(t.data.steps=[0]),this._preloadDataList.push(t),e.abrupt("return",!0);case 35:return this.log("log","".concat(F," already exist in preloadList")),e.abrupt("return",!1);case 37:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"_getUniqueKey",value:function(e){return e.data.vtype?l.generateUniqueCacheKey(e.data):e.data.vid}},{key:"_checkAutoTask",value:function(){var e=this,t=this._config,n=t.autoCheck,U=t.autoPreload;Promise.resolve().then((function(){U&&e.emit(UF.PRELOAD_NEXT),n.enable&&!e._taskIntervalId&&e.startCheckTask()}))}},{key:"setItem",value:function(e,t,n,U){var i=l.generateUniqueCacheKey(e);if(!n){var r=this._getLoader(e.vtype);if(!r)return this.log("warn","no ".concat(e.vtype," preloader, register")),Promise.resolve(!1);t=T({},r.generateUniqueKey(e),t)}return this._cacheInst.setItem(i,t,U)}},{key:"getItem",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,U=l.generateUniqueCacheKey(e),i=this._getLoader(e.vtype);if(!i)return this.log("warn","no ".concat(e.vtype," preloader, register")),Promise.resolve(!1);var r=t?"":i.generateUniqueKey(e);return this._cacheInst.getItem(U,n,r)}},{key:"removeItem",value:function(e,t){var n=l.generateUniqueCacheKey(e);return this._cacheInst.removeItem(n,t)}},{key:"getPreLoadData",value:(U=f(k().mark((function e(t){var n,U,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.vtype,!(U=this._getLoaderInst(n))){e.next=7;break}return e.next=5,U.getPreLoadData(t);case 5:return i=e.sent,e.abrupt("return",i);case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return U.apply(this,arguments)})},{key:"removeAll",value:function(){var e=this;this.getAllCachedDataKeys().forEach((function(t){var n=e.getPreloadMetaByVid(t.split("#")[0]);n&&e.removeItem(n,null)}))}},{key:"removeAllPreloadTask",value:function(){this.cancel(),this._preloadDataList=[],this._playingVids=[]}},{key:"disable",value:function(){this._isOpen=!1,this.stopCheckTask()}},{key:"enable",value:function(){this._isOpen=!0,this._config.autoCheck.enable&&!this._taskIntervalId&&this._preloadDataList.length>0&&this.startCheckTask()}},{key:"setUserSelectDefinition",value:function(e){this._userDefinition=e}},{key:"getUserSelectDefinition",value:function(){return this._userDefinition||null}},{key:"getStartDefinition",value:function(){return this._startDefinition}},{key:"setStartDefinition",value:function(e){this._startDefinition=e}},{key:"destroy",value:(n=f(k().mark((function e(){var t,n,U,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._stats.destroy(),t=Object.keys(this._loaderInsts),n=0;case 3:if(!(n<t.length)){e.next=12;break}if(U=t[n],!(i=this._getLoaderInst(U))){e.next=9;break}return e.next=9,i.destroy();case 9:n++,e.next=3;break;case 12:this.removeAllListeners(),this._loaderInsts={},this._loaders={},this._playingVids=[],this.detachPlayer();case 17:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"cancel",value:(t=f(k().mark((function e(){var t;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._currentPreloadInst){e.next=4;break}return e.next=3,this._currentPreloadInst.cancel();case 3:null===(t=this._currentPreloadInst)||void 0===t||t.setData(null);case 4:this._currentPreloadInst=null;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"removeByPlayInst",value:function(e,t){for(var n=this._preloadDataList.length-1;n>-1;n--){var U=this._preloadDataList[n];if(U.data.vid===e&&U.playerId===t){this._preloadDataList.splice(n,1);break}}}},{key:"getAllCachedDataKeys",value:function(){return this._cacheInst.getAllCachedDataKeys()}},{key:"getDataUniqueKey",value:function(e){var t=this._getLoader(e.vtype);return!!t&&t.generateUniqueKey(e)}},{key:"hasItemSameVid",value:function(e){var t=this._getLoader(e.vtype),n=this._getLoaderInst(e.vtype);if(t&&n){var U=t.generateUniqueKey(e);return n.hasItemSameVid(U)}return!1}},{key:"_getLoader",value:function(e){e=e||"";var t=this._loaders[e]||this._loaders[e.toLocaleLowerCase()];return t||(this.log("warn","no ".concat(e," preloader, register")),null)}},{key:"_getLoaderInst",value:function(e){e=e||"";var t=this._loaderInsts[e]||this._loaderInsts[e.toLocaleLowerCase()];return t||(this.log("warn","no ".concat(e," preloader, register")),null)}},{key:"getPreloadMemoryInfo",value:function(){return this._cacheInst.getMemoryInfo()}},{key:"attachPlayer",value:function(e){this._player=e,this._media=e.video||e.media}},{key:"detachPlayer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&this._player!==e||(this._player=null,this._media=null)}},{key:"setPreloadBandwidth",value:function(e,t){this._stats.setPreloadBandwidth(e,t)}},{key:"getPreloadBandwidth",value:function(e){return this._stats.getPreloadBandwidth(e)}},{key:"getLoadInfoAndDelete",value:function(e){return this._stats.getLoadInfoAndDelete(e)}},{key:"getPreloadUnuseInfo",value:function(){return this._stats.getPreloadUnuseInfo()}},{key:"setUsePreloadInfo",value:function(e,t){this._stats.setUsePreloadInfo(e,t)}},{key:"bwEventEmit",value:function(e){var t=e.vid,n=e.loadType,U=e.size,i=e.speed,r=e.cacheKey,a=e.vtype,F=e.duration,l=e.bitrate;this._stats.bwEventEmit({vid:t,loadType:n,size:U,speed:i,cacheKey:r,vtype:a,duration:F,bitrate:l})}},{key:"findPreloadItem",value:function(e){var t,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this._stepwise){var U=e.reduce((function(e,t){return void 0===t.data.stepIdx||"number"==typeof t.data.stepIdx&&"number"==typeof e.data.stepIdx&&t.data.stepIdx<e.data.stepIdx?t:e})),i=e.filter((function(e){return e.data.stepIdx===U.data.stepIdx}));if(i.length>1&&this._sort(i),t=i[0],!n){if("number"!=typeof t.data.stepIdx&&(t.data.stepIdx=-1),t.data.stepIdx++,Array.isArray(t.data.steps)&&t.data.stepIdx>=t.data.steps.length-1){var r=e.indexOf(t);e.splice(r,1)}t.data.stepIdx===1/0&&(t=void 0)}}else t=n?e[0]:e.shift();return t}},{key:"updateConfig",value:function(e){Object.assign(this._config,e);var t=this._config.autoCheck;t&&!t.enable&&this.stopCheckTask(),t&&t.enable&&this.startCheckTask()}},{key:"preProcessUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this._config,U=n.preProcessUrl,i=n.preProcessUrlOptions;return"function"==typeof U?U(e,Object.assign({},i,t)):{url:e}}}],[{key:"getDefaultConfig",value:function(){return{autoPreload:!1,autoCheck:{enable:!1,interval:1e3},preloadMaxCacheCount:5,preloadCacheType:nF.MEMORY,autoCheckPreload:!0,startPreloadControl:!1,startPreloadMinBuffer:5,startPreloadMinPosTime:5,minBufferLength:5,endPreloadControl:!1,endPreloadTaskStrategy:0}}},{key:"generateUniqueCacheKey",value:function(e){var t=e.vid,n=e.codecType,U=e.vtype;return"".concat(t,"#").concat(n,"#").concat(U.toUpperCase())}},{key:"parseKey",value:function(e){if(!e)throw new Error("key ".concat(e," is empty"));var t=e.split("#");if(t.length<5)throw new Error("key ".concat(e," is not right format"));return{vid:t[0],mediaType:t[1],codecType:t[2],vtype:t[3],definition:t[4]}}},{key:"debugger",set:function(e){fF=!!e}}]),l}(ot),vF=function(e){g(a,e);var t,n,U,i,r=G(a);function a(e,t){var n;return b(this,a),(n=r.call(this))._data=null,n.preloadManager=e,n._config=t,n.promisePolyfill(),n}return N(a,[{key:"taskInProgress",get:function(){return!1}},{key:"stepwise",get:function(){return this.preloadManager.stepwise}},{key:"getRequestOption",value:function(e){var t=this._config,n=t.getRequestOptionsCallback,U=t.reqOptions,i={};return e?i=e.reqOptions?e.reqOptions:"function"==typeof n?n(e):U||{}:i}},{key:"getUserSelectDefinition",value:function(){return this.preloadManager.getUserSelectDefinition()}},{key:"selectBitrate",value:function(e,t,n){return this.preloadManager.selectBitrate(e,t,n)}},{key:"promisePolyfill",value:function(){Promise.prototype.finally||(Promise.prototype.finally={finally:function(e){var t=function(t){return Promise.resolve(e()).then(t)};return this.then((function(e){return t((function(){return e}))}),(function(e){return t((function(){return Promise.reject(e)}))}))}}.finally)}},{key:"getData",value:function(){return this._data}},{key:"setData",value:function(e){this._data=e}},{key:"start",value:(i=f(k().mark((function e(t,n){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("start need implement, return Promise");case 1:case"end":return e.stop()}}),e)}))),function(e,t){return i.apply(this,arguments)})},{key:"cancel",value:(U=f(k().mark((function e(){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("cancel need implement, cancel current preload request");case 1:case"end":return e.stop()}}),e)}))),function(){return U.apply(this,arguments)})},{key:"getPreLoadData",value:(n=f(k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("getPreLoadData not implement");case 1:case"end":return e.stop()}}),e)}))),function(e){return n.apply(this,arguments)})},{key:"hasItemSameVid",value:function(e){return!0}},{key:"destroy",value:(t=f(k().mark((function e(){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.resolve());case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)})},{key:"parseKey",value:function(e){return bF.parseKey(e[0])}}],[{key:"generateUniqueKey",value:function(e){throw new Error("generateUniqueCacheKey need implement, return string")}},{key:"vtype",get:function(){throw new Error("need vtype")}},{key:"isUniqueCache",value:function(e){return!0}}]),a}(ot),NF={};Object.defineProperty(NF,"__esModule",{value:!0}),NF.default=function(e){for(var t=0,n=arguments.length,U=Array(n>1?n-1:0),i=1;i<n;i++)U[i-1]=arguments[i];var r=!0,a=!1,F=void 0;try{for(var l,Q=U[Symbol.iterator]();!(r=(l=Q.next()).done);r=!0){t+=l.value.length}}catch(V){a=!0,F=V}finally{try{!r&&Q.return&&Q.return()}finally{if(a)throw F}}var d=new e(t),o=0,s=!0,c=!1,B=void 0;try{for(var R,u=U[Symbol.iterator]();!(s=(R=u.next()).done);s=!0){var h=R.value;d.set(h,o),o+=h.length}}catch(V){c=!0,B=V}finally{try{!s&&u.return&&u.return()}finally{if(c)throw B}}return d};var TF=_(((yF=NF)&&yF.__esModule?yF:{default:yF}).default),gF=function(e){return e.H264="h264",e.H265="h265",e.H266="h266",e}(gF||{});var CF=0;var LF=function(e){g(Q,e);var t,n,U,i,r,a,F,l=G(Q);function Q(e,t){var n,U,i;b(this,Q),(i=l.call(this,e,t))._pendingTask={resolve:void 0,data:void 0},i._nextPreloadCount=0,i._updateRealTimeSpeed=function(e){CF=e.speed,i.emit(cn,e)};var r={supportHevc:!1,preloadTime:5,preloadSize:0,segmentMinDuration:5,vtype:"MP4",preloadCacheType:1,preloadMaxCacheCount:5,globalKey:null,autoPreload:!1,reqOptions:null,getRequestOptionsCallback:null,minBufferLength:5,timeout:3e3,autoCheck:{enable:!0,interval:1e3},logCacheConfig:{logCacheLevel:2,logMaxSize:204800},pcdnConfig:{openPreloadPCDN:!1,enterMinBuffer:10,outMaxBuffer:5,pcdn_duration:2,pcdn_open:!0,openPCDN:!0,minDuration:25,trackerUrl:""},switchPCDNMaxCnt:2,retryCount:1,retryDelay:1e3,loaderType:"fetch"};Object.keys(t).forEach((function(e){r[e]=t[e]})),i.options=r,i.playerId=(null===(n=e.player)||void 0===n?void 0:n.playerId)||"default";var a=i.options.logCacheConfig,F=a.logCacheLevel,d=a.logMaxSize;return i.logger=new Ge("[Mp4Preloader]",{logCacheLevel:F,logMaxSize:d}),void 0===t.supportHevc&&"undefined"!=typeof MediaSource&&MediaSource.isTypeSupported&&(MediaSource.isTypeSupported('video/mp4;codecs="hev1.1.6.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.2.4.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.3.E.L120.90"')||MediaSource.isTypeSupported('video/mp4;codecs="hev1.4.10.L120.90"'))&&(i.options.supportHevc=!0),i.loadRangeType=(null===(U=i.options)||void 0===U?void 0:U.loadRangeType)||Zn.GOP,i.log(xe.DEBUG,"[Preloader] new preloader, playerId",i.playerId),i}return N(Q,[{key:"currentPreloadInst",get:function(){return this.preloadManager.currentPreloadInst}},{key:"allCachedKeys",get:function(){return this.preloadManager.getAllCachedDataKeys()}},{key:"cacheInst",get:function(){return this.preloadManager.cacheInst}},{key:"realTimeSpeed",get:function(){return CF}},{key:"taskInProgress",get:function(){return!!this._pendingTask.resolve&&!!this._pendingTask.data}},{key:"log",value:function(e,t){for(var n=arguments.length,U=new Array(n>2?n-2:0),i=2;i<n;i++)U[i-2]=arguments[i];ln.apply(void 0,[this.logger,e,t].concat(U))}},{key:"getPreloadUnuseInfo",value:function(){return this.preloadManager.getPreloadUnuseInfo()}},{key:"generateUniqueKey",value:function(e){var t=e.vid,n=e.definition,U=e.mediaType,i=e.codecType,r=e.vtype;return Q.generateUniqueKey({vid:t,mediaType:U,definition:n,codecType:i,vtype:r})}},{key:"_beforeStart",value:function(e,t){var n=e.payload||[];if(0===n.length)return this.log(xe.LOG,"preload_is_null"),null;var U=e.vid,i=e.steps,r=e.stepIdx,a=e.targetDefinition,F=e.vtype||ee.MP4,l=e.codecType||gF.H264,Q=this.getUserSelectDefinition(),d=this.checkCacheKey(U,n,Q,F,l);if(this.log(xe.LOG,"".concat(this.playerId," ").concat(U),"codecType:".concat(l," vtype:").concat(F," hasCache:").concat(d)),d&&!this.stepwise||"MP3"===F)return this.log(xe.LOG,"vtype_".concat(F)),null;var o=a||this.getInitDefinition(n,t);if(this.log(xe.LOG," ".concat(this.playerId," ").concat(U," getInitDefinition"),null==o?void 0:o.definition),!o)return this.log(xe.WARN,"definition_error"),null;var s=o.definition,c=o.orgDefinition,B=this.stepwise?i[e.stepIdx]:e.preloadTime||this.options.preloadTime,R=this.stepwise?i[e.stepIdx]:e.preloadSize||this.options.preloadSize||Math.pow(25,4)-1,u=this.generateUniqueKey({vid:U,definition:s,vtype:F,codecType:l});this._nextPreloadCount>0&&this._nextPreloadCount--,this.log(xe.LOG,"".concat(this.playerId," ").concat(U),"cacheKey:".concat(u," duration:").concat(o.duration," preloadTime:").concat(B));var h=W({vid:U,definition:s,orgDefinition:c,preloadTime:B,preloadSize:R,cacheKey:u,codecType:l,vtype:F,steps:i,stepIdx:r,payload:e},o);return e.reqOptions&&(h.reqOptions=e.reqOptions),this.log(xe.LOG,"start preload,".concat(U," playerId:").concat(this.playerId)),h}},{key:"start",value:(F=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,c;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this._beforeStart(t,n)){e.next=3;break}return e.abrupt("return",{remove:!0});case 3:if(a=Promise.withResolvers(),F=a.promise,l=a.resolve,Q=r.preloadTime,d=r.cacheKey,o=r.codecType,this._pendingTask.resolve=l,this._pendingTask.data=r,null!==(U=this.options)&&void 0!==U&&null!==(i=U.pcdnConfig)&&void 0!==i&&i.openPreloadPCDN&&(s=Object.assign({},{productConfig:Vn},this.options.pcdnConfig),this._pcdn=new St(s,void 0,void 0,void 0)),c=null,!this.stepwise){e.next=13;break}return e.next=12,this.getPreLoadData(d);case 12:c=e.sent;case 13:return this.loadRangeType===Zn.GOP&&Q&&(o!==gF.H265||this.options.supportHevc)?this.loadByPreloadTime(r,c):this.loadByChunkSize(r,c),e.next=16,F;case 16:return e.abrupt("return",{remove:!this.stepwise});case 17:case"end":return e.stop()}}),e,this)}))),function(e,t){return F.apply(this,arguments)})},{key:"getInitDefinition",value:function(e,t){for(var n=null,U=0,i=0;i<e.length;i++){if(e[i].definition===t){U=i;break}}return(n=e[U])||(n=e[0]),n}},{key:"getPreLoadData",value:function(e){var t=this,n=Promise.withResolvers(),U=n.promise,i=n.resolve,r=n.reject;return this.getItemSameVid(e).then((function(e){if(t.log(xe.DEBUG,"[Preloader] getPreLoadData",!!e.value),e.value){var n=e.value,U=n.mediaSegList,r=n.meta,a=n.type,F=n.buffer,l=n.preloadTime,Q=n.vid,d=n.cacheKey,o=n.definition,s=n.orgDefinition,c=n.byteLength,B=n.duration,R=n.fileSize,u=n.from,h=n.vtype,V=n.codecType,Z=n.initSeg,p=W({generateBy:"preloader",vid:Q,type:a,vtype:h,codecType:V,definition:o,orgDefinition:s,bitrate:n.bitrate,cacheKey:d,duration:B||0,byteLength:c,from:u,adaptTimeRange:n.adaptTimeRange,repeatData:n.repeatData,memory:n.memory,meta:r,preloadTime:l,fileSize:R||0},a===tF.SIZE?{buffer:F}:{initSeg:Z,mediaSegList:U});i(p)}else i(null)})).catch((function(e){r(e)})),U}},{key:"setPreLoadData",value:(a=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z,p,S,m,J,W,E,y=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:U=n.mediaSegList,i=n.meta,r=n.vid,a=n.definition,F=n.orgDefinition,l=n.type,Q=n.buffer,d=n.duration,o=n.byteLength,s=n.preloadTime,c=n.fileSize,B=n.from,R=n.vtype,u=n.codecType,h=n.initSeg,V=n.bitrate,Z=n.adaptTimeRange,p=n.repeatData,S=n.cacheKey,(m={codecType:u,vtype:R,vid:r,definition:a,orgDefinition:F,cacheKey:S,type:l,from:B,meta:i,fileSize:c,adaptTimeRange:Z,repeatData:p,bitrate:V,memory:0}).memory+=(null==p?void 0:p.byteLength)||0,l===tF.SIZE?(m.buffer=Q,m.byteLength=o||0,m.preloadSize=o||0,m.preloadTime=s||0,m.fileSize=c,m.buffer&&m.buffer.byteLength>0&&(m.memory+=(null==Q?void 0:Q.byteLength)||0,this.setItem(t,m))):(m.mediaSegList=[],m.duration=d,m.byteLength=o||0,m.preloadTime=s||0,m.initSeg=h,m.memory+=(null==h?void 0:h.byteLength)||0,m.fileSize=c,U.every((function(e){var t;m.memory+=(null==e||null===(t=e.buffer)||void 0===t?void 0:t.byteLength)||0,m.mediaSegList.push(e)})),i&&0===U.length?(this.log(xe.LOG,"[Preloader] meta setPreLoadData1 success",S,null==m||null===(J=m.mediaSegList)||void 0===J?void 0:J.length),this.setItem(t,m)):(E=U.every((function(e){return!!e.buffer&&e.state})),this.log(xe.LOG,"[Preloader] mediaSegList setPreLoadData1 success",S,null==m||null===(W=m.mediaSegList)||void 0===W?void 0:W.length,E),E&&this.setItem(t,m).then((function(){y.log(xe.LOG,"[Preloader] setPreLoadData1 success",S)}))));case 4:case"end":return e.stop()}}),e,this)}))),function(e,t){return a.apply(this,arguments)})},{key:"getInitCacheData",value:function(e,t){var n={type:e,meta:null,byteLength:0,fileSize:0,bitrate:0,preloadTime:0};return e===tF.DURATION?(n.mediaSegList=[],n.initSeg=null,n.duration=0):n.buffer=null,Object.keys(t).map((function(e){n[e]=t[e]})),n}},{key:"updatePreCacheData",value:function(e,t,n,U,i,r,a,F,l){var Q,d=e.mediaSegList;if(e.type===tF.SIZE||-1===i)return e.buffer=TF(Uint8Array,(null===(Q=e.buffer)||void 0===Q?void 0:Q.buffer)||[],new Uint8Array(t)),e;var o=-1;if(d)for(var s=0;s<d.length;s++)if(d[s].index===i){o=s;break}var c=r||[0,0];if(o>-1&&d)t&&(d[o].buffer=TF(Uint8Array,d[o].buffer||[],new Uint8Array(t))),n.length>1&&(d[o].range.length>1?d[o].range[1]=n[1]:d[o].range=n),a&&-1!==a[1]&&(U=d[o].range[1]>=a[1]),d[o].state=U;else{e.duration=c[1],d&&d.push({buffer:t,range:n||[],index:i,totalRange:a||[],timeRange:[c[0],c[1]],muxSampleIdxRange:F,state:U});var B="".concat(null==t?void 0:t.byteLength,",").concat(JSON.stringify(n),",").concat(i,",").concat(JSON.stringify(a),",").concat(JSON.stringify(r));this.log(xe.DEBUG,"[Preloader] ".concat(e.cacheKey," mediaSegList set, dataLen"),B)}return U&&(e.byteLength+=n[1]-n[0],e.preloadTime+=l),U}},{key:"checkCacheKey",value:function(e,t,n){var U=arguments.length>3&&void 0!==arguments[3]?arguments[3]:ee.MP4,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:ne.H264;if(n){var r=this.generateUniqueKey({vid:e,definition:n,vtype:U,codecType:i});return r&&this.hasItemSameVid(r)?r:null}for(var a=0;a<t.length;a++){var F=this.generateUniqueKey({vid:e,definition:t[a].definition,vtype:U,codecType:i});if(F&&this.hasItemSameVid(F))return F}return null}},{key:"loadByPreloadTime",value:(r=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z,p,S,m,J,E,y,b,v=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(F=t.vid,l=t.cacheKey,Q=t.preloadTime,d=t.definition,o=t.orgDefinition,s=t.duration,c=t.bitrate,B=t.codecType,R=t.vtype,u=t.size,h=t.uri,V=t.file_id,Z=this._getLoadUrl(t)){e.next=6;break}return this._endLoadFragments(!1),e.abrupt("return");case 6:return Z=Fa.extUrl(Z,{__vid:F}),p=Q>=this.options.segmentMinDuration?this.options.segmentMinDuration:Q,S=this.getRequestOption(W(W({},t),{},{_url:Z})),this.log(xe.DEBUG,"[Preloader] loadByPreloadTime","".concat(t.cacheKey,", definition:").concat(t.definition,",segmentMinDuration:").concat(p),S),m=u||Fa.getFileSize(c,s),J=null==t||null===(U=t.pktOffsetMap)||void 0===U?void 0:U.find((function(e){var t;return(null==e?void 0:e.time)===((null===(t=v.options)||void 0===t?void 0:t.firstLoadTimePos)||5)})),E=null==J?void 0:J.offset,y={segmentDuration:p,codecType:this.codecType,chunkSize:this.options.preloadSize,firstLoadSize:E,duration:s,fileSize:m,playerId:this.playerId,vid:F,useUrlRange:!1,retryCount:1,retryDelay:1e3,supportHevc:this.options.supportHevc,retryCheckFunc:ra,switchPCDNMaxCnt:Number.MAX_VALUE,logger:this.logger,reqOptions:S,audioGroupingStrategy:this.options.audioGroupingStrategy,fixEditListOffset:this.options.fixEditListOffset,fixEditListOffsetThreshold:this.options.fixEditListOffsetThreshold},this._mp4=new xa(Z,c,y,[],this.firstFrameTime,"[Preloader]"),b=this.getInitCacheData(tF.DURATION,{vid:F,definition:d,orgDefinition:o,cacheKey:l,codecType:B,vtype:R,bitrate:c||0}),this.startPCDN(Z,h,F,c,V,R.toLowerCase()||"mp4",Math.floor(s),m),null!=n&&null!==(i=n.meta)&&void 0!==i&&i.ext?(b.meta=n.meta,b.from=5,b.fileSize=n.fileSize||m,b.mediaSegList=n.mediaSegList||b.mediaSegList||[]):this._mp4.once(Za,function(){var e=f(k().mark((function e(n,U){var i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(U&&!U.hasDestroyed){e.next=2;break}return e.abrupt("return");case 2:return v.log(xe.DEBUG,"[Preloader] ".concat(F," metaReady ").concat(null==b||null===(i=b.mediaSegList)||void 0===i?void 0:i.length)),b.meta=n,b.from=2,b.fileSize=U.size,e.next=8,U.cancelLoading();case 8:if(!U.hasDestroyed){e.next=10;break}return e.abrupt("return");case 10:return U.metaLoading=!1,e.next=13,v.setPreLoadData(t,b);case 13:if(!U.hasDestroyed){e.next=15;break}return e.abrupt("return");case 15:v.startLoadByFragments(b,t);case 16:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),this._mp4.on(Va,(function(e){v.log(xe.ERROR,"[Preloader] ".concat(F," loadByPreloadTime error")),v._endLoadFragments(!1),v.emit("error",e)})),this._mp4.on(Ea,(function(e){v._pcdn&&e&&v._pcdn.removePCDNNode(e.vid,e.bitrate,e.url)})),this._mp4.on(fa,(function(e){v.bwEventEmit(F,e.load_type,e.len,null,l)})),null===(r=this._mp4.MP4Loader)||void 0===r||r.on(cn,(function(e){if((null==e?void 0:e.len)>0){var t,n=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||va,U=ia(e.len,e.time);v.bwEventEmit(F,n,e.len,U,l)}})),e.next=24,this._mp4.init(n);case 24:if(this._mp4){e.next=26;break}return e.abrupt("return");case 26:null!=n&&null!==(a=n.meta)&&void 0!==a&&a.ext&&this.startLoadByFragments(b,t);case 27:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{key:"bwEventEmit",value:function(e,t,n,U,i){var r,a,F=(null===(r=this._pendingTask.data)||void 0===r?void 0:r.duration)||0,l=(null===(a=this._pendingTask.data)||void 0===a?void 0:a.bitrate)||0;this.preloadManager.bwEventEmit({vid:e,loadType:t,size:n,speed:U,cacheKey:i,vtype:ee.MP4,duration:F,bitrate:l})}},{key:"startPCDN",value:function(e,t,n,U,i,r,a,F){var l=this;if(this._pcdn){var Q;if(null===(Q=this._mp4)||void 0===Q||Q.updatePCDNState(ga),!Ua(e)){var d=document.location.protocol;e=d+e}this.curPCDNReqId=function(e,t){return e.slice(-20)+t}(t||n,U);var o={vid:t,cdn_url:e,sfid:i,file_type:r,bitrate:U,duration:Math.floor(a),size:F};this.log(xe.DEBUG,"[Preloader] ".concat(n," get peer start")),this._pcdn.fetchPCDNNode(null,o,this.curPCDNReqId).then((function(e){var t;null!=e&&e.req_id&&e.req_id!==l.curPCDNReqId?l.log(xe.LOG,",[Preloader] fetchPCDNNode not match reqId",l.curPCDNReqId,", pcdnRet.req_id",e.req_id):(l.log(xe.LOG,"[Preloader] ".concat(n," get peer end,pcdn node update,"),null==e||null===(t=e.nodes)||void 0===t?void 0:t.length),l._mp4?l._mp4.updateNode(null==e?void 0:e.nodes):l._pcdnNodeList=(null==e?void 0:e.nodes)||null)})).catch((function(t){var n,U,i,r,a=Fa.checkUrlIsExpired(e);1===a&&l._pcdn&&(l._pcdn=void 0);var F=(null==t||null===(n=t.response)||void 0===n?void 0:n.url)||(null===(U=l.options)||void 0===U||null===(i=U.pcdnConfig)||void 0===i?void 0:i.trackerUrl);l.emit("source_error",{host:Fa.getHostFromUrl(F),src:F,errorCode:null==t||null===(r=t.response)||void 0===r?void 0:r.status,message:"".concat(null==t?void 0:t.message,"-").concat(a,"_preload")})}))}}},{key:"_getLoadUrl",value:function(e){var t="Array"===Fa.typeOf(e.url)?e.url[0].src:e.url;return this.preloadManager.preProcessUrl&&(t=this.preloadManager.preProcessUrl(t).url),t}},{key:"loadByChunkSize",value:(i=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z,p,S,m,J,E,y,b,v,N=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.vid,r=t.cacheKey,a=t.definition,F=t.orgDefinition,l=t.duration,Q=t.bitrate,d=t.codecType,o=t.vtype,s=t.size,c=t.uri,B=t.file_id,R=this.options,u=this._getLoadUrl(t)){e.next=6;break}return this._endLoadFragments(!1),e.abrupt("return");case 6:if(u=Fa.extUrl(u,{__vid:i}),h=s||Fa.getFileSize(Q,l),V=null==t||null===(U=t.pktOffsetMap)||void 0===U?void 0:U.find((function(e){return(null==e?void 0:e.time)===((null==R?void 0:R.firstLoadTimePos)||5)})),Z=null==V?void 0:V.offset,p=ea(l,8e5,h),this.log(xe.LOG,"".concat(i," loadByChunkSize"),t.cacheKey,t.definition,Z||p),S=this.getInitCacheData(tF.SIZE,{vid:i,definition:a,orgDefinition:F,cacheKey:r,codecType:d,vtype:o,fileSize:s,bitrate:Q||0}),m=this.getRequestOption(W(W({},t),{},{url:u})),this.startPCDN(u,c,i,Q,B,o.toLowerCase()||"mp4",Math.floor(l),h),this.mp4Loader=new qr({url:u,vid:"".concat(i,"-").concat(Q),retry:R.retryCount||2,retryDelay:R.retryDelay||1e3,timeout:R.timeout||3e3,reqOptions:m,loaderType:R.loaderType,retryCheckFunc:ra,openLog:Fn(),audioGroupingStrategy:R.audioGroupingStrategy,fixEditListOffset:R.fixEditListOffset,fixEditListOffsetThreshold:R.fixEditListOffsetThreshold}),this.mp4Loader.on(cn,(function(e){if((null==e?void 0:e.len)>0){var t,n=(null==e||null===(t=e.priOptions)||void 0===t?void 0:t.type)||va,U=ia(e.len,e.time);N.bwEventEmit(i,n,e.len,U,r)}})),e.prev=17,J=new Uint8Array(0),E=0,y=null,b=null,v=function(){var e=f(k().mark((function e(n,U,a,F,l){var Q,d,o,s,c,B,R,h,V,Z,p,m;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(S.fileSize||(S.fileSize=Number(ca(l.headers))),n&&a.range&&a.range[0]===E&&(J=TF(Uint8Array,J,new Uint8Array(n)),E+=n.byteLength),!a.meta){e.next=29;break}if(!N.mp4Loader){e.next=6;break}return e.next=6,N.mp4Loader.cancel();case 6:d=(null==n||null===(Q=n.priOptions)||void 0===Q?void 0:Q.type)||va,N.bwEventEmit(i,d,J.byteLength,null,r),o=a.meta,s=o.videoSegments,c=o.audioSegments,b=W(W({},o.meta),{},{ext:{videoTrak:s,audioTrak:c}}),S.meta=b,y=Fa.getFragRange(0,s,c),S.buffer=J.slice(y[0]),S.byteLength=S.buffer.byteLength,B=Fa.getFragRange(1,s,c),R=[],B[0]<B[1]&&y[1]>B[0]&&(R=[B[0],y[1]]),h=(null==s?void 0:s.length)>0?s:c,V=h[0].startTime,Z=h[0].endTime,p={startTime:V,endTime:Z,range:Y(y),repeatRange:R,duration:Z-V,downloaded:!1,isLoading:!1,timeRangeIdx:[0,1]},S.adaptTimeRange=[p],N.log(xe.LOG,"".concat(i," loadMetaProcess ret"),r,J.byteLength,JSON.stringify(y),S.buffer.byteLength,JSON.stringify(R)),N.setPreLoadData(t,S),m=[E,y[1]],N.log(xe.LOG,"".concat(r," loadMetaProcess end, loadOneChunk start"),U,JSON.stringify(m),E,J.byteLength),N._loadOneChunk(S,m,u,p.duration,t);case 29:case"end":return e.stop()}}),e)})));return function(t,n,U,i,r){return e.apply(this,arguments)}}(),!this.mp4Loader){e.next=26;break}return e.next=26,this.mp4Loader.loadMetaProcess(this.mp4Loader.cache,[0,Z||p],v,{});case 26:e.next=32;break;case 28:e.prev=28,e.t0=e.catch(17),console.error("[Preloader] ".concat(r," loadByChunkSize error"),e.t0),this._endLoadFragments(!1);case 32:case"end":return e.stop()}}),e,this,[[17,28]])}))),function(e,t){return i.apply(this,arguments)})},{key:"_loadOneChunk",value:(U=f(k().mark((function e(t,n,U,i,r){var a,F,l,Q,d,o,s,c,B,R,u;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!((null==n?void 0:n.length)>0&&n[0]>=n[1])){e.next=3;break}return this._endLoadFragments(),e.abrupt("return");case 3:return(F=(null===(a=this._pcdnNodeList)||void 0===a?void 0:a.length)>0?Fa.extUrl(this._pcdnNodeList[0].url,{__vid:t.vid}):null)&&Xa.pcdn_download_request_cnt++,this.log(xe.LOG,"".concat(null==t?void 0:t.cacheKey," loadOneChunk start"),JSON.stringify(n),",loadType,",!!F),l=F||U,Q=t.vid,d=t.cacheKey,o=t.buffer,e.prev=8,e.next=11,null===(s=this.mp4Loader)||void 0===s?void 0:s.loadData(n,this.mp4Loader.cache,{index:0,url:l,headers:F?{"X-Origin-Server-Host":Fa.getHostFromUrl(U)}:null,priOptions:{type:F?Na:va}});case 11:c=e.sent,this.log(xe.LOG,"".concat(Q," _loadOneChunk"),JSON.stringify(n),d),B=c.response,(R=c.data)?(this._endLoadFragments(),B&&B.headers&&(u=Fa.getFileSize(B.headers))&&(t.fileSize=u),t.buffer=Fa.concatData(o,R),t.byteLength=t.buffer.byteLength,t.preloadTime+=i,this.log(xe.LOG,"".concat(Q," _loadOneChunk ret"),d,t.buffer.byteLength,null==R?void 0:R.byteLength),t.from=4,this.setPreLoadData(r,t)):(Xa.pcdn_download_failed_cnt++,this._endLoadFragments(!1)),e.next=21;break;case 17:e.prev=17,e.t0=e.catch(8),this.log(xe.ERROR,"[Preloader] ".concat(Q," loadByChunkSize error"),null===e.t0||void 0===e.t0?void 0:e.t0.message),this._endLoadFragments(!1);case 21:case"end":return e.stop()}}),e,this,[[8,17]])}))),function(e,t,n,i,r){return U.apply(this,arguments)})},{key:"startLoadByFragments",value:(n=f(k().mark((function e(t,n){var U,i,r,a,F,l,Q,d,o,s,c,B,R,u,h,V,Z=this;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=n.preloadTime,r=n.vid,a=n.steps,F=n.stepIdx,this.log(xe.LOG,"[Preloader] ".concat(r," startLoadByFragments"),n),l=0,!(this.stepwise&&Array.isArray(a)&&a.length>0&&"number"==typeof F)){e.next=21;break}if(o=null===(Q=this._mp4)||void 0===Q?void 0:Q.adaptTimeRange,s=a[F],a.map((function(e,t,n){return e-(0===t?0:n[t-1])})).forEach((function(e,t){var n;(!Array.isArray(o)||0===o.length||o[o.length-1].endTime<a[a.length-1])&&(null===(n=Z._mp4)||void 0===n||n.updateAdaptTimeRange(t,e))})),!o){e.next=18;break}c=0;case 9:if(!(c<o.length)){e.next=18;break}if(!(o[c].startTime<=s)){e.next=14;break}l=c,e.next=15;break;case 14:return e.abrupt("break",18);case 15:c++,e.next=9;break;case 18:null===(d=this._mp4)||void 0===d||d.getFragRange(l),e.next=23;break;case 21:null===(B=this._mp4)||void 0===B||B.updateAdaptTimeRange(l,i),null===(R=this._mp4)||void 0===R||R.getFragRange(l);case 23:if(u=null===(U=this._mp4)||void 0===U?void 0:U.adaptTimeRange,this.log(xe.LOG,"[Preloader] loading ".concat(l),u?u[l].downloaded:"",u),!u||!u[l].downloaded){e.next=28;break}return this._endLoadFragments(),e.abrupt("return");case 28:if(h=function(e){Z.log(xe.ERROR,"[Preloader] ".concat(r," _failedCallback error"),null==e?void 0:e.message),Z._endLoadFragments(!1)},V=function(){var e=f(k().mark((function e(U){var i,r,a,F,l,Q,d,o,s,c,B,R,p,S,m;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(Z._mp4){e.next=2;break}return e.abrupt("return");case 2:if(a=U.buffer,F=U.context,l=U.state,Q=U.initSeg,d=F.fragIndex,o=F.range,s=F.timeRange,c=Z._mp4,B=c._repeatInfo,R=c.adaptTimeRange,p=null===(i=R[d])||void 0===i?void 0:i.range,!t.initSeg&&Q&&(t.initSeg=Q,t.adaptTimeRange=R),S=Z._mp4._lastDemuxSampleIdxRange,t.repeatData=(null===(r=B.data)||void 0===r?void 0:r.slice(0,B.curDataPos))||[],m=Z.updatePreCacheData(t,a,o,l,d,s,p,S,R[d].duration),Z.log(xe.LOG,"[Preloader] ".concat(t.cacheKey," _successCallback"),d,l,m),t.from=3,!m){e.next=24;break}return e.next=15,Z.setPreLoadData(n,t);case 15:if(!(u&&d>=u.length-1||Z.stepwise)){e.next=21;break}return Z.log(xe.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load end"),d),Z._endLoadFragments(!0),e.abrupt("return");case 21:return Z.log(xe.LOG,"[Preloader] ".concat(t.cacheKey," mp4.load start"),d+1),e.next=24,Z._mp4.loadAllFragmentData(d+1,V,h);case 24:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),!this._mp4){e.next=33;break}return e.next=33,this._mp4.loadAllFragmentData(l,V,h);case 33:case"end":return e.stop()}}),e,this)}))),function(e,t){return n.apply(this,arguments)})},{key:"_endLoadFragments",value:function(e){var t,n,U;(this.log(xe.LOG,"[Preloader] _endLoadFragments ".concat(this.playerId)),null!==(t=this._pendingTask)&&void 0!==t&&t.resolve)&&(null===(U=this._pendingTask)||void 0===U||U.resolve(),this._pendingTask.resolve=void 0);null!==(n=this._pendingTask)&&void 0!==n&&n.data&&(this.stepwise&&!1===e&&this._pendingTask.data.payload&&(this._pendingTask.data.payload.stepIdx=1/0),this._pendingTask.data=void 0),this._mp4&&(this._mp4.destroy(),this._mp4.cancelLoading(),this._mp4=void 0),this.mp4Loader&&(this.mp4Loader.cancel(),this.mp4Loader.destroy(),this.mp4Loader=void 0)}},{key:"hasItemSameVid",value:function(e){if(!e)return null;for(var t=e.split("#"),n=this.allCachedKeys,U=0;U<n.length;U++){var i=n[U];if(i===e)return i;var r=i.split("#");if(r.length>=4&&t.length>=4&&r[0]===t[0]){if(0===r[2].indexOf("pretime")&&0===t[2].indexOf("pretime"))return i;var a=[parseInt(r[2]),parseInt(r[3])],F=[parseInt(t[2]),parseInt(t[3])];if(F[0]>=a[0]&&F[1]>F[0]&&F[1]<=a[1])return i}}return null}},{key:"getItemSameVid",value:(t=f(k().mark((function e(t){var n,U,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=Q.generateUniqueKey(t),U=n&&this.hasItemSameVid(n),this.log(xe.DEBUG,"getItemSameVid: key:".concat(n," checkResult:").concat(U)),U){e.next=5;break}return e.abrupt("return",{});case 5:return e.next=7,this.preloadManager.getItem(t);case 7:return i=e.sent,e.abrupt("return",{value:i,key:U});case 9:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"setItem",value:function(e,t){return this.preloadManager.setItem(e,t,!1)}},{key:"clearPreloaderList",value:function(){I(C(Q.prototype),"clearPreloaderList",this).call(this)}},{key:"setUserSelectDefinition",value:function(e){this.preloadManager&&this.preloadManager.setUserSelectDefinition(e)}},{key:"getUserSelectDefinition",value:function(){return this.preloadManager.getUserSelectDefinition()}},{key:"cancel",value:function(){this.log(xe.LOG,"cancelLoading"),this._endLoadFragments()}},{key:"destroy",value:function(){this.cancel()}},{key:"on",value:function(e,t){for(var n,U=arguments.length,i=new Array(U>2?U-2:0),r=2;r<U;r++)i[r-2]=arguments[r];(n=I(C(Q.prototype),"on",this)).call.apply(n,[this,e,t].concat(i))}},{key:"off",value:function(e,t){for(var n,U=arguments.length,i=new Array(U>2?U-2:0),r=2;r<U;r++)i[r-2]=arguments[r];(n=I(C(Q.prototype),"off",this)).call.apply(n,[this,e,t].concat(i))}}],[{key:"vtype",get:function(){return ee.MP4}},{key:"PRELOAD_TYPES",get:function(){return tF}},{key:"getDefaultConfig",value:function(){return{supportHevc:!1,preloadTime:5,preloadSize:0,segmentMinDuration:5,vtype:"MP4",preloadCacheType:1,preloadMaxCacheCount:5,globalKey:null,autoPreload:!1,reqOptions:null,getRequestOptionsCallback:null,minBufferLength:5,timeout:3e3,autoCheck:{enable:!0,interval:1e3},logCacheConfig:{logCacheLevel:2,logMaxSize:204800},pcdnConfig:{openPreloadPCDN:!1,enterMinBuffer:10,outMaxBuffer:5,pcdn_duration:2,pcdn_open:!0,openPCDN:!0,minDuration:25,trackerUrl:""},switchPCDNMaxCnt:2,retryCount:1,retryDelay:1e3,loaderType:"fetch"}}},{key:"getInfoByUniqueKey",value:function(e){var t=e.split("#"),n=["vid","mediaType","codecType","vtype","definition"],U={};return t.forEach((function(e,t){U[n[t]]=e})),U}},{key:"generateUniqueKey",value:function(e){var t=e.vid,n=e.mediaType,U=e.definition,i=e.codecType,r=e.vtype;return n=n||"video",U=U||"-1",i=i||ne.H264,r=r||ee.MP4,t?"".concat(t,"#").concat(n,"#").concat(i,"#").concat(r,"#").concat(U):null}}]),Q}(vF);return eF.Mp4Preloader=LF,eF}));