-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path2867.970854d8.iframe.bundle.js
2 lines (2 loc) · 16.3 KB
/
2867.970854d8.iframe.bundle.js
1
2
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[2867],{"./src/third-party/canvg/svg_todataurl.js":()=>{SVGElement.prototype.toDataURL=function(type,options){var _svg=this;function XMLSerialize(svg){return window.XMLSerializer?(new XMLSerializer).serializeToString(svg):function XMLSerializerForIE(s){var out="";out+="<"+s.nodeName;for(var n=0;n<s.attributes.length;n++)out+=" "+s.attributes[n].name+"='"+s.attributes[n].value+"'";if(s.hasChildNodes()){for(out+=">\n",n=0;n<s.childNodes.length;n++)out+=XMLSerializerForIE(s.childNodes[n]);out+="</"+s.nodeName+">\n"}else out+=" />\n";return out}(svg)}function base64dataURLencode(s){var b64="data:image/svg+xml;base64,";return window.btoa?b64+=btoa(unescape(encodeURIComponent(s))):b64+=Base64.encode(s),b64}switch(type||(type="image/svg+xml"),options||(options={}),options.keepNonSafe,options.keepOutsideViewport,type){case"image/svg+xml":return function exportSVG(){var svg_dataurl=base64dataURLencode(XMLSerialize(_svg));return svg_dataurl.length,options.callback&&options.callback(svg_dataurl),svg_dataurl}();case"image/png":case"image/jpeg":switch(options.renderer||(window.canvg?options.renderer="canvg":options.renderer="native"),options.renderer){case"canvg":return function exportImageCanvg(type){var canvas=document.createElement("canvas"),svg_xml=(canvas.getContext("2d"),XMLSerialize(_svg)),keepBB=options.keepOutsideViewport;if(keepBB)var bb=_svg.getBBox();return canvg(canvas,svg_xml,{ignoreMouse:!0,ignoreAnimation:!0,offsetX:keepBB?-bb.x:void 0,offsetY:keepBB?-bb.y:void 0,scaleWidth:keepBB?bb.width+bb.x:void 0,scaleHeight:keepBB?bb.height+bb.y:void 0,renderCallback:function renderCallback(){canvas.width,canvas.height;var png_dataurl=canvas.toDataURL(type);png_dataurl.length,options.callback&&options.callback(png_dataurl)}}),canvas.toDataURL(type)}(type);case"native":return function exportImage(type){var canvas=document.createElement("canvas"),ctx=canvas.getContext("2d"),svg_img=new Image,svg_xml=XMLSerialize(_svg);svg_img.src=base64dataURLencode(svg_xml),svg_img.onload=function(){svg_img.width,svg_img.height,canvas.width=svg_img.width,canvas.height=svg_img.height,ctx.drawImage(svg_img,0,0);var png_dataurl=canvas.toDataURL(type);png_dataurl.length,options.callback&&options.callback(png_dataurl)},svg_img.onerror=function(){console.log("Can't export! Maybe your browser doesn't support SVG in img element or SVG input for Canvas drawImage?\nhttp://en.wikipedia.org/wiki/SVG#Native_support")}}(type);default:options.renderer}}}},"./src/util/svgelement-polyfill.js":(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{"undefined"!=typeof SVGElement&&(__webpack_require__("./node_modules/canvg/canvg.js"),__webpack_require__("./src/third-party/canvg/svg_todataurl.js"))}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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T2tCLE9BQVNLLFFBQVFMLE9BQ3hCSSxJQUFJSyxVQUFVSixRQUFTLEVBQUcsR0FHMUIsSUFBSUgsWUFBY3BCLE9BQU9wQyxVQUFVQyxNQUNSdUQsWUFBWXhDLE9BRW5DZCxRQUFROEIsVUFBVTlCLFFBQVE4QixTQUFTd0IsWUFFekMsRUFFQUcsUUFBUUssUUFBVSxXQUNoQkMsUUFBUUMsSUFDTiwwSkFJSixDQUdGLENBaUVlVCxDQUFZeEQsTUFHckIsUUFHTUMsUUFBUStCLFVBVXRCLEMsK0dDOU4wQixvQkFBZm5DLGFBR1RxRSxvQkFBUSxpQ0FDUkEsb0JBQVEsNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGhpcmQtcGFydHkvY2Fudmcvc3ZnX3RvZGF0YXVybC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdXRpbC9zdmdlbGVtZW50LXBvbHlmaWxsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuXHRUaGUgbWlzc2luZyBTVkcudG9EYXRhVVJMIGxpYnJhcnkgZm9yIHlvdXIgU1ZHIGVsZW1lbnRzLlxuXG5cdFVzYWdlOiBTVkdFbGVtZW50LnRvRGF0YVVSTCggdHlwZSwgeyBvcHRpb25zIH0gKVxuXG5cdFJldHVybnM6IHRoZSBkYXRhIFVSTCwgZXhjZXB0IHdoZW4gdXNpbmcgbmF0aXZlIFBORyByZW5kZXJlciAobmVlZHMgY2FsbGJhY2spLlxuXG5cdHR5cGVcdE1JTUUgdHlwZSBvZiB0aGUgZXhwb3J0ZWQgZGF0YS5cblx0XHRcdERlZmF1bHQ6IGltYWdlL3N2Zyt4bWwuXG5cdFx0XHRNdXN0IHN1cHBvcnQ6IGltYWdlL3BuZy5cblx0XHRcdEFkZGl0aW9uYWw6IGltYWdlL2pwZWcuXG5cblx0b3B0aW9ucyBpcyBhIG1hcCBvZiBvcHRpb25zOiB7XG5cdFx0Y2FsbGJhY2s6IGZ1bmN0aW9uKGRhdGFVUkwpXG5cdFx0XHRDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgZGF0YSBVUkwgaXMgcmVhZHkuXG5cdFx0XHRUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gdXNpbmcgbmF0aXZlIFBORyByZW5kZXJlci5cblx0XHRcdERlZmF1bHQ6IHVuZGVmaW5lZC5cblxuXHRcdFt0aGUgcmVzdCBvZiB0aGUgb3B0aW9ucyBvbmx5IGFwcGx5IHdoZW4gdHlwZT1cImltYWdlL3BuZ1wiIG9yIHR5cGU9XCJpbWFnZS9qcGVnXCJdXG5cblx0XHRyZW5kZXJlcjogXCJuYXRpdmVcInxcImNhbnZnXCJcblx0XHRcdFBORyByZW5kZXJlciB0byB1c2UuIE5hdGl2ZSByZW5kZXJlcsK5IG1pZ2h0IGNhdXNlIGEgc2VjdXJpdHkgZXhjZXB0aW9uLlxuXHRcdFx0RGVmYXVsdDogY2FudmcgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgbmF0aXZlLlxuXG5cdFx0a2VlcE5vblNhZmU6IHRydWV8ZmFsc2Vcblx0XHRcdEV4cG9ydCBub24tc2FmZSAoaW1hZ2UgYW5kIGZvcmVpZ25PYmplY3QpIGVsZW1lbnRzLlxuXHRcdFx0VGhpcyB3aWxsIHNldCB0aGUgQ2FudmFzIG9yaWdpbi1jbGVhbiBwcm9wZXJ0eSB0byBmYWxzZSwgaWYgdGhpcyBkYXRhIGlzIHRyYW5zZmVycmVkIHRvIENhbnZhcy5cblx0XHRcdERlZmF1bHQ6IGZhbHNlLCB0byBrZWVwIG9yaWdpbi1jbGVhbiB0cnVlLlxuXHRcdFx0Tk9URTogbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYW5kIGlzIGp1c3QgaWdub3JlZC5cblxuXHRcdGtlZXBPdXRzaWRlVmlld3BvcnQ6IHRydWV8ZmFsc2Vcblx0XHRcdEV4cG9ydCBhbGwgZHJhd24gY29udGVudCwgZXZlbiBpZiBub3QgdmlzaWJsZS5cblx0XHRcdERlZmF1bHQ6IGZhbHNlLCBleHBvcnQgb25seSB2aXNpYmxlIHZpZXdwb3J0LCBzaW1pbGFyIHRvIENhbnZhcyB0b0RhdGFVUkwoKS5cblx0XHRcdE5PVEU6IG9ubHkgc3VwcG9ydGVkIHdpdGggY2FudmcgcmVuZGVyZXIuXG5cdH1cblxuXHRTZWUgb3JpZ2luYWwgcGFwZXLCuSBmb3IgbW9yZSBpbmZvIG9uIFNWRyB0byBDYW52YXMgZXhwb3J0aW5nLlxuXG5cdMK5IGh0dHA6Ly9zdmdvcGVuLm9yZy8yMDEwL3BhcGVycy82Mi1Gcm9tX1NWR190b19DYW52YXNfYW5kX0JhY2svI3N2Z190b19jYW52YXNcbiovXG5cblNWR0VsZW1lbnQucHJvdG90eXBlLnRvRGF0YVVSTCA9IGZ1bmN0aW9uKHR5cGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9zdmcgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIGRlYnVnKHMpIHtcbiAgICAvLyBXZSBjb3VsZCBmaW5kIHRvIGEgd2F5IHRvIG1ha2UgdGhpcyBkaXNwbGF5IGRlcGVuZGluZyBvbiBlbnZpcm9ubWVudCwgYnV0XG4gICAgLy8gZm9yIG5vdyBJIHRoaW5rIGl0J3Mgb2theSB0byBqdXN0IGRpc2FibGUuXG4gICAgLy8gY29uc29sZS5sb2coXCJTVkcudG9EYXRhVVJMOlwiLCBzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cG9ydFNWRygpIHtcbiAgICB2YXIgc3ZnX3htbCA9IFhNTFNlcmlhbGl6ZShfc3ZnKTtcbiAgICB2YXIgc3ZnX2RhdGF1cmwgPSBiYXNlNjRkYXRhVVJMZW5jb2RlKHN2Z194bWwpO1xuICAgIGRlYnVnKHR5cGUgKyAnIGxlbmd0aDogJyArIHN2Z19kYXRhdXJsLmxlbmd0aCk7XG5cbiAgICAvLyBOT1RFIGRvdWJsZSBkYXRhIGNhcnJpZXJcbiAgICBpZiAob3B0aW9ucy5jYWxsYmFjaykgb3B0aW9ucy5jYWxsYmFjayhzdmdfZGF0YXVybCk7XG4gICAgcmV0dXJuIHN2Z19kYXRhdXJsO1xuICB9XG5cbiAgZnVuY3Rpb24gWE1MU2VyaWFsaXplKHN2Zykge1xuICAgIC8vIHF1aWNrLW4tc2VyaWFsaXplIGFuIFNWRyBkb20sIG5lZWRlZCBmb3IgSUU5IHdoZXJlIHRoZXJlJ3Mgbm8gWE1MU2VyaWFsaXplciBub3IgU1ZHLnhtbFxuICAgIC8vIHM6IFNWRyBkb20sIHdoaWNoIGlzIHRoZSA8c3ZnPiBlbGVtZW5udFxuICAgIGZ1bmN0aW9uIFhNTFNlcmlhbGl6ZXJGb3JJRShzKSB7XG4gICAgICB2YXIgb3V0ID0gJyc7XG5cbiAgICAgIG91dCArPSAnPCcgKyBzLm5vZGVOYW1lO1xuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBzLmF0dHJpYnV0ZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgb3V0ICs9XG4gICAgICAgICAgJyAnICsgcy5hdHRyaWJ1dGVzW25dLm5hbWUgKyAnPScgKyBcIidcIiArIHMuYXR0cmlidXRlc1tuXS52YWx1ZSArIFwiJ1wiO1xuICAgICAgfVxuXG4gICAgICBpZiAocy5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgb3V0ICs9ICc+XFxuJztcblxuICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHMuY2hpbGROb2Rlcy5sZW5ndGg7IG4rKykge1xuICAgICAgICAgIG91dCArPSBYTUxTZXJpYWxpemVyRm9ySUUocy5jaGlsZE5vZGVzW25dKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dCArPSAnPC8nICsgcy5ub2RlTmFtZSArICc+JyArICdcXG4nO1xuICAgICAgfSBlbHNlIG91dCArPSAnIC8+XFxuJztcblxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LlhNTFNlcmlhbGl6ZXIpIHtcbiAgICAgIGRlYnVnKCd1c2luZyBzdGFuZGFyZCBYTUxTZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nJyk7XG4gICAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygndXNpbmcgY3VzdG9tIFhNTFNlcmlhbGl6ZXJGb3JJRScpO1xuICAgICAgcmV0dXJuIFhNTFNlcmlhbGl6ZXJGb3JJRShzdmcpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGJhc2U2NGRhdGFVUkxlbmNvZGUocykge1xuICAgIHZhciBiNjQgPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnO1xuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5idG9hXG4gICAgaWYgKHdpbmRvdy5idG9hKSB7XG4gICAgICBkZWJ1ZygndXNpbmcgd2luZG93LmJ0b2EgZm9yIGJhc2U2NCBlbmNvZGluZycpO1xuICAgICAgYjY0ICs9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCd1c2luZyBjdXN0b20gYmFzZTY0IGVuY29kZXInKTtcbiAgICAgIGI2NCArPSBCYXNlNjQuZW5jb2RlKHMpO1xuICAgIH1cblxuICAgIHJldHVybiBiNjQ7XG4gIH1cblxuICBmdW5jdGlvbiBleHBvcnRJbWFnZSh0eXBlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgIC8vIFRPRE86IGlmIChvcHRpb25zLmtlZXBPdXRzaWRlVmlld3BvcnQpLCBkbyBzb21lIHRyYW5zbGF0aW9uIG1hZ2ljP1xuXG4gICAgdmFyIHN2Z19pbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICB2YXIgc3ZnX3htbCA9IFhNTFNlcmlhbGl6ZShfc3ZnKTtcbiAgICBzdmdfaW1nLnNyYyA9IGJhc2U2NGRhdGFVUkxlbmNvZGUoc3ZnX3htbCk7XG5cbiAgICBzdmdfaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgZGVidWcoJ2V4cG9ydGVkIGltYWdlIHNpemU6ICcgKyBbc3ZnX2ltZy53aWR0aCwgc3ZnX2ltZy5oZWlnaHRdKTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHN2Z19pbWcud2lkdGg7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gc3ZnX2ltZy5oZWlnaHQ7XG4gICAgICBjdHguZHJhd0ltYWdlKHN2Z19pbWcsIDAsIDApO1xuXG4gICAgICAvLyBTRUNVUklUWV9FUlIgV0lMTCBIQVBQRU4gTk9XXG4gICAgICB2YXIgcG5nX2RhdGF1cmwgPSBjYW52YXMudG9EYXRhVVJMKHR5cGUpO1xuICAgICAgZGVidWcodHlwZSArICcgbGVuZ3RoOiAnICsgcG5nX2RhdGF1cmwubGVuZ3RoKTtcblxuICAgICAgaWYgKG9wdGlvbnMuY2FsbGJhY2spIG9wdGlvbnMuY2FsbGJhY2socG5nX2RhdGF1cmwpO1xuICAgICAgZWxzZSBkZWJ1ZygnV0FSTklORzogbm8gY2FsbGJhY2sgc2V0LCBzbyBub3RoaW5nIGhhcHBlbnMuJyk7XG4gICAgfTtcblxuICAgIHN2Z19pbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIFwiQ2FuJ3QgZXhwb3J0ISBNYXliZSB5b3VyIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IFwiICtcbiAgICAgICAgICAnU1ZHIGluIGltZyBlbGVtZW50IG9yIFNWRyBpbnB1dCBmb3IgQ2FudmFzIGRyYXdJbWFnZT9cXG4nICtcbiAgICAgICAgICAnaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TVkcjTmF0aXZlX3N1cHBvcnQnXG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBOT1RFOiB3aWxsIG5vdCByZXR1cm4gYW55dGhpbmdcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cG9ydEltYWdlQ2FudmcodHlwZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgdmFyIHN2Z194bWwgPSBYTUxTZXJpYWxpemUoX3N2Zyk7XG5cbiAgICAvLyBOT1RFOiBjYW52ZyBnZXRzIHRoZSBTVkcgZWxlbWVudCBkaW1lbnNpb25zIGluY29ycmVjdGx5IGlmIG5vdCBzcGVjaWZpZWQgYXMgYXR0cmlidXRlc1xuICAgIC8vZGVidWcoXCJkZXRlY3RlZCBzdmcgZGltZW5zaW9ucyBcIiArIFtfc3ZnLmNsaWVudFdpZHRoLCBfc3ZnLmNsaWVudEhlaWdodF0pXG4gICAgLy9kZWJ1ZyhcImNhbnZhcyBkaW1lbnNpb25zIFwiICsgW2NhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodF0pXG5cbiAgICB2YXIga2VlcEJCID0gb3B0aW9ucy5rZWVwT3V0c2lkZVZpZXdwb3J0O1xuICAgIGlmIChrZWVwQkIpIHZhciBiYiA9IF9zdmcuZ2V0QkJveCgpO1xuXG4gICAgLy8gTk9URTogdGhpcyBjYW52ZyBjYWxsIGlzIHN5bmNocm9ub3VzIGFuZCBibG9ja3MgKG5vIGl0IGRvZXMgbm90KVxuICAgIGNhbnZnKGNhbnZhcywgc3ZnX3htbCwge1xuICAgICAgaWdub3JlTW91c2U6IHRydWUsXG4gICAgICBpZ25vcmVBbmltYXRpb246IHRydWUsXG4gICAgICBvZmZzZXRYOiBrZWVwQkIgPyAtYmIueCA6IHVuZGVmaW5lZCxcbiAgICAgIG9mZnNldFk6IGtlZXBCQiA/IC1iYi55IDogdW5kZWZpbmVkLFxuICAgICAgc2NhbGVXaWR0aDoga2VlcEJCID8gYmIud2lkdGggKyBiYi54IDogdW5kZWZpbmVkLFxuICAgICAgc2NhbGVIZWlnaHQ6IGtlZXBCQiA/IGJiLmhlaWdodCArIGJiLnkgOiB1bmRlZmluZWQsXG4gICAgICByZW5kZXJDYWxsYmFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIGRlYnVnKCdleHBvcnRlZCBpbWFnZSBkaW1lbnNpb25zICcgKyBbY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0XSk7XG4gICAgICAgIHZhciBwbmdfZGF0YXVybCA9IGNhbnZhcy50b0RhdGFVUkwodHlwZSk7XG4gICAgICAgIGRlYnVnKHR5cGUgKyAnIGxlbmd0aDogJyArIHBuZ19kYXRhdXJsLmxlbmd0aCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuY2FsbGJhY2spIG9wdGlvbnMuY2FsbGJhY2socG5nX2RhdGF1cmwpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTk9URTogcmV0dXJuIGluIGFkZGl0aW9uIHRvIGNhbGxiYWNrXG4gICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwodHlwZSk7XG4gIH1cblxuICAvLyBCRUdJTiBNQUlOXG5cbiAgaWYgKCF0eXBlKSB0eXBlID0gJ2ltYWdlL3N2Zyt4bWwnO1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcblxuICBpZiAob3B0aW9ucy5rZWVwTm9uU2FmZSlcbiAgICBkZWJ1ZygnTk9URToga2VlcE5vblNhZmUgaXMgTk9UIHN1cHBvcnRlZCBhbmQgd2lsbCBiZSBpZ25vcmVkIScpO1xuICBpZiAob3B0aW9ucy5rZWVwT3V0c2lkZVZpZXdwb3J0KVxuICAgIGRlYnVnKCdOT1RFOiBrZWVwT3V0c2lkZVZpZXdwb3J0IGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggY2FudmcgZXhwb3J0ZXIuJyk7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnaW1hZ2Uvc3ZnK3htbCc6XG4gICAgICByZXR1cm4gZXhwb3J0U1ZHKCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2ltYWdlL3BuZyc6XG4gICAgY2FzZSAnaW1hZ2UvanBlZyc6XG4gICAgICBpZiAoIW9wdGlvbnMucmVuZGVyZXIpIHtcbiAgICAgICAgaWYgKHdpbmRvdy5jYW52Zykgb3B0aW9ucy5yZW5kZXJlciA9ICdjYW52Zyc7XG4gICAgICAgIGVsc2Ugb3B0aW9ucy5yZW5kZXJlciA9ICduYXRpdmUnO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKG9wdGlvbnMucmVuZGVyZXIpIHtcbiAgICAgICAgY2FzZSAnY2FudmcnOlxuICAgICAgICAgIGRlYnVnKCd1c2luZyBjYW52ZyByZW5kZXJlciBmb3IgcG5nIGV4cG9ydCcpO1xuICAgICAgICAgIHJldHVybiBleHBvcnRJbWFnZUNhbnZnKHR5cGUpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ25hdGl2ZSc6XG4gICAgICAgICAgZGVidWcoJ3VzaW5nIG5hdGl2ZSByZW5kZXJlciBmb3IgcG5nIGV4cG9ydC4gVEhJUyBNSUdIVCBGQUlMLicpO1xuICAgICAgICAgIHJldHVybiBleHBvcnRJbWFnZSh0eXBlKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGRlYnVnKFxuICAgICAgICAgICAgJ3Vua25vd24gcG5nIHJlbmRlcmVyIGdpdmVuLCBkb2luZyBub3RpbmcgKCcgK1xuICAgICAgICAgICAgICBvcHRpb25zLnJlbmRlcmVyICtcbiAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgZGVidWcoXCJTb3JyeSEgRXhwb3J0aW5nIGFzICdcIiArIHR5cGUgKyBcIicgaXMgbm90IHN1cHBvcnRlZCFcIik7XG4gIH1cbn07XG4iLCIvLyB0ZXN0cyBkb24ndCBoYXZlIHN2Z2VsZW1lbnRcbmlmICh0eXBlb2YgU1ZHRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gTG9hZGluZyB0aGVzZSBtb2R1bGVzIGV4dGVuZHMgU1ZHRWxlbWVudCBhbmQgcHV0cyBjYW52ZyBpbiB0aGUgZ2xvYmFsXG4gIC8vIG5hbWVzcGFjZVxuICByZXF1aXJlKCdjYW52ZycpO1xuICByZXF1aXJlKCcuLi90aGlyZC1wYXJ0eS9jYW52Zy9zdmdfdG9kYXRhdXJsJyk7XG59XG4iXSwibmFtZXMiOlsiU1ZHRWxlbWVudCIsInByb3RvdHlwZSIsInRvRGF0YVVSTCIsInR5cGUiLCJvcHRpb25zIiwiX3N2ZyIsInRoaXMiLCJYTUxTZXJpYWxpemUiLCJzdmciLCJ3aW5kb3ciLCJYTUxTZXJpYWxpemVyIiwic2VyaWFsaXplVG9TdHJpbmciLCJYTUxTZXJpYWxpemVyRm9ySUUiLCJzIiwib3V0Iiwibm9kZU5hbWUiLCJuIiwiYXR0cmlidXRlcyIsImxlbmd0aCIsIm5hbWUiLCJ2YWx1ZSIsImhhc0NoaWxkTm9kZXMiLCJjaGlsZE5vZGVzIiwiYmFzZTY0ZGF0YVVSTGVuY29kZSIsImI2NCIsImJ0b2EiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkJhc2U2NCIsImVuY29kZSIsImtlZXBOb25TYWZlIiwia2VlcE91dHNpZGVWaWV3cG9ydCIsImV4cG9ydFNWRyIsInN2Z19kYXRhdXJsIiwiY2FsbGJhY2siLCJyZW5kZXJlciIsImNhbnZnIiwiZXhwb3J0SW1hZ2VDYW52ZyIsImNhbnZhcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInN2Z194bWwiLCJnZXRDb250ZXh0Iiwia2VlcEJCIiwiYmIiLCJnZXRCQm94IiwiaWdub3JlTW91c2UiLCJpZ25vcmVBbmltYXRpb24iLCJvZmZzZXRYIiwieCIsInVuZGVmaW5lZCIsIm9mZnNldFkiLCJ5Iiwic2NhbGVXaWR0aCIsIndpZHRoIiwic2NhbGVIZWlnaHQiLCJoZWlnaHQiLCJyZW5kZXJDYWxsYmFjayIsInBuZ19kYXRhdXJsIiwiZXhwb3J0SW1hZ2UiLCJjdHgiLCJzdmdfaW1nIiwiSW1hZ2UiLCJzcmMiLCJvbmxvYWQiLCJkcmF3SW1hZ2UiLCJvbmVycm9yIiwiY29uc29sZSIsImxvZyIsInJlcXVpcmUiXSwic291cmNlUm9vdCI6IiJ9