aboutsummaryrefslogtreecommitdiff
path: root/node_modules/utila/scripts/js/lib/utila.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/utila/scripts/js/lib/utila.js')
-rw-r--r--node_modules/utila/scripts/js/lib/utila.js11
1 files changed, 11 insertions, 0 deletions
diff --git a/node_modules/utila/scripts/js/lib/utila.js b/node_modules/utila/scripts/js/lib/utila.js
new file mode 100644
index 000000000..c81012b0a
--- /dev/null
+++ b/node_modules/utila/scripts/js/lib/utila.js
@@ -0,0 +1,11 @@
+var utila;
+
+module.exports = utila = {
+ array: require('./array'),
+ classic: require('./classic'),
+ object: require('./object'),
+ string: require('./string'),
+ Emitter: require('./Emitter')
+};
+
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGEuanMiLCJzb3VyY2VSb290IjoiLi5cXC4uIiwic291cmNlcyI6WyJjb2ZmZWVcXGxpYlxcdXRpbGEuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsS0FBQTs7QUtBQSxNS0FNLENLQUMsT0tBUCxHS0FpQixLS0FBLEdLRWhCO0FLQUEsRUtBQSxLS0FBLEVLQU8sT0tBQSxDS0FRLFNLQVIsQ0tBUDtBS0FBLEVLQ0EsT0tBQSxFS0FTLE9LQUEsQ0tBUSxXS0FSLENLRFQ7QUtBQSxFS0VBLE1LQUEsRUtBUSxPS0FBLENLQVEsVUtBUixDS0ZSO0FLQUEsRUtHQSxNS0FBLEVLQVEsT0tBQSxDS0FRLFVLQVIsQ0tIUjtBS0FBLEVLSUEsT0tBQSxFS0FTLE9LQUEsQ0tBUSxXS0FSLENLSlQ7Q0FGRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhcnJheSA9XG5cblx0IyMjXG5cdFRyaWVzIHRvIHR1cm4gYW55dGhpbmcgaW50byBhbiBhcnJheS5cblx0IyMjXG5cdGZyb206IChyKSAtPlxuXG5cdFx0QXJyYXk6OnNsaWNlLmNhbGwgclxuXG5cdCMjI1xuXHRDbG9uZSBvZiBhbiBhcnJheS4gUHJvcGVydGllcyB3aWxsIGJlIHNoYWxsb3cgY29waWVzLlxuXHQjIyNcblx0c2ltcGxlQ2xvbmU6IChhKSAtPlxuXG5cdFx0YS5zbGljZSAwXG5cblx0c2hhbGxvd0VxdWFsOiAoYTEsIGEyKSAtPlxuXG5cdFx0cmV0dXJuIG5vIHVubGVzcyBBcnJheS5pc0FycmF5KGExKSBhbmQgQXJyYXkuaXNBcnJheShhMikgYW5kIGExLmxlbmd0aCBpcyBhMi5sZW5ndGhcblxuXHRcdGZvciB2YWwsIGkgaW4gYTFcblxuXHRcdFx0cmV0dXJuIG5vIHVubGVzcyBhMltpXSBpcyB2YWxcblxuXHRcdHllc1xuXG5cdHBsdWNrOiAoYSwgaSkgLT5cblxuXHRcdHJldHVybiBhIGlmIGEubGVuZ3RoIDwgMVxuXG5cblx0XHRmb3IgdmFsdWUsIGluZGV4IGluIGFcblxuXHRcdFx0aWYgaW5kZXggPiBpXG5cblx0XHRcdFx0YVtpbmRleCAtIDFdID0gYVtpbmRleF1cblxuXHRcdGEubGVuZ3RoID0gYS5sZW5ndGggLSAxXG5cblx0XHRhXG5cblx0cGx1Y2tJdGVtOiAoYSwgaXRlbSkgLT5cblxuXHRcdHJldHVybiBhIGlmIGEubGVuZ3RoIDwgMVxuXG5cblx0XHRyZW1vdmVkID0gMFxuXG5cdFx0Zm9yIHZhbHVlLCBpbmRleCBpbiBhXG5cblx0XHRcdGlmIHZhbHVlIGlzIGl0ZW1cblxuXHRcdFx0XHRyZW1vdmVkKytcblxuXHRcdFx0XHRjb250aW51ZVxuXG5cdFx0XHRpZiByZW1vdmVkIGlzbnQgMFxuXG5cdFx0XHRcdGFbaW5kZXggLSByZW1vdmVkXSA9IGFbaW5kZXhdXG5cblx0XHRhLmxlbmd0aCA9IGEubGVuZ3RoIC0gcmVtb3ZlZCBpZiByZW1vdmVkID4gMFxuXG5cdFx0YVxuXG5cdHBsdWNrT25lSXRlbTogKGEsIGl0ZW0pIC0+XG5cblx0XHRyZXR1cm4gYSBpZiBhLmxlbmd0aCA8IDFcblxuXHRcdHJlYWNoZWQgPSBub1xuXG5cdFx0Zm9yIHZhbHVlLCBpbmRleCBpbiBhXG5cblx0XHRcdGlmIG5vdCByZWFjaGVkXG5cblx0XHRcdFx0aWYgdmFsdWUgaXMgaXRlbVxuXG5cdFx0XHRcdFx0cmVhY2hlZCA9IHllc1xuXG5cdFx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0ZWxzZVxuXG5cdFx0XHRcdGFbaW5kZXggLSAxXSA9IGFbaW5kZXhdXG5cblx0XHRhLmxlbmd0aCA9IGEubGVuZ3RoIC0gMSBpZiByZWFjaGVkXG5cblx0XHRhXG5cblx0cGx1Y2tCeUNhbGxiYWNrOiAoYSwgY2IpIC0+XG5cblx0XHRyZXR1cm4gYSBpZiBhLmxlbmd0aCA8IDFcblxuXHRcdHJlbW92ZWQgPSAwXG5cblx0XHRmb3IgdmFsdWUsIGluZGV4IGluIGFcblxuXHRcdFx0aWYgY2IgdmFsdWUsIGluZGV4XG5cblx0XHRcdFx0cmVtb3ZlZCsrXG5cblx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0aWYgcmVtb3ZlZCBpc250IDBcblxuXHRcdFx0XHRhW2luZGV4IC0gcmVtb3ZlZF0gPSBhW2luZGV4XVxuXG5cdFx0aWYgcmVtb3ZlZCA+IDBcblxuXHRcdFx0YS5sZW5ndGggPSBhLmxlbmd0aCAtIHJlbW92ZWRcblxuXHRcdGFcblxuXHRwbHVja011bHRpcGxlOiAoYXJyYXksIGluZGV4ZXNUb1JlbW92ZSkgLT5cblxuXHRcdHJldHVybiBhcnJheSBpZiBhcnJheS5sZW5ndGggPCAxXG5cblx0XHRyZW1vdmVkU29GYXIgPSAwXG5cblx0XHRpbmRleGVzVG9SZW1vdmUuc29ydCgpXG5cblx0XHRmb3IgaSBpbiBpbmRleGVzVG9SZW1vdmVcblxuXHRcdFx0QHBsdWNrIGFycmF5LCBpIC0gcmVtb3ZlZFNvRmFyXG5cblx0XHRcdHJlbW92ZWRTb0ZhcisrXG5cblx0XHRhcnJheVxuXG5cdGluamVjdEJ5Q2FsbGJhY2s6IChhLCB0b0luamVjdCwgc2hvdWxkSW5qZWN0KSAtPlxuXG5cdFx0dmFsQSA9IG51bGxcblxuXHRcdHZhbEIgPSBudWxsXG5cblx0XHRsZW4gPSBhLmxlbmd0aFxuXG5cdFx0aWYgbGVuIDwgMVxuXG5cdFx0XHRhLnB1c2ggdG9JbmplY3RcblxuXHRcdFx0cmV0dXJuIGFcblxuXG5cdFx0Zm9yIHZhbCwgaSBpbiBhXG5cblx0XHRcdHZhbEEgPSB2YWxCXG5cblx0XHRcdHZhbEIgPSB2YWxcblxuXHRcdFx0aWYgc2hvdWxkSW5qZWN0IHZhbEEsIHZhbEIsIHRvSW5qZWN0XG5cblx0XHRcdFx0cmV0dXJuIGEuc3BsaWNlIGksIDAsIHRvSW5qZWN0XG5cblx0XHRhLnB1c2ggdG9JbmplY3RcblxuXHRcdGFcblxuXHRpbmplY3RJbkluZGV4OiAoYSwgaW5kZXgsIHRvSW5qZWN0KSAtPlxuXG5cdFx0bGVuID0gYS5sZW5ndGhcblxuXHRcdGkgPSBpbmRleFxuXG5cdFx0aWYgbGVuIDwgMVxuXG5cdFx0XHRhLnB1c2ggdG9JbmplY3RcblxuXHRcdFx0cmV0dXJuIGFcblxuXHRcdHRvUHV0ID0gdG9JbmplY3RcblxuXHRcdHRvUHV0TmV4dCA9IG51bGxcblxuXHRcdGBmb3IoOyBpIDw9IGxlbjsgaSsrKXtcblxuXHRcdFx0dG9QdXROZXh0ID0gYVtpXTtcblxuXHRcdFx0YVtpXSA9IHRvUHV0O1xuXG5cdFx0XHR0b1B1dCA9IHRvUHV0TmV4dDtcblxuXHRcdH1gXG5cblx0XHQjIGFbaV0gPSB0b1B1dFxuXG5cdFx0bnVsbCIsIm1vZHVsZS5leHBvcnRzID0gY2xhc3NpYyA9IHt9XG5cbiMgTGl0dGxlIGhlbHBlciBmb3IgbWl4aW5zIGZyb20gQ29mZmVlU2NyaXB0IEZBUSxcbiMgY291cnRlc3kgb2YgU2V0aGF1cnVzIChodHRwOi8vZ2l0aHViLmNvbS9zZXRoYXVydXMpXG5jbGFzc2ljLmltcGxlbWVudCA9IChtaXhpbnMuLi4sIGNsYXNzUmVmZXJlbmNlKSAtPlxuXG5cdGZvciBtaXhpbiBpbiBtaXhpbnNcblxuXHRcdGNsYXNzUHJvdG8gPSBjbGFzc1JlZmVyZW5jZTo6XG5cblx0XHRmb3IgbWVtYmVyIG9mIG1peGluOjpcblxuXHRcdFx0dW5sZXNzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2xhc3NQcm90bywgbWVtYmVyXG5cblx0XHRcdFx0ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgbWl4aW46OiwgbWVtYmVyXG5cblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5IGNsYXNzUHJvdG8sIG1lbWJlciwgZGVzY1xuXG5cdGNsYXNzUmVmZXJlbmNlXG5cbmNsYXNzaWMubWl4ID0gKG1peGlucy4uLiwgY2xhc3NSZWZlcmVuY2UpIC0+XG5cblx0Y2xhc3NQcm90byA9IGNsYXNzUmVmZXJlbmNlOjpcblxuXHRjbGFzc1JlZmVyZW5jZS5fX21peGluQ2xvbmVycyA9IFtdXG5cblx0Y2xhc3NSZWZlcmVuY2UuX19hcHBseUNsb25lcnNGb3IgPSAoaW5zdGFuY2UsIGFyZ3MgPSBudWxsKSAtPlxuXG5cdFx0Zm9yIGNsb25lciBpbiBjbGFzc1JlZmVyZW5jZS5fX21peGluQ2xvbmVyc1xuXG5cdFx0XHRjbG9uZXIuYXBwbHkgaW5zdGFuY2UsIGFyZ3NcblxuXHRcdHJldHVyblxuXG5cdGNsYXNzUmVmZXJlbmNlLl9fbWl4aW5Jbml0aWFsaXplcnMgPSBbXVxuXG5cdGNsYXNzUmVmZXJlbmNlLl9faW5pdE1peGluc0ZvciA9IChpbnN0YW5jZSwgYXJncyA9IG51bGwpIC0+XG5cblx0XHRmb3IgaW5pdGlhbGl6ZXIgaW4gY2xhc3NSZWZlcmVuY2UuX19taXhpbkluaXRpYWxpemVyc1xuXG5cdFx0XHRpbml0aWFsaXplci5hcHBseSBpbnN0YW5jZSwgYXJnc1xuXG5cdFx0cmV0dXJuXG5cblx0Y2xhc3NSZWZlcmVuY2UuX19taXhpblF1aXR0ZXJzID0gW11cblxuXHRjbGFzc1JlZmVyZW5jZS5fX2FwcGx5UXVpdHRlcnNGb3IgPSAoaW5zdGFuY2UsIGFyZ3MgPSBudWxsKSAtPlxuXG5cdFx0Zm9yIHF1aXR0ZXIgaW4gY2xhc3NSZWZlcmVuY2UuX19taXhpblF1aXR0ZXJzXG5cblx0XHRcdHF1aXR0ZXIuYXBwbHkgaW5zdGFuY2UsIGFyZ3NcblxuXHRcdHJldHVyblxuXG5cdGZvciBtaXhpbiBpbiBtaXhpbnNcblxuXHRcdHVubGVzcyBtaXhpbi5jb25zdHJ1Y3RvciBpbnN0YW5jZW9mIEZ1bmN0aW9uXG5cblx0XHRcdHRocm93IEVycm9yIFwiTWl4aW4gc2hvdWxkIGJlIGEgZnVuY3Rpb25cIlxuXG5cdFx0Zm9yIG1lbWJlciBvZiBtaXhpbjo6XG5cblx0XHRcdGlmIG1lbWJlci5zdWJzdHIoMCwgMTEpIGlzICdfX2luaXRNaXhpbidcblxuXHRcdFx0XHRjbGFzc1JlZmVyZW5jZS5fX21peGluSW5pdGlhbGl6ZXJzLnB1c2ggbWl4aW46OlttZW1iZXJdXG5cblx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0ZWxzZSBpZiBtZW1iZXIuc3Vic3RyKDAsIDExKSBpcyAnX19jbG9uZXJGb3InXG5cblx0XHRcdFx0Y2xhc3NSZWZlcmVuY2UuX19taXhpbkNsb25lcnMucHVzaCBtaXhpbjo6W21lbWJlcl1cblxuXHRcdFx0XHRjb250aW51ZVxuXG5cdFx0XHRlbHNlIGlmIG1lbWJlci5zdWJzdHIoMCwgMTIpIGlzICdfX3F1aXR0ZXJGb3InXG5cblx0XHRcdFx0Y2xhc3NSZWZlcmVuY2UuX19taXhpblF1aXR0ZXJzLnB1c2ggbWl4aW46OlttZW1iZXJdXG5cblx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0dW5sZXNzIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgY2xhc3NQcm90bywgbWVtYmVyXG5cblx0XHRcdFx0ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgbWl4aW46OiwgbWVtYmVyXG5cblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5IGNsYXNzUHJvdG8sIG1lbWJlciwgZGVzY1xuXG5cdGNsYXNzUmVmZXJlbmNlIiwiYXJyYXkgPSByZXF1aXJlICcuL2FycmF5J1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBjbGFzcyBFbWl0dGVyXHJcblxyXG5cdGNvbnN0cnVjdG9yOiAtPlxyXG5cclxuXHRcdEBfbGlzdGVuZXJzID0ge31cclxuXHJcblx0XHRAX2xpc3RlbmVyc0ZvckFueUV2ZW50ID0gW11cclxuXHJcblx0XHRAX2Rpc2FibGVkRW1pdHRlcnMgPSB7fVxyXG5cclxuXHRvbjogKGV2ZW50TmFtZSwgbGlzdGVuZXIpIC0+XHJcblxyXG5cdFx0dW5sZXNzIEBfbGlzdGVuZXJzW2V2ZW50TmFtZV0/XHJcblxyXG5cdFx0XHRAX2xpc3RlbmVyc1tldmVudE5hbWVdID0gW11cclxuXHJcblx0XHRAX2xpc3RlbmVyc1tldmVudE5hbWVdLnB1c2ggbGlzdGVuZXJcclxuXHJcblx0XHRAXHJcblxyXG5cdG9uY2U6IChldmVudE5hbWUsIGxpc3RlbmVyKSAtPlxyXG5cclxuXHRcdHJhbiA9IG5vXHJcblxyXG5cdFx0Y2IgPSA9PlxyXG5cclxuXHRcdFx0cmV0dXJuIGlmIHJhblxyXG5cclxuXHRcdFx0cmFuID0geWVzXHJcblxyXG5cdFx0XHRkbyBsaXN0ZW5lclxyXG5cclxuXHRcdFx0c2V0VGltZW91dCA9PlxyXG5cclxuXHRcdFx0XHRAcmVtb3ZlRXZlbnQgZXZlbnROYW1lLCBjYlxyXG5cclxuXHRcdFx0LCAwXHJcblxyXG5cdFx0QG9uIGV2ZW50TmFtZSwgY2JcclxuXHJcblx0XHRAXHJcblxyXG5cdG9uQW55RXZlbnQ6IChsaXN0ZW5lcikgLT5cclxuXHJcblx0XHRAX2xpc3RlbmVyc0ZvckFueUV2ZW50LnB1c2ggbGlzdGVuZXJcclxuXHJcblx0XHRAXHJcblxyXG5cdHJlbW92ZUV2ZW50OiAoZXZlbnROYW1lLCBsaXN0ZW5lcikgLT5cclxuXHJcblx0XHRyZXR1cm4gQCB1bmxlc3MgQF9saXN0ZW5lcnNbZXZlbnROYW1lXT9cclxuXHJcblx0XHRhcnJheS5wbHVja09uZUl0ZW0gQF9saXN0ZW5lcnNbZXZlbnROYW1lXSwgbGlzdGVuZXJcclxuXHJcblx0XHRAXHJcblxyXG5cdHJlbW92ZUxpc3RlbmVyczogKGV2ZW50TmFtZSkgLT5cclxuXHJcblx0XHRyZXR1cm4gQCB1bmxlc3MgQF9saXN0ZW5lcnNbZXZlbnROYW1lXT9cclxuXHJcblx0XHRAX2xpc3RlbmVyc1tldmVudE5hbWVdLmxlbmd0aCA9IDBcclxuXHJcblx0XHRAXHJcblxyXG5cdHJlbW92ZUFsbExpc3RlbmVyczogLT5cclxuXHJcblx0XHRmb3IgbmFtZSwgbGlzdGVuZXJzIG9mIEBfbGlzdGVuZXJzXHJcblxyXG5cdFx0XHRsaXN0ZW5lcnMubGVuZ3RoID0gMFxyXG5cclxuXHRcdEBcclxuXHJcblx0X2VtaXQ6IChldmVudE5hbWUsIGRhdGEpIC0+XHJcblxyXG5cdFx0Zm9yIGxpc3RlbmVyIGluIEBfbGlzdGVuZXJzRm9yQW55RXZlbnRcclxuXHJcblx0XHRcdGxpc3RlbmVyLmNhbGwgQCwgZGF0YSwgZXZlbnROYW1lXHJcblxyXG5cdFx0cmV0dXJuIHVubGVzcyBAX2xpc3RlbmVyc1tldmVudE5hbWVdP1xyXG5cclxuXHRcdGZvciBsaXN0ZW5lciBpbiBAX2xpc3RlbmVyc1tldmVudE5hbWVdXHJcblxyXG5cdFx0XHRsaXN0ZW5lci5jYWxsIEAsIGRhdGFcclxuXHJcblx0XHRyZXR1cm5cclxuXHJcblx0IyB0aGlzIG1ha2VzIHN1cmUgdGhhdCBhbGwgdGhlIGNhbGxzIHRvIHRoaXMgY2xhc3MncyBtZXRob2QgJ2ZuTmFtZSdcclxuXHQjIGFyZSB0aHJvdHRsZWRcclxuXHRfdGhyb3R0bGVFbWl0dGVyTWV0aG9kOiAoZm5OYW1lLCB0aW1lID0gMTAwMCkgLT5cclxuXHJcblx0XHRvcmlnaW5hbEZuID0gQFtmbk5hbWVdXHJcblxyXG5cdFx0aWYgdHlwZW9mIG9yaWdpbmFsRm4gaXNudCAnZnVuY3Rpb24nXHJcblxyXG5cdFx0XHR0aHJvdyBFcnJvciBcInRoaXMgY2xhc3MgZG9lcyBub3QgaGF2ZSBhIG1ldGhvZCBjYWxsZWQgJyN7Zm5OYW1lfSdcIlxyXG5cclxuXHRcdGxhc3RDYWxsQXJncyA9IG51bGxcclxuXHRcdHBlbmRpbmcgPSBub1xyXG5cdFx0dGltZXIgPSBudWxsXHJcblxyXG5cdFx0QFtmbk5hbWVdID0gPT5cclxuXHJcblx0XHRcdGxhc3RDYWxsQXJncyA9IGFyZ3VtZW50c1xyXG5cclxuXHRcdFx0ZG8gcGVuZFxyXG5cclxuXHRcdHBlbmQgPSA9PlxyXG5cclxuXHRcdFx0aWYgcGVuZGluZ1xyXG5cclxuXHRcdFx0XHRjbGVhclRpbWVvdXQgdGltZXJcclxuXHJcblx0XHRcdHRpbWVyID0gc2V0VGltZW91dCBydW5JdCwgdGltZVxyXG5cclxuXHRcdFx0cGVuZGluZyA9IHllc1xyXG5cclxuXHRcdHJ1bkl0ID0gPT5cclxuXHJcblx0XHRcdHBlbmRpbmcgPSBub1xyXG5cclxuXHRcdFx0b3JpZ2luYWxGbi5hcHBseSBALCBsYXN0Q2FsbEFyZ3NcclxuXHJcblx0X2Rpc2FibGVFbWl0dGVyOiAoZm5OYW1lKSAtPlxyXG5cclxuXHRcdGlmIEBfZGlzYWJsZWRFbWl0dGVyc1tmbk5hbWVdP1xyXG5cclxuXHRcdFx0dGhyb3cgRXJyb3IgXCIje2ZuTmFtZX0gaXMgYWxyZWFkeSBhIGRpc2FibGVkIGVtaXR0ZXJcIlxyXG5cclxuXHRcdEBfZGlzYWJsZWRFbWl0dGVyc1tmbk5hbWVdID0gQFtmbk5hbWVdXHJcblxyXG5cdFx0QFtmbk5hbWVdID0gLT5cclxuXHJcblx0X2VuYWJsZUVtaXR0ZXI6IChmbk5hbWUpIC0+XHJcblxyXG5cdFx0Zm4gPSBAX2Rpc2FibGVkRW1pdHRlcnNbZm5OYW1lXVxyXG5cclxuXHRcdHVubGVzcyBmbj9cclxuXHJcblx0XHRcdHRocm93IEVycm9yIFwiI3tmbk5hbWV9IGlzIG5vdCBhIGRpc2FibGVkIGVtaXR0ZXJcIlxyXG5cclxuXHRcdEBbZm5OYW1lXSA9IGZuXHJcblxyXG5cdFx0ZGVsZXRlIEBfZGlzYWJsZWRFbWl0dGVyc1tmbk5hbWVdIiwiX2NvbW1vbiA9IHJlcXVpcmUgJy4vX2NvbW1vbidcblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3QgPVxuXG5cdGlzQmFyZU9iamVjdDogX2NvbW1vbi5pc0JhcmVPYmplY3QuYmluZCBfY29tbW9uXG5cblx0IyMjXG5cdGlmIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzXG5cdCMjI1xuXHRpc0luc3RhbmNlOiAod2hhdCkgLT5cblxuXHRcdG5vdCBAaXNCYXJlT2JqZWN0IHdoYXRcblxuXHQjIyNcblx0QWxpYXMgdG8gX2NvbW1vbi50eXBlT2Zcblx0IyMjXG5cdHR5cGVPZjogX2NvbW1vbi50eXBlT2YuYmluZCBfY29tbW9uXG5cblx0IyMjXG5cdEFsaWFzIHRvIF9jb21tb24uY2xvbmVcblx0IyMjXG5cdGNsb25lOiBfY29tbW9uLmNsb25lLmJpbmQgX2NvbW1vblxuXG5cdCMjI1xuXHRFbXB0aWVzIGFuIG9iamVjdCBvZiBpdHMgcHJvcGVydGllcy5cblx0IyMjXG5cdGVtcHR5OiAobykgLT5cblxuXHRcdGZvciBwcm9wIG9mIG9cblxuXHRcdFx0ZGVsZXRlIG9bcHJvcF0gaWYgby5oYXNPd25Qcm9wZXJ0eSBwcm9wXG5cblx0XHRvXG5cblx0IyMjXG5cdEVtcHRpZXMgYW4gb2JqZWN0LiBEb2Vzbid0IGNoZWNrIGZvciBoYXNPd25Qcm9wZXJ0eSwgc28gaXQncyBhIHRpbnlcblx0Yml0IGZhc3Rlci4gVXNlIGl0IGZvciBwbGFpbiBvYmplY3RzLlxuXHQjIyNcblx0ZmFzdEVtcHR5OiAobykgLT5cblxuXHRcdGRlbGV0ZSBvW3Byb3BlcnR5XSBmb3IgcHJvcGVydHkgb2Ygb1xuXG5cdFx0b1xuXG5cdCMjI1xuXHRPdmVycmlkZXMgdmFsdWVzIGZvbXIgYG5ld1ZhbHVlc2Agb24gYGJhc2VgLCBhcyBsb25nIGFzIHRoZXlcblx0YWxyZWFkeSBleGlzdCBpbiBiYXNlLlxuXHQjIyNcblx0b3ZlcnJpZGVPbnRvOiAoYmFzZSwgbmV3VmFsdWVzKSAtPlxuXG5cdFx0cmV0dXJuIGJhc2UgaWYgbm90IEBpc0JhcmVPYmplY3QobmV3VmFsdWVzKSBvciBub3QgQGlzQmFyZU9iamVjdChiYXNlKVxuXG5cdFx0Zm9yIGtleSwgb2xkVmFsIG9mIGJhc2VcblxuXHRcdFx0bmV3VmFsID0gbmV3VmFsdWVzW2tleV1cblxuXHRcdFx0Y29udGludWUgaWYgbmV3VmFsIGlzIHVuZGVmaW5lZFxuXG5cdFx0XHRpZiB0eXBlb2YgbmV3VmFsIGlzbnQgJ29iamVjdCcgb3IgQGlzSW5zdGFuY2UgbmV3VmFsXG5cblx0XHRcdFx0YmFzZVtrZXldID0gQGNsb25lIG5ld1ZhbFxuXG5cdFx0XHQjIG5ld1ZhbCBpcyBhIHBsYWluIG9iamVjdFxuXHRcdFx0ZWxzZVxuXG5cdFx0XHRcdGlmIHR5cGVvZiBvbGRWYWwgaXNudCAnb2JqZWN0JyBvciBAaXNJbnN0YW5jZSBvbGRWYWxcblxuXHRcdFx0XHRcdGJhc2Vba2V5XSA9IEBjbG9uZSBuZXdWYWxcblxuXHRcdFx0XHRlbHNlXG5cblx0XHRcdFx0XHRAb3ZlcnJpZGVPbnRvIG9sZFZhbCwgbmV3VmFsXG5cdFx0YmFzZVxuXG5cdCMjI1xuXHRUYWtlcyBhIGNsb25lIG9mICdiYXNlJyBhbmQgcnVucyAjb3ZlcnJpZGVPbnRvIG9uIGl0XG5cdCMjI1xuXHRvdmVycmlkZTogKGJhc2UsIG5ld1ZhbHVlcykgLT5cblxuXHRcdEBvdmVycmlkZU9udG8gQGNsb25lKGJhc2UpLCBuZXdWYWx1ZXNcblxuXHRhcHBlbmQ6IChiYXNlLCB0b0FwcGVuZCkgLT5cblxuXHRcdEBhcHBlbmRPbnRvIEBjbG9uZShiYXNlKSwgdG9BcHBlbmRcblxuXHQjIERlZXAgYXBwZW5kcyB2YWx1ZXMgZnJvbSBgdG9BcHBlbmRgIHRvIGBiYXNlYFxuXHRhcHBlbmRPbnRvOiAoYmFzZSwgdG9BcHBlbmQpIC0+XG5cblx0XHRyZXR1cm4gYmFzZSBpZiBub3QgQGlzQmFyZU9iamVjdCh0b0FwcGVuZCkgb3Igbm90IEBpc0JhcmVPYmplY3QoYmFzZSlcblxuXHRcdGZvciBvd24ga2V5LCBuZXdWYWwgb2YgdG9BcHBlbmRcblxuXHRcdFx0Y29udGludWUgdW5sZXNzIG5ld1ZhbCBpc250IHVuZGVmaW5lZFxuXG5cdFx0XHRpZiB0eXBlb2YgbmV3VmFsIGlzbnQgJ29iamVjdCcgb3IgQGlzSW5zdGFuY2UgbmV3VmFsXG5cblx0XHRcdFx0YmFzZVtrZXldID0gbmV3VmFsXG5cblx0XHRcdGVsc2VcblxuXHRcdFx0XHQjIG5ld1ZhbCBpcyBhIGJhcmUgb2JqZWN0XG5cblx0XHRcdFx0b2xkVmFsID0gYmFzZVtrZXldXG5cblx0XHRcdFx0aWYgdHlwZW9mIG9sZFZhbCBpc250ICdvYmplY3QnIG9yIEBpc0luc3RhbmNlIG9sZFZhbFxuXG5cdFx0XHRcdFx0YmFzZVtrZXldID0gQGNsb25lIG5ld1ZhbFxuXG5cdFx0XHRcdGVsc2VcblxuXHRcdFx0XHRcdEBhcHBlbmRPbnRvIG9sZFZhbCwgbmV3VmFsXG5cblx0XHRiYXNlXG5cblx0IyBHcm91cHNcblx0Z3JvdXBQcm9wczogKG9iaiwgZ3JvdXBzKSAtPlxuXG5cdFx0Z3JvdXBlZCA9IHt9XG5cblx0XHRmb3IgbmFtZSwgZGVmcyBvZiBncm91cHNcblxuXHRcdFx0Z3JvdXBlZFtuYW1lXSA9IHt9XG5cblx0XHRncm91cGVkWydyZXN0J10gPSB7fVxuXG5cdFx0YHRvcDogLy9gXG5cdFx0Zm9yIGtleSwgdmFsIG9mIG9ialxuXG5cdFx0XHRzaG91bGRBZGQgPSBub1xuXG5cdFx0XHRmb3IgbmFtZSwgZGVmcyBvZiBncm91cHNcblxuXHRcdFx0XHR1bmxlc3MgQXJyYXkuaXNBcnJheSBkZWZzXG5cblx0XHRcdFx0XHRkZWZzID0gW2RlZnNdXG5cblx0XHRcdFx0Zm9yIGRlZiBpbiBkZWZzXG5cblx0XHRcdFx0XHRpZiB0eXBlb2YgZGVmIGlzICdzdHJpbmcnXG5cblx0XHRcdFx0XHRcdGlmIGtleSBpcyBkZWZcblxuXHRcdFx0XHRcdFx0XHRzaG91bGRBZGQgPSB5ZXNcblxuXHRcdFx0XHRcdGVsc2UgaWYgZGVmIGluc3RhbmNlb2YgUmVnRXhwXG5cblx0XHRcdFx0XHRcdGlmIGRlZi50ZXN0IGtleVxuXG5cdFx0XHRcdFx0XHRcdHNob3VsZEFkZCA9IHllc1xuXG5cdFx0XHRcdFx0ZWxzZSBpZiBkZWYgaW5zdGFuY2VvZiBGdW5jdGlvblxuXG5cdFx0XHRcdFx0XHRpZiBkZWYga2V5XG5cblx0XHRcdFx0XHRcdFx0c2hvdWxkQWRkID0geWVzXG5cblx0XHRcdFx0XHRlbHNlXG5cblx0XHRcdFx0XHRcdHRocm93IEVycm9yICdHcm91cCBkZWZpbml0aW9ucyBtdXN0IGVpdGhlclxuXHRcdFx0XHRcdFx0YmUgc3RyaW5ncywgcmVnZXhlcywgb3IgZnVuY3Rpb25zLidcblxuXHRcdFx0XHRcdGlmIHNob3VsZEFkZFxuXG5cdFx0XHRcdFx0XHRncm91cGVkW25hbWVdW2tleV0gPSB2YWxcblxuXHRcdFx0XHRcdFx0YGNvbnRpbnVlIHRvcGBcblxuXHRcdFx0Z3JvdXBlZFsncmVzdCddW2tleV0gPSB2YWxcblxuXHRcdGdyb3VwZWQiLCJtb2R1bGUuZXhwb3J0cyA9XHJcblxyXG5cdCMgcGFkcyBhIG51bWJlciB3aXRoIGxlYWRpbmcgemVyb2VzXHJcblx0I1xyXG5cdCMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTAwNzM3ODgvNjA3OTk3XHJcblx0cGFkOiAobiwgd2lkdGgsIHogPSAnMCcpIC0+XHJcblxyXG5cdFx0biA9IG4gKyAnJ1xyXG5cclxuXHRcdGlmIG4ubGVuZ3RoID49IHdpZHRoXHJcblxyXG5cdFx0XHRuXHJcblxyXG5cdFx0ZWxzZVxyXG5cclxuXHRcdFx0bmV3IEFycmF5KHdpZHRoIC0gbi5sZW5ndGggKyAxKS5qb2luKHopICsgbiIsIm1vZHVsZS5leHBvcnRzID0gdXRpbGEgPVxuXG5cdGFycmF5OiByZXF1aXJlICcuL2FycmF5J1xuXHRjbGFzc2ljOiByZXF1aXJlICcuL2NsYXNzaWMnXG5cdG9iamVjdDogcmVxdWlyZSAnLi9vYmplY3QnXG5cdHN0cmluZzogcmVxdWlyZSAnLi9zdHJpbmcnXG5cdEVtaXR0ZXI6IHJlcXVpcmUgJy4vRW1pdHRlciciXX0= \ No newline at end of file