@datagrok/eda 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/100.js +2 -0
- package/dist/111.js +2 -2
- package/dist/118.js +2 -0
- package/dist/146.js +2 -2
- package/dist/155.js +2 -2
- package/dist/221.js +2 -2
- package/dist/313.js +2 -0
- package/dist/355.js +2 -2
- package/dist/356.js +2 -2
- package/dist/44.js +2 -0
- package/dist/471.js +2 -0
- package/dist/489.js +3 -0
- package/dist/489.js.LICENSE.txt +51 -0
- package/dist/584.js +2 -2
- package/dist/604.js +2 -2
- package/dist/632.js +2 -2
- package/dist/645.js +2 -2
- package/dist/656.js +2 -0
- package/dist/664.js +2 -0
- package/dist/694.js +2 -2
- package/dist/727.js +2 -0
- package/dist/729.js +2 -2
- package/dist/796.js +2 -2
- package/dist/861.js +2 -0
- package/dist/93.js +2 -2
- package/dist/972.js +2 -0
- package/dist/package-test.js +2 -2
- package/dist/package.js +2 -2
- package/package.json +34 -4
- package/src/package.ts +45 -45
- package/dist/80.js +0 -2
package/dist/471.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var eda;(()=>{"use strict";var e,r,t={3471:(e,r,t)=>{var n,o;(o=n||(n={})).EUCLIDEAN="EUCLIDEAN",o.MANHATTAN="MANHATTAN";const a=e=>null==e;var s=t(6361),i=t(9657);onmessage=async e=>{const{values:r,startIdx:t,endIdx:n,threshold:o,fnName:c,opts:l}=e.data;try{const e=[],p=[],h=[],f=n-t;if((0,s.sQ)(c))for(let e=0;e<r.length;++e)a(r[e])||(r[e]=new i.Z(r[e]._data,r[e]._length));let u=0;const g=new s.UH(c).getMeasure(l),v=r.length-2-Math.floor(Math.sqrt(-8*t+4*r.length*(r.length-1)-7)/2-.5),d=t-r.length*v+Math.floor((v+1)*(v+2)/2);let w=v,y=d;for(;u<f;){const t=a(r[w])||a(r[y])?1:g(r[w],r[y]);1-t>=o&&(e.push(w),p.push(y),h.push(t)),u++,y++,y===r.length&&(w++,y=w+1)}const b=new Int32Array(e),m=new Int32Array(p),A=new Float32Array(h);postMessage({i:b,j:m,distance:A})}catch(e){postMessage({error:e})}}}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,o.x=()=>{var e=o.O(void 0,[44,861,727],(()=>o(3471)));return o.O(e)},e=[],o.O=(r,t,n,a)=>{if(!t){var s=1/0;for(p=0;p<e.length;p++){for(var[t,n,a]=e[p],i=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(o.O).every((e=>o.O[e](t[c])))?t.splice(c--,1):(i=!1,a<s&&(s=a));if(i){e.splice(p--,1);var l=n();void 0!==l&&(r=l)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,n,a]},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>e+".js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var r=o.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&!e;)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={471:1};o.f.i=(r,t)=>{e[r]||importScripts(o.p+o.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[n,a,s]=r;for(var i in a)o.o(a,i)&&(o.m[i]=a[i]);for(s&&s(o);n.length;)e[n.pop()]=1;t(r)}})(),r=o.x,o.x=()=>Promise.all([44,861,727].map(o.e,o)).then(r);var a=o.x();eda=a})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2RrRixFQUFnQjlDLEVBQVNxRCxPQUFTLEVBQ25DSixFQUEyQjFGLEVBQUssQyxLWG5CN0JiLEVBQU8yQyxFQUFvQnhDLEVBQy9Cd0MsRUFBb0J4QyxFQUFJLElBQ2hCdUUsUUFBUUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLaUMsSUFBSWpFLEVBQW9CSCxFQUFHRyxJQUFzQmtFLEtBQUs3RyxHWUR2RixJQUFJbUQsRUFBc0JSLEVBQW9CeEMsSSIsInNvdXJjZXMiOlsid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC90eXBlcy5qcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3V0aWxzLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvc3BhcnNlLW1hdHJpeC13b3JrZXIuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9pbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKFs0NCw4NjEsNzI3XS5tYXAoX193ZWJwYWNrX3JlcXVpcmVfXy5lLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSkudGhlbihuZXh0KTtcbn07IiwiZXhwb3J0IHZhciBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcztcbihmdW5jdGlvbiAoRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMpIHtcbiAgICBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kc1tcIkVVQ0xJREVBTlwiXSA9IFwiRVVDTElERUFOXCI7XG4gICAgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHNbXCJNQU5IQVRUQU5cIl0gPSBcIk1BTkhBVFRBTlwiO1xufSkoRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgfHwgKERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzID0ge30pKTtcbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hOUVVGTkxFTkJRVTRzU1VGQldTd3dRa0ZIVkR0QlFVaElMRmRCUVZrc01FSkJRVEJDTzBsQlEyeERMSEZFUVVGMVFpeERRVUZCTzBsQlEzWkNMSEZFUVVGMVFpeERRVUZCTzBGQlEzcENMRU5CUVVNc1JVRklVeXd3UWtGQk1FSXNTMEZCTVVJc01FSkJRVEJDTEZGQlIyNURPMEZCUVVFc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1WNGNHOXlkQ0JsYm5WdElFUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNU5aWFJvYjJSeklIdGNiaUFnSUNCRlZVTk1TVVJGUVU0Z1BTQW5SVlZEVEVsRVJVRk9KeXhjYmlBZ0lDQk5RVTVJUVZSVVFVNGdQU0FuVFVGT1NFRlVWRUZPSnl4Y2JpQWdmVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpDQTlJR3RsZVc5bUlIUjVjR1Z2WmlCRWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrY3p0Y2JpSmRmUT09IiwiaW1wb3J0IHsgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCBjb25zdCBpc05pbCA9ICh4KSA9PiB4ID09PSBudWxsIHx8IHggPT09IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTbWFsbGVyKGRpc3RhbmNlc0FyLCBpbmRleGVzLCBudW0sIGluZGV4KSB7XG4gICAgaWYgKG51bSA+IGRpc3RhbmNlc0FyW2Rpc3RhbmNlc0FyLmxlbmd0aCAtIDFdKVxuICAgICAgICByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXN0YW5jZXNBci5maW5kSW5kZXgoKHYpID0+IG51bSA8IHYpO1xuICAgIGRpc3RhbmNlc0FyLnBvcCgpO1xuICAgIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgICBpbmRleGVzLnBvcCgpO1xuICAgIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGFyZ2VyKGRpc3RhbmNlc0FyLCBpbmRleGVzLCBudW0sIGluZGV4KSB7XG4gICAgaWYgKG51bSA8IGRpc3RhbmNlc0FyW2Rpc3RhbmNlc0FyLmxlbmd0aCAtIDFdKVxuICAgICAgICByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXN0YW5jZXNBci5maW5kSW5kZXgoKHYpID0+IG51bSA+IHYpO1xuICAgIGRpc3RhbmNlc0FyLnBvcCgpO1xuICAgIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgICBpbmRleGVzLnBvcCgpO1xuICAgIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWdncmVnYXRpb25GdW5jdGlvbihhZ2dyZWdhdGlvbk1ldGhvZCwgd2VpZ2h0cykge1xuICAgIHN3aXRjaCAoYWdncmVnYXRpb25NZXRob2QpIHtcbiAgICAgICAgY2FzZSBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcy5NQU5IQVRUQU46XG4gICAgICAgICAgICByZXR1cm4gKHZzKSA9PiB2cy5yZWR1Y2UoKGFjYywgdmFsLCBpZHgpID0+IGFjYyArIHZhbCAqIHdlaWdodHNbaWR4XSwgMCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gKHZzKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXVjbGlkZWFuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VtID0gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyAodmFsICogd2VpZ2h0c1tpZHhdKSAqKiAyLCAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG4gICAgICAgICAgICB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYUnBiSE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjFkR2xzY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVFJDTERCQ1FVRXdRaXhGUVVGRExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlJUbEZMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NVMEZCVXl4RFFVRkRPMEZCUlM5RUxFMUJRVTBzVlVGQlZTeGhRVUZoTEVOQlFVTXNWMEZCY1VJc1JVRkJSU3hQUVVGcFFpeEZRVUZGTEVkQlFWY3NSVUZCUlN4TFFVRmhPMGxCUTJoSExFbEJRVWtzUjBGQlJ5eEhRVUZITEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42UXl4UFFVRlBPMGxCUlZRc1RVRkJUU3hYUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpGRUxGZEJRVmNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTnNRaXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGVFTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMlFzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzaERMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzV1VGQldTeERRVUZETEZkQlFYRkNMRVZCUVVVc1QwRkJhVUlzUlVGQlJTeEhRVUZYTEVWQlFVVXNTMEZCWVR0SlFVTXZSaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrTXNUMEZCVHp0SlFVVlVMRTFCUVUwc1YwRkJWeXhIUVVGSExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXhSQ3hYUVVGWExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEYkVJc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM2hETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOa0xFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU40UXl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxITkNRVUZ6UWl4RFFVTndReXhwUWtGQk5FTXNSVUZCUlN4UFFVRnBRanRKUVVVdlJDeFJRVUZSTEdsQ1FVRnBRaXhGUVVGRk8xRkJRM3BDTEV0QlFVc3NNRUpCUVRCQ0xFTkJRVU1zVTBGQlV6dFpRVU4yUXl4UFFVRlBMRU5CUVVNc1JVRkJXU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pHTzFsQlEwVXNUMEZCVHl4RFFVRkRMRVZCUVZrc1JVRkJSU3hGUVVGRk8yZENRVU4wUWl4WlFVRlpPMmRDUVVOYUxFMUJRVTBzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROMFVzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM2hDTEVOQlFVTXNRMEZCUXp0TFFVTk1PMEZCUTBnc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3UkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ3dnUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSE45SUdaeWIyMGdKeTR2ZEhsd1pYTW5PMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdhWE5PYVd3Z1BTQW9lRG9nWVc1NUtTQTlQaUI0SUQwOVBTQnVkV3hzSUh4OElIZ2dQVDA5SUhWdVpHVm1hVzVsWkR0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHVjMlZ5ZEZOdFlXeHNaWElvWkdsemRHRnVZMlZ6UVhJNklHNTFiV0psY2x0ZExDQnBibVJsZUdWek9pQnVkVzFpWlhKYlhTd2diblZ0T2lCdWRXMWlaWElzSUdsdVpHVjRPaUJ1ZFcxaVpYSXBJSHRjYmlBZ2FXWWdLRzUxYlNBK0lHUnBjM1JoYm1ObGMwRnlXMlJwYzNSaGJtTmxjMEZ5TG14bGJtZDBhQzB4WFNsY2JpQWdJQ0J5WlhSMWNtNDdYRzVjYmlBZ1kyOXVjM1FnYm1WM1VHOXphWFJwYjI0Z1BTQmthWE4wWVc1alpYTkJjaTVtYVc1a1NXNWtaWGdvS0hZcElEMCtJRzUxYlNBOElIWXBPMXh1SUNCa2FYTjBZVzVqWlhOQmNpNXdiM0FvS1R0Y2JpQWdaR2x6ZEdGdVkyVnpRWEl1YzNCc2FXTmxLRzVsZDFCdmMybDBhVzl1TENBd0xDQnVkVzBwTzF4dUlDQnBibVJsZUdWekxuQnZjQ2dwTzF4dUlDQnBibVJsZUdWekxuTndiR2xqWlNodVpYZFFiM05wZEdsdmJpd2dNQ3dnYVc1a1pYZ3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FXNXpaWEowVEdGeVoyVnlLR1JwYzNSaGJtTmxjMEZ5T2lCdWRXMWlaWEpiWFN3Z2FXNWtaWGhsY3pvZ2JuVnRZbVZ5VzEwc0lHNTFiVG9nYm5WdFltVnlMQ0JwYm1SbGVEb2diblZ0WW1WeUtTQjdYRzRnSUdsbUlDaHVkVzBnUENCa2FYTjBZVzVqWlhOQmNsdGthWE4wWVc1alpYTkJjaTVzWlc1bmRHZ3RNVjBwWEc0Z0lDQWdjbVYwZFhKdU8xeHVYRzRnSUdOdmJuTjBJRzVsZDFCdmMybDBhVzl1SUQwZ1pHbHpkR0Z1WTJWelFYSXVabWx1WkVsdVpHVjRLQ2gyS1NBOVBpQnVkVzBnUGlCMktUdGNiaUFnWkdsemRHRnVZMlZ6UVhJdWNHOXdLQ2s3WEc0Z0lHUnBjM1JoYm1ObGMwRnlMbk53YkdsalpTaHVaWGRRYjNOcGRHbHZiaXdnTUN3Z2JuVnRLVHRjYmlBZ2FXNWtaWGhsY3k1d2IzQW9LVHRjYmlBZ2FXNWtaWGhsY3k1emNHeHBZMlVvYm1WM1VHOXphWFJwYjI0c0lEQXNJR2x1WkdWNEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRm5aM0psWjJGMGFXOXVSblZ1WTNScGIyNG9YRzRnSUdGblozSmxaMkYwYVc5dVRXVjBhRzlrT2lCRWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrTENCM1pXbG5hSFJ6T2lCdWRXMWlaWEpiWFZ4dUtUb2dLSFpoYkhWbGN6b2diblZ0WW1WeVcxMHBJRDArSUc1MWJXSmxjaUI3WEc0Z0lITjNhWFJqYUNBb1lXZG5jbVZuWVhScGIyNU5aWFJvYjJRcElIdGNiaUFnSUNCallYTmxJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUnpMazFCVGtoQlZGUkJUanBjYmlBZ0lDQWdJSEpsZEhWeWJpQW9kbk02SUc1MWJXSmxjbHRkS1NBOVBpQjJjeTV5WldSMVkyVW9LR0ZqWXl3Z2RtRnNMQ0JwWkhncElEMCtJR0ZqWXlBcklIWmhiQ0FxSUhkbGFXZG9kSE5iYVdSNFhTd2dNQ2s3WEc0Z0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lISmxkSFZ5YmlBb2RuTTZJRzUxYldKbGNsdGRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDOHZJR1YxWTJ4cFpHVmhibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpkVzBnUFNCMmN5NXlaV1IxWTJVb0tHRmpZeXdnZG1Gc0xDQnBaSGdwSUQwK0lHRmpZeUFySUNoMllXd2dLaUIzWldsbmFIUnpXMmxrZUYwcElDb3FJRElzSURBcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITjFiU2s3WEc0Z0lDQWdJQ0I5TzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTWVhc3VyZSwgaXNCaXRBcnJheU1ldHJpYyB9IGZyb20gJy4uL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IEJpdEFycmF5IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL2JpdC1hcnJheSc7XG5vbm1lc3NhZ2UgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlcywgc3RhcnRJZHgsIGVuZElkeCwgdGhyZXNob2xkLCBmbk5hbWUsIG9wdHMgfSA9IGV2ZW50LmRhdGE7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gaWYgKHN0YXJ0SWR4ICE9IC0xKVxuICAgICAgICAvLyAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgaW4gc3BhcnNlIG1hdHJpeCB3b3JrZXInKTsgLy8gVE9ETzogcmVtb3ZlIHRoaXMgbGluZVxuICAgICAgICBjb25zdCBpID0gW107XG4gICAgICAgIGNvbnN0IGogPSBbXTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VzID0gW107XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IGVuZElkeCAtIHN0YXJ0SWR4O1xuICAgICAgICAvL2NvbnN0IG1pID0gc3RhcnRSb3c7XG4gICAgICAgIC8vY29uc3QgbWogPSBzdGFydENvbDtcbiAgICAgICAgaWYgKGlzQml0QXJyYXlNZXRyaWMoZm5OYW1lKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOaWwodmFsdWVzW2ldKSlcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gbmV3IEJpdEFycmF5KHZhbHVlc1tpXS5fZGF0YSwgdmFsdWVzW2ldLl9sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBjbnQgPSAwO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZuID0gbmV3IE1lYXN1cmUoZm5OYW1lKS5nZXRNZWFzdXJlKG9wdHMpO1xuICAgICAgICBjb25zdCBzdGFydFJvdyA9IHZhbHVlcy5sZW5ndGggLSAyIC0gTWF0aC5mbG9vcihNYXRoLnNxcnQoLTggKiBzdGFydElkeCArIDQgKiB2YWx1ZXMubGVuZ3RoICogKHZhbHVlcy5sZW5ndGggLSAxKSAtIDcpIC8gMiAtIDAuNSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gc3RhcnRJZHggLSB2YWx1ZXMubGVuZ3RoICogc3RhcnRSb3cgKyBNYXRoLmZsb29yKChzdGFydFJvdyArIDEpICogKHN0YXJ0Um93ICsgMikgLyAyKTtcbiAgICAgICAgbGV0IG1pID0gc3RhcnRSb3c7XG4gICAgICAgIGxldCBtaiA9IHN0YXJ0Q29sO1xuICAgICAgICB3aGlsZSAoY250IDwgY2h1bmtTaXplKSB7XG4gICAgICAgICAgICAvL2NvbnN0IHZhbHVlID0gc2VxMUxpc3RbbWldICYmIHNlcTFMaXN0W21qXSA/IGhhbW1pbmcoc2VxMUxpc3RbbWldLCBzZXExTGlzdFttal0pIDogMDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gIWlzTmlsKHZhbHVlc1ttaV0pICYmICFpc05pbCh2YWx1ZXNbbWpdKSA/XG4gICAgICAgICAgICAgICAgZGlzdGFuY2VGbih2YWx1ZXNbbWldLCB2YWx1ZXNbbWpdKSA6IDE7XG4gICAgICAgICAgICBpZiAoMSAtIHZhbHVlID49IHRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIGkucHVzaChtaSk7XG4gICAgICAgICAgICAgICAgai5wdXNoKG1qKTtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbnQrKztcbiAgICAgICAgICAgIG1qKys7XG4gICAgICAgICAgICBpZiAobWogPT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBtaSsrO1xuICAgICAgICAgICAgICAgIG1qID0gbWkgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlBcnJheSA9IG5ldyBJbnQzMkFycmF5KGkpO1xuICAgICAgICBjb25zdCBqQXJyYXkgPSBuZXcgSW50MzJBcnJheShqKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoZGlzdGFuY2VzKTtcbiAgICAgICAgcG9zdE1lc3NhZ2UoeyBpOiBpQXJyYXksIGo6IGpBcnJheSwgZGlzdGFuY2U6IGRpc3RhbmNlQXJyYXkgfSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHBvc3RNZXNzYWdlKHsgZXJyb3I6IGUgfSk7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmhjbk5sTFcxaGRISnBlQzEzYjNKclpYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKemNHRnljMlV0YldGMGNtbDRMWGR2Y210bGNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVVNc1MwRkJTeXhGUVVGRExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlF6bENMRTlCUVU4c1JVRkJaU3hQUVVGUExFVkJRVVVzWjBKQlFXZENMRVZCUVVNc1RVRkJUU3hyUWtGQmEwSXNRMEZCUXp0QlFVTjZSU3hQUVVGUExGRkJRVkVzVFVGQlRTeDVRMEZCZVVNc1EwRkJRenRCUVVNdlJDeFRRVUZUTEVkQlFVY3NTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRk8wbEJRekZDTEUxQlFVMHNSVUZCUXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFMUJRVTBzUlVGQlJTeFRRVUZUTEVWQlFVVXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJReXhIUVVOcFJDeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNKSUxFbEJRVWs3VVVGRFJpeHpRa0ZCYzBJN1VVRkRkRUlzWjBaQlFXZEdPMUZCUTJoR0xFMUJRVTBzUTBGQlF5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTjJRaXhOUVVGTkxFTkJRVU1zUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZEZGtJc1RVRkJUU3hUUVVGVExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF5OUNMRTFCUVUwc1UwRkJVeXhIUVVGSExFMUJRVTBzUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEY0VNc2MwSkJRWE5DTzFGQlEzUkNMSE5DUVVGelFqdFJRVVYwUWl4SlFVRkpMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMWxCUXpWQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVOMFF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlFVVXNVMEZCVXp0blFrRkRMMElzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMkZCUXpsRU8xTkJRMFk3VVVGRFJDeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRXaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEZUVRc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGRE4wTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFJRVUZSTEVkQlFVY3NRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOd1JpeE5RVUZOTEZGQlFWRXNSMEZCUnl4UlFVRlJMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjJSeXhKUVVGSkxFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEYkVJc1NVRkJTU3hGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETzFGQlEyeENMRTlCUVU4c1IwRkJSeXhIUVVGSExGTkJRVk1zUlVGQlJUdFpRVU4wUWl4MVJrRkJkVVk3V1VGRGRrWXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGRFUXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzcERMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzU1VGQlNTeFRRVUZUTEVWQlFVVTdaMEpCUXpGQ0xFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1owSkJRMWdzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRuUWtGRFdDeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8yRkJRM1pDTzFsQlEwUXNSMEZCUnl4RlFVRkZMRU5CUVVNN1dVRkRUaXhGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU5NTEVsQlFVa3NSVUZCUlN4TFFVRkxMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEzaENMRVZCUVVVc1JVRkJSU3hEUVVGRE8yZENRVU5NTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMkk3VTBGRFJqdFJRVVZFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEycERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJwRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NXVUZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRMnhFTEZkQlFWY3NRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1lVRkJZU3hGUVVGRExFTkJRVU1zUTBGQlF6dExRVU01UkR0SlFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xRkJRMVlzVjBGQlZ5eERRVUZETEVWQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU03UzBGRGVrSTdRVUZEU0N4RFFVRkRMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UybHpUbWxzZlNCbWNtOXRJQ2N1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0I3UzI1dmQyNU5aWFJ5YVdOekxDQk5aV0Z6ZFhKbExDQnBjMEpwZEVGeWNtRjVUV1YwY21samZTQm1jbTl0SUNjdUxpOTBlWEJsWkMxdFpYUnlhV056Snp0Y2JtbHRjRzl5ZENCQ2FYUkJjbkpoZVNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5aWFYUXRZWEp5WVhrbk8xeHViMjV0WlhOellXZGxJRDBnWVhONWJtTWdLR1YyWlc1MEtTQTlQaUI3WEc0Z0lHTnZibk4wSUh0MllXeDFaWE1zSUhOMFlYSjBTV1I0TENCbGJtUkpaSGdzSUhSb2NtVnphRzlzWkN3Z1ptNU9ZVzFsTENCdmNIUnpmVHBjYmlBZ0lDQjdkbUZzZFdWek9pQmhibmxiWFN3Z2MzUmhjblJKWkhnNklHNTFiV0psY2l3Z1pXNWtTV1I0T2lCdWRXMWlaWElzSUhSb2NtVnphRzlzWkRvZ2JuVnRZbVZ5TENCbWJrNWhiV1U2SUV0dWIzZHVUV1YwY21samN5d2diM0IwY3pvZ1lXNTVmU0E5SUdWMlpXNTBMbVJoZEdFN1hHNGdJSFJ5ZVNCN1hHNGdJQ0FnTHk4Z2FXWWdLSE4wWVhKMFNXUjRJQ0U5SUMweEtWeHVJQ0FnSUM4dklDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEZjbkp2Y2lCcGJpQnpjR0Z5YzJVZ2JXRjBjbWw0SUhkdmNtdGxjaWNwT3lBdkx5QlVUMFJQT2lCeVpXMXZkbVVnZEdocGN5QnNhVzVsWEc0Z0lDQWdZMjl1YzNRZ2FUb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdJQ0JqYjI1emRDQnFPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxjem9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCamIyNXpkQ0JqYUhWdWExTnBlbVVnUFNCbGJtUkpaSGdnTFNCemRHRnlkRWxrZUR0Y2JpQWdJQ0F2TDJOdmJuTjBJRzFwSUQwZ2MzUmhjblJTYjNjN1hHNGdJQ0FnTHk5amIyNXpkQ0J0YWlBOUlITjBZWEowUTI5c08xeHVYRzRnSUNBZ2FXWWdLR2x6UW1sMFFYSnlZWGxOWlhSeWFXTW9abTVPWVcxbEtTa2dlMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IyWVd4MVpYTXViR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6VG1sc0tIWmhiSFZsYzF0cFhTa3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCdVpYY2dRbWwwUVhKeVlYa29kbUZzZFdWelcybGRMbDlrWVhSaExDQjJZV3gxWlhOYmFWMHVYMnhsYm1kMGFDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUd4bGRDQmpiblFnUFNBd08xeHVJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxSbTRnUFNCdVpYY2dUV1ZoYzNWeVpTaG1iazVoYldVcExtZGxkRTFsWVhOMWNtVW9iM0IwY3lrN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SU2IzY2dQU0IyWVd4MVpYTXViR1Z1WjNSb0lDMGdNaUF0SUUxaGRHZ3VabXh2YjNJb1hHNGdJQ0FnSUNCTllYUm9Mbk54Y25Rb0xUZ2dLaUJ6ZEdGeWRFbGtlQ0FySURRZ0tpQjJZV3gxWlhNdWJHVnVaM1JvSUNvZ0tIWmhiSFZsY3k1c1pXNW5kR2dnTFNBeEtTQXRJRGNwSUM4Z01pQXRJREF1TlNrN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SRGIyd2dQU0J6ZEdGeWRFbGtlQ0F0SUhaaGJIVmxjeTVzWlc1bmRHZ2dLaUJ6ZEdGeWRGSnZkeUFySUUxaGRHZ3VabXh2YjNJb0tITjBZWEowVW05M0lDc2dNU2tnS2lBb2MzUmhjblJTYjNjZ0t5QXlLU0F2SURJcE8xeHVJQ0FnSUd4bGRDQnRhU0E5SUhOMFlYSjBVbTkzTzF4dUlDQWdJR3hsZENCdGFpQTlJSE4wWVhKMFEyOXNPMXh1SUNBZ0lIZG9hV3hsSUNoamJuUWdQQ0JqYUhWdWExTnBlbVVwSUh0Y2JpQWdJQ0FnSUM4dlkyOXVjM1FnZG1Gc2RXVWdQU0J6WlhFeFRHbHpkRnR0YVYwZ0ppWWdjMlZ4TVV4cGMzUmJiV3BkSUQ4Z2FHRnRiV2x1WnloelpYRXhUR2x6ZEZ0dGFWMHNJSE5sY1RGTWFYTjBXMjFxWFNrZ09pQXdPMXh1SUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1VnUFNBaGFYTk9hV3dvZG1Gc2RXVnpXMjFwWFNrZ0ppWWdJV2x6VG1sc0tIWmhiSFZsYzF0dGFsMHBJRDljYmlBZ0lDQWdJQ0FnWkdsemRHRnVZMlZHYmloMllXeDFaWE5iYldsZExDQjJZV3gxWlhOYmJXcGRLU0E2SURFN1hHNGdJQ0FnSUNCcFppQW9NU0F0SUhaaGJIVmxJRDQ5SUhSb2NtVnphRzlzWkNrZ2UxeHVJQ0FnSUNBZ0lDQnBMbkIxYzJnb2JXa3BPMXh1SUNBZ0lDQWdJQ0JxTG5CMWMyZ29iV29wTzF4dUlDQWdJQ0FnSUNCa2FYTjBZVzVqWlhNdWNIVnphQ2gyWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpiblFyS3p0Y2JpQWdJQ0FnSUcxcUt5czdYRzRnSUNBZ0lDQnBaaUFvYldvZ1BUMDlJSFpoYkhWbGN5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lDQWdiV2tyS3p0Y2JpQWdJQ0FnSUNBZ2JXb2dQU0J0YVNBcklERTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYVVGeWNtRjVJRDBnYm1WM0lFbHVkRE15UVhKeVlYa29hU2s3WEc0Z0lDQWdZMjl1YzNRZ2FrRnljbUY1SUQwZ2JtVjNJRWx1ZERNeVFYSnlZWGtvYWlrN1hHNGdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVkJjbkpoZVNBOUlHNWxkeUJHYkc5aGRETXlRWEp5WVhrb1pHbHpkR0Z1WTJWektUdGNiaUFnSUNCd2IzTjBUV1Z6YzJGblpTaDdhVG9nYVVGeWNtRjVMQ0JxT2lCcVFYSnlZWGtzSUdScGMzUmhibU5sT2lCa2FYTjBZVzVqWlVGeWNtRjVmU2s3WEc0Z0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQndiM04wVFdWemMyRm5aU2g3WlhKeWIzSTZJR1Y5S1R0Y2JpQWdmVnh1ZlRzaVhYMD0iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNDQsODYxLDcyN10sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDM0NzEpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDQ3MTogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0IiwiRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMiLCJpc05pbCIsIngiLCJvbm1lc3NhZ2UiLCJhc3luYyIsImV2ZW50IiwidmFsdWVzIiwic3RhcnRJZHgiLCJlbmRJZHgiLCJ0aHJlc2hvbGQiLCJmbk5hbWUiLCJvcHRzIiwiZGF0YSIsImkiLCJqIiwiZGlzdGFuY2VzIiwiY2h1bmtTaXplIiwibGVuZ3RoIiwiX2RhdGEiLCJfbGVuZ3RoIiwiY250IiwiZGlzdGFuY2VGbiIsImdldE1lYXN1cmUiLCJzdGFydFJvdyIsIk1hdGgiLCJmbG9vciIsInNxcnQiLCJzdGFydENvbCIsIm1pIiwibWoiLCJ2YWx1ZSIsInB1c2giLCJpQXJyYXkiLCJJbnQzMkFycmF5IiwiakFycmF5IiwiZGlzdGFuY2VBcnJheSIsIkZsb2F0MzJBcnJheSIsInBvc3RNZXNzYWdlIiwiZGlzdGFuY2UiLCJlIiwiZXJyb3IiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsInJlc3VsdCIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiZnVsZmlsbGVkIiwiT2JqZWN0Iiwia2V5cyIsImV2ZXJ5Iiwia2V5Iiwic3BsaWNlIiwiciIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImYiLCJjaHVua0lkIiwiUHJvbWlzZSIsImFsbCIsInJlZHVjZSIsInByb21pc2VzIiwidSIsImciLCJnbG9iYWxUaGlzIiwidGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsIkVycm9yIiwicmVwbGFjZSIsInAiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJzZWxmIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwicG9wIiwibWFwIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=
|