<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>CGCalendar</name>
	<version>2.1.2</version>
  <mincmsversion>2.1.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPkNhbGd1eXMgQ2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUgbW9kdWxlIGlzIGluc3RhbGxlZCwgYSAmcXVvdDtDYWxndXlzIENhbGVuZGFyJnF1b3Q7IGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIHBsdWdpbnMgbWVudQp0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+Cgo8aDM+U2VjdXJpdHk8L2gzPgo8cD5UaGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICdNb2RpZnkgQ2FsZW5kYXInIHBlcm1pc3Npb24gaW4gb3JkZXIgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnQgZW50cmllcy48L3A+Cgo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CjxvbD4KICA8bGk+UHV0IHRoZSBjbXNfbW9kdWxlIHRhZyBpbiB0aGUgcGFnZSBjb250ZW50LiBNYWtlIHN1cmUgaXQgaXMgbm90IGVuY2xvc2VkIGluICZsdDtwcmUmZ3Q7Li4uJmx0Oy9wcmUmZ3Q7IHRhZ3MuICBZb3Ugd2lsbCBuZWVkIHRvIHZpZXcgc291cmNlIGNvZGUgZm9yIHRoaXMuICBUaGUgY29kZSB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOjxiciAvPgogIDx0dD57Y21zX21vZHVsZSBtb2R1bGU9IkNHQ2FsZW5kYXIifTwvdHQ+PGJyIC8+CiAgPGxpPlN0eWxlIHRoZSBjYWxlbmRhciBhcHByb3ByaWF0ZWx5IGZvciB5b3VyIGRpc3BsYXk8L2xpPgo8L29sPgoKPGgzPk5vdGVzOjwvaDM+Cjx1bD4KICA8bGk+QWRtaW4gVGhlbWVzCiAgICA8cD5UaGlzIG1vZHVsZXMgYWRtaW4gcGFuZWwgPGVtPih2ZXJzaW9uIDEuMTQrKSByZWxpZXMgaGVhdmlseSBvbiBzdHlsZXMgYW5kIHRvb2xzIGluIHRoZSBDTVNNUyBPbmVFbGV2ZW4gYWRtaW4gdGhlbWUuICBJdCBtYXkgbm90IGZ1bmN0aW9uIHByb3BlcnkgKG9yIGF0IGxlYXN0IGxvb2sgcHJvcGVybHkpIGluIG90aGVyIGFkbWluIHRoZW1lcyB0aGF0IGRvbid0IGRpcmVjdGx5IHJlcGxpY2F0ZSB0aGVzZSBzdHlsZXMuPC9wPgogIDwvbGk+CiAgPGxpPlRlbXBsYXRlcwogICAgPHA+VGhlIGRlZmF1bHQgdGVtcGxhdGVzIHByb3ZpZGVkIHdpdGggdGhpcyBtb2R1bGUgYXJlIHB1cmVseSBzYW1wbGVzLiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdCB0aGUgdGVtcGxhdGVzLCBhbmQgYWRkIHN0eWxlcyB0byB5b3VyIHN0eWxlc2hlZXRzIGluIG9yZGVyIHRvIGFkanVzdCB0aGUgb3V0cHV0IG9mIHRoaXMgbW9kdWxlIHRvIG1hdGNoIHlvdXIgdXNhZ2UsIGFuZCB5b3VyIHNpdGVzIHRoZW1lLjwvcD4KICA8L2xpPgogIDxsaT5qUXVlcnkKICAgIDxwPlRoZSB0ZW1wbGF0ZXMgcHJvdmlkZWQgYnkgZGVmYXVsdCB3aXRoIHRoaXMgbW9kdWxlIG1ha2UgdXNlIG9mIEpRdWVyeSwgYW5kIEpRdWVyeVVJLiBJbiBvcmRlciBmb3IgdGhlIHByb3BlciBmdW5jdGlvbmluZyBvZiB0aGlzIG1vZHVsZSBvbiBhIGRlZmF1bHQgaW5zdGFsbCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvcGVybHkgY29uZmlndXJlZCBvbiB0aGUgd2ViIHBhZ2VzIHRoYXQgd2lsbCBiZSBkaXNwbGF5aW5nIHRoZSBvdXRwdXQgb2YgdGhpcyBtb2R1bGUuPC9wPgogIDwvbGk+CjwvdWw+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+CiAgPHRyPgogICAgIDx0ZD5hY3Rpb248L3RkPgogICAgIDx0ZD5BY2NlcHRhYmxlIHZhbHVlczo8YnI+CiAgICAgICAgImRlZmF1bHQiIC0gU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFjdGlvbiwgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgImRpc3BsYXkiIHBhcmFtZXRlciBiZWxvdy48YnIvPgoJImZ1bGxjYWxlbmRhciIgLSBVc2VzIHRoZSBmdWxsQ2FsZW5kYXIganF1ZXJ5IHBsdWdpbiAocmVxdWlyZXMganF1ZXJ5LCBqcXVlcnktdWkgYW5kIGpzcmVuZGVyIHRvIGJlIGVuYWJsZWQpIHRvIHByb3ZpZGUgYSBkeW5hbWljIGludGVyYWN0aXZlIGNhbGVuZGFyIGRpc3BsYXkuCgkic2VhcmNoIiAtIERpc3BsYXkgYSBmb3JtIGZvciBhZHZhbmNlZCBzZWFyY2hpbmcgb2YgY2FsZW5kYXIgZXZlbnRzLjxici8+CiAgICAgICAgIm15ZXZlbnRzIiAtIERpc3BsYXkgYSBsaXN0IG9mIGFsbCBvZiBhIHVzZXJzIGV2ZW50cywgYW5kIGFsbG93IGFkZGluZywgZWRpdGluZyBvciBkZWxldGluZyB0aG9zZSBldmVudHM8YnIvPgogICAgICAgICJhZGRlZGl0X2V2ZW50IiAtIERpc3BsYXkgYSBmb3JtIGFsbG93aW5nIHRvIGFkZCBvciBlZGl0IGEgc2luZ2xlIGV2ZW50LjsKICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZGlzcGxheTwvdGQ+CiAgICAgPHRkPkFjY2VwdGFibGUgdmFsdWVzOjxicj4KCSAiZnVsbGNhbGVuZGFyIiAtIGRpc3BsYXlzIGV2ZW50cyBmb3IgdGhlIGN1cnJlbnQgbW9udGggaW4gYSBkeW5hbWljIGphdmFzY3JpcHQgZm9ybS48L3A+CgkgImV2ZW50IiAtIGRpc3BsYXkgYSBkZXRhaWwgcmVwb3J0IGZvciBhIHNwZWNpZmljIGV2ZW50LiAgVG8gdXNlIHRoaXMgZGlzcGxheSBtb2RlLCB0aGUgZXZlbnRfaWQgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkLjxici8+CgkgImxpc3QvbW9udGgiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBtb250aCBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCBtb250aHMuPGJyLz4KCSAiZGF5bGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IGRheSBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCB3ZWVrcy48YnIvPgoJICJ3ZWVrbGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IHdlZWsgYXMgYSBsaXN0LiAgSW5jbHVkZXMgbGlua3MgdG8gcHJldi4gYW5kIG5leHQgd2Vla3MuPGJyLz4KCSAieWVhcmxpc3QiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCB5ZWFyIGluIGEgbGlzdC4gIEluY2x1ZGVzIGxpbmtzIHRvIHByZXYuIGFuZCBuZXh0IHllYXJzLjxici8+CgkgInBhc3RsaXN0IiAtIGRpc3BsYXlzIGFsbCBwYXN0IGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgoJICJ1cGNvbWluZ2xpc3QiIC0gZGlzcGxheXMgYWxsIHVwY29taW5nIGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgogIAkgIERlZmF1bHRzIHRvICJmdWxsY2FsZW5kYXIiIDxlbT4ob3B0aW9uYWwpPC9lbT4KICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+Y2F0ZWdvcnk8L3RkPgogICAgIDx0ZD5Pbmx5IGRpc3BsYXkgaXRlbXMgZm9yIHRoYXQgY2F0ZWdvcnkuIExlYXZpbmcgdW5zZXQsIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAgPHA+Tm90ZSB0aGF0IHlvdSBjYW4gbGltaXQgdG8gbXVsdGlwbGUgY2F0ZWdvcmllcyBieSBzZXBhcmF0aW5nIGVhY2ggb25lIHdpdGggYSBjb21tYS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlCiAgICAgICAgIHVzZWQgd2l0aCB0aGUgbXlldmVudHMgYWN0aW9uIGFuZCB3aXRoIHRoZSB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucy4gIElmIG11bHRpcGxlIGNhdGVnb3J5IG5hbWVzIGFyZSBzcGVjaWZpZWQKICAgICAgICAgYSBtYXRjaCBpcyBkb25lIG9uIEFOWSBvZiB0aGUgY2F0ZWdvcmllcyBzcGVjaWZpZWQuIDxlbT4ob3B0aW9uYWwpPC9lbT48L3A+CgkgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPm1vbnRoPC90ZD4KICAgICA8dGQ+RGlzcGxheSBlbnRyaWVzIGZvciBhIHBhcnRpY3VsYXIgbW9udGguIElmIHllYXIgaXMgbm90IHNldCwgdGhlbiB0aGUgY3VycmVudCB5ZWFyIGlzCgkgYXNzdW1lZC4gVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIG9uZSBvZiB0aGUgbGlzdCB2aWV3cy48ZW0+KG9wdGlvbmFsKTwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPnllYXI8L3RkPgogICAgIDx0ZD5EaXNwbGF5IGVudHJpZXMgZm9yIGEgcGFydGljdWxhciB5ZWFyLgoJVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIHNldCB0byAibGlzdCIgPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5saW1pdDwvdGQ+Cgk8dGQ+PGVtPihvcHRpb25hbCk8L2VtPiAgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheS4gVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSB2YXJpb3VzICJsaXN0IiB2aWV3cy4gIFRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgbGltaXQgcGFyYW1ldGVyIGlzIDUwMDAgZXZlbnRzLjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD51c2Vfc2Vzc2lvbjwvdGQ+CiAgICAgPHRkPlVzZSBzZXNzaW9uIHZhcmlhYmxlcyB0byBzdG9yZSB0aGUgY3VycmVudCBkYXRlIG9mIGEgY2FsZW5kYXIgdmlldy4gVGhpcyBpcyB1c2VkIG9ubHkgaW4gdGhlIHNlYXJjaCBmb3JtIHRvIGFsbG93IHNhdmluZyB0aGUgc2VhcmNoIHNldHRpbmdzIHVudGlsIHRoZSBicm93c2VyIGlzIHJlc2V0LiAgRGVmYXVsdCBpcyBmYWxzZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+cmV2ZXJzZTwvdGQ+CiAgICAgPHRkPlNldCB0byB0cnVlIHRvIGRpc3BsYXkgZXZlbnRzIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlci4gQXBwbGljYWJsZSB0byAibGlzdCIsICJwYXN0bGlzdCIgYW5kICJ1cGNvbWluZ2xpc3QiIGRpc3BsYXlzLiBEZWZhdWx0IGlzIGZhbHNlLiBGb3IgdGhlICJwYXN0bGlzdCIgZGlzcGxheSB0aGlzIHdpbGwgcmVzdWx0IGluIG91dHB1dCBiZWluZyBkaXNwbGF5ZWQgaW4gaW5jcmVhc2luZyBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmRldGFpbHBhZ2U9InBhZ2VhbGlhcyI8L3RkPgogICAgIDx0ZD5QYWdlIHRvIGRpc3BsYXkgQ2FsZW5kYXIgZXZlbnQgZGV0YWlscyBpbi4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgcGFnZSBhbGlhcyBvciBhbiBpZC4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCB0ZW1wbGF0ZSBmcm9tIHRoZSBzdW1tYXJ5LiBEZWZhdWx0IGlzIGN1cnJlbnQgcGFnZS4gPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5ldmVudF9pZDwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCB0aGUgZGlzcGxheT1ldmVudCBtb2RlLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBldmVudCBvbiBkZW1hbmQuPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmZ1bGxjYWxlbmRhcnRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9ZnVsbGNhbGVuZGFyLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZXZlbnR0ZW1wbGF0ZTwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCBkaXNwbGF5PWV2ZW50LCBvciB5b3UgY2FuIGFsc28gc3BlY2lmeSB0aGlzIHBhcmFtZXRlciBvbiBhbnkgQ2FsZW5kYXIgbW9kdWxlIGNhbGwsIHRoaXMgcGFyYW1ldGVyIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIG5vbiBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlLiAgVGhpcyBwYXJhbWV0ZXIgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiBwcmV0dHkgdXJscyBhcmUgZW5hYmxlZC48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+bGlzdHRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9bGlzdCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgbm9uIGRlZmF1bHQgbGlzdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+dW5pcXVlX29ubHk8L3RkPgogICAgIDx0ZD5Vc2VkIHdpdGggYWN0aW9uPXNlYXJjaCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoYXQgb25seSBvbmUgZXZlbnQgd2l0aCBhIGNlcnRhaW4gbmFtZSBzaG91bGQgYmUgcmV0dXJuZWQuICBEZWZhdWx0IHZhbHVlIGlzIDAnOwogIDwvdHI+CjwvdGFibGU+Cgo8aDM+Q3VzdG9tIEZpZWxkczwvaDM+CjxwPkl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIG51bWJlciBvZiBjdXN0b20gZmllbGRzIHRvIGFzc29jaWF0ZSB3aXRoIGVhY2ggZXZlbnQgdXNpbmcgdGhlIEZpZWxkcyB0YWIgaW4gdGhlIGFkbWluLiBPbmNlIG9uZSBvciBtb3JlIGZpZWxkcyBoYXMgYmVlbiBkZWZpbmVkIHRoZSB2YWx1ZXMgb2YgdGhhdCBmaWVsZCBmb3IgZWFjaCBldmVudCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBldmVudHMgdGFiIGluIHRoZSBhZG1pbi4gVGhlc2UgZmllbGQgdmFsdWVzIGNhbiBiZSByZW5kZXJlZCB1c2luZyBhIHRlbXBsYXRlIHVzaW5nIHRoZSBzeW50YXggZXZlbnQuZmllbGRzLmZpZWxkbmFtZS4gSGludCAtIGluc2VydCB7ZGVidWd9IGludG8geW91ciB0ZW1wbGF0ZSBzZWUgYWxsIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuPC9wPgoKPGgzPkV4YW1wbGVzPC9oMz4KPGg0PkV4YW1wbGUgb2YgYWxsb3dpbmcgQ29tbWVudHMgb24gQ2FsZW5kYXIgZXZlbnRzPC9oND4KPHA+SW5zdGFsbCB0aGUgQ0dGZWVkYmFjayBtb2R1bGUgYW5kIHB1dCB0aGlzIGluIHlvdXIgQ2FsZW5kYXIgIkV2ZW50IFRlbXBsYXRlIjo8L3A+CjxwcmU+e0NHRmVlZEJhY2sna2V5MT0nQ0dDYWxlbmRhcicga2V5Mj0kZXZlbnQuZXZlbnRfaWR9PC9wcmU+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jZ2NhbGVuZGFyIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE2LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+SGlzdG9yeTwvaDM+CjxwPlRoaXMgbW9kdWxlIG9yaWdpbmF0ZWQgYXMgdGhlIENhbGVuZGFyIG1vZHVsZSBmb3IgQ01TTVMgYnkgUm9iIEFsbGVuIDxlbT4oYWtyYWJhdCk8L2VtPi4gIEl0IHdhcyBmb3JrZWQgdG8gQ0dDYWxlbmRhciBieSBSb2JlcnQgQ2FtcGJlbGwgPGVtPihjYWxndXkxMDAwKTwvZW0+IGluIDIwMDgsIGFuZCBzaW5jZSB0aGVuIGhhcyBoYWQgbnVtZXJvdXMgY29udHJpYnV0aW9ucyBieSBNb3J0ZW4gUG91bHNlbiA8ZW0+KG1vcnRlbkBwb3Vsc2VuLm9yZyk8L2VtPi48L3A+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuNTE8L2xpPjxsaT5DR1NpbXBsZVNtYXJ0eSA9Jmd0OyAxLjg8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBteWV2ZW50c3RlbXBsYXRlPSIiIC0gQXBwbGljYWJsZSBvbmx5IHRvIHRoZSBteWV2ZW50cyBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIGEgbm9uIGRlZmF1bHQgdGVtcGxhdGUgdG8gdXNlPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBlZGl0ZXZlbnR0ZW1wbGF0ZT0iIiAtIEFwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IGVkaXQgZXZlbnQgdGVtcGxhdGUgdG8gdXNlIHdoZW4gYSB1c2VyIGNyZWF0ZXMgb3IgZWRpdHMgYW4gZXZlbnQ8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRlbGV0ZWV2ZW50dGVtcGxhdGU9IiIgLSAtLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nOiBoZWxwX3BhcmFtX2RlbGV0ZWV2ZW50dGVtcGxhdGUgLS08L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGVkaXRwYWdlPSIiIC0gQXBwbGljYWJsZSBvbmx5IHRvIHRoZSBteWV2ZW50cyBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIGEgZGlmZmVyZW50IHBhZ2UgZm9yIHRoZSBlZGl0IGZvcm0uPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBSb2JlcnQgQ2FtcGJlbGwgJmx0O2NhbGd1eTEwMDBAZ21haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDIuMS4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PGgzPkZ1dHVyZSBjaGFuZ2VzPC9oMz4KPHA+SW4gdXBjb21pbmcgdmVyc2lvbnMgb2YgdGhpcyBtb2R1bGUgd2Ugd2lsbCBiZTo8L3A+Cgk8dWw+Cgk8bGk+Q29udmVydGluZyB0byBJbm5vREIgdG8gYWxsb3cgdGhlIHVzZSBvZiB0cmFuc2FjdGlvbnMgYW5kIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgVGhpcyB3aWxsIGFpZGUgaW4gcGVyZm9ybWFuY2UsIGFuZCBkYXRhIGludGVncml0eS4gPC9saT4KCTxsaT5VdGlsaXplIGNhY2hpbmcgd2hlbiBsb2FkaW5nIGV2ZW50cyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIChub3QgbG9hZGluZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcyBpbiBzb21lIHZpZXdzKTwvbGk+Cgk8bGk+SW1wcm92aW5nIHByZXR0eSB1cmwgc3VwcG9ydDwvbGk+Cgk8bGk+RnVydGhlciBPT1BpZnlpbmcgdGhlIGNvZGUgdG8gYWxsb3cgZm9yIGZ1dHVyZSBleHBhbnNpb24uPC9saT4KCTxsaT5BbGxvdyBmaWx0ZXJpbmcgYnkgY3VzdG9tIGZpZWxkcy4uLiBpLmU6IGEgZHJvcGRvd24gdmFsdWUgc28gdGhhdCB5b3UgY2FuIGZpbHRlciBieSBhIHJlc291cmNlLjwvbGk+Cgk8L3VsPgoKPGgzPkhpc3Rvcnk8L2gzPgo8dWw+CiAgPGxpPlZlcnNpb24gMi4xLjIKICAgICAJPHVsPgoJPGxpPkZpeCBwcm9ibGVtIG9uIG5ldyBpbnN0YWxscyB3aXRoIGRlZmF1bHQgdGVtcGxhdGVzIG5vdCBiZWluZyBzcGVjaWZpZWQuPC9saT4KCTxsaT5GaXggcHJvYmxlbSB3aXRoIGNhdGVnb3J5PSBub3Qgd29ya2luZyBpbiB2YXJpb3VzIGRpc3BsYXlzLjwvbGk+CiAgICAgICAgPGxpPkZpeCBwcm9ibGVtcyB3aXRoIHVwZ3JhZGUgZnJvbSAxLngKICAgICAgICA8L2xpPgoJPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDIuMQoJPHVsPgoJPGxpPkFkZHMgdGhlIGFiaWxpdHkgZm9yIG1lbWJlcnMgb2YgYSBzcGVjaWFsIEZFVSBncm91cCB0byBlZGl0IG9yIGRlbGV0ZSBhbnkgZXZlbnQgZnJvbSB0aGUgZnJvbnRlbmQuPC9saT4KCTxsaT5BYWRzIHRoZSBhYmlsaXR5IHRvIGJ1bGsgZGVsZXRlIGV4cGlyZWQgZXZlbnRzLjwvbGk+Cgk8bGk+TmV3IGluc3RhbGxzIHVzZSBJbm5vREIgaW5zdGVhZCBvZiBNeUlTQU0gd2hpY2ggYWxsb3dzIGZvciBkYXRhIGludGVncml0eS48L2xpPgoJPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAyLjAKCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IFRoaXMgdmVyc2lvbiBtYXJrcyBhIG1ham9yIGNoYW5nZSBmb3IgdGhlIENHQ2FsZW5kYXIgbW9kdWxlLiAgVGhpcyB2ZXJzaW9uIHJlcXVpcmVzIENNU01TIDIuMS4yIG9yIGJleW9uZCwgYW5kIGludGVncmF0ZXMgd2l0aCB0aGUgRGVzaWduIE1hbmFnZXIuICBBbHNvLCBzb21lIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkLiAgVXBncmFkaW5nIHdpbGwgcmVxdWlyZSBjcmVhdGluZyBuZXcgdGVtcGxhdGVzLCBhbmQgYWRqdXN0aW5nIHRoZWlyIHN0eWxlcywgYW5kIHBvdGVudGlhbGx5IGFkanVzdGluZyB0aGUgd2F5IHRoZSBtb2R1bGUgaXMgY2FsbGVkLjwvcD4KCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IENNU01TIDIueCByZXF1aXJlcyB0aGF0IGFsbCB0ZW1wbGF0ZXMgYmUgdW5pcXVlbHkgbmFtZWQuICBEdXJpbmcgdGhlIHVwZ3JhZGUgcHJvY2VzcyB3ZSBlbnN1cmUgdGhhdCBhbGwgQ0dDYWxlbmRhciB0ZW1wbGF0ZXMgYXJlIHVuaXF1ZWx5IG5hbWVkIHVwb24gY29udmVyc2lvbi4gIEhvd2V2ZXIsIHdlIGNhbm5vdCBhbmQgZG8gbm90IGVkaXQgeW91ciBjYWxscyB0byB0aGUgQ0dDYWxlbmRhciBtb2R1bGUuICBUaGVyZWZvcmUsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgeW91ciBjYWxscyB0byBDR0NhbGVuZGFyIHRvIGFkanVzdCBhIG1hbnVhbGx5IHNwZWNpZmllZCB0ZW1wbGF0ZSBuYW1lLjwvcD4KCTx1bD4KCTxsaT5SZW1vdmVzIHRoZSBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgY2FsZW5kYXIgdmlldy48L2xpPgoJPGxpPk1pZ3JhdGVzIGFsbCB0ZW1wbGF0ZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlIENNU01TIDIuMCBMYXlvdXQgc2NoZW1lLiAgQWxsIHRlbXBsYXRlcyBmb3IgQ0dDYWxlbmRhciBhcmUgbm93IGF2YWlsYWJsZSBpbiBEZXNpZ25NYW5hZ2VyLjwvbGk+Cgk8bGk+TW92ZXMgYWxsIHNldHRpbmdzIGNvbnRyb2xzIGludG8gdGhlaXIgb3duIG5hdmlnYXRpb24gaXRlbSBpbiB0aGUgYWRtaW4gY29uc29sZS48L2xpPgoJPGxpPlJlbW92ZXMgdGhlIHVwY29taW5nbGlzdCB0ZW1wbGF0ZSB0eXBlLCBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgc3RhbmRhcmQgbGlzdCB0ZW1wbGF0ZSB0eXBlLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIG1heSBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gIFBhc3RsaXN0IGFuZCB1cGNvbWluZ2xpc3Qgdmlld3Mgbm8gbG9uZ2VyIHN1cHBvcnQgcGFnaW5hdGlvbi48L2xpPgoJPGxpPkFkZHMgc3VwcG9ydCBmb3IgYSBkYXkgdmlldy48L2xpPgoJPGxpPlVuaWZpZXMgYWxsIHN1bW1hcnkgdmlld3MgKHllYXIsIG1vbnRoLCBkYXksIHVwY29taW5nbGlzdCwgcGFzdGxpc3QpIHRvIHVzZSB0aGUgc2FtZSBldmVudGxpc3QgdGVtcGxhdGVzLiBUaGUgZm9ybWF0IG9mIHRoaXMgdGVtcGxhdGUgaGFzIGNoYW5nZWQgc2lnbmlmaWNhbnRseS48L2xpPgoJPGxpPk5vIGxvbmdlciBwYXNzIHRoZSBldmVudHRlbXBsYXRlIHBhcmFtZXRlciBmcm9tIHRoZSBzdW1tYXJ5IHZpZXcgaW50byBkZXRhaWwgdXJscyB0byBwb3RlbnRpYWxseSBhbGxvdyBmb3IgcHJldHR5IHVybHMgaW4gZGV0YWlsIChldmVudCkgdmlld3MuICBVc2UgdGhlIHtjZ2VfbW9kdWxlX2hpbnR9IHRhZyBpbnN0ZWFkLjwvbGk+Cgk8bGk+Tm8gbG9uZ2VyIHVzZSB0aGUgdXNlX3Nlc3Npb24gcGFyYW1ldGVycyBmb3IgbGlzdCB2aWV3cy4gIFRoZSBkZWZhdWx0IHRlbXBsYXRlIGFsbG93cyBmb3Igc2Nyb2xsaW5nIGJ5IGFqYXguPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSBkaXNwbGF5Zm9yZGF5IHBhcmFtZXRlciBmb3IgcGFzdGxpc3Qgb3IgdXBjb21pbmdsaXN0LiAgVXBjb21pbmdsaXN0IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBkYXksIGFzIGRvZXMgcGFzdGxpc3QuPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSB1bmlxdWVfb25seSBwYXJhbWV0ZXJzIGZvciB0aGUgcGFzdGxpc3QgYW5kIHVwY29taW5nbGlzdCB2aWV3cyBhcyB0aGUgZXZlbnQgbmFtZSBjYW5ub3QgYmUgYXNzdW1lZCB0byBiZSBhIGtleS4gIFBvc3QgZmlsdGVyaW5nIGluIHRoZSBsaXN0IHRlbXBsYXRlIG1heSBiZSBhIHZhbGlkIHNvbHV0aW9uIGZvciB0aGlzIGlmIG9uIGEgcGFydGljdWxhciBzaXRlIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhlIGV2ZW50IG5hbWUgaXMgdW5pcXVlLjwvbGk+Cgk8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDEuMTYueAogICAgIDxwPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gTW9zdCBmcm9udGVuZCB0ZW1wbGF0ZXMgaGF2ZSBjaGFuZ2VkIGluIHRoaXMgdmVyc2lvbi4gIEV2ZW50IGRpc3BsYXkgdGVtcGxhdGVzIGhhdmUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZm9yIGFjY2Vzc2luZyBjdXN0b20gZmllbGRzLiAgUGxlYXNlIHNlZSB0aGUgZXhhbXBsZXMsIGFuZCByZS1zdHlsZSB5b3VyIHdlYnNpdGVzIGFmdGVyIHVwZ3JhZGluZy48L3A+CiAgICAgPHVsPgogICAgICAgPGxpPkFkZGVkIGNoZWNrYm94IGFuZCBkcm9wZG93biBjdXN0b20gZmllbGQgdHlwZXMuPC9saT4KICAgICAgIDxsaT5BZGRlZCB0aGUgYWJpbGl0eSB0byBtYW5pcHVsYXRlIHJlY3VycmluZyBldmVudHMgZnJvbSB0aGUgZnJvbnRlbmQgaW50ZXJmYWNlLjwvbGk+CiAgICAgICA8bGk+UmV3aXRlcyB0aGUgZnJvbnRlbmQgZGVsZXRlIGFjdGlvbi48L2xpPgogICAgICAgPGxpPnJld3JpdGUgdGhlIGZyb250ZW5kIGFkZC9lZGl0IGV2ZW50IGFjdGlvbi48L2xpPgogICAgICAgPGxpPk1vZGlmeSBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlIHRvIGFsbG93IGVkaXRpbmcgdGhlIGV2ZW50IGlmIGxvZ2dlZCBpbiB0byBGRVUuPC9saT4KICAgICAgIDxsaT5Ob3cgZmllbGRzIGFuZCBjYXRlZ29yaWVzIGFyZSBwcmVzZXJ2ZWQgYW5kIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBlZGl0aW5nIGNoaWxkIGV2ZW50cyBpbiB0aGUgZnJvbnRlbmQgb3IgYWRtaW4uPC9saT4KICAgICAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMgYW5kIGNvZGUgb3B0aW1pemF0aW9ucy48L2xpPgogICAgICAgPGxpPk1ha2UgcmVhZHkgcGxhbnMgdG8gcmVtb3ZlIHRlbXBsYXRlIGNvZGUgZW50aXJlbHkgaW4gZmF2b3Igb2YgRGVzaWduTWFuYWdlci48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KCiAgPGxpPlZlcnNpb24gMS4xNS54Cgk8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBXZSBub3cgY3JlYXRlIGEgc2VwYXJhdGUgc21hcnR5IHNjb3BlIGZvciBlYWNoIHZpc2libGUgdGVtcGxhdGUgdG8gcHJldmVudCBzbWFydHkgdmFyaWFibGUgbmFtZSBjb2xsaXNpb24gaXNzdWVzLCBhbmQgZm9yIG1lbW9yeSBvcHRpbWl6YXRpb24gcHVycG9zZXMuICBUaGlzIG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHRyeWluZyB0byBleHBvcnQgdmFyaWFibGVzIHRvIG90aGVyIHRlbXBsYXRlcywgb3Igd2hlbiB0cnlpbmcgdG8gdXNlIGEgdmFyaWFibGUgY3JlYXRlZCBpbiBhbm90aGVyIHRlbXBsYXRlLjwvcD4KCTxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIG5ldyBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIENHQ2FsZW5kYXIgbW9kdWxlIGlzIHRoZSBmdWxsY2FsZW5kYXIgdmlldy4gIFRoaXMgdmlldyByZXF1aXJlcyBqcXVlcnkgYW5kIGpxdWVyeS11aSB0byBvcGVyYXRlLiAgVGhlcmVmb3JlIHlvdXIgc2l0ZSBtYXkgYnJlYWsgb24gdXBncmFkZS4gIFRvIGZvcmNlIHRoZSBvbGQgPGVtPihkZXByZWNhdGVkKTwvZW0+IGNhbGVkbmFyIHZpZXcsIGNoYW5nZSB5b3VyIGNhbGwgdG8gPGNvZGU+e0NHQ2FsZW5kYXIgZGlzcGxheT1jYWxlbmRhcn08L2NvZGU+PC9wPgogICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gIEZpeGVkIGVycm9ycyBpbiBtYW55IG9mIHRoZSBkaXNwbGF5IHRlbXBsYXRlcy48L3A+Cgk8dWw+Cgk8bGk+VmVyc2lvbiAxLjE1Cgk8dWw+CgkgICA8bGk+SW50cm9kdWNlcyBzZXBhcmF0ZSBzbWFydHkgc2NvcGVzIGZvciBhbGwgZnJvbnRlbmQsIGFuZCBzb21lIGJhY2tlbmQgZGlzcGxheXMuPC9saT4KCSAgIDxsaT5VcGdyYWRlcyBmdWxsY2FsZW5kYXIgdG8gdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uLjwvbGk+CgkgICA8bGk+QWRkcyB0aGUgZnVsbGNhbGVuZGFyIGFjdGlvbiB0byB0aGUgZnJvbnRlbmQsIHdoaWNoIGlzIG5vdyB0aGUgZGVmYXVsdCBhY3Rpb24uIChyZXF1aXJlcyBqcXVlcnkgYW5kIGpxdWVyeS11aSk8L2xpPgogICAgICAgICAgIDxsaT5BZGRzIHN1cHBvcnQgZm9yIGFuIGljYWwgZmVlZCB0byBoaWxpdGUgaG9saWRheXMgaW4gZnVsbGNhbGVuZGFyIHZpZXdzLjwvbGk+CgkgICA8bGk+TnVtZXJvdXMgYnVnIGZpeGVzLjwvbGk+Cgk8L3VsPgoJPC9saT4KCTxsaT5WZXJzaW9uIDEuMTUuMQoJPHVsPgoJICAgPGxpPkZpeGVzIGVycm9yIHdpdGggZXZlbnQgZGlzcGxheSBpbiBhZG1pbiBhbmQgZnJvbnRlbmQgaWYgdGhlcmUgd2VyZSBubyBob2xpZGF5cy48L2xpPgoJPC91bD4KCTwvbGk+Cgk8bGk+VmVyc2lvbiAxLjE1LjIKCTx1bD4KCSAgIDxsaT5GaXhlcyBqYXZhc2NyaXB0IGVycm9ycyB3aXRoIGRhdGUgZm9ybWF0cyBpbiBmdWxsY2FsZW5kYXIgaW4gdGhlIGFkbWluIHBhbmVsLjwvbGk+Cgk8L3VsPgoJPGxpPlZlcnNpb24gMS4xNS4yCgk8dWw+CgkgICA8bGk+QWRkcyBtaXNzaW5nIGNvZGUgZnJvbSB1cGdyYWRlIHJvdXRpbmUgdG8gY3JlYXRlIGEgbmV3IHN5c3RlbSBkZWZhdWx0IGFuZCBpbml0aWFsIGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZS48L2xpPgoJPC91bD4KCTwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS4zCiAgICAgICAgPHVsPgogICAgICAgICAgIDxsaT5BZGRzIG1pc3NpbmcgdXBncmFkZSByb3V0aW5lIHRvIHBvcHVsYXRlIHNhbXBsZSBmdWxsY2FsZW5kYXIgdGVtcGxhdGUuPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNAogICAgICAgIDx1bD4KCSAgIDxsaT5DYXRlZ29yeSBwYXJhbSBub3cgd29ya3MgZm9yIHRoZSBmdWxsY2FsZW5kYXIgYWN0aW9uLjwvbGk+CgkgICA8bGk+Rml4ZXMgYW4gaXNzdWUgd2l0aCB3ZWVrbHkgcmVjdXJyaW5nIGV2ZW50cy48L2xpPgoJICAgPGxpPm1pbm9yIFVJIGNoYW5nZXMgaW4gdGhlIGFkZCBldmVudCB0ZW1wbGF0ZS48L2xpPgoJICAgPGxpPm1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICAgICAgIDwvdWw+Cgk8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNQogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Rml4ZXMgcHJvYmxvZW0gd2l0aCBjaGFuZ2luZyBmaWVsZCBuYW1lcy48L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Rml4ZXMgcHJvYmxvZW0gd2l0aCBkaXNwbGF5aW5nIGNoaWxkIGV2ZW50cyBpbiBmdWxsY2FsZW5kYXIgdmlldyA8ZW0+KE5vdGU6IGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZSBuZWVkcyB0byBiZSByZXNldCB0byBmYWN0b3J5IHNldHRpbmdzKTwvZW0+PC9saT4KICAgICAgICAgICAgPGxpPkFkZHMgc2FtcGxlIGRhdGUgZm9ybWF0dGluZyB0byBmdWxsY2FsZW5kYXI8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuOAogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+RW5oYW5jZSB0aGUgaW1hZ2UgdXBsb2FkIGRpcmVjdG9yeSBiZWhhdmlvciBzbyB0aGF0IHBhdGhzIHJlbGF0aXZlIHRvIHRoZSByb290IG9yIHVwbG9hZHMgZGlyZWN0b3J5IGNhbiBiZSBzcGVjaWZpZWQuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4xNC54CiAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAtIFRoZSAxLjE0IHNlcmllcyBpbnRyb2R1Y2VzIGEgZ3JlYXQgZGVhbCBvZiBpbXByb3ZlbWVudHMuICBJdCBhbHNvIGZpeGVzIGEgbG90IG9mIG91dHN0YW5kaW5nIGlzc3Vlcy4gIFRoZXJlIHdpbGwgcHJvYmFibHkgYmUgdGVtcGxhdGUgaW5jb21wYXRpYmlsaXRpZXMuPC9wPgogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gLSBGdXR1cmUgcmVsZWFzZXMgaW4gdGhpcyBzZXJpZXMgd2lsbCBiZSByZXBsYWNpbmcgdGhlIGZyb250ZW5kIGNhbGVuZGFyIHZpZXcgd2l0aCBmdWxsY2FsZW5kYXIuPC9wPgogICAgPHVsPgoJPGxpPlZlcnNpb24gMS4xNC40CiAgICAgICAgICA8dWw+CgkgICAgPGxpPmZpeGVzIHRvIGVudGl0aWVzIHdpdGggcmVzcGVjdCB0byB0aGUgZnJvbnRlbmQgZm9ybS4gIE5vdyBpdCBpcyBwb3NzaWJsZSB0byBzdWJtaXQgSFRNTCB2aWEgYWxsIHRleHQgYXJlYXMuICBIVE1MIGlzIHNhbml0aXplZCBiZWZvcmUgYmVpbmcgc3RvcmVkLiAgVGV4dCBpbnB1dCBmaWVsZHMgYXJlIGFsc28gc2FuaXRpemVkIG9uIGZyb250ZW5kIGZvcm1zLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPlRoaXMgbWF5IGludHJvZHVjZSBhIGNvbXBhdGliaWxpdHkgcHJvYmxlbS48L2xpPgogICAgICAgICAgICA8bGk+Tm93IHJlcXVpcmVzIFBIUCA1LjQuMys8L2xpPgogICAgICAgICAgPC91bD4KCTwvbGk+CgoKCTxsaT5WZXJzaW9uIDEuMTQuMwoJPHA+VGhlIDEuMTQueCBzZXJpZXMgc3RvcHMgdXNpbmcgdGhlIGhhcmRjb2RlZCBtb250aCBhbmQgZGF5IG5hbWVzIGluIHRoZSBsYW5nIGZpbGUgYW5kIGJlZ2FuIHVzaW5nIGxvY2FsZSBzcGVjaWZpZWQgZGF0ZSBuYW1lcy4gIElmIHlvdSBhcmUgZW5jb3VudGVyaW5nIGFuICdvZmYgYnkgb25lJyBwcm9ibGVtIGluIHRoZSBDR0NhbGVuZGFyIGRpc3BsYXkgdGVtcGxhdGVzIHlvdSB3aWxsIHdhbnQgdG8gZml4IHVwIHlvdXIgZnJvbnRlbmQgdGVtcGxhdGVzLiAgUmVzdG9yaW5nIGZyb250ZW5kIHRlbXBsYXRlcyB0byBmYWN0b3J5IGRlZmF1bHRzIHNob3VsZCBzb2x2ZSB0aGUgaXNzdWUuICBFc3NlbnRpYWxseSwgeW91IHNob3VsZCBub3QgdXNlIHRoZSB7JG1vbnRoX25hbWVzfSBvciB7JGRheV9uYW1lc30gYXJyYXkgKHRoZXkgYXJlIG9uZSBiYXNlZCkuICBBbmQgaW5zdGVhZCBzaG91bGQgdXNlIHRoZSB7JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR9IGFuZCB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfSBzbWFydHkgdmFyaWFibGVzLCBhbmQgdGhlIGRhdGVfZm9ybWF0IG1vZGlmaWVyIHRvIGZvcm1hdCBkYXRlcyBhcHByb3ByaWF0ZWx5LjwvcD4KCTx1bD4KCSAgPGxpPkZpeGVzIHRvIHRoZSB1cGNvbWluZyBsaXN0IHRlbXBsYXRlLjwvbGk+Cgk8L3VsPgoJPC9saT4KCgk8bGk+VmVyc2lvbiAxLjE0LjIKCTx1bD4KCTxsaT5SZXN0b3JlcyBpbXBvcnQgbGluayAob29wcykuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMgoJPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAgaW4gdGhlIG5lYXIgZnV0dXJlIChkZXBlbmRpbmcgdXBvbiBzcG9uc29yc2hpcCkgSSBwbGFuIHRvIHJlcGxhY2UgdGhlIGNhbGVuZGFyIHZpZXcgd2l0aCBhbiBhamF4eSBjYWxlbmRhciAoZnVsbGNhbGVuZGFyKS4gICBUaGlzIHdpbGwgcHJvYmFibHkgYnJlYWsKICAgICBjb21wYXRpYmlsaXR5LiAgWW91IGFyZSBmb3Jld2FybmVkLjwvcD4KCTx1bD4KCTxsaT5CdWcgZml4ZXMuPC9saT4KCTxsaT5SZXZpc2UgbGlzdCB0ZW1wbGF0ZSB0byB1c2UgZGF0ZV9mb3JtYXQgaW5zdGVhZCBvZiBoYXJkY29kZWQgbW9udGgvZGF5IHN0dWZmLiAoc3RpbGwgaGF2ZSB0byBkbyBjYWxlbmRhciB0ZW1wbGF0ZSk8L2xpPgoJPGxpPlJldmlzZWQgdXBjb21pbmcgbGlzdCBhY3Rpb24gdG8gY2FsbCB0aGUgdGVtcGxhdGUgZXZlbiBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzLjwvbGk+Cgk8bGk+UmV2aXNlZCB0aGUgZXZlbnQgbG9hZGVyIHRvIGZpZ3VyZSBvdXQgYSBjb2xvciBmb3IgZXZlbnQgKGJhc2VkIG9uIGNhdGVnb3J5IGNvbG9ycykuPC9sST4KCTxsaT5SZXZpc2UgdGhlIGxpc3QsIGFuZCBjYWxlbmRhciB0ZW1wbGF0ZXMgdG8gc2hvdyBzb21lIGFqYXh5IHN0dWZmLCBhbmQgdGhlIHVzZSBvZiBjb2xvcnMuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMQoJPHVsPgoJPGxpPkJ1ZyBmaXhlcy48L2xpPgoJPGxpPldlZWsgYW5kIGRheSBuYW1lcyBhcmUgbm93IGdlbmVyYXRlZCBieSB0aGUgbG9jYWxlLCBub3QgZnJvbSBsYW5nIHN0cmluZ3MuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQKCTx1bD4KCTxsaT5JbXBsZW1lbnRzIGZ1bGxjYWxlbmRhciBmb3IgdGhlIHByaW1hcnkgZXZlbnQgbGlzdGluZy4KCTx1bD4KICAJICA8bGk+RHJhZyBhbmQgZHJvcCBldmVudHMgdG8gbW92ZSB0aGVtIHRvIGRpZmZlcmVudCBkYXRlcywgb3IgYWRqdXN0IGVuZCB0aW1lIChhamF4KTwvbGk+CgkgIDxsaT5EZWxldGUgZXZlbnRzIHZpYSBhamF4PGxpPgoJPC91bD4KCTwvbGk+Cgk8bGk+QWRkcyB0aGUgQWxsIGRheSBldmVudCBmbGFnPC9saT4KCTxsaT5Bc3NvY2lhdGVzIGNvbG9ycyB3aXRoIGNhdGVnb3JpZXMgKHNleHkgaW4gdGhlIGZ1bGxjYWxlbmRhciB2aWV3KS4uLiBub3QgeWV0IGF2YWlsYWJsZSBpbiB0aGUgZnJvbnRlbmQuPC9saT4KCTxsaT5SZXdvcmsgdG8gdGhlIGFkZC9lZGl0IGV2ZW50IGZvcm0gKGFkbWluKTwvbGk+Cgk8bGk+Tm93IGRlcGVuZHMgb24gQ0dTaW1wbGVTbWFydHkuPC9saT4KCTxsaT5idWcgZml4ZXMuPC9saT4KCTwvdWw+Cgk8L2xpPgogICAgPC91bD4KICA8L2xpPgoKCjxsaT5WZXJzaW9uIDEuMTMueAogIDx1bD4KICAgIDxsaT5BZGRzIHR3byBuZXcgcGVybWlzc2lvbnMgKEFkZCBDYWxlbmRhciBFdmVudHMsIEVkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzKS48L2xpPgogICAgPGxpPk1pbm9yIGNsZWFudXAgb2YgdGhlIGFkbWluIGFkZCBldmVudCB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPk1pbm9yIHR3ZWFraW5nIHRvIHRoZSBldmVudCBsaXN0IHRlbXBsYXRlLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xMi54IC0gTm92ZW1iZXIsIDIwMTMKICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJbiB0aGUgZnV0dXJlIEkgd2lsbCBiZSBtb3ZpbmcgaW1hZ2VzIGludG8gdGhlaXIgb3duIGRpcmVjdG9yeSwgYW5kIGNsZWFuaW5nIHVwIHByZWZlcmVuY2VzIG1vcmUuICBUaGlzIHdpbGwgcHJvYmFibHkgY2F1c2UgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgZnV0dXJlLjwvcD4KICA8dWw+CiAgICA8bGk+UmVtb3ZlZCBhbGwgaW1hZ2UgY3JvcHBpbmcgb24gdXBsb2FkLgogICAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGNvdWxkIGNhdXNlIGNvbXBhdGliaWxpdHkgcHJvYmxlbSB3aXRoIGRpc3BsYXlpbmcgaW1hZ2VzIGluIHlvdXIgZXhpc3RpbmcgdGVtcGxhdGVzLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+QWRkcyB0aGUgZmlsZSBhdHRhY2htZW50IGZpZWxkIHR5cGUuPC9saT4KICAgIDxsaT5Db2RlIGNsZWFudXAgYW5kIGJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTEueCAtIE9jdG9iZXIsIDIwMTMKICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZXJlIHByb2JhYmx5IHdpbGwgYmUgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBmb3IgcGVvcGxlIHVwZ3JhZGluZyB0byBDR0NhbGVuZGFyIDEuMTEueCBhbmQgYmV5b25kIGZyb20KICBwcmV2aW91cyB2ZXJzaW9ucy4gIFBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHRoZSBkcm9wcGVkIHBhcmFtZXRlcnMgPGVtPihzZWUgYmVsb3cpPC9lbT4gYW5kIHNvbWUgb2YgdGhlIGlubGluZSBmaXhlcyBhbmQgY2hhbmdlcy4KICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRlc3Rpbmcgb24geW91ciBDR0NhbGVuZGFyIGluc3RhbGxzIGFuZCBmaXggYW55IGNhbGxzIHRvIENHQ2FsZW5kYXIsIGFuZCBhbHNvIG1ha2Ugc29tZSBjaGFuZ2VzIHRvIHRlbXBsYXRlcy48L3A+CiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogICAgPGxpPkRyb3BwZWQgdGhlIGNvbHVtbiBwYXJhbWV0ZXJzICh0aGlzIGlzIGEgZGVzaWduIHJlbGF0ZWQgaXRlbSwgbm90IHJlbGF0ZWQgdG8gYnVzaW5lc3MgbG9naWMgYW5kIHNob3VsZCBiZSBkb25lIGluIHRlbXBsYXRlcy4pLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgcmV0dXJubGluayBwYXJhbWV0ZXJzIGFzIHRoZXkgZGlkbnQgd29yayBwcm9wZXJseS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIHRlbXBsYXRlcy4gIChoaXN0b3J5LmdvKC0xKSBvciBzb21ldGhpbmcpLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgZmlyc3QtZGF5LW9mLXdlZWsgcGFyYW1ldGVyLCBhbmQgcmVwbGFjZWQgaXQgd2l0aCBhIHByZWZlcmVuY2UuPC9saT4KICAgIDxsaT5BbGwgbmF2aWdhdGlvbiBsaW5rcyBvbiBwcm90b3R5cGUgdGVtcGxhdGVzIG5vdyB1c2Ugbm9uLWlubGluZSBVUkxTLjwvbGk+CiAgICA8bGk+QWRkZWQgZGlzcGxheT13ZWVrbGlzdDwvbGk+CiAgICA8bGk+UmVmYWN0b3JlZCB0aGUgZXZlbnQgZGlzcGxheSBpbiB0aGUgYWRtaW4gcGFuZWwuCiAgICAgIDx1bD4KICAgICAgICA8bGk+RXZlbnRzIGFyZSBub3cgZGlzcGxheWVkIG9ubHkgZm9yIGEgc3BlY2lmaWVkIG1vbnRoIGFuZCB5ZWFyLjwvbGk+CiAgICAgICAgPGxpPkVhc3kgc2VsZWN0aW9uIG9mIG1vbnRoIGFuZCB5ZWFyLCBhbmQgc2Nyb2xsaW5nIGJldHdlZW4gbW9udGhzLjwvbGk+CiAgICAgICAgPGxpPlRoZSBhYmlsaXR5IHRvIGVkaXQgYSBwYXJlbnQgZXZlbnQgZnJvbSBhIGNoaWxkIGV2ZW50LjwvbGk+CiAgICAgICAgPGxpPkZpbHRlcnMgYXJlIHN0b3JlZCBpbiB0aGUgdXNlciBzZXNzaW9uLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPlJlZmFjdG9yZWQgYW5kIGNoZWNrZWQgYWxsIHBhcmFtZXRlcnMgcGFzc2VkIHRvIG5hdmlnYXRpb24gbGlua3MgaW4gdGhlIGluZGl2aWR1YWwgdmllZXdzPC9saT4KICAgIDxsaT5BbGwgbmF2aWdhdGlvbiB2aWV3cyBoYXZlIGluXyBhbmQgbmlfIHZhcmlhbnRzIHRvIGFsbG93IHNlbGVjdGluZyBhbiBpbmxpbmUsIG9yIG5vbiBpbmxpbmUgdmFyaWFudCBvZiB0aGUgbmF2aWdhdGlvbiBsaW5rLiAgVGhvdWdoIHRoZSBuaV8gcHJlZml4ZWQgVVJMUyBtYXkgaW5mYWN0IGJlIGlubGluZSBsaW5rcyBkZXBlbmRpbmcgdXBvbiB0aGUgdXNlX3Nlc3Npb24gc3R1ZmYuPC9saT4KICAgIDxsaT5EYXkgdmlldyBVUkxTIGZyb20gdGhlIGNhbGVuZGFyIHZpZXcgbm93IGhhdmUgbmlfIGFuZCBpbl8gdmFyaWFudHMuPC9saT4KICAgIDxsaT5UaGUgaW5saW5lIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZSBkcm9wcGVkIGF0IHRoZSBuZXh0IG1ham9yIHZlcnNpb24uPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIGFsbCBldmVudCB2aWV3cwogICAgICA8dWw+CiAgICAgICAgPGxpPkFsbCBldmVudCB2aWV3cyB1c2UgdGhlIGNnY19ldmVudF9sb2FkZXIgY2xhc3MuPC9saT4KICAgICAgICA8bGk+T3B0aW1pemUgY3VzdG9tIGZpZWxkLCBhbmQgY2F0ZWdvcnkgbG9hZGluZy48L2xpPgogICAgICAgIDxsaT5DdXN0b20gZmllbGRzIGFuZCBjYXRlZ29yaWVzIGFyZSBub3cgY29waWVkIGZyb20gdGhlIHBhcmVudCBldmVudCBpZiBub3Qgc3BlY2lmaWVkIGZvciB0aGUgY2hpbGQgZXZlbnQuPC9saT4KICAgICAgICA8bGk+QWxsIGxpbmtzL1VSTHMgZ2VuZXJhdGVkIHRvIGV2ZW50cyB1c2UgcHJldHR5IFVSTFMgKGlmIGVuYWJsZWQpIGFuZCBhcmUgbm9uIGlubGluZS48L2xpPgogICAgICAgIDxsaT5hdXRob3IgZmllbGQgbWF5IGJlIHByZXNlbnQgZm9yIGVhY2ggZXZlbnQgdGhhdCBoYXMgYW4gYXV0aG9yLi4uIGJ1dCBhdXRob3JuYW1lICh3aGljaCB3YXMgaW5jb25zaXN0ZW50bHkgYXBwbGllZCkgaGFzIGJlZW4gZHJvcHBlZC4gIFVzZSBhIHNtYXJ0eSBwbHVnaW4gdG8gZXh0cmFjdCB0aGUgYXV0aG9yIGluZm9ybWF0aW9uIGFuZCBkaXNwbGF5IGl0LjwvbGk+CiAgICAgICAgPGxpPnVzZV9zZXNzaW9uIG5vdyBhdXRvbWF0aWNhbGx5IHR1cm5zIG9uIGlubGluZSBtb2RlLi4gYW5kIHdpbGwgdXNlIGlubGluZSBtb2RlIGZvciBldmVuIG5pXyBsaW5rcy91cmxzPC9saT4KICAgICAgICA8bGk+dXNlX3Nlc3Npb24gdmFsdWUgaXMgb25seSB1c2VkIGFzIGEgcHJlZml4IGZvciB0aGUgc2Vzc2lvbiBrZXkuICBUaGUgc2Vzc2lvbiBrZXkgaXMgdW5pcXVlIHRvIGFsbCBjYWxscyBvZiBDR0NhbGVuZGFyLjwvbGk+CiAgICAgICAgPGxpPmZpZWxkIG91dHB1dCBpcyBub3cgY29uc2lzdGVudCB3aXRoIGZpZWxkIG9yZGVyaW5nIChieSBkZWZhdWx0KS48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBhZG1pbiBjYXRlZ29yaWVzIHRhYi4KICAgICAgPHVsPgogICAgICAgIDxsaT5BZGRzIGRyYWcgYW5kIGRyb3AgcmVvcmRlcmluZy48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBhZG1pbiBmaWVsZHMgdGFiLgogICAgICA8dWw+CiAgICAgICAgPGxpPkFkZHMgZHJhZyBhbmQgZHJvcCByZW9yZGVyaW5nLjwvbGk+CiAgICAgICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSB3ZXRoZXIgYSB0ZXh0IGFyZWEgZmllbGQgaGFzIGEgd3lzaXd5ZyAoYWRtaW4gaW50ZXJmYWNlIG9ubHkpLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPk1vcmU8L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTAuMiAtIEZlYnJ1YXJ5LCAyMDEzCiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTAgLSBBdWd1c3QgMjAxMgogIDx1bD4KICAgIDxsaT5BZGRzIGEgdG9nZ2xlIHRvIHVzZSB3eXNpd3lncyBmb3IgdGV4dGFyZWEgY3VzdG9tIGZpZWxkcy48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgZnJpZW5kbHkgbmFtZS48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjkuNyAtIEp1bHkgMjAxMgogIDx1bD4KICAgPGxpPk51bWVyb3VzIG1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICA8bGk+TW92ZSBoZWxwIG91dCBvZiBsYW5nIGZpbGUuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjYgLSBBcHJpbCAyMDEyCiAgPHVsPgogICA8bGk+TnVtZXJvdXMgbWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5GaXggamF2YXNjcmlwdCBpc3N1ZSBpbiBlZGl0IGV2ZW50LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuOS40IC0gTWFyY2gsIDIwMTIKICA8dWw+CiAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMuPC9saT4KICAgPGxpPkZpeGVkIG5vdGljZXMgaW4gZGVmYXVsdCB0ZW1wbGF0ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjEgLSBNYXJjaCwgMjAxMgogIDx1bD4KICAgPGxpPkFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBpbXBvcnQgY29sdW1uIGRlbGltaXRlcjwvbGk+CiAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45IC0gSmFudWFyeSwgMjAxMgogIDx1bD4KICAgPGxpPkltcHJvdmVkIGV2ZW50IGltcG9ydCBjYXBhYmlsaXRpZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS44LjIgLSBPY3RvYmVyLCAyMDExCiAgPHVsPgogICA8bGk+TWlub3IgZXZlbnQgbmFtZSBmaXguPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjUgLSBBdWd1c3QsIDIwMTEKICA8dWw+CiAgPGxpPkFkcyBmaXJzdCBkYXksIGFuZCBsYXN0IGRheSBzdHVmZiB0byB0aGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjMgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5Nb3JlIEZpeGVzIHRvIHRoZSBsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjIgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5GaXhlcyB0byB0aGUgbGlzdCB2aWV3LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNy4xIC0gSnVseSwgMjAxMQogIDx1bD4KICA8bGk+VGhlIHVuaXF1ZV9vbmx5IHBhcmFtZXRlciBub3cgZGVmYXVsdHMgdG8gJnF1b3Q7b2ZmJnF1b3Q7IGZvciBhbGwgdmlld3MuPC9saT4KICA8bGk+QWRkcyB0aGUgZGlzcGxheWZvcmRheSBwYXJhbWV0ZXIgdG8gdGhlIHVwY29taW5nbGlzdCB2aWV3LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNyAtIEp1bmUsIDIwMTEKICA8dWw+CiAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIHRoZSAmcXVvdDtteWV2ZW50cyZxdW90OyB2aWV3IGJ5IGEgY2F0ZWdvcnkuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS42LjEgLSBBcHJpbCwgMjAxMQogIDx1bD4KICAgIDxsaT5SZW1vdmUgZGVidWcgc3RhdGVtZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjYgLSBBcHJpbCwgMjAxMQogIDx1bD4KICAgIDxsaT5BZGRzIGEgY29tcGFueSBkaXJlY3RvcnkgZmllbGQgdHlwZS48L2xpPgogICAgPGxpPkJ1ZyBGaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNyAtIFNlcHRlbWJlciAyMDEwCiAgPHVsPgogICAgPGxpPk1vcmUgZml4ZXMgdG8gZGlzcGxheWNhbGVuZGFyIGFuZCBkaXNwbGF5dXBjb21pbmdsaXN0LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS42IC0gU2VwdGVtYmVyIDIwMTAKICA8dWw+CiAgICA8bGk+Rml4ZXMgdG8gdXBjb21pbmcgbGlzdCBwYWdpbmF0aW9uLjwvbGk+CiAgICA8bGk+Rml4ZXMgdG8gdW5pcXVlIG9ubHkgcGFyYW0gaW4gdXBjb21pbmcgbGlzdC48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNSAtIEF1Z3VzdCAyMDEwCiAgPHVsPgogICAgPGxpPk5vdyBSZXF1aXJlIENHRXh0ZW5zaW9ucyAxLjE5LjQ8L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgVVJMIHByZWZpeC48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIHRvIGRlZmF1bHQgbmV3IGV2ZW50cyB0byBhbGwgZGF5IGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgZGVmYXVsdCBzdGFydCB0aW1lIGZvciBub24tYWxsZGF5IGV2ZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNCAtIEF1Z3VzdCAyMDEwCiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuMyAtIEp1bHkgMjAxMAogIDx1bD4KICAgIDxsaT5NaW5vciBidWcgZml4LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS4yIC0gQXByaWwgMjAxMAogIDx1bD4KICAgIDxsaT5SZW1vdmUgbGVmdG92ZXIgZGVidWcgc3RhdGVtZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuMSAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNSAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIHNlYXJjaCBvbiBjdXN0b20gZmllbGQgdmFsdWVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNCAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzIHdydCBkZWxldGluZyBldmVudHMuPC9saT4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IGZvciBsb2dnZWQgaW4gZnJvbnRlbmQgdXNlcnMgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnRzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMy4xIC0gTWFyY2ggMjAxMAogIDx1bD4KICAgIDxsaT5NaW5vciBidWdmaXggaW4gaW5zdGFsbGVyLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMyAtIERlY2VtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+QWRkcyB0aGUgY29uY2VwdCBvZiBhbGwgZGF5IGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gYWxsb3cgZXZlbnRzIHRvIG92ZXJsYXAgb3Igbm90LjwvbGk+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byByZW1vdmUgYWxsIGNvbmZsaWN0aW5nL292ZXJsYXBwaW5nIGV2ZW50cy48L2xpPgogICAgPGxpPlZhcmlvdXMgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMi41IC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KCjxsaT5WZXJzaW9uOiAxLjIuNCAtIFNlcHRlbWJlciAyMDA5CiAgPHVsPgogICAgPGxpPkFkZHMgc3VwcG9ydCBmb3IgdGV4dGFyZWEgZmllbGRzLjwvbGk+CiAgICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMi4zIC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+Rml4ZXMgc3R1cGlkIGVycm9ycyB3aXRoIHRoZSBpbnN0YWxsZXIuPC9saT4KICAgIDxsaT5BZGRzIHVuaXF1ZV9vbmx5IHBhcmFtZXRlci48L2xpPgogICAgPGxpPkFkZHMgYmFzaWMgaWNhbCBzdXBwb3J0IGluIGV2ZW50IHZpZXdzLihUZWQpPC9saT4KICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjIgLSBNYXkgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBlZGdlIGNhc2UgcHJvYmxlbSB3aXRoIGRhdGVzIHJlY3VycmluZyBtb250aGx5IG9uIHRoZSBOdGggd2Vla2RheTwvbGk+CiAgICA8bGk+Rml4ZXMgdXBjb21pbmdsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjEgLSBNYXkgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBwcm9ibGVtIHdpdGggZGF0ZXMgcmVjdXJyaW5nIG1vbnRobHkgb24gdGhlIE50aCB3ZWVrZGF5PC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yIC0gQXByaWwgMjAwOQogIDx1bD4KICAgIDxsaT5BZGRzIHBhZ2luYXRpb24gdG8gdXBjb21pbmcgbGlzdCB2aWV3LjwvbGk+CiAgICA8bGk+VmFyaW91cyBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4xIC0gTWFyY2ggMjAwOQogPHVsPgogICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5BZGQgZW5oYW5jZWQgbW9udGhseSByZWN1cmluZyBldmVudCBjYXBhYmlsaXRpZXMuPC9saT4KICAgPGxpPkFkZCBzZWFyY2ggZm9ybS48L2xpPgogPC91bD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDEuMDwvcD4KPHA+Rm9yayB2ZXJzaW9uIDAuOC4yIG9mIHRoZSBDYWxlbmRhciBtb2R1bGUsIGFuZCBjb21wbGV0ZWx5IHJlLWRvIGV2ZW50IGFkZGluZywgZWRpdGluZywgcmVjdXJyaW5nIGV2ZW50cywgYW5kIHRlbXBsYXRlcy4gIFRoaXMgbW9kdWxlIGlzIG5vdCBjb21wdGlibGUgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgQ2FsZW5kYXIgbW9kdWxlPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC44LjI8L3A+CiAgPHA+Rml4IHRvIHByZXR0eSB1cmxzLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuOC4xPC9wPgogIDxwPk1pbm9yIGZpeCB0byBzZWFyY2ggaW50ZWdyYXRpb24gd2hlbiB1cGRhdGluZyBhbiBldmVudC48L3A+CiAgPHA+QWRkIGNhdGVnb3JpZXMgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QgZGlzcGxheS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjg8L3A+CiAgPHA+QWRkcyBzZWFyY2ggY2FwYWJpbGl0aWVzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjE0PC9wPgogIDxwPkZpeGVzIGEgc2VyaW91cyBpc3N1ZSB0aGF0IGNvdWxkIHJlc3VsdCBpbiB0aG91c2FuZHMgb2YgbmVlZGxlc3MgY2FsZW5kYXIgZW50cmllcyBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTM8L3A+CiAgPHA+Rml4ZXMgZnJpZW5kbHkgdXJscyBmb3IgZGV0YWlsIGFydGljbGVzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjEyPC9wPgogIDxwPkZpeGVzIGZpbGUgdXBsb2FkIGZpZWxkczwvcD4KICA8cD5GaXhlcyBpc3N1ZXMgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBBbGJ1bSBtb2R1bGU8L3A+CiAgPHA+QWRkcyByZWN1cnJpbmcgZXZlbnRzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjExPC9wPgogIDxwPkZpeGVkIGEgYnVnIGludHJvZHVjZWQgYnkgYnJpbmluZyBpbiB0aGUgY2F0ZWdvcmllcywgd2hlcmVieSB0aGUgam9pbiBkaWQgbm90IHdvcmsgb24gZWFybGllciB2ZXJzaW9ucyBvbiBteVNRTC4gKGNvZGVwb2V0KTwvcD4KICA8cD5BZGRlZCBhIGxpc3Qgb2YgY2F0ZWdvcmllcyB0aGF0IGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRvIHRoZSBkYXRhIGF2YWlsYWJsZSB0byB0aGUgdGVtcGxhdGUuIChjb2RlcG9ldCk8L3A+CiAgPHA+Rml4ZWQgYSBidWcgaW50cm9kdWNlZCBpbiAwLjcuMTAgdGhhdCBwcmV2ZW50cyBhIGNsZWFuIGluc3RhbGwgZnJvbSB3b3JraW5nLCBiZWNhdXNlIG9mIGFuIGV4dHJhIGNvbW1hIG9uIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGxpc3QgZm9yIHRhYmxlIGNtc19tb2R1bGVfZWNhbGFuZGVyX2V2ZW50X2ZpZWxkX3ZhbHVlcyAoY29kZXBvZXQpPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjEwIC0gY2FsZ3V5MTAwMDwvcD4KPHA+QWRkZWQgc3VwcG9ydCBmb3IgZmlsZSB1cGxvYWRzIGluIGN1c3RvbSBmaWVsZHM8L3A+CjxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHN1cHBseSBcJ25leHRcJyBhcyB0aGUgZXZlbnRfaWQgaW4gdGhlIGV2ZW50IGRpc3BsYXksIHRvIGRpc3BsYXkgdGhlIG5leHQgdXBjb21pbmcgZXZlbnQuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43Ljk8L3A+CiAgPHA+QWRkZWQgY3VzdG9tIGZpZWxkcyB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggZWFjaCBldmVudC48L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43Ljg8L3A+CiAgPHA+Rml4ZWQgYSBkZXRhaWxwYWdlL3JldHVybmxpbmsgYnVnLi4uIGFnYWluLi4uPC9wPgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy43PC9wPgogIDxwPkFkZGVkIGEgZGVmYXVsdCBjYXRlZ29yeTwvcD4KICA8cD5BZGRlZCBhbiBvcHRpb24gdG8gYWxsb3cgYW4gZXZlbnQgdG8gYmUgZm9yY2VkIGEgbWVtYmVyIG9mIGF0IGxlYXN0IDEgY2F0ZWdvcnk8L3A+CiAgPHA+QWRkZWQgb3B0aW9ucyBvZiBob3cgbWFueSB5ZWFycyBpbiB0aGUgcGFzdCBhbmQgZnV0dXJlIHlvdSBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3Q8L3A+CiAgPHA+UHJvZ3Jlc3MgdG93YXJkcyBtb3JlIHVwdG9kYXRlIEFQSS11c2FnZSwgdXNpbmcgdGVtcGxhdGVzLCBhY3Rpb25zIGV0Yy48L3A+CiAgPHA+TnVtZXJvdXMgYnVnZml4ZXM8L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43LjY8L3A+CiAgPHA+QWRkZWQgY29sdW1uIHN0eWxlIG91dHB1dCBmb3IgdXBjb21pbmdsaXN0IGFuZCBwYXN0bGlzdDwvcD4KICA8cD5Nb3ZlZCBleGFtcGxlIHN0eWxlc2hlZXQgdG8gdGhlIHN0eWxlc2hlZXRsaXN0PC9wPgogIDxwPkFkZGVkIHRhZ2dpbmcgb2YgZXZlbnRzIGFuZCBkZWxldGlvbnMgb2YgdGFnZ2VkIG9uZXM8L3A+CiAgPHA+UmV3b3JrZWQgZm9yIHVzZSBvZiBleHRlcm5hbCBhY3Rpb25maWxlczwvcD4KICA8cD5JbXByb3ZlZCB0YWItZnVuY3Rpb25hbGl5IGFuZCBhY3Rpb25tZXNzYWdlczwvcD4KPC9saT4KCjxsaT48cD5WZXJzaW9uOiAwLjcuNTwvcD4KICA8cD5GaXhlZCBhIGxvdCBvZiBvcGVuYmFzZWRpci1pc3N1ZXM8L3A+Cgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy40PC9wPgogIDxwPkZpeGVkIGhhcmRjb2RlZCBsZW5ndGggb2YgdGl0bGUgaW5wdXQgZmllbGQ8L3A+CiAgPHA+Rml4ZWQgc29tZSBtaXNzaW5nIGxvY2FsaXphdGlvbjwvcD4KICA8cD5SZW1vdmVkIHN1cHBvcnQgZm9yIHByZXR0eSB1cmxzIChpdCB3YXMgbm90IHdvcmtpbmcsIGFzIHNvbWUgcGFyYW1ldGVycyB3ZXJlIG1pc3NpbmcsIGFuZCBwdXR0aW5nIHRoZW0gaW4gd291bGQgaGF2ZSBtYWRlIHRoZSB1cmxzIHVucHJldHR5IGFueXdheXM8L3A+CgogIDxwPlVwZGF0ZWQgcGVybWlzc2lvbnMgbW9kZWwuICBOb3cgbmVlZCBcJ01vZGlmeSBUZW1wbGF0ZXNcJyBwZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGVzLCBhbmQgXCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlc1wnIHBlcm1pc3Npb24gdG8gYWRqdXN0IHRoZSBwcmVmZXJlbmNlcy48L3A+Cgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjM8L3A+CiAgICA8cD5BZGRlZCBNaW5pbXVtIENNUyBWZXJzaW9uPC9wPgogICAgPHA+QWRkZWQgdGhlIHBhc3RsaXN0IG9wdGlvbjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNy4yPC9wPgogICAgPHA+Q01TIDEuMCBjb21wYXRpYmxpdHk8L3A+CiAgICA8cD5TcGxpdCBvdXQgaW50byBudW1lcm91cyBmaWxlcyBmb3IgYmV0dGVyIG1lbW9yeSBlZmZpY2llbmN5PC9wPgogICAgPHA+SW50cm9kdWNlZCByZWZlcmVuY2VzIHdoZXJlIG5lY2Vzc2FyeSB0byBpbXByb3ZlIG1lbW9yeSBlZmZpY2llbmN5PC9wPgogICAgPHA+QWRkZWQgZnVuY3Rpb25zIHRvIGFsbG93IGZvciB0YWxraW5nIHdpdGggdGhpcyBtb2R1bGUgdmlhIG90aGVyIG1vZHVsZXM8L3A+CiAgICA8cD5BZGRlZCBldmVudHM8L3A+CiAgICA8cD5JbXByb3ZlZCBzZWN1cml0eSBhbmQgcmVkdWNlZCBtZW1vcnkgZm9vdHByaW50PC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43IHN0YWJsZTwvcD4KICAgIDxwPkZpeGVkIHByb2JsZW0gd2l0aCBicm9rZW4gbW9udGggbGlzdCBvbiAzMXN0IG9mIGVhY2ggbW9udGg7PC9wPgogICAgPHA+Rml4ZWQgcHJvYmxlbSB3aXRoIENhbGVuZGFyIHNob3dpbmcgaW4gdGhlIG1lbnUgZm9yIHVuYXV0aG9yaXplZCBhZG1pbiB1c2Vycy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdiZXRhMzwvcD4KICAgIDxwPkFkZGVkIHRoZSB5ZWFybGlzdCB2aWV3IG9wdGlvbiB0byBsaXN0IGFsbCBldmVudHMgaW4gdGhlIHllYXIuIEFjdHMgbGlrZSB0aGUgbGlzdCBvcHRpb24uPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YmV0YTI8L3A+CiAgICA8cD5BZGRlZCB0aGUgcmV2ZXJzZSBwYXJhbWV0ZXIgdG8gc2hvdyBldmVudHMgaW4gcmV2ZXJzZSBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuN2JldGExPC9wPgogICAgPHA+QWRkZWQgbmF2aWdhdGlvbiBpbiB0aGUgbGlzdCB2aWV3LCBmaXhlZCBwcm9ibGVtIHdpdGggZXZlbnRzIG5vdCBzaG93aW5nIHVwIGluIHRoZSBsaXN0IHZpZXcuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YWxwaGEyPC9wPgogICAgPHA+PHVsPgogICAgICAgPGxpPkJ1ZyBmaXg6IGluY2x1ZGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoITwvbGk+CiAgICAgICA8bGk+QnVnIGZpeDogdGVtcGxhdGUgdXNlIG9mICR0YWJsZV9pZCBzaG91bGQgaGF2ZSB7fSBhcm91bmQgaXQuPC9saT4KICAgICAgIDxsaT5JbmNsdWRlIGljb24gZm9yIGNvbnRlbnQgcGFnZS48L2xpPgogICAgICAgPGxpPldoaXRlc3BhY2UgY2hhbmdlcyAtIHRyYWlsaW5nIHNwYWNlcyBhbmQgdGFicy9zcGFjZSB0aWR5IHVwLjwvbGk+CiAgICAgICA8bGk+TWFrZSBkZWZhdWx0IHRlbXBsYXRlcyBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsIGNvbXBsaWFudC48L2xpPgogICAgPC91bD48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdhbHBoYTE8L3A+CiAgICA8cD5Db21wbGV0ZSByZXdyaXRlIHRvIGZpdCBpbnRvIDAuMTAueCBiZXR0ZXIuPC9wPgogICAgPHA+U3VwcG9ydCBsYW5ndWFnZSBmb3IgZGF5IGFuZCBtb250aCBuYW1lczwvcD4KICAgIDxwPlVzZSBzbWFydHkgdGVtcGxhdGVzIGZvciBjb250cm9sbGluZyB0aGUgZGlzcGxheS48L3A+CiAgICA8cD5SZXdyaXRlIHRoZSBTUUwgdXNlZCB0byBzZWxlY3QgdGhlIGV2ZW50cyB0byBob3BlZnVsbHkgYmUgbW9yZSBtYWludGFpbmFibGUuPC9wPgogICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdGhlIGxhbmd1YWdlIGZpbGVzIGFyZSBub3QgZnVsbHkgdXBkYXRlZCBmb3IgdGhpcyB2ZXJzaW9uITwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNi4xPC9wPgogICAgPHA+TW9yZSBmaXhlcyBmb3IgbXVsdGktZGF5IGV2ZW50IG9uIGNhbGVuZGFyLiBBZGRlZCBuZXcgcGFyYW1ldGVyICJ0aW1lX2Zvcm1hdCIgc28gd2UgY2FuIG1ha2UgdGhlIGRpc3BsYXkgb2YgYSBzaW5nbGUgZGF5IGV2ZW50IHdpdGggYSBzdGFydCBhbmQgc3RvcCB0aW1lIGxvb2sgYmV0dGVyLiBDaGFuZ2UgZGVfREVcJ3MgInRvIiB0byAiYmlzIiBhcyBwZXIgTW9yZHJhblwncyBwb3N0IG9uIHRoZSBib2FyZHMuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC42PC9wPgogICA8cD5GaXggZXZlbnQgZGlzcGxheSBzbyB0aGF0IGlmIHRoZSBlbmQgZGF0ZSBpcyBub3Qgc2V0LCB3ZSBkb25cJ3QgZGlzcGxheSAidG8iLjwvcD4KICAgPHA+RmlsdGVyIGJ5IGNhdGVnb3J5IHdoZW4gZGlzcGxheWluZyBhbiB1cGNvbWluZ2xpc3QuPC9wPgogICA8cD5GaXggRW5kIGRhdGUgc2V0dGluZyB0aGF0IHdhcyBvZmYgYnkgb25lLjwvcD4KICAgPHA+Rml4IG9kZCBiZWhhdmlvdXIgb2YgeWVhciB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBKYW4gdG8gRGVjIG9yIERlYyB0byBKYW4gaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9wPgogICA8cD5TdXBwb3J0IG11dGxpLWRheSBldmVudHMgaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC41PC9wPgogICAgPHA+Rml4IHRoZSBkcm9wIGRvd24gbGlzdCBmb3IgZW5kIGRhdGUgeWVhci4gRml4IERFIHRyYW5zbGF0aW9uIG9mICJSZXR1cm4iICh0aGFua3MgUGlyYXRvcyEpLjwvcD4KICAgIDxwPkZpeCBzcGFjaW5nIGFyb3VuZCAidG8iICh0aGFua3MgR3JlZyEpLiBBZGQgRGFuaXNoIGFuZCBEdXRjaCB0cmFuc2xhdGlvbnMgY291cnRlc3kgb2YgYm9hcmQgbWVtYmVycyBlc21hbm4gYW5kIGRvbnQuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC40PC9wPgogICAgPHA+U3VwcG9ydCBmb3IgbGFuZ3VhZ2UgdHJhbnNsYXRpb25zLiBEZWZhdWx0IHRvIGEgTlVMTCBlbmQgZGF0ZS4gSW1wcm92ZWQgdGhlIGhlbHAgaW5mb3JtYXRpb24uPC9wPgogICAgPHA+RGlzcGxheSB1cGNvbWluZyBldmVudHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIhIE90aGVyIG1pbm9yIGJ1ZyBmaXhlcy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjM8L3A+CiAgICA8cD5Jbml0aWFsIHN1cHBvcnQgZm9yICJGcm9tIiBhbmQgIlRvIiBkYXRlcyBmb3IgZXZlbnRzLiBBYmlsaXR5IHRvIGZpbHRlciBhZG1pbiBsaXN0IG9mIGV2ZW50cyBieSBjYXRlZ29yeS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjI8L3A+CiAgICA8cD5OZXcgZGlzcGxheSBvcHRpb246ICJ1cGNvbWluZ2xpc3QiLiBBbHNvIG1hbnkgYnVnZml4ZXMhPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC4xPC9wPgogICAgPHA+SW5pdGlhbCByZWxlYXNlLjwvcD4KPC9saT4KPC91bD4KPGJyIC8+]]></about>
	<description><![CDATA[A full featured, and flexible module to allow displaying information about events in numerous formats.]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.51</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGSimpleSmarty</requiredname>
	  <requiredversion>1.8</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addedit_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmZ1bmN0aW9uIGhhbmRsZV9udWxsX2RhdGVfdHMoJHZhbCkKewogICAgaWYoICR2YWwgKSB7CiAgICAgICAgJGRiID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0RGIoKTsKICAgICAgICAkc3RyID0gJGRiLT5EYlRpbWVTdGFtcCgkdmFsKTsKICAgICAgICByZXR1cm4gdHJpbSgkc3RyLCInIik7CiAgICB9Cn0KCmZ1bmN0aW9uIGhhbmRsZV9udWxsX2RhdGUoJHN0cikKewogIGlmKCAhaXNfbnVsbCgkc3RyKSApIHJldHVybiB0cmltKCRzdHIsIiciKTsKICByZXR1cm4gJHN0cjsKfQoKLy8KLy8gc2FmZXR5IGNoZWNrcwovLwokZmV1ID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CmlmKCAhJGZldSApIHsKICBlY2hvICc8aDM+PGZvbnQgY29sb3I9InJlZCI+Jy4kdGhpcy0+TGFuZygnZXJyb3Jfbm9mZXUnKS4iPC9mb250PjwvaDM+XG4iOwogIHJldHVybjsKfQplbHNlIGlmKCAhJGZldS0+TG9nZ2VkSW4oKSApIHsKICBlY2hvICc8aDM+PGZvbnQgY29sb3I9InJlZCI+Jy4kdGhpcy0+TGFuZygnZXJyb3JfZmV1X2xvZ2dlZGluJykuIjwvZm9udD48L2gzPlxuIjsKICByZXR1cm47Cn0KCi8vCi8vIGluaXRpYWxpemF0aW9uCi8vCiRmZXVfdWlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwokdGhldGVtcGxhdGUgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2VkaXRldmVudHRlbXBsYXRlJyk7CmlmKCAhJHRoZXRlbXBsYXRlICkgewogICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgnQ0dDYWxlbmRhcjo6ZWRpdGV2ZW50Jyk7CiAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdObyBkZWZhdWx0IGVkaXRldmVudCB0ZW1wbGF0ZSBmb3VuZCcpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgICR0aGV0ZW1wbGF0ZSA9ICR0cGwtPmdldF9uYW1lKCk7CiAgICB1bnNldCgkdHBsKTsKfQokZXZlbnRfaWQgPSBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsICdldmVudF9pZCcsIC0xKTsKJGV2ZW50ID0gJHRoaXMtPkdldEV2ZW50KCRldmVudF9pZCwkZmV1X3VpZCk7CiRmaWVsZHMgPSAkdGhpcy0+R2V0RmllbGRzKCk7CiRjYXRlZ29yaWVzID0gJHRoaXMtPkdldENhdGVnb3JpZXMoKTsKJHBvbGljeSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvdmVybGFwX3BvbGNpeScsJ2FsbCcpOwokZm9yY2VfY2F0ZWdvcnkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZm9yY2VfY2F0ZWdvcnknLDApOwokZGVzdHBhZ2UgPSAkcmV0dXJuaWQ7CmlmKCBpc3NldCgkcGFyYW1zWydyZXR1cm5faWQnXSkgKSB7CiAgICAkZGVzdHBhZ2UgPSAoaW50KSRwYXJhbXNbJ3JldHVybl9pZCddOwp9CmVsc2UgewogICAgJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnLCcnKTsKICAgIGlmKCAkdG1wICkgewogICAgICAgICR0bXAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRtcCk7CiAgICAgICAgaWYoICR0bXAgKSB7CiAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wKTsKICAgICAgICAgICAgaWYoICR0bXAgKSAkZGVzdHBhZ2UgPSAkdG1wOwogICAgICAgIH0KICAgIH0KfQokc3RhdHVzID0gJyc7CiRtZXNzYWdlID0gJyc7CgovLyBBZGQgaW5wdXQgY29udHJvbHMgZm9yIGVhY2ggb2YgdGhlIGN1c3RvbSBmaWVsZHMgdGhhdCBhcmUgZGVmaW5lZC4KaWYoICRmaWVsZHMgKSB7CiAgICAkdG1wID0gYXJyYXkoKTsKICAgIGZvcmVhY2goJGZpZWxkcyBhcyAkZmllbGQpIHsKICAgICAgICAkZmllbGRfdmFsdWVzID0gJGV2ZW50WydmaWVsZHMnXTsKICAgICAgICAkZmllbGRfbmFtZSA9ICRmaWVsZFsnZmllbGRfbmFtZSddOwogICAgICAgICRmaWVsZF90eXBlID0gJGZpZWxkWydmaWVsZF90eXBlJ107CiAgICAgICAgJGZpZWxkX3ZhbHVlID0gIiI7CiAgICAgICAgaWYoIGlzc2V0KCRmaWVsZF92YWx1ZXNbJGZpZWxkX25hbWVdKSApICRmaWVsZF92YWx1ZSA9ICRmaWVsZF92YWx1ZXNbJGZpZWxkX25hbWVdOwoKICAgICAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIHVuZGVyYmFycyBmb3IgdGhlIGZvcm0gcGFyYW1ldGVyIChhIGJpdCBvZiBhbiBpa2t5IGhhY2sgSSBrbm93LAogICAgICAgIC8vIGJ1dCBJIGNhbiB3ZWxsIGltYWdpbmUgZm9sayBkZWZpbmluZyBjdXN0b20gZmllbGRzIHdpdGggc3BhY2VzIGluIHRoZSBuYW1lKQogICAgICAgIC8vIFBlcmhhcHMgaXQgd291bGQgaGF2ZSBiZWVuIGJldHRlciBpZiBjdXN0b20gZmllbGRzIGFsc28gaGFkIGEgbnVtZXJpYyBrZXkgLSBob2h1bSBsaXZlIGFuZCBsZWFybiEKCiAgICAgICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgICAgICRvYmotPm5hbWUgPSAkZmllbGRbJ2ZpZWxkX25hbWUnXTsKICAgICAgICAkb2JqLT5zYWZlbmFtZSA9ICBzdHJfcmVwbGFjZSAoICIgIiwgIl8iLCAkZmllbGRfbmFtZSApOwogICAgICAgICRvYmotPnNlYXJjaGFibGUgPSAkZmllbGRbJ2ZpZWxkX3NlYXJjaGFibGUnXTsKICAgICAgICAkb2JqLT52YWx1ZSA9ICRmaWVsZF92YWx1ZTsKICAgICAgICAkb2JqLT50eXBlID0gJGZpZWxkX3R5cGU7CiAgICAgICAgaWYoIGlzc2V0KCRmaWVsZFsnZmllbGRfZXh0cmEnXSkgKSAkb2JqLT5leHRyYSA9ICRmaWVsZFsnZmllbGRfZXh0cmEnXTsKICAgICAgICBzd2l0Y2goICRmaWVsZF90eXBlICkgewogICAgICAgIGNhc2UgMDogLy8gdGhlIG5vcm1hbCB0ZXh0IGZpZWxkCiAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjYWxfZmllbGRfJy4kb2JqLT5zYWZlbmFtZSwgJGZpZWxkX3ZhbHVlLCA1MCwgMjU1KTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgLy8gYW4gdXBsb2FkIGZpZWxkIHR5cGUKICAgICAgICAgICAgLy8gZGlzcGxheSBhIGxhYmVsIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUsIGFuZCB0aGVuIGFuIHVwbG9hZCBmaWVsZAogICAgICAgICAgICAkb2JqLT52YWx1ZSA9ICRmaWVsZF92YWx1ZTsKICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwnY2FsX2ZpZWxkXycuJG9iai0+c2FmZW5hbWUsJycsNTApLgogICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnY2FsX3VwbG9hZF9maWVsZF8nLiRvYmotPnNhZmVuYW1lLCRmaWVsZF9uYW1lKS4KICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2NhbF91cGxvYWRfZmllbGRfb2xkdmFsdWVfJy4kb2JqLT5zYWZlbmFtZSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAvLyB0ZXh0IGFyZWEKICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCRmaWVsZF92YWx1ZSwnY2FsX2ZpZWxkXycuJG9iai0+c2FmZW5hbWUpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAvLyBjb21wYW55IGRpcmVjdG9yeSBlbnRyeS4KICAgICAgICAgICAgJGNkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDb21wYW55RGlyZWN0b3J5Jyk7CiAgICAgICAgICAgIGlmKCAhJGNkbW9kICkgewogICAgICAgICAgICAgICAgLy8gaGF2ZSBmaWVsZCB0eXBlLCBidXQgbm8gY29tcGFueWRpcmVjdG9yeSBtb2R1bGUuCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBnZXQgYSBsaXN0IG9mIHRoZSBjb21wYW5pZXMgdGhhdCB3ZSB3YW50IHRvIGRpc3BsYXkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxjb21wYW55X25hbWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NvbXBkaXJfY29tcGFuaWVzIE9SREVSIEJZIGNvbXBhbnlfbmFtZSc7CiAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgICAgICAgICAgaWYoICRkYnIgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcDIgPSBhcnJheSgkdGhpcy0+TGFuZygnbm9uZScpPT4tMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGRicik7ICRpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXAyWyRkYnJbJGldWydjb21wYW55X25hbWUnXV0gPSAkZGJyWyRpXVsnaWQnXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2NhbF9maWVsZF8nLiRvYmotPnNhZmVuYW1lLCR0bXAyLC0xLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgLy8gZmlsZSBhdHRhY2htZW50CiAgICAgICAgICAgICRvYmotPmZpZWxkID0gbnVsbDsKICAgICAgICAgICAgJGRpciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cGxvYWRkaXJlY3RvcnknKTsKICAgICAgICAgICAgaWYoICEkZGlyICkgJGRpciA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddOwogICAgICAgICAgICAkcGF0dGVybiA9IGV4cGxvZGUoJywnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cGxvYWRmaWxldHlwZXMnLCdqcGcsanBlZyxnaWYscG5nJykpOwogICAgICAgICAgICAkZXhjbHVkZXMgPSBhcnJheSgnXyonLCcuPz8qJyk7CiAgICAgICAgICAgIGZvcmVhY2goICRwYXR0ZXJuIGFzICYkb25lICkgewogICAgICAgICAgICAgICAgJG9uZSA9ICcqLicuJG9uZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZmlsZXMgPSBjZ2VfZGlyOjpyZWN1cnNpdmVfZ2xvYigkZGlyLCRwYXR0ZXJuLCdGSUxFUycsJGV4Y2x1ZGVzKTsKICAgICAgICAgICAgaWYoICFpc19hcnJheSgkZmlsZXMpIHx8IGNvdW50KCRmaWxlcykgPT0gMCApIGNvbnRpbnVlOwoKICAgICAgICAgICAgJG91dCA9IGFycmF5KCR0aGlzLT5MYW5nKCdub25lJyk9Pi0xKTsKICAgICAgICAgICAgZm9yZWFjaCggJGZpbGVzIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAkb25lID0gc3Vic3RyKCRvbmUsc3RybGVuKCRkaXIpKTsKICAgICAgICAgICAgICAgIGlmKCBzdGFydHN3aXRoKCRvbmUsJy8nKSApICRvbmUgPSBzdWJzdHIoJG9uZSwxKTsKICAgICAgICAgICAgICAgICRvdXRbJG9uZV0gPSAkb25lOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdjYWxfZmllbGRfJy4kb2JqLT5zYWZlbmFtZSwkb3V0LC0xLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgIC8vIGNoZWNrYm94CiAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnY2FsX2ZpZWxkXycuJG9iai0+c2FmZW5hbWUsMCk7CiAgICAgICAgICAgICRvYmotPmZpZWxkIC49ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnY2FsX2ZpZWxkXycuJG9iai0+c2FmZW5hbWUsMSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAvLyBkcm9wZG93bgogICAgICAgICAgICAkb2JqLT5maWVsZCA9IG51bGw7CiAgICAgICAgICAgIGlmKCAhZW1wdHkoJGZpZWxkWydmaWVsZF9leHRyYSddWydkZG9wdHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkb3B0cyA9IFxjZ2VfYXJyYXk6OmV4cGxvZGVfd2l0aF9rZXkoJGZpZWxkWydmaWVsZF9leHRyYSddWydkZG9wdHMnXSwnPScsIlxuIik7CiAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJG9wdHMpICYmIGNvdW50KCRvcHRzKSkgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2NhbF9maWVsZF8nLiRvYmotPnNhZmVuYW1lLGFycmF5X2ZsaXAoJG9wdHMpLC0xLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICR0bXBbJG9iai0+c2FmZW5hbWVdID0gJG9iajsKICAgIH0KICAgIGlmKCBjb3VudCgkdG1wKSApICRmaWVsZHMgPSAkdG1wOwp9CgppZiggJGNhdGVnb3JpZXMgKSB7CiAgICAkZGZsdF9jYXQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9jYXRlZ29yeScsJycpOwogICAgJHRtcCA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkY2F0ZWdvcmllcyBhcyAkY2F0ZWdvcnkgKSB7CiAgICAgICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgICAgICRvYmotPmlkID0gJGNhdGVnb3J5WydjYXRlZ29yeV9pZCddOwogICAgICAgICRvYmotPm5hbWUgPSAkY2F0ZWdvcnlbJ2NhdGVnb3J5X25hbWUnXTsKICAgICAgICAkb2JqLT5jaGVja2VkID0gMDsKICAgICAgICBpZiggJG9iai0+aWQgPT0gJGRmbHRfY2F0ICYmICRldmVudF9pZCA9PSAtMSApIHsKICAgICAgICAgICAgJG9iai0+Y2hlY2tlZCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoIGluX2FycmF5KCRvYmotPmlkLCRldmVudFsnY2F0ZWdvcmllcyddKSApIHsKICAgICAgICAgICAgJG9iai0+Y2hlY2tlZCA9IDE7CiAgICAgICAgfQogICAgICAgICRvYmotPmZpZWxkID0KICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnY2FsX2V2ZW50X2NhdGVnb3JpZXNbJy4kb2JqLT5pZC4nXScsMCkuCiAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnY2FsX2V2ZW50X2NhdGVnb3JpZXNbJy4kb2JqLT5pZC4nXScsMSwkb2JqLT5jaGVja2VkLCJpZD0nY2F0ZWdvcnkiLiRvYmotPmlkLiInIik7CiAgICAgICAgJHRtcFskb2JqLT5pZF0gPSAkb2JqOwogICAgfQogICAgJGNhdGVnb3JpZXMgPSAkdG1wOwp9CgovLwovLyBQcm9jZXNzIHRoZSBmb3JtCi8vCmlmKCBpc3NldCgkcGFyYW1zWydjYWxfY2FuY2VsJ10pICkgewogICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkZGVzdHBhZ2UpOwp9CmVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbF9zdWJtaXQnXSkgKSB7CgogICAgY2xhc3MgQ0dDYWxFdmVudEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24ge30KCiAgICAkdG1wID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUgKSB7CiAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJGtleSwnY2FsXycpICkgJGtleSA9IHN1YnN0cigka2V5LHN0cmxlbignY2FsXycpKTsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnZXZlbnRfdGl0bGUnOgogICAgICAgIGNhc2UgJ2V2ZW50X3N1bW1hcnknOgogICAgICAgICAgICAkdmFsdWUgPSBmaWx0ZXJfdmFyKHRyaW0oJHZhbHVlKSxGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX2RhdGUnOgogICAgICAgICAgICAka2V5ID0gJ2V2ZW50X3JlY3VyX2RhdGVfdXQnOwogICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3RpbWUoJHZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V2ZW50X2RldGFpbHMnOgogICAgICAgICAgICAkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUodHJpbSgkdmFsdWUpKTsKICAgICAgICAgICAgJHZhbHVlID0gY2dlX3V0aWxzOjpjbGVhbl9pbnB1dF9odG1sKCR2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkdG1wWyRrZXldID0gJHZhbHVlOwogICAgfQogICAgJHBhcmFtcyA9ICR0bXA7CiAgICBcY2djX2V2ZW50X3V0aWxzOjpnZXRfZXZlbnRfZnJvbV9wYXJhbXMoJGV2ZW50LCR0bXAsdHJ1ZSk7CiAgICBpZiggaXNzZXQoJGV2ZW50WydjYXRlZ29yaWVzJ10pICkgewogICAgICAgIGZvcmVhY2goICRldmVudFsnY2F0ZWdvcmllcyddIGFzICRjYXRfaWQgPT4gJGZsYWcgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkY2F0ZWdvcmllc1skY2F0X2lkXSkgKSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc1skY2F0X2lkXS0+Y2hlY2tlZCA9IChpbnQpICRmbGFnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHRyeSB7CiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGEgcXVhbGl0eQogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gIT0gTlVMTCAmJiAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPCAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9pbnZhbGlkX2RhdGVzJyk7CiAgICAgICAgfQogICAgICAgIGlmKCBlbXB0eSgkZXZlbnRbJ2V2ZW50X3RpdGxlJ10pICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ub2V2ZW50bmFtZScpOwogICAgICAgIGlmKCAhaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSB8fCBlbXB0eSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICkgIHRocm93IG5ldyBcQ0dDYWxFdmVudEV4Y2VwdGlvbignZXJyb3Jfbm9jYXRlZ29yeScpOwoKICAgICAgICAvLyB0b2RvOiBjaGVjayByZWN1cnJpbmcgZXZlbnQgZGV0YWlscwogICAgICAgIC8vIGNoZWNrIGV2ZW50IGZvciBjb25mbGljdHMuCiAgICAgICAgaWYoICRwb2xpY3kgIT0gJ2FsbCcgKSB7CiAgICAgICAgICAgIGlmKCBjZ2NfZXZlbnRfdXRpbHM6OmlzX2V2ZW50X2NvbmZsaWN0ZWQoJGV2ZW50LCRwb2xpY3kpICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ldmVudF9jb25mbGljdCcpOwogICAgICAgIH0KCiAgICAgICAgJHJlY3VycmluZ19ldmVudHMgPSBudWxsOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X3BhcmVudF9pZCddIDwgMSAmJiAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyApIHsKICAgICAgICAgICAgJHJlY3VycmluZ19ldmVudHMgPSBcY2djX2V2ZW50X3V0aWxzOjpjYWxjdWxhdGVfcmVjdXJyaW5nX2V2ZW50cygkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9pbnRlcnZhbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICAgICAgICAgIGlmKCAhY291bnQoJHJlY3VycmluZ19ldmVudHMpICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9yZWN1cnJpbmdfZGF0YScpOwoKICAgICAgICAgICAgZm9yKCAkaSA9IDAsICRuID0gY291bnQoJHJlY3VycmluZ19ldmVudHMpOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICAgICAgICAgJHJlY3VycmluZ19ldmVudHNbJGldWydldmVudF9hbGxfZGF5J10gPSAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG92ZXJsYXAgPSBcY2djX2V2ZW50X3V0aWxzOjpjaGVja19vdmVybGFwcGluZ19ldmVudHMoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10sJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddLCRyZWN1cnJpbmdfZXZlbnRzKTsKICAgICAgICAgICAgaWYoICRvdmVybGFwID09PSB0cnVlICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ldmVudG92ZXJsYXAnKTsKCiAgICAgICAgICAgIGlmKCAkcG9saWN5ICE9ICdhbGwnICkgewogICAgICAgICAgICAgICAgLy8gY2hlY2sgY2hpbGQgZXZlbnRzIGZvciBjb25mbGljdHMuCiAgICAgICAgICAgICAgICAkbmV3X3JlY3VycmluZyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkcmVjdXJyaW5nX2V2ZW50cyBhcyAkb25lZXZlbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmZsaWN0ID0gXGNnY19ldmVudF91dGlsczo6Y2hlY2tfZGJfZm9yX2NvbmZsaWN0cygkb25lZXZlbnQsJGV2ZW50WydldmVudF9pZCddLCRwb2xpY3ksJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddKTsKICAgICAgICAgICAgICAgICAgICBpZiggJGNvbmZsaWN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfYWN0aW9uJywnZXJyb3InKSA9PSAnZXJyb3InICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ldmVudF9jb25mbGljdCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lsZW50bHkgcmVtb3ZlIHRoaXMgZXZlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkbmV3X3JlY3VycmluZ1tdID0gJG9uZWV2ZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHJlY3VycmluZ19ldmVudHMgPSAkbmV3X3JlY3VycmluZzsKICAgICAgICAgICAgICAgIGlmKCAhY291bnQoJHJlY3VycmluZ19ldmVudHMpICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9yZWN1cnJpbmdfZGF0YScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBoYW5kbGUgYW55IGZpbGUgZmllbGRzLi4uCiAgICAgICAgaWYoIGlzc2V0KCRfRklMRVMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlICkgewogICAgICAgICAgICAgICAgaWYoICFzdGFydHN3aXRoKCRrZXksJ3VwbG9hZF9maWVsZF8nKSApIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICR0aGVmaWVsZCA9IHN1YnN0cigka2V5LHN0cmxlbigndXBsb2FkX2ZpZWxkXycpKTsKICAgICAgICAgICAgICAgICRmbGRuYW1lID0gJGlkLidjYWxfZmllbGRfJy4kdGhlZmllbGQ7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRfRklMRVNbJGZsZG5hbWVdKSB8fCBlbXB0eSgkX0ZJTEVTWyRmbGRuYW1lXVsndG1wX25hbWUnXSkgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnJzsKICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICR0aGlzLT5IYW5kbGVVcGxvYWQoJGZsZG5hbWUsJGVycm9yKTsKICAgICAgICAgICAgICAgIGlmKCAkZmlsZW5hbWUgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSAnZXJyb3JfdXBsb2FkJzsKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICRlcnJvcjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwYXJhbXNbJ2ZpZWxkXycuJHRoZWZpZWxkXSA9ICRmaWxlbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbWVyZ2UgZmllbGQgdmFsdWVzIGJhY2sgaW50byB0aGUgZmllbGRzIGFycmF5CiAgICAgICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSApIHsKICAgICAgICAgICAgaWYoICFzdGFydHN3aXRoKCRrZXksJ2ZpZWxkXycpICkgY29udGludWU7CiAgICAgICAgICAgICRmaWVsZG5hbWUgPSBzdWJzdHIoJGtleSxzdHJsZW4oJ2ZpZWxkXycpKTsKICAgICAgICAgICAgc3dpdGNoKCAkZmllbGRzWyRmaWVsZG5hbWVdLT50eXBlICkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBmaWx0ZXJfdmFyKHRyaW0oJHZhbHVlKSxGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUodHJpbSgkdmFsdWUpKTsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IGNnZV91dGlsczo6Y2xlYW5faW5wdXRfaHRtbCgkdmFsdWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpZWxkc1skZmllbGRuYW1lXS0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICAvLyBtZXJnZSBjYXRlZ29yeSB2YWx1ZXMgYmFjayBpbnRvIHRoZSBjYXRlZ29yaWVzIGFycmF5CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICRjYXRlZ29yaWVzIGFzICYkb25lICkgewogICAgICAgICAgICAgICAgJG9uZS0+Y2hlY2tlZCA9IDA7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddWyRvbmUtPmlkXSkgKSAkb25lLT5jaGVja2VkID0gJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddWyRvbmUtPmlkXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gcmVhZHkgdG8gaW5zZXJ0IG9yIHVwZGF0ZQogICAgICAgICRjaGlsZF9pZHMgPSBudWxsOwogICAgICAgICRmaWVsZHRleHQgPSAnJzsKICAgICAgICAkZG9faW5zZXJ0ID0gZmFsc2U7CiAgICAgICAgJGRiciA9IG51bGw7CgogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2lkJ10gPiAwICkgewogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgaXQncyBhbiB1cGRhdGUgdG8gYW4gZXhpc3RpbmcgZXZlbnQKICAgICAgICAgICAgLy8KCiAgICAgICAgICAgIC8vIGdldCB0aGUgY2hpbGQgaWQncyBvZiB0aGlzIGV2ZW50IGlmIGFueS4KICAgICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8nOwogICAgICAgICAgICAkY2hpbGRfaWRzID0gJGRiLT5HZXRDb2woJHNxbCxhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKCiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgb2YgdGhlIGNoaWxkIGV2ZW50cy4KICAgICAgICAgICAgJHRtcCA9IGFycmF5KChpbnQpICRldmVudFsnZXZlbnRfaWQnXSk7CiAgICAgICAgICAgIGlmKCBjb3VudCgkY2hpbGRfaWRzKSApICR0bXAgPSBhcnJheV9tZXJnZSgkdG1wLCRjaGlsZF9pZHMpOwogICAgICAgICAgICAkY2hpbGRyZW5fc3RyID0gJygnLmltcGxvZGUoJywnLCR0bXApLicpJzsKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIElOICcuJGNoaWxkcmVuX3N0cjsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwpOwogICAgICAgICAgICAkc3FsID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCBJTiAnLiRjaGlsZHJlbl9zdHI7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsKTsKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8nOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKCiAgICAgICAgICAgIC8vIGRvIHRoZSB1cGRhdGUKICAgICAgICAgICAgJHNxbCA9ICJVUERBVEUgIiAuICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICIKICAgICAgICAgICAgICAgICAgU0VUIGV2ZW50X3RpdGxlID0gPywgZXZlbnRfc3VtbWFyeSA9ID8sIGV2ZW50X2RldGFpbHMgPSA/LCBldmVudF9kYXRlX3N0YXJ0ID0gPywgZXZlbnRfZGF0ZV9lbmQgPSA/LCBldmVudF9yZWN1cl9wZXJpb2QgPSA/LCBldmVudF9kYXRlX3JlY3VyX2VuZCA9ID8sCiAgICAgICAgICAgICAgICAgIGV2ZW50X3JlY3VyX25ldmVudHMgPSA/LCBldmVudF9yZWN1cl9pbnRlcnZhbCA9ID8sIGV2ZW50X3JlY3VyX3dlZWtkYXlzID0gPywgZXZlbnRfcmVjdXJfbW9udGhkYXlzID0gPywgZXZlbnRfbW9kaWZpZWRfZGF0ZSA9IE5PVygpLAogICAgICAgICAgICAgICAgICBldmVudF9hbGxvd3Nfb3ZlcmxhcCA9ID8sIGV2ZW50X2FsbF9kYXkgPSA/CgkgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyI7CiAgICAgICAgICAgICRkYnIgPSAgJGRiLT5FeGVjdXRlKCRzcWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCRldmVudFsnZXZlbnRfdGl0bGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9zdW1tYXJ5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddLCInIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9udWxsX2RhdGUoJGV2ZW50WydldmVudF9kYXRlX2VuZCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX251bGxfZGF0ZSgkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX2NvdW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxfZGF5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfaWQnXSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gd2UgYXJlIGluc2VydGluZyBhIG5ldyByZWNvcmQKICAgICAgICAgICAgLy8KICAgICAgICAgICAgJGRvX2luc2VydCA9IHRydWU7CgogICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2lkJ10gPSAkZGItPkdlbklEKCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICJfc2VxIik7CgogICAgICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiCiAgICAgICAgICAgICAgICAgIChldmVudF9pZCxldmVudF90aXRsZSxldmVudF9zdW1tYXJ5LGV2ZW50X2RldGFpbHMKCSAgICAgICAgICAgICAgLGV2ZW50X2RhdGVfc3RhcnQsZXZlbnRfZGF0ZV9lbmQsZXZlbnRfcGFyZW50X2lkCgkgICAgICAgICAgICAgICxldmVudF9yZWN1cl9wZXJpb2QsIGV2ZW50X2RhdGVfcmVjdXJfZW5kLCBldmVudF9jcmVhdGVkX2J5CiAgICAgICAgICAgICAgICAgICxldmVudF9yZWN1cl9uZXZlbnRzLCBldmVudF9yZWN1cl9pbnRlcnZhbCwgZXZlbnRfcmVjdXJfd2Vla2RheXMKICAgICAgICAgICAgICAgICAgLGV2ZW50X3JlY3VyX21vbnRoZGF5cywgZXZlbnRfYWxsb3dzX292ZXJsYXAsIGV2ZW50X2FsbF9kYXkKCSAgICAgICAgICAgICAgLGV2ZW50X2NyZWF0ZV9kYXRlLCBldmVudF9tb2RpZmllZF9kYXRlKQogICAgICAgICAgICAgICAgICBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sTk9XKCksTk9XKCkpIjsKICAgICAgICAgICAgJGRicj0kZGItPkV4ZWN1dGUoJHNxbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJGV2ZW50WydldmVudF9pZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfc3VtbWFyeSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RldGFpbHMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcGFyZW50X2lkJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9udWxsX2RhdGUoJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZldV91aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9pbnRlcnZhbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSkpOwogICAgICAgIH0KCiAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9kYmVycm9yJyk7CgogICAgICAgIC8vIGluc2VydCBmaWVsZCBkZWZpbml0aW9ucwogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLiR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZS4nIChmaWVsZF9uYW1lLCBldmVudF9pZCwgZmllbGRfdmFsdWUpIFZBTFVFUyAoPyw/LD8pJzsKCiAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkZmllbGQgKSB7CiAgICAgICAgICAgICRmaWVsZG5hbWUgPSAkZmllbGQtPm5hbWU7CiAgICAgICAgICAgIGlmKCAhZW1wdHkoJGZpZWxkLT52YWx1ZSkgKSB7CiAgICAgICAgICAgICAgICBpZiggJGZpZWxkLT5zZWFyY2hhYmxlICkgJGZpZWxkdGV4dCAuPSAkZmllbGQtPnZhbHVlLicgJzsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZpZWxkLT5uYW1lLCRldmVudFsnZXZlbnRfaWQnXSwkZmllbGQtPnZhbHVlKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGluc2VydCBjYXRlZ29yeSB2YWx1ZXMKICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIChjYXRlZ29yeV9pZCxldmVudF9pZCkgVkFMVUVTICg/LD8pJzsKICAgICAgICBmb3JlYWNoKCAkY2F0ZWdvcmllcyBhcyAmJG9uZSApIHsKICAgICAgICAgICAgaWYoICEkb25lLT5jaGVja2VkICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAkb25lLT5pZCA8PSAwICkgY29udGludWU7CgogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KChpbnQpICRvbmUtPmlkLChpbnQpICRldmVudFsnZXZlbnRfaWQnXSkpOwogICAgICAgIH0KCiAgICAgICAgaWYoIGNvdW50KCRyZWN1cnJpbmdfZXZlbnRzKSApIHsKICAgICAgICAgICAgLy8gYWRkIHRoZSByZWN1cnJpbmcgZXZlbnRzLgogICAgICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiKGV2ZW50X2lkLGV2ZW50X3RpdGxlLGV2ZW50X3N1bW1hcnksZXZlbnRfZGV0YWlscyxldmVudF9kYXRlX3N0YXJ0LGV2ZW50X2RhdGVfZW5kLGV2ZW50X3BhcmVudF9pZAogICAgICAgICAgICAgICAgICAgICxldmVudF9jcmVhdGVkX2J5LGV2ZW50X2FsbG93c19vdmVybGFwLGV2ZW50X2FsbF9kYXksZXZlbnRfY3JlYXRlX2RhdGUsIGV2ZW50X21vZGlmaWVkX2RhdGUpCiAgICAgICAgICAgICAgICAgICAgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/LE5PVygpLE5PVygpKSI7CiAgICAgICAgICAgIGZvcmVhY2goICRyZWN1cnJpbmdfZXZlbnRzIGFzICRvbmVldmVudCApIHsKICAgICAgICAgICAgICAgICRjaGlsZF9ldmVudF9pZCA9ICRkYi0+R2VuSUQoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIl9zZXEiKTsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCRjaGlsZF9ldmVudF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9zdW1tYXJ5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kZXRhaWxzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZGItPkRiVGltZVN0YW1wKCRvbmVldmVudFsnc3RhcnQnXSksIiciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbnVsbF9kYXRlX3RzKCRvbmVldmVudFsnZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfaWQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmV1X3VpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxfZGF5J10pKTsKCiAgICAgICAgICAgICAgICBkZWJ1Z190b19sb2coJGRiLT5zcWwpOwogICAgICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGNhdGVnb3JpZXMpICYmIChjb3VudCgkY2F0ZWdvcmllcykgPiAwKSkgewogICAgICAgICAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkY2F0ZWdvcmllcywnY2F0ZWdvcmllcycpOwogICAgICAgICAgICAgICAgICAgICRzcWwyID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZSAuICIgKGNhdGVnb3J5X2lkLCBldmVudF9pZCkgVkFMVUVTICg/LD8pIjsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRjYXRlZ29yaWVzIGFzICYkb25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhJG9uZS0+Y2hlY2tlZCApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcnlfaWQgPSAoaW50KSAkb25lLT5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGNhdGVnb3J5X2lkID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwyLGFycmF5KCRjYXRlZ29yeV9pZCwoaW50KSAkY2hpbGRfZXZlbnRfaWQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZGItPnNxbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbm90ZSwgd2UgZG8gbm90IGRvIGZpZWxkIHZhbHVlcyBmb3IgcmVjdXJyaW5nIGV2ZW50cyBoZXJlLgogICAgICAgICAgICAgICAgLy8gdGhlIHZhcmlvdXMgdmlld3MgY2FuIHJlYWQgZmllbGQgdmFsdWVzIGZyb20gcGFyZW50IGV2ZW50cy4KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gc2VuZCBhIHNpbmdsZSBldmVudAogICAgICAgICRldmVudG5hbWUgPSAnRXZlbnRBZGRlZCc7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkcGFybXNbJ2V2ZW50X3RpdGxlJ10gPSAkZXZlbnRbJ2V2ZW50X3RpdGxlJ107CiAgICAgICAgJHBhcm1zWydldmVudF9zdW1tYXJ5J10gPSAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXTsKICAgICAgICAkcGFybXNbJ2V2ZW50X2RldGFpbHMnXSA9ICRldmVudFsnZXZlbnRfZGV0YWlscyddOwogICAgICAgICRwYXJtc1snZXZlbnRfZGF0ZV9zdGFydCddID0gJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J107CiAgICAgICAgJHBhcm1zWydldmVudF9kYXRlX2VuZCddID0gJGV2ZW50WydldmVudF9kYXRlX2VuZCddOwogICAgICAgICRwYXJtc1snZXZlbnRfaWQnXSA9ICRldmVudFsnZXZlbnRfaWQnXTsKICAgICAgICBpZiggISRkb19pbnNlcnQgKSAkZXZlbnRuYW1lID0gJ0V2ZW50RWRpdGVkJzsKICAgICAgICAkdGhpcy0+U2VuZEV2ZW50KCAkZXZlbnRuYW1lLCAkcGFybXMgKTsKCiAgICAgICAgLy8gdXBkYXRlIHRoZSBzZWFyY2ggaW5kZXgKICAgICAgICAkc2VhcmNoID0gY21zX3V0aWxzOjpnZXRfc2VhcmNoX21vZHVsZSgpOwogICAgICAgIGlmKCAkc2VhcmNoICE9IEZBTFNFICkgewogICAgICAgICAgICAkdGV4dCA9ICJ7JGV2ZW50WydldmVudF90aXRsZSddfSB7JGV2ZW50WydldmVudF9zdW1tYXJ5J119IHskZXZlbnRbJ2V2ZW50X2RldGFpbHMnXX0iOwogICAgICAgICAgICAkdGV4dCAuPSAnICcuJGZpZWxkdGV4dDsKICAgICAgICAgICAgJHNlYXJjaC0+QWRkV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGV2ZW50WydldmVudF9pZCddLCAnZXZlbnQnLCAkdGV4dCwgTlVMTCk7CiAgICAgICAgfQoKICAgICAgICAvLyBhbmQgZG9uZQogICAgICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJGRlc3RwYWdlKTsKICAgIH0KICAgIGNhdGNoKCBcQ0dDYWxFdmVudEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAkc3RhdHVzID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICAkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCRzdGF0dXMpOwogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgJHN0YXR1cyA9ICdlcnJvcic7CiAgICAgICAgJG1lc3NhZ2UgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgfQp9IC8vIGlmIHN1Ym1pdAoKLy8KLy8gYnVpbGQgdGhlIGZvcm0KLy8KJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0aGV0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOwokdHBsLT5hc3NpZ24oJ2V2ZW50JywkZXZlbnQpOwppZiggIWVtcHR5KCRzdGF0dXMpICkgJHRwbC0+YXNzaWduKCdzdGF0dXMnLCRzdGF0dXMpOwppZiggIWVtcHR5KCRtZXNzYWdlKSApICR0cGwtPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOwppZiggJGZpZWxkcyApICR0cGwtPmFzc2lnbignZmllbGRzJywkZmllbGRzKTsKaWYoICRjYXRlZ29yaWVzICkgJHRwbC0+YXNzaWduKCdjYXRlZ29yaWVzJywkY2F0ZWdvcmllcyk7CgovLyBzdHVmZiBmb3IgcmVjdXJyaW5nIGV2ZW50cwokcmVjdXJfZGF5cyA9IGFycmF5KCk7CiRyZWN1cl9kYXlzWydzcGVjaWZpZWQnXSAgICAgICAgPSAkdGhpcy0+TGFuZygnc3BlY2lmaWVkX2RhdGUnKTsKJHJlY3VyX2RheXNbJzEsMCddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJzEsMSddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF9tb25kYXknKTsKJHJlY3VyX2RheXNbJzEsMiddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDMnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3Rfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDQnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJzEsNSddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJzEsNiddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF9zYXR1cmRheScpOwokcmVjdXJfZGF5c1snMiwwJ10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJzIsMSddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDInXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJzIsMyddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDQnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDUnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX2ZyaWRheScpOwokcmVjdXJfZGF5c1snMiw2J10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF9zYXR1cmRheScpOwokcmVjdXJfZGF5c1snMywwJ10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX3N1bmRheScpOwokcmVjdXJfZGF5c1snMywxJ10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX21vbmRheScpOwokcmVjdXJfZGF5c1snMywyJ10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJzMsMyddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF93ZWRuZXNkYXknKTsKJHJlY3VyX2RheXNbJzMsNCddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF90aHVyc2RheScpOwokcmVjdXJfZGF5c1snMyw1J10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX2ZyaWRheScpOwokcmVjdXJfZGF5c1snMyw2J10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX3NhdHVyZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDAnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3N1bmRheScpOwokcmVjdXJfZGF5c1snNCwxJ10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF9tb25kYXknKTsKJHJlY3VyX2RheXNbJzQsMiddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfdHVlc2RheScpOwokcmVjdXJfZGF5c1snNCwzJ10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF93ZWRuZXNkYXknKTsKJHJlY3VyX2RheXNbJzQsNCddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJzQsNSddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfZnJpZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDYnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3NhdHVyZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSwwJ10gPSAkdGhpcy0+TGFuZygnbGFzdF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJy0xLDEnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X21vbmRheScpOwokcmVjdXJfZGF5c1snLTEsMiddID0gJHRoaXMtPkxhbmcoJ2xhc3RfdHVlc2RheScpOwokcmVjdXJfZGF5c1snLTEsMyddID0gJHRoaXMtPkxhbmcoJ2xhc3Rfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSw0J10gPSAkdGhpcy0+TGFuZygnbGFzdF90aHVyc2RheScpOwokcmVjdXJfZGF5c1snLTEsNSddID0gJHRoaXMtPkxhbmcoJ2xhc3RfZnJpZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSw2J10gPSAkdGhpcy0+TGFuZygnbGFzdF9zYXR1cmRheScpOwokdHBsLT5hc3NpZ24oJ3JlY3VyX2RheXMnLCRyZWN1cl9kYXlzKTsKCiR3ZWVrZGF5cyA9ICR0aGlzLT5HZXREYXlOYW1lcygpOwokdHBsLT5hc3NpZ24oJ2lucHV0X3dlZWtkYXlzJywgJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJ2V2ZW50X3JlY3VyX3dlZWtkYXlzW10nLGFycmF5X2ZsaXAoJHdlZWtkYXlzKSwkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10sNykpOwokdHBsLT5hc3NpZ24oJ3JlcGVhdF9zdHInLCR0aGlzLT5MYW5nKCdwbHVyYWxfJy4kZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddKSk7CiR0cGwtPmFzc2lnbignd2Vla2RheXMnLCR3ZWVrZGF5cyk7CiRudW1zID0gYXJyYXkoKTsKJG51bXNbLTFdID0gJHRoaXMtPkxhbmcoJ3VubGltaXRlZCcpOwpmb3IoICRpID0gMDsgJGkgPCA1MDsgJGkrKyApIHsKICAgICRudW1zWyRpKzFdID0gJGkrMTsKfQokbnVtc1sxMDBdID0gMTAwOwokbnVtc1syNTBdID0gMjUwOwokdHBsLT5hc3NpZ24oJ21heGl0ZXJzJywkbnVtcyk7CiRudW1zID0gYXJyYXkoKTsKZm9yKCAkaSA9IDA7ICRpIDwgMzA7ICRpKysgKSB7CiAgICAkbnVtc1skaSsxXSA9ICRpKzE7Cn0KJHRwbC0+YXNzaWduKCdudW1zJywkbnVtcyk7CiR0cGwtPmFzc2lnbigncmVjdXJfb3B0aW9ucycsCiAgICAgICAgICAgICBhcnJheSgnbm9uZSc9PiR0aGlzLT5MYW5nKCdubycpLAogICAgICAgICAgICAgICAgICAgJ2RhaWx5Jz0+JHRoaXMtPkxhbmcoJ2RhaWx5JyksCiAgICAgICAgICAgICAgICAgICAnd2Vla2x5Jz0+JHRoaXMtPkxhbmcoJ3dlZWtseScpLAogICAgICAgICAgICAgICAgICAgJ21vbnRobHknPT4kdGhpcy0+TGFuZygnbW9udGhseScpLAogICAgICAgICAgICAgICAgICAgJ3llYXJseSc9PiR0aGlzLT5MYW5nKCd5ZWFybHknKSkpOwokcGx1cmFscyA9IGFycmF5KCdkYWlseSc9PiR0aGlzLT5MYW5nKCdwbHVyYWxfZGFpbHknKSwKICAgICAgICAgICAgICAgICAgICd3ZWVrbHknPT4kdGhpcy0+TGFuZygncGx1cmFsX3dlZWtseScpLAogICAgICAgICAgICAgICAgICAgJ21vbnRobHknPT4kdGhpcy0+TGFuZygncGx1cmFsX21vbnRobHknKSwKICAgICAgICAgICAgICAgICAgICd5ZWFybHknPT4kdGhpcy0+TGFuZygncGx1cmFsX3llYXJseScpCiAgICApOwokdHBsLT5hc3NpZ24oJ3BsdXJhbHNfanNvbicsanNvbl9lbmNvZGUoJHBsdXJhbHMpKTsKCi8vIG90aGVyIHN0dWZmLi4KJHBhcm1zID0gYXJyYXkoKTsKJHBhcm1zWydldmVudF9pZCddID0gJGV2ZW50X2lkOwppZiggaXNzZXQoJHBhcmFtc1snZWRpdGV2ZW50dGVtcGxhdGUnXSkgKSAkcGFybXNbJ2VkaXRldmVudHRlbXBsYXRlJ10gPSAkcGFyYW1zWydlZGl0ZXZlbnR0ZW1wbGF0ZSddOwppZiggaXNzZXQoJHBhcmFtc1sncmV0dXJuX2lkJ10pICkgJHBhcm1zWydyZXR1cm5faWQnXSA9ICRwYXJhbXNbJ3JldHVybl9pZCddOwokdHBsLT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRkZWRpdF9ldmVudCcsJHJldHVybmlkLCRwYXJtcyxmYWxzZSwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CiR0cGwtPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRjdXJyZW50X3llYXIgPSBkYXRlKCdZJyk7CiRzdGFydCA9ICRjdXJyZW50X3llYXIgLSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2hvd3Bhc3R5ZWFycycsMik7CiRlbmQgPSAkY3VycmVudF95ZWFyICsgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dmdXR1cmV5ZWFycycsMTApOwokdHBsLT5hc3NpZ24oJ3N0YXJ0X3llYXInLCRzdGFydCk7CiR0cGwtPmFzc2lnbignZW5kX3llYXInLCRlbmQpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_addedit_category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudEFjdGlvbignYWRtaW5fc2V0dGluZ3MnKTsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2FkbWluX21hbmFnZV9jYXRlZ29yaWVzJyk7CgovLyBoYW5kbGUgY2FuY2VsCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKLy8gc2V0dXAKJGNhdGlkID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjYXRpZCcpOwokY2F0ZWdvcnkgPSBudWxsOwp0cnkgewogICAgLy8gY3JlYXRlL2dldCBpbml0aWFsIGVtcHR5IGNhdGVnb3J5IChmb3IgYWRkaW5nKQogICAgJGNhdGVnb3J5ID0gbmV3IFxDR0NhbGVuZGFyXGNhdGVnb3J5OwoKICAgIC8vIGlmIHdlIGhhdmUgYSBjYXRlZ29yeSBsb2FkIGl0LgogICAgaWYoICRjYXRpZCA+IDAgKSAkY2F0ZWdvcnkgPSBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6bG9hZCgkY2F0aWQpOwoKICAgIC8vIGhhbmRsZSBzdWJtaXQKICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgLy8gbWVyZ2UgdGhlIGZvcm0gZGF0YSBpbnRvIHRoZSBjYXRlZ29yeQogICAgICAgICRjYXRlZ29yeVsnbmFtZSddID0gJHBhcmFtc1snbmFtZSddOwogICAgICAgICRjYXRlZ29yeVsnYmdjb2xvciddID0gJHBhcmFtc1snYmdjb2xvciddOwogICAgICAgICRjYXRlZ29yeVsnZmdjb2xvciddID0gJHBhcmFtc1snZmdjb2xvciddOwoKICAgICAgICAvLyBzYXZlCiAgICAgICAgJGNhdGVnb3J5LT5zYXZlKCk7CgogICAgICAgIC8vIHJlZGlyZWN0IG91dGEgaGVyZS4KICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnY2F0ZWdvcnl1cGRhdGVkJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7CiAgICB9Cgp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlLT5HZXRNZXNzYWdlKCkpOwp9CgovLyBnaXZlIHRoZSBjYXRlZ29yeSB0byBzbWFydHkKJHBhcm1zID0gYXJyYXkoKTsKaWYoICRjYXRpZCA+IDAgKSAkcGFybXNbJ2NhdGlkJ10gPSAkY2F0aWQ7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9hZGRlZGl0X2NhdGVnb3J5JywkcmV0dXJuaWQsJHBhcm1zKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnknLCRjYXRlZ29yeSk7CgovLyBkaXNwbGF5IHRoZSB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2FkZGVkaXRfY2F0ZWdvcnkudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_add_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2RlZmF1bHRhZG1pbicpOwoKLy8gcGVybWlzc2lvbnMgY2hlY2sKJGV2ZW50X2lkID0gY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZXZlbnRfaWQnLC0xKTsKaWYoICRldmVudF9pZCA8IDEgKSB7CiAgICAvLyBhZGRpbmcKICAgIGlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJykgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSApIHsKICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb24nKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwogICAgfQp9CmVsc2UgewogICAgLy8gZWRpdGluZwogICAgaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJgogICAgICAgICEoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSAmJiAkZXZlbnRbJ2V2ZW50X2NyZWF0ZWRfYnknXSA9PSAkdXNlcl9pZCkgKSB7CiAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9uJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgIH0KfQoKLy8gc2V0dXAKJHVzZXJfaWQgPSBnZXRfdXNlcmlkKCkgKiAtMSAtIDEwMDsKJGNhdGVnb3JpZXMgPSAkdGhpcy0+R2V0Q2F0ZWdvcmllcygpOwoKLy8gR2V0IHRoZSBldmVudAokZXZlbnQgPSAkdGhpcy0+R2V0RXZlbnQoJGV2ZW50X2lkKTsKaWYoICRldmVudF9pZCA8IDEgKSAgewogICAgLy8gaXQncyBhbiBhZGQgb3BlcmF0aW9uCiAgICBpZiggaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkgKSB7CiAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10gPSAoaW50KSRwYXJhbXNbJ3N0YXJ0J107CiAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10gPSAkZGItPlVuaXhUaW1lU3RhbXAoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10pOwogICAgfQp9CmlmKCBpc3NldCgkcGFyYW1zWydkb19nZXRfZnJvbV9wYXJhbXMnXSkgJiYgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPT0gMSApIFxjZ2NfdXRpbHM6OmdldF9ldmVudF9mcm9tX3BhcmFtcygkZXZlbnQsJHBhcmFtcyk7CgokZXh0cmE9IiI7CmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgiZm9yY2VfY2F0ZWdvcnkiKT09MSkgewogICAgJGV4dHJhPSJvbnN1Ym1pdD0nZm9yKGk9MDtpPCIuY291bnQoJGNhdGVnb3JpZXMpLiI7aSsrKXt2YXIgbmFtZT1cImNhdGVnb3J5XCIraTsgdmFyIGVsZW1lbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFtZSk7IGlmIChlbGVtZW50LmNoZWNrZWQpIHJldHVybiB0cnVlO307IGFsZXJ0KFwiIi4kdGhpcy0+TGFuZygiY2F0ZWdvcnlfcmVtaW5kZXIiKS4iXCIpOyByZXR1cm4gZmFsc2U7JyI7Cn0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRtaW5fZXZlbnRfdXBkYXRlJywgJHJldHVybmlkLCAkbWV0aG9kPSdwb3N0JywgJGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwiIixhcnJheSgpLCRleHRyYSkpOwokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2V2ZW50X2lkJywgJGV2ZW50X2lkKSk7CgokY3VycmVudF95ZWFyID0gZGF0ZSgnWScpOwokc3RhcnQgPSAkY3VycmVudF95ZWFyIC0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dwYXN0eWVhcnMnLDIpOwokZW5kID0gJGN1cnJlbnRfeWVhciArICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93ZnV0dXJleWVhcnMnLDEwKTsKJHNtYXJ0eS0+YXNzaWduKCdzdGFydF95ZWFyJywkc3RhcnQpOwokc21hcnR5LT5hc3NpZ24oJ2VuZF95ZWFyJywkZW5kKTsKJHRtcCA9IGNnY2FsZW5kYXJfdXRpbHM6OmdldF91c2VybmFtZSgkZXZlbnRbJ2V2ZW50X2NyZWF0ZWRfYnknXSk7CmlmKCAkdG1wICkgJGV2ZW50Wydvd25lcl9uYW1lJ10gPSAkdG1wOwokc21hcnR5LT5hc3NpZ24oJ2V2ZW50JywkZXZlbnQpOwoKJGV2ZW50X2RhdGVfc3RhcnRfdXQgPSB0aW1lKCk7CmlmKGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Ib3VyJ10pKSB7CiAgICAkZXZlbnRfZGF0ZV9zdGFydF91dCA9IG1rdGltZSgkcGFyYW1zWydzdGFydGRhdGVfSG91ciddLCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9NaW51dGUnXSwwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snc3RhcnRkYXRlX01vbnRoJ10sJHBhcmFtc1snc3RhcnRkYXRlX0RheSddLCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9ZZWFyJ10pOwp9CgokZXZlbnRfZGF0ZV9lbmRfdXQgPSAwOwppZihpc3NldCgkcGFyYW1zWydlbmRkYXRlX0hvdXInXSkpIHsKICAgICRldmVudF9kYXRlX2VuZF91dCA9IG1rdGltZSgkcGFyYW1zWydlbmRkYXRlX0hvdXInXSwkcGFyYW1zWydlbmRkYXRlX01pbnV0ZSddLDU5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2VuZGRhdGVfTW9udGgnXSwkcGFyYW1zWydlbmRkYXRlX0RheSddLCRwYXJhbXNbJ2VuZGRhdGVfWWVhciddKTsKfQoKJGV2ZW50X3JlY3VyX3BlcmlvZAogPSAnbm9uZSc7CmlmIChpc3NldCgkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddKSkgICRldmVudF9yZWN1cl9wZXJpb2QgPSAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddOwoKCi8vIGZvciByZWN1cnJpbmcgZXZlbnRzCiRyZWN1cl9kYXlzID0gYXJyYXkoKTsKJHJlY3VyX2RheXNbJ3NwZWNpZmllZCddICAgICAgICA9ICR0aGlzLT5MYW5nKCdzcGVjaWZpZWRfZGF0ZScpOwokcmVjdXJfZGF5c1snMSwwJ10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3N1bmRheScpOwokcmVjdXJfZGF5c1snMSwxJ10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X21vbmRheScpOwokcmVjdXJfZGF5c1snMSwyJ10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJzEsMyddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF93ZWRuZXNkYXknKTsKJHJlY3VyX2RheXNbJzEsNCddICA9ICR0aGlzLT5MYW5nKCdmaXJzdF90aHVyc2RheScpOwokcmVjdXJfZGF5c1snMSw1J10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X2ZyaWRheScpOwokcmVjdXJfZGF5c1snMSw2J10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3NhdHVyZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDAnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX3N1bmRheScpOwokcmVjdXJfZGF5c1snMiwxJ10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF9tb25kYXknKTsKJHJlY3VyX2RheXNbJzIsMiddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfdHVlc2RheScpOwokcmVjdXJfZGF5c1snMiwzJ10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF93ZWRuZXNkYXknKTsKJHJlY3VyX2RheXNbJzIsNCddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJzIsNSddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfZnJpZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDYnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX3NhdHVyZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDAnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDEnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDInXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfdHVlc2RheScpOwokcmVjdXJfZGF5c1snMywzJ10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snMyw0J10gID0gJHRoaXMtPkxhbmcoJ3RoaXJkX3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDUnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfZnJpZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDYnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfc2F0dXJkYXknKTsKJHJlY3VyX2RheXNbJzQsMCddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDEnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX21vbmRheScpOwokcmVjdXJfZGF5c1snNCwyJ10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDMnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snNCw0J10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF90aHVyc2RheScpOwokcmVjdXJfZGF5c1snNCw1J10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJzQsNiddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfc2F0dXJkYXknKTsKJHJlY3VyX2RheXNbJy0xLDAnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3N1bmRheScpOwokcmVjdXJfZGF5c1snLTEsMSddID0gJHRoaXMtPkxhbmcoJ2xhc3RfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSwyJ10gPSAkdGhpcy0+TGFuZygnbGFzdF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSwzJ10gPSAkdGhpcy0+TGFuZygnbGFzdF93ZWRuZXNkYXknKTsKJHJlY3VyX2RheXNbJy0xLDQnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSw1J10gPSAkdGhpcy0+TGFuZygnbGFzdF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJy0xLDYnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3NhdHVyZGF5Jyk7CiRzbWFydHktPmFzc2lnbigncmVjdXJfZGF5cycsJHJlY3VyX2RheXMpOwoKJHdlZWtkYXlzID0gJHRoaXMtPkdldERheU5hbWVzKCk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfd2Vla2RheXMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwnZXZlbnRfcmVjdXJfd2Vla2RheXNbXScsYXJyYXlfZmxpcCgkd2Vla2RheXMpLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSw3KSk7CiRzbWFydHktPmFzc2lnbigncmVwZWF0X3N0cicsJHRoaXMtPkxhbmcoJ3BsdXJhbF8nLiRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10pKTsKJHNtYXJ0eS0+YXNzaWduKCd3ZWVrZGF5cycsJHdlZWtkYXlzKTsKJG51bXMgPSBhcnJheSgpOwokbnVtc1stMV0gPSAkdGhpcy0+TGFuZygndW5saW1pdGVkJyk7CmZvciggJGkgPSAwOyAkaSA8IDUwOyAkaSsrICkgewogICAgJG51bXNbJGkrMV0gPSAkaSsxOwp9CiRudW1zWzEwMF0gPSAxMDA7CiRudW1zWzI1MF0gPSAyNTA7CiRzbWFydHktPmFzc2lnbignbWF4aXRlcnMnLCRudW1zKTsKJG51bXMgPSBhcnJheSgpOwpmb3IoICRpID0gMDsgJGkgPCAzMDsgJGkrKyApIHsKICAgICRudW1zWyRpKzFdID0gJGkrMTsKfQokc21hcnR5LT5hc3NpZ24oJ251bXMnLCRudW1zKTsKJHNtYXJ0eS0+YXNzaWduKCdyZWN1cl9vcHRpb25zJywKICAgICAgICAgICAgICAgIGFycmF5KCR0aGlzLT5MYW5nKCdubycpPT4ibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnZGFpbHknKT0+J2RhaWx5JywKICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCd3ZWVrbHknKT0+J3dlZWtseScsCiAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnbW9udGhseScpPT4nbW9udGhseScsCiAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZygneWVhcmx5Jyk9Pid5ZWFybHknKSk7CiRzbWFydHktPmFzc2lnbignZXZlbnRfcmVjdXJfcGVyaW9kJywkZXZlbnRfcmVjdXJfcGVyaW9kKTsKCmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9wb2xpY3knLCdhbGwnKSA9PSAnaW5kaXZpZHVhbCcgKSAkc21hcnR5LT5hc3NpZ24oJ2FsbG93X292ZXJsYXAnLDEpOwoKJHNtYXJ0eS0+YXNzaWduKCdldmVudF90aXRsZScsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdldmVudF90aXRsZScsICRldmVudFsnZXZlbnRfdGl0bGUnXSwgNTAsIDI1NSkpOwoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJoaWRlc3VtbWFyeSIpIT0xKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2V2ZW50X3N1bW1hcnknLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZXZlbnRfc3VtbWFyeScsICRldmVudFsnZXZlbnRfc3VtbWFyeSddLCA1MCwgMjU1KSk7Cn0KCi8vIEFkZCBpbnB1dCBjb250cm9scyBmb3IgZWFjaCBvZiB0aGUgY3VzdG9tIGZpZWxkcyB0aGF0IGFyZSBkZWZpbmVkLgokdG1wID0gYXJyYXkoKTsKJGZpZWxkcyA9ICR0aGlzLT5HZXRGaWVsZHMoKTsKZm9yZWFjaCgkZmllbGRzIGFzICRmaWVsZCkgewogICAgJGZpZWxkX3ZhbHVlcyA9ICRldmVudFsnZmllbGRzJ107CiAgICAkZmllbGRfbmFtZSA9ICRmaWVsZFsnZmllbGRfbmFtZSddOwogICAgJGZpZWxkX3R5cGUgPSAkZmllbGRbJ2ZpZWxkX3R5cGUnXTsKICAgICRmaWVsZF92YWx1ZSA9ICIiOwogICAgaWYoIGlzc2V0KCRmaWVsZF92YWx1ZXNbJGZpZWxkX25hbWVdKSApICRmaWVsZF92YWx1ZSA9ICRmaWVsZF92YWx1ZXNbJGZpZWxkX25hbWVdOwoKICAgIC8vIFJlcGxhY2Ugc3BhY2VzIHdpdGggdW5kZXJiYXJzIGZvciB0aGUgZm9ybSBwYXJhbWV0ZXIgKGEgYml0IG9mIGFuIGlra3kgaGFjayBJIGtub3csCiAgICAvLyBidXQgSSBjYW4gd2VsbCBpbWFnaW5lIGZvbGsgZGVmaW5pbmcgY3VzdG9tIGZpZWxkcyB3aXRoIHNwYWNlcyBpbiB0aGUgbmFtZSkKICAgIC8vIFBlcmhhcHMgaXQgd291bGQgaGF2ZSBiZWVuIGJldHRlciBpZiBjdXN0b20gZmllbGRzIGFsc28gaGFkIGEgbnVtZXJpYyBrZXkgLSBob2h1bSBsaXZlIGFuZCBsZWFybiEKICAgICRzYWZlZmllbGRuYW1lID0gIHN0cl9yZXBsYWNlICggIiAiLCAiXyIsICRmaWVsZF9uYW1lICk7CgogICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgJG9iai0+bmFtZSA9ICRmaWVsZFsnZmllbGRfbmFtZSddOwogICAgJG9iai0+dmFsdWUgPSAkZmllbGRfdmFsdWU7CiAgICAkb2JqLT50eXBlID0gJGZpZWxkWydmaWVsZF90eXBlJ107CiAgICBzd2l0Y2goICRmaWVsZF90eXBlICkgewogICAgY2FzZSAwOiAvLyB0aGUgbm9ybWFsIHRleHQgZmllbGQKICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwgJGZpZWxkX3ZhbHVlLCA1MCwgMjU1KTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDE6IC8vIGFuIHVwbG9hZCBmaWVsZCB0eXBlCiAgICAgICAgLy8gZGlzcGxheSBhIGxhYmVsIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUsIGFuZCB0aGVuIGFuIHVwbG9hZCBmaWVsZAogICAgICAgICRvYmotPnZhbHVlID0gJGZpZWxkX3ZhbHVlOwogICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ2ZpZWxkXycuJHNhZmVmaWVsZG5hbWUsJycsNTApLgogICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd1cGxvYWRfZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwkZmllbGRfbmFtZSkuCiAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3VwbG9hZF9maWVsZF9vbGR2YWx1ZV8nLiRzYWZlZmllbGRuYW1lLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgaWYoICRmaWVsZF92YWx1ZSApICRvYmotPmZpZWxkIC49CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdyZW1vdmVfZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwwKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPnZhbHVlLicmbmJzcDsnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdyZW1vdmVfZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwxKS4nJm5ic3A7Jy4kdGhpcy0+TGFuZygnZGVsZXRlJyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAyOgogICAgICAgICR3eXNpd3lnID0gZmFsc2U7CiAgICAgICAgaWYoIGlzc2V0KCRmaWVsZFsnZmllbGRfZXh0cmEnXVsnd3lzaXd5ZyddKSApICR3eXNpd3lnID0gJGZpZWxkWydmaWVsZF9leHRyYSddWyd3eXNpd3lnJ107CiAgICAgICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoJHd5c2l3eWcsJGlkLCRmaWVsZF92YWx1ZSwnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAzOgogICAgICAgIC8vIGNvbXBhbnkgZGlyZWN0b3J5IGVudHJ5LgogICAgICAgICRjZG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ29tcGFueURpcmVjdG9yeScpOwogICAgICAgIGlmKCAhJGNkbW9kICkgewogICAgICAgICAgICAvLyBoYXZlIGZpZWxkIHR5cGUsIGJ1dCBubyBjb21wYW55ZGlyZWN0b3J5IG1vZHVsZS4KICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIC8vIGdldCBhIGxpc3Qgb2YgdGhlIGNvbXBhbmllcyB0aGF0IHdlIHdhbnQgdG8gZGlzcGxheQogICAgICAgIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxjb21wYW55X25hbWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NvbXBkaXJfY29tcGFuaWVzIE9SREVSIEJZIGNvbXBhbnlfbmFtZSc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgICAgIGlmKCAkZGJyICkgewogICAgICAgICAgICAgICAgJHRtcDIgPSBhcnJheSgkdGhpcy0+TGFuZygnbm9uZScpPT4tMSk7CiAgICAgICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZGJyKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wMlskZGJyWyRpXVsnY29tcGFueV9uYW1lJ11dID0gJGRiclskaV1bJ2lkJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwkdG1wMiwtMSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNDoKICAgICAgICAvLyBmaWxlIGF0dGFjaG1lbnQKICAgICAgICAkZGlyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZGRpcmVjdG9yeScpOwogICAgICAgIGlmKCAhJGRpciApICRkaXIgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXTsKICAgICAgICAkcGF0dGVybiA9IGV4cGxvZGUoJywnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cGxvYWRmaWxldHlwZXMnLCdqcGcsanBlZyxnaWYscG5nJykpOwogICAgICAgICRleGNsdWRlcyA9IGFycmF5KCdfKicsJy4/PyonKTsKICAgICAgICBmb3JlYWNoKCAkcGF0dGVybiBhcyAmJG9uZSApIHsKICAgICAgICAgICAgJG9uZSA9ICcqLicuJG9uZTsKICAgICAgICB9CiAgICAgICAgaWYoICFpc19kaXIoJGRpcikgKSBAbWtkaXIoJGRpciwwNzc3LFRSVUUpOwogICAgICAgICRmaWxlcyA9IGNnZV9kaXI6OnJlY3Vyc2l2ZV9nbG9iKCRkaXIsJHBhdHRlcm4sJ0ZJTEVTJywkZXhjbHVkZXMpOwogICAgICAgICRvYmotPmZpZWxkID0gbnVsbDsKICAgICAgICBpZiggIWlzX2FycmF5KCRmaWxlcykgfHwgY291bnQoJGZpbGVzKSA9PSAwICkgY29udGludWU7CgogICAgICAgICRvdXQgPSBhcnJheSgkdGhpcy0+TGFuZygnbm9uZScpPT4tMSk7CiAgICAgICAgZm9yZWFjaCggJGZpbGVzIGFzICRvbmUgKSB7CiAgICAgICAgICAgICRvbmUgPSBzdWJzdHIoJG9uZSxzdHJsZW4oJGRpcikpOwogICAgICAgICAgICBpZiggc3RhcnRzd2l0aCgkb25lLCcvJykgKSAkb25lID0gc3Vic3RyKCRvbmUsMSk7CiAgICAgICAgICAgICRvdXRbJG9uZV0gPSAkb25lOwogICAgICAgIH0KICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwkb3V0LC0xLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA1OgogICAgICAgIC8vIGNoZWNrYm94CiAgICAgICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdmaWVsZF8nLiRzYWZlZmllbGRuYW1lLDApOwogICAgICAgICRvYmotPmZpZWxkIC49ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwxLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA2OgogICAgICAgIC8vIGRyb3Bkb3duCiAgICAgICAgJG9iai0+ZmllbGQgPSBudWxsOwogICAgICAgIGlmKCAhZW1wdHkoJGZpZWxkWydmaWVsZF9leHRyYSddWydkZG9wdHMnXSkgKSB7CiAgICAgICAgICAgICRvcHRzID0gXGNnZV9hcnJheTo6ZXhwbG9kZV93aXRoX2tleSgkZmllbGRbJ2ZpZWxkX2V4dHJhJ11bJ2Rkb3B0cyddLCc9JywiXG4iKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRvcHRzKSAmJiBjb3VudCgkb3B0cykpICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdmaWVsZF8nLiRzYWZlZmllbGRuYW1lLGFycmF5X2ZsaXAoJG9wdHMpLC0xLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIH0KICAgICR0bXBbXSA9ICRvYmo7Cn0KaWYoIGNvdW50KCR0bXApICkgJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHMnLCR0bXApOwoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJoaWRlY29udGVudCIpIT0xKSB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2V2ZW50X2RldGFpbHMnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEodHJ1ZSwgJGlkLCAkZXZlbnRbJ2V2ZW50X2RldGFpbHMnXSwgJ2V2ZW50X2RldGFpbHMnLCAnY29udGVudCcsICRpZCkpOwp9CgokbnVtX2NhdHMgPSBjb3VudCgkY2F0ZWdvcmllcyk7CiRjb3VudCA9IDA7CiR0bXAgPSBhcnJheSgpOwpmb3IoJGkgPSAwOyAkaSA8ICRudW1fY2F0czsgJGkrKywkY291bnQgKyspIHsKICAgICRjYXRlZ29yeSA9ICRjYXRlZ29yaWVzWyRpXTsKICAgICRjYXRfaWQgPSAkY2F0ZWdvcnlbJ2NhdGVnb3J5X2lkJ107CiAgICAkY2F0X25hbWUgPSAkY2F0ZWdvcnlbJ2NhdGVnb3J5X25hbWUnXTsKICAgICRjaGVja2VkID0gJyc7CiAgICAvLyBGb2xsb3dpbmcgbGluZSBzZWVtcyBub24tZnVuY3Rpb24uIGNvbW1lbnRpbmcgb3V0LiAtIEVsaWphaAogICAgLy8gaWYoaW5fYXJyYXkoJGNhdF9pZCwgJGV2ZW50WydjYXRlZ29yaWVzJ10pKQkkY2hlY2tlZCA9ICRjYXRfaWQ7CgogICAgLy9Pbmx5IHRhZyB0aGUgZGVmYXVsdC1jYXRlZ29yeSBpcyB5b3UgYXJlIGFkZGluZyBhbiBldmVudCwgbm90IGl0IHlvdSBhcmUgZWRpdGluZwogICAgaWYgKCRldmVudF9pZD09LTEpIHsKICAgICAgICBpZigkY2F0X2lkID09ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2NhdGVnb3J5JywgJycpKSAkY2hlY2tlZCA9ICRjYXRfaWQ7CiAgICB9IGVsc2UgewogICAgICAgIGlmKGluX2FycmF5KCRjYXRfaWQsICRldmVudFsnY2F0ZWdvcmllcyddKSkJJGNoZWNrZWQgPSAkY2F0X2lkOwogICAgfQogICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdldmVudF9jYXRlZ29yaWVzW10nLCAkY2F0X2lkLCAkY2hlY2tlZCwiaWQ9J2NhdGVnb3J5JGknIik7CiAgICAkb2JqLT5uYW1lID0gJGNhdF9uYW1lOwogICAgJG9iai0+aWQgPSAkY2F0X2lkOwogICAgJHRtcFtdID0gJG9iajsKfQppZiggY291bnQoJHRtcCkgKSAkc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3JpZXMnLCR0bXApOwoKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2FkZF9ldmVudC50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_deleteevent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIGV4aXQ7CgokdXNlcmlkID0gbnVsbDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApICR1c2VyaWQgPSBnZXRfdXNlcmlkKEZBTFNFKSAqIC0xIC0gMTAwOwoKJHJlc3VsdCA9IG5ldyBzdGRDbGFzczsKJHJlc3VsdC0+c3RhdHVzID0gMDsKJHJlc3VsdC0+bXNnID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3Vua25vd24nKTsKCnRyeSB7CiAgICAkZXZlbnRfaWQgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2V2ZW50X2lkJyk7CiAgICAkZGVsZXRlX2NoaWxkcmVuID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdkZWxldGVfY2hpbGRyZW4nLDApOwoKICAgIC8vIGdldCB0aGUgZXZlbnQgKG1ha2Ugc3VyZSBpdCdzIHZhbGlkLCBhbmQgd2UgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBpdCwgQU5EIHRoYXQgaXQgaXMgbm90IGEgcGFyZW50KQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgJHBhcm1zID0gYXJyYXkoJGV2ZW50X2lkKTsKICAgIGlmKCAhaXNfbnVsbCgkdXNlcmlkKSApIHsKICAgICAgICAkcXVlcnkgLj0gJyBBTkQgZXZlbnRfY3JlYXRlZF9ieSA9ID8nOwogICAgICAgICRwYXJtc1tdID0gJHVzZXJpZDsKICAgIH0KCiAgICAkZXZlbnQgPSAkZGItPkdldFJvdygkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CiAgICBpZiggISRldmVudCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50bm90Zm91bmQnKSk7CgogICAgaWYoICEkZGVsZXRlX2NoaWxkcmVuICkgewogICAgICAgIC8vIG5vdyBtYWtlIHN1cmUgaXQncyBub3QgYSBwYXJlbnQgKGRvbid0IHdhbm5hIGxlYXZlIG9ycGhhbmVkIGV2ZW50cyBseWluZyBhcm91bmQpCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfcGFyZW50X2lkID0gPyc7CiAgICAgICAgJHRtcCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkZXZlbnRfaWQpKTsKICAgICAgICBpZiggJHRtcCA+IDAgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVwYXJlbnRldmVudCcpKTsKICAgIH0KCiAgICAvLyB3b290LCB3ZSBjYW4gZGVsZXRlIHRoZSB0aGluZy4KICAgIGNnY2FsZW5kYXJfdXRpbHM6OmRlbGV0ZV9ldmVudCgkZXZlbnRfaWQpOwogICAgJHJlc3VsdC0+c3RhdHVzID0gMTsKfQpjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgJHJlc3VsdC0+bXNnID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgIGRlYnVnX3RvX2xvZygnYWRtaW5fYWpheF9kZWxldGVldmVudCBlcnIgJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKZWNobyBqc29uX2VuY29kZSgkcmVzdWx0KTsKZXhpdDsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_editevent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIGV4aXQ7CgokdXNlcmlkID0gbnVsbDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApICR1c2VyaWQgPSBnZXRfdXNlcmlkKEZBTFNFKSAqIC0xIC0gMTAwOwoKJHJlc3VsdCA9IG5ldyBzdGRDbGFzczsKJHJlc3VsdC0+c3RhdHVzID0gMDsKJHJlc3VsdC0+bXNnID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3Vua25vd24nKTsKCnRyeSB7CiAgICBkZWJ1Z190b19sb2coJ2FkbWluX2FqYXhfZWRpdGV2ZW50Jyk7CiAgICBkZWJ1Z190b19sb2coJHBhcmFtcyk7CiAgICAkZXZlbnRfaWQgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2V2ZW50X2lkJyk7CiAgICAkZGF5RGVsdGEgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2RheURlbHRhJyk7CiAgICAkbWludXRlRGVsdGEgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21pbnV0ZURlbHRhJyk7CiAgICAkYWxsRGF5ID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdhbGxEYXknKTsKICAgICRtb3ZlID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdtb3ZlJywwKTsKICAgIGlmKCAkZXZlbnRfaWQgPCAxICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgaWYoICRkYXlEZWx0YSA9PSAwICYmICRtaW51dGVEZWx0YSA9PSAwICYmICRhbGxEYXkgPT0gMCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCiAgICAvLyBnZXQgdGhlIGV2ZW50IChtYWtlIHN1cmUgaXQncyB2YWxpZCwgYW5kIHdlIGhhdmUgcGVybWlzc2lvbiB0byBlZGl0IGl0KQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgJHBhcm1zID0gYXJyYXkoJGV2ZW50X2lkKTsKICAgIGlmKCAhaXNfbnVsbCgkdXNlcmlkKSApIHsKICAgICAgICAkcXVlcnkgLj0gJyBBTkQgZXZlbnRfY3JlYXRlZF9ieSA9ID8nOwogICAgICAgICRwYXJtc1tdID0gJHVzZXJpZDsKICAgIH0KCiAgICAkZXZlbnQgPSAkZGItPkdldFJvdygkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CiAgICBpZiggISRldmVudCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50bm90Zm91bmQnKSk7CgogICAgJGRheSA9IDI0ICogMzYwMDsKICAgICR0ZGlmZiA9ICRkYXlEZWx0YSAqICRkYXkgKyAkbWludXRlRGVsdGEgKiA2MDsKICAgIGlmKCAkbW92ZSApIHsKICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSk7CiAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10gKz0gJHRkaWZmOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gKSB7CiAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pICsgJHRkaWZmOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddID0gJGRiLT5Vbml4VGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKTsKICAgICAgICBpZiggJHRkaWZmIDwgMCApIHsKICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10gKz0gJHRkaWZmOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZW5kIGRhdGUgeWV0LgogICAgICAgICAgICAvLyB3ZSBoYXZlIHRvIGNyZWF0ZSBvbmUuCiAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pOwogICAgICAgICAgICBpZiggJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IDAgKSAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gPSAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSArIDE1ICogNjA7IC8vIGZpZnRlZW4gbWludXRlcyBpZiB0aGVyZSBpcyBubyBlbmQgdGltZS4KICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX2VuZCddICs9ICR0ZGlmZjsKICAgICAgICB9CiAgICB9CiAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSA9ICRhbGxEYXk7CiAgICBkZWJ1Z190b19sb2coJ3N0YXJ0IGRhdGUgJy5zdHJmdGltZSgnJXggJVgnLCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKSk7CiAgICBkZWJ1Z190b19sb2coJ2VuZCBkYXRlICcuc3RyZnRpbWUoJyV4ICVYJywkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pKTsKCiAgICAvLyBhbmQgc2F2ZSB0aGUgdGhpbmcuCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgU0VUIGV2ZW50X2RhdGVfc3RhcnQgPSBGUk9NX1VOSVhUSU1FKD8pLCBldmVudF9kYXRlX2VuZCA9IEZST01fVU5JWFRJTUUoPyksIGV2ZW50X2FsbF9kYXkgPSA/LCBldmVudF9tb2RpZmllZF9kYXRlID0gTk9XKCkKICAgICAgICAgICAgICBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10sJGV2ZW50WydldmVudF9hbGxfZGF5J10sJGV2ZW50WydldmVudF9pZCddKSk7CiAgICAkcmVzdWx0LT5zdGF0dXMgPSAxOwp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAkcmVzdWx0LT5tc2cgPSAkdGhpcy0+R2V0TWVzc2FnZSgpOwp9CgplY2hvIGpzb25fZW5jb2RlKCRyZXN1bHQpOwpleGl0OwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_fetchevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJgogICAgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSAmJgogICAgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzJykgKSBleGl0OwoKJHN0YXJ0ID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRfUkVRVUVTVCwnc3RhcnQnKTsKJGVuZCA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkX1JFUVVFU1QsJ2VuZCcpOwokc2hvd2NoaWxkcmVuID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdzaG93Y2hpbGRyZW4nLDApOwokY2F0ZWdvcnkgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2NhdGVnb3J5JywtMSk7CiRrZXl3b3JkID0gdHJpbShjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdrZXl3b3JkJykpOwokd2hlbiA9IHN0cnRvbG93ZXIodHJpbShjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCd3aGVuJywnYW55JykpKTsKLy8gd2hlbiBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3RhcnQvZW5kIGFyZSBub3Qgc3BlY2lmaWVkLgokbGltaXQgPSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdsaW1pdCcsMTAwMCk7IC8vIDEwMDAgaXMgbW9yZSB0aGFuIGVub3VnaC4KZGVidWdfdG9fbG9nKF9fRklMRV9fKTsKZGVidWdfdG9fbG9nKCRfUkVRVUVTVCk7CmRlYnVnX3RvX2xvZygiJHN0YXJ0IC0gJGVuZCIpOwokc3RfZHMgPSAkZGItPkRiVGltZVN0YW1wKCRzdGFydCk7CiRlbl9kcyA9ICRkYi0+RGJUaW1lU3RhbXAoJGVuZCk7CgppZiggJHN0YXJ0IDwgMSB8fCAkZW5kIDwgMSApIHsKICAgIHN3aXRjaCggJHdoZW4gKSB7CiAgICBjYXNlICdwYXN0JzoKICAgICAgICAkc3RhcnQgPSAxOwogICAgICAgICRlbmQgPSB0aW1lKCk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZnV0dXJlJzoKICAgICAgICAkc3RhcnQgPSB0aW1lKCk7CiAgICAgICAgJGVuZCA9IDIxNDc0ODM2NDg7IC8vIG1heCB1bml4IHRpbWUKICAgICAgICBicmVhazsKCiAgICBjYXNlICdhbnknOgogICAgICAgIGJyZWFrOwogICAgfQp9CmlmKCAkc3RhcnQgPiAkZW5kICkgewogICAgJGMgPSAkc3RhcnQ7CiAgICAkc3RhcnQgPSAkZW5kOwogICAgJGVuZCA9ICRjOwp9Cgokd2hlcmUgPSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwovLyBnZXQgYWxsIG9mIHRoZSBldmVudHMKJHF1ZXJ5ID0gJ1NFTEVDVCBFLiogRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIEUnOwppZiggJGNhdGVnb3J5ID4gMCApIHsKICAgICRxdWVyeSAuPSAnIExFRlQgSk9JTiAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgRUMgT04gRS5ldmVudF9pZCA9IEVDLmV2ZW50X2lkJzsKICAgICR3aGVyZVtdID0gJ0VDLmNhdGVnb3J5X2lkID0gPyc7CiAgICAkcGFybXNbXSA9ICRjYXRlZ29yeTsKfQppZiggJHN0YXJ0ICYmICRlbmQgKSB7CiAgICAkd2hlcmVbXSA9ICcoKEUuZXZlbnRfZGF0ZV9zdGFydCBCRVRXRUVOID8gQU5EID8pIE9SIChFLmV2ZW50X2RhdGVfZW5kIEJFVFdFRU4gPyBBTkQgPykpJzsKICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCRzdGFydCksIiciKTsKICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCRlbmQpLCInIik7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkc3RhcnQpLCInIik7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZW5kKSwiJyIpOwp9CmlmKCAhJHNob3djaGlsZHJlbiApICR3aGVyZVtdID0gJ0NPQUxFU0NFKEUuZXZlbnRfcGFyZW50X2lkLDApIDwgMSc7CmlmKCAka2V5d29yZCApIHsKICAgIC8vIHVzZSB0aGUgZnVsbCB0ZXh0IGluZGV4CiAgICAkd2hlcmVbXSA9ICdNQVRDSChFLmV2ZW50X3RpdGxlLEUuZXZlbnRfc3VtbWFyeSxFLmV2ZW50X2RldGFpbHMpIEFHQUlOU1QgKD8gSU4gQk9PTEVBTiBNT0RFKSc7CiAgICAkcGFybXNbXSA9ICRrZXl3b3JkOwp9CgovLyBwdXQgdGhlIHF1ZXJ5IHRvZ2V0aGVyCmlmKCBjb3VudCgkd2hlcmUpICkgJHF1ZXJ5IC49ICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwoKJHJzID0gJGRiLT5TZWxlY3RMaW1pdCgkcXVlcnksJGxpbWl0LDAsJHBhcm1zKTsKJGxpc3QxID0gYXJyYXkoKTsKZGVidWdfdG9fbG9nKCRkYi0+c3FsKTsKaWYoICRycyApIHsKICAgIGRlYnVnX3RvX2xvZygkcnMpOwogICAgd2hpbGUoICEkcnMtPkVPRiApIHsKICAgICAgICAkbGlzdDFbXSA9ICRycy0+ZmllbGRzOwogICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgIH0KfQp1bnNldCgkcnMpOwpkZWJ1Z190b19sb2coJGxpc3QxKTsKaWYoIGNvdW50KCRsaXN0MSkgKSB7CiAgICAvLyBnZXQgdGhlIGNhdGVnb3JpZShzKSBmb3IgdGhlc2UgZXZlbnRzCiAgICAkaWRsaXN0ID0gY2dlX2FycmF5OjpleHRyYWN0X2ZpZWxkKCRsaXN0MSwnZXZlbnRfaWQnKTsKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCBJTiAoJy5pbXBsb2RlKCcsJywkaWRsaXN0KS4nKSBPUkRFUiBCWSBldmVudF9pZCxjYXRlZ29yeV9pZCc7CiAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgJGNhdGVnb3J5X2xpc3QgPSBhcnJheSgpOwogICAgaWYoIGlzX2FycmF5KCR0bXApICYmIGNvdW50KCR0bXApICkgewogICAgICAgIGZvcmVhY2goICR0bXAgYXMgJHJlYyApIHsKICAgICAgICAgICAgJGNhdGVnb3J5X2xpc3RbJHJlY1snZXZlbnRfaWQnXV1bXSA9ICRyZWNbJ2NhdGVnb3J5X2lkJ107CiAgICAgICAgfQogICAgfQoKICAgIC8vIG5vdyBjb252ZXJ0IHRoaXMgaW50byBzb21ldGhpbmcgY29tcGF0aWJsZSB3aXRoIGZ1bGxjYWxlbmRhcgogICAgJG91dGxpc3QgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJGxpc3QxIGFzICRyZWMgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG91dCA9IG5ldyBzdGRDbGFzczsKICAgICAgICAgICAgJG91dC0+aWQgPSAkcmVjWydldmVudF9pZCddOwogICAgICAgICAgICAkb3V0LT50aXRsZSA9ICRyZWNbJ2V2ZW50X3RpdGxlJ107CiAgICAgICAgICAgICRvdXQtPnN1bW1hcnkgPSAkcmVjWydldmVudF9zdW1tYXJ5J107CiAgICAgICAgICAgICRvdXQtPmNhbmVkaXQgPSAxOwogICAgICAgICAgICAkb3V0LT5jYW5kZWxldGUgPSAwOwoKICAgICAgICAgICAgaWYoIGlzc2V0KCRjYXRlZ29yeV9saXN0WyRvdXQtPmlkXSkgJiYgY291bnQoJGNhdGVnb3J5X2xpc3RbJG91dC0+aWRdKSA+PSAxICkgewogICAgICAgICAgICAgICAgLy8gdGhpcyBldmVudCBpcyBpbiBvbmx5IG9uZSBjYXRlZ29yeQogICAgICAgICAgICAgICAgLy8gd2UgY2FuIHNldCB0aGUgY29sb3IgYW5kIHRleHRjb2xvcgogICAgICAgICAgICAgICAgJGNhdGVnb3J5ID0gXENHQ2FsZW5kYXJcY2F0ZWdvcnk6OmxvYWQoJGNhdGVnb3J5X2xpc3RbJG91dC0+aWRdWzBdKTsKICAgICAgICAgICAgICAgICRvdXQtPmNvbG9yID0gJGNhdGVnb3J5WydiZ2NvbG9yJ107CiAgICAgICAgICAgICAgICAkb3V0LT50ZXh0Q29sb3IgPSAkY2F0ZWdvcnlbJ2ZnY29sb3InXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICRyZWNbJ2V2ZW50X3BhcmVudF9pZCddID4gMSApIHsKICAgICAgICAgICAgICAgIC8vIGlzIGEgY2hpbGQgZXZlbnQKICAgICAgICAgICAgICAgICRvdXQtPnRpdGxlIC49ICIgKCIuJHRoaXMtPkxhbmcoJ2NoaWxkJykuIikiOwogICAgICAgICAgICAgICAgJG91dC0+Y2hpbGQgPSAkcmVjWydldmVudF9wYXJlbnRfaWQnXTsKICAgICAgICAgICAgICAgICRvdXQtPmNhbmRlbGV0ZSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggJHJlY1snZXZlbnRfcmVjdXJfcGVyaW9kJ10gJiYgJHJlY1snZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnICkgewogICAgICAgICAgICAgICAgLy8gaXMgYSBwYXJlbnQgZXZlbnQgb2YgYSByZWN1cnJpbmcgZXZlbnQKICAgICAgICAgICAgICAgICRvdXQtPnRpdGxlIC49ICIgKCIuJHRoaXMtPkxhbmcoJ3JlcGVhdHMnKS4nKSc7CiAgICAgICAgICAgICAgICAkb3V0LT5yZWN1cnMgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJG91dC0+Y2FuZGVsZXRlID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyRvdXQtPnN0YXJ0ID0gJGRiLT5Vbml4VGltZVN0YW1wKCRyZWNbJ2V2ZW50X2RhdGVfc3RhcnQnXSk7CiAgICAgICAgICAgIC8vJG91dC0+ZW5kID0gJGRiLT5Vbml4VGltZVN0YW1wKCRyZWNbJ2V2ZW50X2RhdGVfZW5kJ10pOwogICAgICAgICAgICAkb3V0LT5zdGFydCA9ICRyZWNbJ2V2ZW50X2RhdGVfc3RhcnQnXTsKICAgICAgICAgICAgJG91dC0+ZW5kID0gJHJlY1snZXZlbnRfZGF0ZV9lbmQnXTsKICAgICAgICAgICAgJG91dC0+YWxsRGF5ID0gKCRyZWNbJ2V2ZW50X2FsbF9kYXknXSk/dHJ1ZTpmYWxzZTsKCiAgICAgICAgICAgICRvdXQtPmVkaXRfdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdhZG1pbl9hZGRfZXZlbnQnLCRyZXR1cm5pZCxhcnJheSgnZXZlbnRfaWQnPT4kcmVjWydldmVudF9pZCddKSk7CiAgICAgICAgICAgICRvdXQtPmVkaXRfdXJsID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsJG91dC0+ZWRpdF91cmwpOwogICAgICAgICAgICAkb3V0bGlzdFtdID0gJG91dDsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgZGVidWdfdG9fbG9nKF9fRklMRV9fKTsKICAgICAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBkZWJ1Z190b19sb2coX19GSUxFX18pOwogICAgZGVidWdfdG9fbG9nKCRvdXRsaXN0KTsKICAgICRvdXQgPSBqc29uX2VuY29kZSgkb3V0bGlzdCk7CiAgICBkZWJ1Z190b19sb2coJG91dCk7CiAgICBlY2hvICRvdXQ7Cn0KZXhpdDsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_getcategories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRjYXRlZ29yaWVzID0gXENHQ2FsZW5kYXJcY2F0ZWdvcnk6OmdldF9jYXRlZ29yaWVzKCk7CmlmKCBjb3VudCgkY2F0ZWdvcmllcykpICRzbWFydHktPmFzc2lnbignY2F0ZWdvcmllcycsJGNhdGVnb3JpZXMpOwokb3V0ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fYWpheF9nZXRjYXRlZ29yaWVzLnRwbCcpOwplY2hvICRvdXQ7CmV4aXQ7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_ordercategories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgZXhpdDsKaWYoICFpc3NldCgkX1JFUVVFU1RbJ2NhdCddKSB8fCAhaXNfYXJyYXkoJF9SRVFVRVNUWydjYXQnXSkgKSBleGl0OwoKJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfb3JkZXIgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CmZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRfUkVRVUVTVFsnY2F0J10pOyAkaSsrICkgewogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaSsxLCRfUkVRVUVTVFsnY2F0J11bJGldKSk7Cn0KCmV4aXQ7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_delete_category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudEFjdGlvbignYWRtaW5fc2V0dGluZ3MnKTsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2FkbWluX21hbmFnZV9jYXRlZ29yaWVzJyk7CgokY2F0aWQgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2NhdGlkJyk7CmlmKCAkY2F0aWQgPCAxICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7Cn0KCnRyeSB7CiAgICBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6ZGVsZXRlKCRjYXRpZCk7CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnY2F0ZWdvcnlkZWxldGVkJykpOwp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_delete_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgcmV0dXJuOwppZiggIWlzc2V0KCRwYXJhbXNbJ2V2ZW50X2lkJ10pICkgcmV0dXJuOwpkaWUoJ25vdCB1c2VkJyk7CgokdGhpcy0+U2V0Q3VycmVudFRhYignZGVmYXVsdGFkbWluJyk7CiRyZXMgPSBjZ2NhbGVuZGFyX3V0aWxzOjpkZWxldGVfZXZlbnQoJHBhcmFtc1snZXZlbnRfaWQnXSk7CmlmKCAhJHJlcyApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2RlbGV0ZWZhaWxlZCcpKTsKfQplbHNlIHsKICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnZXZlbnRkZWxldGVkJykpOwp9CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_event_update.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2RlZmF1bHRhZG1pbicpOwokbWVzc2FnZT0iIjsKCmZ1bmN0aW9uIGhhbmRsZV9udWxsX2RhdGVfdHMoJHZhbCkKewogICAgaWYoICR2YWwgKSB7CiAgICAgICAgJGRiID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0RGIoKTsKICAgICAgICAkc3RyID0gJGRiLT5EYlRpbWVTdGFtcCgkdmFsKTsKICAgICAgICByZXR1cm4gdHJpbSgkc3RyLCInIik7CiAgICB9Cn0KCmZ1bmN0aW9uIGhhbmRsZV9udWxsX2RhdGUoJHN0cikKewogICAgaWYoICFpc19udWxsKCRzdHIpICkgcmV0dXJuIHRyaW0oJHN0ciwiJyIpOwogICAgcmV0dXJuICRzdHI7Cn0KCiRldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lID0gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWU7CmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kbWVzc2FnZSkpOwoKLy8KLy8gR2F0aGVyIHBhcmFtZXRlcnMKLy8KJGV2ZW50X2lkID0gY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZXZlbnRfaWQnLC0xKTsKJHJlY3VycmluZ19ldmVudHMgPSBudWxsOwokdXNlcl9pZCA9IGdldF91c2VyaWQoRkFMU0UpICogLTEgLSAxMDA7CiRjYXRlZ29yaWVzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZXZlbnRfY2F0ZWdvcmllcycsLTEpOwokZXZlbnQgPSAkdGhpcy0+R2V0RXZlbnQoJGV2ZW50X2lkKTsKXGNnY19ldmVudF91dGlsczo6Z2V0X2V2ZW50X2Zyb21fcGFyYW1zKCRldmVudCwkcGFyYW1zLHRydWUpOwokZXZlbnRfcGFyZW50X2lkID0gJGV2ZW50X2lkOwoKLy8gcGVybWlzc2lvbnMgY2hlY2sKaWYoICRldmVudF9pZCA8IDEgKSB7CiAgICAvLyBhZGRpbmcKICAgIGlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJykgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSApIHsKICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb24nKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwogICAgfQp9CmVsc2UgewogICAgLy8gZWRpdGluZwogICAgaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJgogICAgICAgICEoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSAmJiAkZXZlbnRbJ2V2ZW50X2NyZWF0ZWRfYnknXSA9PSAkdXNlcl9pZCkgKSB7CiAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9uJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgIH0KfQoKLy8gQ2FycnkgdGhyb3VnaCBhbnkgb2xkIHZhbHVlcwovLyBqdXN0IGluY2FzZSBhIG5ldyBmaWxlIHdhcyBub3QgdXBsb2FkZWQKZm9yZWFjaCggJHBhcmFtcyBhcyAkayA9PiAkdiApIHsKICAgIGlmKCBwcmVnX21hdGNoKCcvXnVwbG9hZF9maWVsZF9vbGR2YWx1ZV8vJywgJGspICkgewogICAgICAgICR0aGVmaWVsZCA9IHN1YnN0cigkayxzdHJsZW4oJ3VwbG9hZF9maWVsZF9vbGR2YWx1ZV8nKSk7CiAgICAgICAgJHBhcmFtc1snZmllbGRfJy4kdGhlZmllbGRdID0gJHY7CiAgICB9Cn0KLy8gaGFuZGxlIGRlbGV0aW9uCmZvcmVhY2goICRwYXJhbXMgYXMgJGsgPT4gJHYgKQp7CiAgICBpZiggcHJlZ19tYXRjaCgnL15yZW1vdmVfZmllbGRfLycsICRrKSAmJiAkdiA9PSAxICkKICAgIHsKICAgICAgICAkdGhlZmllbGQgPSBzdWJzdHIoJGssc3RybGVuKCdyZW1vdmVfZmllbGRfJykpOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1cGxvYWRfZmllbGRfb2xkdmFsdWVfJy4kdGhlZmllbGRdKSApCiAgICAgICAgewogICAgICAgICAgICAkdiA9ICRwYXJhbXNbJ3VwbG9hZF9maWVsZF9vbGR2YWx1ZV8nLiR0aGVmaWVsZF07CiAgICAgICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAgICAgJGRlc3REaXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZGlyZWN0b3J5JywkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSk7CiAgICAgICAgICAgICRkbiA9IGNtc19qb2luX3BhdGgoJGRlc3REaXIsJHYpOwoKICAgICAgICAgICAgQHVubGluaygkZG4pOwogICAgICAgICAgICB1bnNldCgkcGFyYW1zWydmaWVsZF8nLiR0aGVmaWVsZF0pOwogICAgICAgIH0KICAgIH07Cn0KCi8vCi8vIEVycm9yIEhhbmRsaW5nCi8vCmlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gIT0gTlVMTCAmJgogICAgJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddIDwgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10gKSB7CiAgICAkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX2RhdGVzJyk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSA9IGltcGxvZGUoJywnLCRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICYmICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXNdJ10gKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKTsKICAgICRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddID0gMTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpOwp9CmlmKCRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnICYmCiAgICRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSAhPSBOVUxMICYmCiAgICgkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10gPCAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSB8fAogICAgKCRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSAhPSBOVUxMICYmCiAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddIDwgJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddKSkgKSB7CiAgICAkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX2RhdGVzJyk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKTsKICAgICRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddID0gMTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpOwp9CmlmKCRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10gPT0gJ21vbnRobHknICYmCiAgIGNvdW50KCRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pID4gMSAmJgogICAkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddWzBdID09ICdzcGVjaWZpZWQnKSB7CiAgICAkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX3JlY3VyX21vbnRobHlfZnJlcScpOwogICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSA9IGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgJiYgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddICkgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddID0gc2VyaWFsaXplKCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSk7CiAgICAkcGFyYW1zWydkb19nZXRfZnJvbV9wYXJhbXMnXSA9IDE7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9hZGRfZXZlbnQnLCRyZXR1cm5pZCwkcGFyYW1zKTsKfQppZiggZW1wdHkoJGV2ZW50WydldmVudF90aXRsZSddKSApIHsKICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX25vZXZlbnRuYW1lJyk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKTsKICAgICRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddID0gMTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpOwp9CmlmKCAoJGNhdGVnb3JpZXMgPT0gLTEpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmb3JjZV9jYXRlZ29yeScpID09IDEpIHsKICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX25vY2F0ZWdvcnknKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICYmICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPSAxOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fYWRkX2V2ZW50JywkcmV0dXJuaWQsJHBhcmFtcyk7Cn0KaWYoICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnICkgewogICAgLy8gY2FsY3VsYXRlIHJlY3VycmluZyBldmVudHMKICAgICRyZWN1cnJpbmdfZXZlbnRzID0gXGNnY19ldmVudF91dGlsczo6Y2FsY3VsYXRlX3JlY3VycmluZ19ldmVudHMoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgIGZvciggJGkgPSAwLCAkbiA9IGNvdW50KCRyZWN1cnJpbmdfZXZlbnRzKTsgJGkgPCAkbjsgJGkrKyApIHsKICAgICAgICAkcmVjdXJyaW5nX2V2ZW50c1skaV1bJ2V2ZW50X2FsbF9kYXknXSA9ICRldmVudFsnZXZlbnRfYWxsX2RheSddOwogICAgfQoKICAgIC8vIGNoZWNrIHJlY3VycmluZyBldmVudHMgZm9yIG92ZXJsYXAKICAgICRvdmVybGFwID0gXGNnY19ldmVudF91dGlsczo6Y2hlY2tfb3ZlcmxhcHBpbmdfZXZlbnRzKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddLCRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSwkcmVjdXJyaW5nX2V2ZW50cyk7CiAgICBpZiggJG92ZXJsYXAgPT09IHRydWUgKSB7CiAgICAgICAgJHBhcmFtc1snbW9kdWxlX2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZXZlbnRvdmVybGFwJyk7CiAgICAgICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGltcGxvZGUoJywnLCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICYmICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgICAgICRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddID0gMTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9hZGRfZXZlbnQnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgIH0KfQoKCi8vCi8vIGNoZWNrIGZvciBjb25mbGljdGluZyBldmVudHMuCi8vCiRwb2xpY3kgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9wb2xpY3knLCdhbGwnKTsKaWYoICRwb2xpY3kgIT0gJ2FsbCcgKSB7CiAgICAkY29uZmxpY3QgPSBcY2djX2V2ZW50X3V0aWxzOjpjaGVja19kYl9mb3JfY29uZmxpY3RzKCRldmVudCwkZXZlbnRbJ2V2ZW50X2lkJ10sJHBvbGljeSwgJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddKTsKICAgIGlmKCAkY29uZmxpY3QgKSAgewogICAgICAgIC8vIHRoaXMgaXMgdGhlIHBhcmVudCBldmVudC4uLiB3ZSBhbHdheXMgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIGlmCiAgICAgICAgLy8gdGhpcyBwYXJlbnQgZXZlbnQgY29uZmxpY3RzIHdpdGggYW5vdGhlciBldmVudC4KICAgICAgICAkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9ICAkdGhpcy0+TGFuZygnZXJyb3JfZXZlbnRfY29uZmxpY3QnKTsKICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSk7CiAgICAgICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBpbXBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgJiYgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddICkgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddID0gc2VyaWFsaXplKCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSk7CiAgICAgICAgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPSAxOwogICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpOwogICAgfQoKICAgIC8vIG5vdyBjaGVjayBhbnkgY2hpbGQgZXZlbnRzCiAgICBpZiggJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgJiYgY291bnQoJHJlY3VycmluZ19ldmVudHMpID4gMCApIHsKICAgICAgICAkbmV3X3JlY3VycmluZyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHJlY3VycmluZ19ldmVudHMgYXMgJG9uZWV2ZW50ICkgewogICAgICAgICAgICAkY29uZmxpY3QgPSBcY2djX2V2ZW50X3V0aWxzOjpjaGVja19kYl9mb3JfY29uZmxpY3RzKCRvbmVldmVudCwkZXZlbnRbJ2V2ZW50X2lkJ10sJHBvbGljeSwkZXZlbnRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10pOwogICAgICAgICAgICBpZiggJGNvbmZsaWN0ICkgewogICAgICAgICAgICAgICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvdmVybGFwX2FjdGlvbicsJ2Vycm9yJykgPT0gJ2Vycm9yJyApIHsKICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9ldmVudF9jb25mbGljdCcpOwogICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBpbXBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSA9IGltcGxvZGUoJywnLCRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgICAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKTsKICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydkb19nZXRfZnJvbV9wYXJhbXMnXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fYWRkX2V2ZW50JywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBzaWxlbnRseSByZW1vdmUgdGhpcyBldmVudC4KICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkbmV3X3JlY3VycmluZ1tdID0gJG9uZWV2ZW50OwogICAgICAgIH0KICAgICAgICAkcmVjdXJyaW5nX2V2ZW50cyA9ICRuZXdfcmVjdXJyaW5nOwogICAgIH0KfQoKCgovLwovLyBGaXggdXAgdGhlIGV2ZW50IHNvIGl0J3Mgc3VpdGFibGUgZm9yIHRoZSBkYXRhYmFzZQovLwoKLy8KLy8gUHJvY2VzcyBhbnkgZmlsZSB1cGxvYWRzIHRoYXQgbWF5IGhhdmUgb2NjdXJyZWQKLy8KaWYoIGlzc2V0KCAkX0ZJTEVTICkgKSB7CiAgICAkZmxkbmFtZSA9ICcnOwogICAgJHRoZWZpZWxkID0gJyc7CiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrID0+ICR2ICkgewogICAgICAgIC8vIHNlZSBpZiB3ZSdyZSBleHBlY3RpbmcgYW4gdXBsb2FkCiAgICAgICAgaWYoIHByZWdfbWF0Y2goJy9edXBsb2FkX2ZpZWxkXy8nLCAkaykgKSB7CiAgICAgICAgICAgIC8vIHdlIGFyZSBpdCBhcHBlYXJzCiAgICAgICAgICAgICR0aGVmaWVsZCA9IHN1YnN0cigkayxzdHJsZW4oJ3VwbG9hZF9maWVsZF8nKSk7CiAgICAgICAgICAgICRmbGRuYW1lID0gJGlkLidmaWVsZF8nLiR0aGVmaWVsZDsKCiAgICAgICAgICAgIGlmKCAhaXNzZXQoJF9GSUxFU1skZmxkbmFtZV0pIHx8IGVtcHR5KCRfRklMRVNbJGZsZG5hbWVdWyd0bXBfbmFtZSddKSApIGNvbnRpbnVlOwoKICAgICAgICAgICAgJGVycm9yID0gJyc7CiAgICAgICAgICAgICRmaWxlbmFtZSA9ICR0aGlzLT5IYW5kbGVVcGxvYWQoJGZsZG5hbWUsJGVycm9yKTsKICAgICAgICAgICAgaWYoICRmaWxlbmFtZSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAvLyBhbiBlcnJvciBvY2N1cnJlZAogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsYXJyYXkoIm1vZHVsZV9lcnJvciI9PiRlcnJvcikpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGFyYW1zWydmaWVsZF8nLiR0aGVmaWVsZF0gPSAkZmlsZW5hbWU7CiAgICAgICAgfQogICAgfQp9CgovLwovLyBQcm9jZXNzIHRoZSBpbnNlcnQgb3IgdXBkYXRlCi8vCiRkb19pbnNlcnQgPSB0cnVlOwppZigkZXZlbnRbJ2V2ZW50X2lkJ10gPiAtMSkgewogICAgJGRvX2luc2VydCA9IGZhbHNlOwogICAgLy8gdXBkYXRlCiAgICAkc3FsID0gIlVQREFURSAiIC4gJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIgogICAgICAgICAgICAgICBTRVQgZXZlbnRfdGl0bGUgPSA/LCBldmVudF9zdW1tYXJ5ID0gPywgZXZlbnRfZGV0YWlscyA9ID8sIGV2ZW50X2RhdGVfc3RhcnQgPSA/LCBldmVudF9kYXRlX2VuZCA9ID8sIGV2ZW50X3BhcmVudF9pZCA9ID8sCiAgICAgICAgICAgICAgICAgICBldmVudF9yZWN1cl9wZXJpb2QgPSA/LCBldmVudF9kYXRlX3JlY3VyX2VuZCA9ID8sIGV2ZW50X3JlY3VyX25ldmVudHMgPSA/LAogICAgICAgICAgICAgICAgICAgZXZlbnRfcmVjdXJfaW50ZXJ2YWwgPSA/LGV2ZW50X3JlY3VyX3dlZWtkYXlzID0gPyxldmVudF9yZWN1cl9tb250aGRheXMgPSA/LGV2ZW50X21vZGlmaWVkX2RhdGUgPSBOT1coKSwKICAgICAgICAgICAgICAgICAgIGV2ZW50X2FsbG93c19vdmVybGFwID0gPywgZXZlbnRfYWxsX2RheSA9ID8KCSAgICAgV0hFUkUgZXZlbnRfaWQgPSA/IjsKICAgICRkYnIgPSAgJGRiLT5FeGVjdXRlKCRzcWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX251bGxfZGF0ZSgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9wYXJlbnRfaWQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX2NvdW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfaWQnXSkpOwogICAgaWYoICEkZGJyICkgewogICAgICAgIGVjaG8gIkZBVEFMIEVSUk9SOjxici8+IjsKICAgICAgICBlY2hvICJRVUVSWSA9ICIuJGRiLT5zcWwuIjxici8+IjsKICAgICAgICBlY2hvICJFUlJPUiA9ICIuJGRiLT5FcnJvck1zZygpLiI8YnIvPjxici8+IjsKICAgICAgICBkaWUoKTsKICAgIH0KCiAgICBpZiggaXNzZXQoJHBhcmFtc1sndXBkYXRlX2NoaWxkcmVuJ10pICkgewogICAgICAgIC8vaGVyZSB3ZSBhbHNvIGRlbGV0ZSBhbnkgYW5kIGFsbCBjaGlsZHJlbiwgYW5kIGFsbCBzdWItdGFibGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBmaWxsZWQgd2l0aCBjaGlsZCBkYXRhLgogICAgICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCJTRUxFQ1QgZXZlbnRfaWQgRlJPTSAiIC4gJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIiBXSEVSRSBldmVudF9wYXJlbnRfaWQgPSA/IixhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKICAgICAgICAkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8iLGFycmF5KCRldmVudFsnZXZlbnRfaWQnXSkpOwoKICAgICAgICB3aGlsZSAoJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgLy9XZSBjbGVhciB0aGVzZSBhcyB0aGV5IHdpbGwgYmUgYWRkZWQgbGF0ZXIgb24KCiAgICAgICAgICAgIC8vZGVsZXRlIGZyb20gY2F0ZWdvcmllcwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIgLiAkdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZSAuICIgV0hFUkUgZXZlbnRfaWQgPSA/IExJTUlUIDEiLGFycmF5KCRyb3dbJ2V2ZW50X2lkJ10pKTsKICAgICAgICAgICAgLy9kZWxldGUgZnJvbSBjdXN0b20gZmllbGRzCiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgiREVMRVRFIEZST00gIiAuICR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZSAuICIgV0hFUkUgZXZlbnRfaWQgPSA/IExJTUlUIDEiLGFycmF5KCRyb3dbJ2V2ZW50X2lkJ10pKTsKICAgICAgICB9CiAgICB9Cgp9Ci8vb3RoZXJ3aXNlIHdlIGFyZSBqdXN0IGFkZGluZyBhIG5ldyBldmVudAplbHNlIHsKICAgICRldmVudFsnZXZlbnRfaWQnXSA9ICRkYi0+R2VuSUQoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIl9zZXEiKTsKCiAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiCiAgICAgICAgICAgKGV2ZW50X2lkLCBldmVudF90aXRsZSwgZXZlbnRfc3VtbWFyeSwgZXZlbnRfZGV0YWlscywKICAJICAgICAgICBldmVudF9kYXRlX3N0YXJ0LCBldmVudF9kYXRlX2VuZCwgZXZlbnRfcGFyZW50X2lkLAogICAJICAgICAgICBldmVudF9yZWN1cl9wZXJpb2QsIGV2ZW50X2RhdGVfcmVjdXJfZW5kLCBldmVudF9jcmVhdGVkX2J5LAogICAgICAgICAgICBldmVudF9yZWN1cl9uZXZlbnRzLCBldmVudF9yZWN1cl9pbnRlcnZhbCwgZXZlbnRfcmVjdXJfd2Vla2RheXMsCiAgICAgICAgICAgIGV2ZW50X3JlY3VyX21vbnRoZGF5cywgZXZlbnRfYWxsb3dzX292ZXJsYXAsZXZlbnRfYWxsX2RheSwKCSAgICAgICAgZXZlbnRfY3JlYXRlX2RhdGUsIGV2ZW50X21vZGlmaWVkX2RhdGUpCiAgICAgICAgICAgIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyxOT1coKSxOT1coKSkiOwoKICAgICRkYnI9JGRiLT5FeGVjdXRlKCRzcWwsCiAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX251bGxfZGF0ZSgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9wYXJlbnRfaWQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlcl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsX2RheSddKSk7CiAgICBpZiggISRkYnIgKSB7CiAgICAgICAgZWNobyAiRkFUQUwgRVJST1I6PGJyLz4iOwogICAgICAgIGVjaG8gIlFVRVJZID0gIi4kZGItPnNxbC4iPGJyLz4iOwogICAgICAgIGVjaG8gIkVSUk9SID0gIi4kZGItPkVycm9yTXNnKCkuIjxici8+PGJyLz4iOwogICAgICAgIGRpZSgpOwogICAgfQp9CgoKLy8gZGVsZXRlIGN1cnJlbnQgZXZlbnRzX3RvX2NhdGVnb3JpZXMgcmVjb3JkcyBmb3IgdGhpcyBldmVudAokc3FsID0gIkRFTEVURSBGUk9NICIgLiAkdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZSAuICIgV0hFUkUgZXZlbnRfaWQgPSA/IjsKJHJlc3VsdD0kZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKCi8vIHVwZGF0ZSBldmVudHNfdG9fY2F0ZWdvcmllcwppZihpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgKGNvdW50KCRjYXRlZ29yaWVzKSA+IDApKSB7CiAgICBmb3JlYWNoKCRjYXRlZ29yaWVzIGFzICRjYXRlZ29yeV9pZCkgewogICAgICAgICRjYXRlZ29yeV9pZCA9IGludHZhbCgkY2F0ZWdvcnlfaWQpOwogICAgICAgIGlmKCRjYXRlZ29yeV9pZCA+IDApIHsKICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiIC4gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAiIChjYXRlZ29yeV9pZCwgZXZlbnRfaWQpIFZBTFVFUyAoPyw/KSI7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRjYXRlZ29yeV9pZCwkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKICAgICAgICAgICAgLy9lY2hvICRzcWw7CiAgICAgICAgfQogICAgfQp9CgokZmllbGR0ZXh0ID0gJyc7Ci8vIENsZWFyIG91dCBhbGwgdGhlIGN1c3RvbSBmaWVsZCB2YWx1ZXMgZm9yIHRoaXMgZXZlbnQsIGFuZCBhZGQgdGhlIG5ldyBvbmVzIGZyb20gdGhlIGZvcm0KewogICAgJGZpZWxkcyA9ICR0aGlzLT5HZXRGaWVsZHMoKTsKCiAgICAvLyBEZWxldGUgdGhlIGN1c3RvbSBmaWVsZCB2YWx1ZXMgZmlyc3QKICAgIHsKICAgICAgICAkc3FsID0gIkRFTEVURSBGUk9NICIgLiAkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgLiAiIFdIRVJFIGV2ZW50X2lkID0gPyI7CiAgICAgICAgJHJlc3VsdD0kZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKICAgIH0KCiAgICAkY3VzdG9tZmllbGRzdmFsdWVzID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxkKSB7CiAgICAgICAgJGZpZWxkbmFtZSA9ICRmaWVsZFsnZmllbGRfbmFtZSddOwogICAgICAgIC8vIFJlcGxhY2Ugc3BhY2VzIHdpdGggdW5kZXJiYXJzIGZvciB0aGUgZm9ybSBwYXJhbWV0ZXIgKGEgYml0IG9mIGFuIGlra3kgaGFjayBJIGtub3csIGJ1dCBJIGNhbiB3ZWxsIGltYWdpbmUgZm9sayBkZWZpbmluZyBjdXN0b20gZmllbGRzIHdpdGggc3BhY2VzIGluIHRoZSBuYW1lKSBQZXJoYXBzIGl0IHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgaWYgY3VzdG9tIGZpZWxkcyBhbHNvIGhhZCBhIG51bWVyaWMga2V5IC0gaG9odW0gbGl2ZSBhbmQgbGVhcm4hCiAgICAgICAgJHNhZmVmaWVsZG5hbWUgPSAgc3RyX3JlcGxhY2UgKCAiICIsICJfIiwgJGZpZWxkbmFtZSApOwogICAgICAgICRmaWVsZF92YWx1ZSA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ2ZpZWxkXycgLiAkc2FmZWZpZWxkbmFtZSwgJycpOwoKICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgLiAiIChmaWVsZF9uYW1lLCBldmVudF9pZCwgZmllbGRfdmFsdWUpIFZBTFVFUyAoPyw/LD8pIjsKCiAgICAgICAgaWYgKCRmaWVsZF92YWx1ZSkgJHJlc3VsdD0kZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZmllbGRuYW1lLCRldmVudFsnZXZlbnRfaWQnXSwkZmllbGRfdmFsdWUpKTsKCiAgICAgICAgJGN1c3RvbWZpZWxkc3ZhbHVlc1tdID0gYXJyYXkoJGZpZWxkbmFtZSwkZXZlbnRbJ2V2ZW50X2lkJ10sJGZpZWxkX3ZhbHVlKTsKICAgICAgICBpZiggJGZpZWxkWydmaWVsZF9zZWFyY2hhYmxlJ10gKSAkZmllbGR0ZXh0IC49ICRmaWVsZF92YWx1ZS4nICc7CiAgICB9Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFVwZGF0ZSBTZWFyY2gKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwokc2VhcmNoID0gY21zX3V0aWxzOjpnZXRfc2VhcmNoX21vZHVsZSgpOwppZiggJHNlYXJjaCAhPSBGQUxTRSApIHsKICAgICR0ZXh0ID0gInskZXZlbnRbJ2V2ZW50X3RpdGxlJ119IHskZXZlbnRbJ2V2ZW50X3N1bW1hcnknXX0geyRldmVudFsnZXZlbnRfZGV0YWlscyddfSI7CiAgICAkdGV4dCAuPSAnICcuJGZpZWxkdGV4dDsKICAgICRzZWFyY2gtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRldmVudFsnZXZlbnRfaWQnXSwgJ2V2ZW50JywgJHRleHQsIE5VTEwpOwp9CgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gQWRkIHJlY3VycmluZyBldmVudHMKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwppZiggKCRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnKSAmJgogICAgKGlzX2FycmF5KCRyZWN1cnJpbmdfZXZlbnRzKSAmJiBjb3VudCgkcmVjdXJyaW5nX2V2ZW50cykgPiAwKSAmJgogICAgKGlzc2V0KCRwYXJhbXNbJ3VwZGF0ZV9jaGlsZHJlbiddKSB8fCAoJGRvX2luc2VydCA9PSB0cnVlKSApICkgewogICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiIC4gJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIgogICAgICAgICAgICAgKGV2ZW50X2lkCiAgICAgICAgICAgICAgLGV2ZW50X3RpdGxlCiAgICAgICAgICAgICAgLGV2ZW50X3N1bW1hcnkKICAgICAgICAgICAgICAsZXZlbnRfZGV0YWlscwoJICAgICAgICAgICxldmVudF9kYXRlX3N0YXJ0CiAgICAgICAgICAgICAgLGV2ZW50X2RhdGVfZW5kCiAgICAgICAgICAgICAgLGV2ZW50X3BhcmVudF9pZAogICAgICAgICAgICAgICxldmVudF9jcmVhdGVkX2J5CiAgICAgICAgICAgICAgLGV2ZW50X2FsbG93c19vdmVybGFwCiAgICAgICAgICAgICAgLGV2ZW50X2FsbF9kYXkKICAgIAkgICAgICAsZXZlbnRfY3JlYXRlX2RhdGUsIGV2ZW50X21vZGlmaWVkX2RhdGUpCiAgICAgICAgICAgICAgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/LE5PVygpLE5PVygpKSI7CiAgICBmb3JlYWNoKCAkcmVjdXJyaW5nX2V2ZW50cyBhcyAkb25lZXZlbnQgKSB7CiAgICAgICAgJGNoaWxkX2V2ZW50X2lkID0gJGRiLT5HZW5JRCgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiX3NlcSIpOwogICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHNxbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCRjaGlsZF9ldmVudF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfdGl0bGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfc3VtbWFyeSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kZXRhaWxzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJG9uZWV2ZW50WydzdGFydCddKSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX251bGxfZGF0ZV90cygkb25lZXZlbnRbJ2VuZCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfaWQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2VyX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxfZGF5J10pKTsKCiAgICAgICAgaWYoICRkYnIgKSB7CiAgICAgICAgICAgIGlmKGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiAoY291bnQoJGNhdGVnb3JpZXMpID4gMCkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goJGNhdGVnb3JpZXMgYXMgJGNhdGVnb3J5X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgJGNhdGVnb3J5X2lkID0gaW50dmFsKCRjYXRlZ29yeV9pZCk7CiAgICAgICAgICAgICAgICAgICAgaWYoJGNhdGVnb3J5X2lkID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3FsMiA9ICJJTlNFUlQgSU5UTyAiIC4gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAiIChjYXRlZ29yeV9pZCwgZXZlbnRfaWQpIFZBTFVFUyAoPyw/KSI7CiAgICAgICAgICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsMixhcnJheSgkY2F0ZWdvcnlfaWQsJGNoaWxkX2V2ZW50X2lkKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgokZXZlbnRuYW1lID0gJ0V2ZW50QWRkZWQnOwokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ2V2ZW50X3RpdGxlJ10gPSAkZXZlbnRbJ2V2ZW50X3RpdGxlJ107CiRwYXJtc1snZXZlbnRfc3VtbWFyeSddID0gJGV2ZW50WydldmVudF9zdW1tYXJ5J107CiRwYXJtc1snZXZlbnRfZGV0YWlscyddID0gJGV2ZW50WydldmVudF9kZXRhaWxzJ107CiRwYXJtc1snZXZlbnRfZGF0ZV9zdGFydCddID0gJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J107CiRwYXJtc1snZXZlbnRfZGF0ZV9lbmQnXSA9ICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXTsKJHBhcm1zWydldmVudF9jcmVhdGVkX2J5J10gPSAkdXNlcl9pZDsKJHBhcm1zWydldmVudF9pZCddID0gJGV2ZW50WydldmVudF9pZCddOwppZiggISRkb19pbnNlcnQgKSAkZXZlbnRuYW1lID0gJ0V2ZW50RWRpdGVkJzsKJHRoaXMtPlNlbmRFdmVudCggJGV2ZW50bmFtZSwgJHBhcm1zICk7CgokbWVzc2FnZT0kdGhpcy0+TGFuZygiZXZlbnR1cGRhdGVkIik7CgovLwovLyBkb25lCi8vCiR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLGFycmF5KCJtb2R1bGVfbWVzc2FnZSI9PiRtZXNzYWdlKSk7CgoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_fields_update.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhJGdDbXMgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1hbmFnZSBDYWxlbmRhciBBdHRyaWJ1dGVzIikgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50QWN0aW9uKCdhZG1pbl9zZXR0aW5ncycpOwokdGhpcy0+U2V0Q3VycmVudFRhYignYWRtaW5fbWFuYWdlX2NhdGVnb3JpZXMnKTsKCmZ1bmN0aW9uIF9jZ2NhbERlbGV0ZUZpZWxkKCRmaWVsZF9vbGRuYW1lKQp7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDYWxlbmRhcicpOwogICAgJGZpZWxkc190YWJsZV9uYW1lID0gJG1vZC0+ZmllbGRzX3RhYmxlX25hbWU7CiAgICAkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgPSAkbW9kLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZTsKCiAgICAkc3FsID0gIkRFTEVURSBGUk9NICQkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgd2hlcmUgZmllbGRfbmFtZT0nJGZpZWxkX29sZG5hbWUnIjsKICAgICRkYi0+RXhlY3V0ZSgkc3FsKTsKCiAgICAkc3FsID0gIkRFTEVURSBGUk9NICRmaWVsZHNfdGFibGVfbmFtZSB3aGVyZSBmaWVsZF9uYW1lPSckZmllbGRfb2xkbmFtZSciOwogICAgJGRiLT5FeGVjdXRlKCRzcWwpOwp9CgoKJGVycm9yPSIiOwokbWVzc2FnZT0iIjsKJHNlYXJjaGFibGUgPSBudWxsOwokd3lzaXd5ZyA9IG51bGw7CiRkZG9wdHMgPSBudWxsOwokdGhpcy0+U2V0Q3VycmVudFRhYignZmllbGRzJyk7CiRudXBkYXRlcyA9IDA7CiRuYWRkcyA9IDA7CgokaWRzID0gJHBhcmFtc1snZmllbGRfaWRzJ107IC8vIChvbGQgbmFtZXMuLi4gZW1wdHkgdmFsdWUgaW5kaWNhdGVzIGFuIGFkZCkKJG5ld19uYW1lcyA9ICRwYXJhbXNbJ2ZpZWxkX25hbWVzJ107CiR0eXBlcyA9ICRwYXJhbXNbJ2ZpZWxkX3R5cGVzJ107CmlmKCBpc3NldCgkcGFyYW1zWydmaWVsZF9zZWFyY2hhYmxlJ10pICkgJHNlYXJjaGFibGUgPSAkcGFyYW1zWydmaWVsZF9zZWFyY2hhYmxlJ107CmlmKCBpc3NldCgkcGFyYW1zWydmaWVsZF93eXNpd3lnJ10pICkgJHd5c2l3eWcgPSAkcGFyYW1zWydmaWVsZF93eXNpd3lnJ107CmlmKCBpc3NldCgkcGFyYW1zWydmaWVsZF9kZG9wdHMnXSkgKSAkZGRvcHRzID0gJHBhcmFtc1snZmllbGRfZGRvcHRzJ107CgovLyBmaW5kIGRlbGV0aW9ucy4KJGZpZWxkcyA9ICR0aGlzLT5HZXRGaWVsZHMoKTsKJGZpZWxkX25hbWVzID0gY2dlX2FycmF5OjpleHRyYWN0X2ZpZWxkKCRmaWVsZHMsJ2ZpZWxkX25hbWUnKTsKJGRlbGV0ZWQgPSBhcnJheSgpOwoKZm9yZWFjaCggJGZpZWxkX25hbWVzIGFzICRuYW1lICkgewogICAgaWYoICRuYW1lID09ICcnICkgY29udGludWU7CiAgICBpZiggIWluX2FycmF5KCRuYW1lLCRpZHMpICkgX2NnY2FsRGVsZXRlRmllbGQoJG5hbWUpOwp9CgovLyBub3cgcHJvY2VzcyBuZXcgcmVjb3JkcyBhbmQgdXBkYXRlcwokbnVtX3JlY29yZHMgPSBjb3VudCgkaWRzKTsKJGZpZWxkX29yZGVyID0gLTE7CmZvcigkaSA9IDA7ICRpIDwgJG51bV9yZWNvcmRzOyAkaSsrKSB7CiAgICAkZmllbGRfb2xkbmFtZSA9ICRpZHNbJGldOwogICAgJGZpZWxkX25ld25hbWUgPSB0cmltKCRuZXdfbmFtZXNbJGldKTsKICAgICRmaWVsZF90eXBlID0gKGludCkkdHlwZXNbJGldOwogICAgJGZpZWxkX3NlYXJjaGFibGUgPSAoaXNzZXQoJHNlYXJjaGFibGVbJGldKSk/JHNlYXJjaGFibGVbJGldOjA7CiAgICAkZmllbGRfZXh0cmEgPSBhcnJheSgnc2VhcmNoYWJsZSc9PjAsJ3d5c2l3eWcnPT4wKTsKICAgICRmaWVsZF9leHRyYVsnc2VhcmNoYWJsZSddID0gKGlzc2V0KCRzZWFyY2hhYmxlWyRpXSkpPyRzZWFyY2hhYmxlWyRpXTowOwogICAgJGZpZWxkX2V4dHJhWyd3eXNpd3lnJ10gPSAoaXNzZXQoJHd5c2l3eWdbJGldKSk/JHd5c2l3eWdbJGldOjA7CiAgICAkZmllbGRfZXh0cmFbJ2Rkb3B0cyddID0gKGlzc2V0KCRkZG9wdHNbJGldKSk/JGRkb3B0c1skaV06bnVsbDsKCiAgICAkZmllbGRfb3JkZXIrKzsKCiAgICBpZiggJGZpZWxkX29sZG5hbWUgPT0gJycgJiYgJGZpZWxkX25ld25hbWUgPT0gJycgKSBjb250aW51ZTsgLy8gZW1wdHkuLi4gbm90aGluZyB0byBkby4KCiAgICBpZiggJGZpZWxkX29sZG5hbWUgPT0gJycgJiYgJGZpZWxkX25ld25hbWUgIT0gJycgKSB7CiAgICAgICAgLy8gYW4gYWRkLi4KICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcgLiAkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUgLiAnIChmaWVsZF9uYW1lLGZpZWxkX3R5cGUsZmllbGRfc2VhcmNoYWJsZSxmaWVsZF9leHRyYSxmaWVsZF9vcmRlcikgVkFMVUVTICg/LD8sPyw/LD8pJzsKICAgICAgICBpZiggJGZpZWxkX2V4dHJhICkgJGZpZWxkX2V4dHJhID0gc2VyaWFsaXplKCRmaWVsZF9leHRyYSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGZpZWxkX25ld25hbWUsJGZpZWxkX3R5cGUsJGZpZWxkX3NlYXJjaGFibGUsJGZpZWxkX2V4dHJhLCRmaWVsZF9vcmRlcikpOwogICAgICAgICRuYWRkcysrOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgLy8gYW4gdXBkYXRlCiAgICAgICAgJHNxbCA9ICdVUERBVEUgJyAuICR0aGlzLT5maWVsZHNfdGFibGVfbmFtZSAuICcgU0VUIGZpZWxkX25hbWUgPSA/LCBmaWVsZF90eXBlID0gPywgZmllbGRfc2VhcmNoYWJsZSA9ID8sCiAgICAgICAgICAgICAgIGZpZWxkX2V4dHJhID0gPywgZmllbGRfb3JkZXIgPSA/IFdIRVJFIGZpZWxkX25hbWUgPSA/JzsKICAgICAgICBpZiggJGZpZWxkX2V4dHJhICkgJGZpZWxkX2V4dHJhID0gc2VyaWFsaXplKCRmaWVsZF9leHRyYSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGZpZWxkX25ld25hbWUsICRmaWVsZF90eXBlLCAkZmllbGRfc2VhcmNoYWJsZSwgJGZpZWxkX2V4dHJhLCAkZmllbGRfb3JkZXIsICRmaWVsZF9vbGRuYW1lKSk7CiAgICAgICAgaWYoICRmaWVsZF9uZXduYW1lICE9ICRmaWVsZF9vbGRuYW1lICkgewogICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnIC4gJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lIC4gJyBTRVQgZmllbGRfbmFtZSA9ID8gV0hFUkUgZmllbGRfbmFtZSA9ID8nOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZmllbGRfbmV3bmFtZSwgJGZpZWxkX29sZG5hbWUpKTsKICAgICAgICB9CiAgICAgICAgJG51cGRhdGVzKys7CiAgICB9Cn0KCiR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfZmllbGRzdXBkYXRlZCcpKTsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2ltcG9ydF9ldmVudHMnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignaW1wb3J0X2RlbGltaXRlcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltcG9ydF9kZWxpbWl0ZXInLCcsJykpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2ltcG9ydC50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_events.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCmZ1bmN0aW9uIF9mZ2V0cygkZmgsJG51bSA9IDQwOTYpCnsKICBpZiggISRmaCApIHJldHVybjsKICAkcG9zMSA9IGZ0ZWxsKCRmaCk7CgogICRsaW5lID0gZmdldHMoJGZoLCRudW0pOwogIGlmKCBzdHJwb3MoJGxpbmUsIlxyIikgPT09IEZBTFNFICkgcmV0dXJuICRsaW5lOwoKICAvLyBsaW5lIGlzIHByb2JhYmx5IGEgY3JhcHB5IG1hYyBsaW5lLgogICRsZW4xID0gc3RybGVuKCRsaW5lKTsKICAkcG9zID0gc3RycG9zKCRsaW5lLCJcciIpOwoKICAkbGluZSA9IHN1YnN0cigkbGluZSwwLCRwb3MpOwogIGZzZWVrKCRmaCwoJGxlbjEgLSAkcG9zIC0xICkgKiAtMSxTRUVLX0NVUik7CiAgcmV0dXJuICRsaW5lOwp9CgpmdW5jdGlvbiBfZ2V0bGluZSgkZmgpCnsKICBpZiggISRmaCApIHJldHVybjsKICAkbGluZSA9IF9mZ2V0cygkZmgpOwogICRwb3MgPSBzdHJwb3MoJGxpbmUsJy8vJyk7CiAgaWYoICRwb3MgIT09IEZBTFNFICkgewogICAgJHRtcCA9IHN0cnBvcygkbGluZSwnOi8vJyk7CiAgICBpZiggJHRtcCA9PT0gRkFMU0UgfHwgJHRtcCAhPSAkcG9zIC0gMSApICRsaW5lID0gc3Vic3RyKCRsaW5lLDAsJHBvcyk7CiAgfQogICRsaW5lID0gdHJpbSgkbGluZSk7CiAgcmV0dXJuICRsaW5lOwp9CgpmdW5jdGlvbiBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwkZmxkbmFtZSkKewogIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRmaWVsZG1hcCk7ICRpKysgKSB7CiAgICBpZiggc3RydG9sb3dlcigkZmllbGRtYXBbJGldKSA9PSBzdHJ0b2xvd2VyKCRmbGRuYW1lKSApIHJldHVybiAkZGF0YVskaV07CiAgfQp9CgokdGhpcy0+U2V0Q3VycmVudFRhYignZGVmYXVsdGFkbWluJyk7CmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwppZiAoIWlzc2V0KCRfRklMRVNbJGlkLidjc3ZfZmlsZSddKSkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7Cn0KZWxzZSB7CiAgJGRlbGltaXRlciA9IChpc3NldCgkcGFyYW1zWydkZWxpbWl0ZXInXSkpP3RyaW0oJHBhcmFtc1snZGVsaW1pdGVyJ10pOiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbXBvcnRfZGVsaW1pdGVyJywnLCcpOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbXBvcnRfZGVsaW1pdGVyJywkZGVsaW1pdGVyKTsKCiAgJHVzZXJfaWQgPSBnZXRfdXNlcmlkKCk7CgogIC8vIGdldCBhIGNhdGVnb3J5IG1hcC4KICAkc3FsID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSBGUk9NICcgLiAkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lOwogICRycyA9ICRkYi0+RXhlY3V0ZSgkc3FsKTsKICAkY2F0ID0gYXJyYXkoKTsKICB3aGlsZSggJHJzICYmICRyb3cgPSAkcnMtPkZldGNoUm93KCkpIHsKICAgICRjYXRbJHJvd1snY2F0ZWdvcnlfbmFtZSddXT0kcm93WydjYXRlZ29yeV9pZCddOwogIH0KCiAgLy8gZ2V0IGEgZmllbGQgbWFwLgogICRmaWVsZHMgPSBhcnJheSgpOwogIHsKICAgICR0bXAgPSAkdGhpcy0+R2V0RmllbGRzKCk7CiAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKQkkZmllbGRzID0gY2dlX2FycmF5Ojp0b19oYXNoKCR0bXAsJ2ZpZWxkX25hbWUnKTsKICB9CgogIC8vIG9wZW4gdGhlIGZpbGUKICAkaGFuZGxlID0gZm9wZW4oJF9GSUxFU1skaWQuJ2Nzdl9maWxlJ11bJ3RtcF9uYW1lJ10sICJyIik7CiAgaWYgKCRoYW5kbGUgPT09IGZhbHNlKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJ2Vycm9yX2NhbnRvcGVuZmlsZScpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICB9CgogIC8vIGdldCB0aGUgZmlyc3QgbGluZS4KICAkbGluZW51bSA9IDE7CiAgJGxpbmUgPSBfZ2V0bGluZSgkaGFuZGxlKTsKICBpZiggZmVvZigkaGFuZGxlKSB8fCAkbGluZSA9PSAnJyApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZScpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgfQoKICAvLyBwYXJzZSB0aGUgZmlyc3QgbGluZSBpbnRvIGEgZmllbGQgbWFwLgogICRmaWVsZG1hcCA9IGNnZV9hcnJheTo6c21hcnRfZXhwbG9kZSgkbGluZSwkZGVsaW1pdGVyKTsKICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZmllbGRtYXApOyAkaSsrICkgewogICAgJGZpZWxkbWFwWyRpXSA9IHRyaW0oJGZpZWxkbWFwWyRpXSk7CiAgfQoKICAvLyBjaGVjayBmb3IgcmVxdWlyZWQgZmllbGRzLgogICRyZXF1aXJlZF9maWVsZHMgPSBhcnJheSgnc3RhcnQgdGltZScsJ2VuZCB0aW1lJywndGl0bGUnKTsKICAkb3B0aW9uYWxfZmllbGRzID0gYXJyYXkoJ2NhdGVnb3J5Jywnc3VtbWFyeScsJ2Rlc2NyaXB0aW9uJyk7CiAgZm9yZWFjaCggJHJlcXVpcmVkX2ZpZWxkcyBhcyAkcmVxZCApIHsKICAgICAgJGZvdW5kID0gZmFsc2U7CiAgICAgIGZvcmVhY2goICRmaWVsZG1hcCBhcyAkZmxkICkgewogICAgICAgICAgaWYoIHN0cnRvbG93ZXIoJGZsZCkgPT0gJHJlcWQgKSB7CiAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiggISRmb3VuZCApIHsKICAgICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY3N2Zmlyc3RsaW5lZmxkbm90Zm91bmQnLCRyZXFkKSk7CiAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgICB9CiAgfQoKICAvLyBub3cgY2hlY2sgZm9yIGZpZWxkcyBvZiB0eXBlICdmaWxlJyBhbmQgZm9yIHVua25vd24gZmllbGRzLgogIGlmKCAwICYmIGNvdW50KCRmaWVsZHMpICkgeyAgIC8vIGNvbW1lbnRlZCBvdXQuCiAgICAgIGZvcmVhY2goICRmaWVsZG1hcCBhcyAkb25lICkgewogICAgICAgICAgaWYoIGluX2FycmF5KHN0cnRvbG93ZXIoJG9uZSksJHJlcXVpcmVkX2ZpZWxkcykgKSBjb250aW51ZTsKICAgICAgICAgIGlmKCBpbl9hcnJheShzdHJ0b2xvd2VyKCRvbmUpLCRvcHRpb25hbF9maWVsZHMpICkgY29udGludWU7CgogICAgICAgICAgJGZuZCA9IGZhbHNlOwogICAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkbmFtZSA9PiAkcmVjICkgewogICAgICAgICAgICAgIGlmKCAkb25lID09ICRuYW1lICkgewogICAgICAgICAgICAgICAgICAkZm5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgaWYoICRyZWNbJ2ZpZWxkX3R5cGUnXSA9PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZmaXJzdGxpbmVmaWxlZmxkJykpOwogICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiggISRmbmQgKSB7CiAgICAgICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnLCRvbmUpKTsKICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgICAgICAgfQogICAgICB9CiAgfQoKICAvLyBub3cgYmVnaW4gaW1wb3J0aW5nLgogICRlcnJvcnMgPSBhcnJheSgpOwogICRpbXBvcnRlZCA9IDA7CiAgd2hpbGUoICFmZW9mKCRoYW5kbGUpICkgewogICAgICAkc3RhcnRfdGltZSA9IG51bGw7ICRlbmRfdGltZSA9IG51bGw7ICRhbGxfZGF5ID0gZmFsc2U7ICRzdGFydF90aW1lX3RzID0gbnVsbDsgJGVuZF90aW1lX3RzID0gbnVsbDsKICAgICAgJGxpbmUgPSBfZ2V0bGluZSgkaGFuZGxlKTsKICAgICAgJGxpbmVudW0rKzsKICAgICAgaWYoICEkbGluZSApIGNvbnRpbnVlOwogICAgICAkZGF0YSA9IGNnZV9hcnJheTo6c21hcnRfZXhwbG9kZSgkbGluZSwkZGVsaW1pdGVyKTsKCiAgICAgICRldmVudF9pZCA9ICRkYi0+R2VuSUQoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIl9zZXEiKTsKCiAgICAgICR0bXAgPSBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwnc3RhcnQgdGltZScpOwogICAgICBpZiggJHRtcCA9PSAnTlVMTCcgfHwgJHRtcCA9PSAnJyApIHsKICAgICAgICAgIC8vIG5vIHN0YXJ0IHRpbWUgaXMgYW4gZXJyb3IuCiAgICAgICAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY3N2X2luc2VydCcsJGxpbmVudW0pLicgMSc7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICAkc3RhcnRfdGltZV90cyA9IHN0cnRvdGltZSgkdG1wKTsKICAgICAgICAgIGlmKCAhJHN0YXJ0X3RpbWVfdHMgKSAkc3RhcnRfdGltZV90cyA9ICRkYi0+VW5peFRpbWVTdGFtcCgkdG1wKTsKICAgICAgICAgIGlmKCAhJHN0YXJ0X3RpbWVfdHMgKSB7CiAgICAgICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Nzdl9pbnNlcnQnLCRsaW5lbnVtKS4nIDFhJzsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgfQoKICAgICAgJHRtcCA9IF9tYXBfZmllbGQoJGZpZWxkbWFwLCRkYXRhLCdhbGwgZGF5Jyk7CiAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgJGFsbF9kYXkgPSAxOwogICAgICB9CgogICAgICAkdG1wID0gX21hcF9maWVsZCgkZmllbGRtYXAsJGRhdGEsJ2VuZCB0aW1lJyk7CiAgICAgIGlmKCBzdHJ0b2xvd2VyKCR0bXApID09ICdhbGwgZGF5JyApIHsKICAgICAgICAgIC8vIGZ1bGwgZGF5LCB1c2Ugc3RhcnQgZGF0ZSwgYnV0IDIzOjU5IGVuZCB0aW1lLgogICAgICAgICAgJGFsbF9kYXkgPSAxOwogICAgICB9CiAgICAgIGVsc2UgaWYoICR0bXAgPT0gJ05VTEwnIHx8ICR0bXAgPT0gJycgKSB7CiAgICAgICAgICAvLyBubyBlbmQgdGltZS4KICAgICAgICAgICRlbmRfdGltZV90cyA9IG51bGw7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICAkZW5kX3RpbWVfdHMgPSBzdHJ0b3RpbWUoJHRtcCwkc3RhcnRfdGltZV90cyk7CiAgICAgICAgICBpZiggISRlbmRfdGltZV90cyApICRlbmRfdGltZV90cyA9ICRkYi0+VW5peFRpbWVTdGFtcCgkdG1wKTsKICAgICAgfQogICAgICBpZiggJGVuZF90aW1lX3RzICYmICRlbmRfdGltZV90cyA8ICRzdGFydF90aW1lX3RzICkgewogICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Nzdl9pbnNlcnQnLCRsaW5lbnVtKS4nIDInOwogICAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgLy8gdG9kbzogY2hlY2sgZm9yIHRvbyBsb25nIG9mIGFuIGV2ZW50Li4KCiAgICAgICRzdGFydF90aW1lID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCRzdGFydF90aW1lX3RzKSwiJyIpOwogICAgICBpZiggJGVuZF90aW1lX3RzICkgJGVuZF90aW1lID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCRlbmRfdGltZV90cyksIiciKTsKCiAgICAgICR0aXRsZSA9IF9tYXBfZmllbGQoJGZpZWxkbWFwLCRkYXRhLCd0aXRsZScpOwogICAgICAkZGVzY3JpcHRpb24gPSBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwnZGVzY3JpcHRpb24nKTsKCiAgICAgIGlmKCAkdGl0bGUgPT0gJycgKSB7CiAgICAgICAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY3N2X2luc2VydCcsJGxpbmVudW0pLicgMmEnOwogICAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiICgKICAgICAgICAgICAgICAgZXZlbnRfaWQKICAgICAgICAgICAgICAsZXZlbnRfdGl0bGUKICAgICAgICAgICAgICAsZXZlbnRfc3VtbWFyeQogICAgICAgICAgICAgICxldmVudF9kZXRhaWxzCiAgICAgICAgICAgICAgLGV2ZW50X3BhcmVudF9pZAogICAgICAgICAgICAgICxldmVudF9kYXRlX3N0YXJ0CiAgICAgICAgICAgICAgLGV2ZW50X2RhdGVfZW5kCiAgICAgICAgICAgICAgLGV2ZW50X2FsbF9kYXkKICAgICAgICAgICAgICAsZXZlbnRfYWxsb3dzX292ZXJsYXAKICAgICAgICAgICAgICAsZXZlbnRfY3JlYXRlZF9ieQogICAgICAgICAgICAgICxldmVudF9jcmVhdGVfZGF0ZQogICAgICAgICAgICAgICxldmVudF9tb2RpZmllZF9kYXRlCiAgICAgICAgICAgICAgKSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sTk9XKCksTk9XKCkpIjsKCiAgICAvLyBpbnNlcnQgdGhlIGV2ZW50IHJlY29yZC4KICAgICRwYXJtcyA9IGFycmF5KCRldmVudF9pZAoJCSAgICwkdGl0bGUKCQkgICAsX21hcF9maWVsZCgkZmllbGRtYXAsJGRhdGEsJ3N1bW1hcnknKQoJCSAgICwkZGVzY3JpcHRpb24KCQkgICAsLTEKCQkgICAsJHN0YXJ0X3RpbWUKICAgICAgICAgICAsJGVuZF90aW1lCiAgICAgICAgICAgLCRhbGxfZGF5CgkJICAgLDEKCQkgICAsJHVzZXJfaWQKCQkgICApOwogICAgJGRiciA9ICRkYi0+RXhlY3V0ZSggJHNxbCwgJHBhcm1zICk7CiAgICBpZiggISRkYnIgKSB7CiAgICAgICRlcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZfaW5zZXJ0JywkbGluZW51bSkuJyAzJzsKICAgICAgY29udGludWU7CiAgICB9CgogICAgICAvLyBpbnNlcnQgdGhlIGNhdGVnb3JpZShzKQogICAgJHZhbCA9IF9tYXBfZmllbGQoJGZpZWxkbWFwLCRkYXRhLCdjYXRlZ29yeScpOwogICAgaWYoICR2YWwgKSB7CiAgICAgICRjYXRlZ29yaWVzID0gZXhwbG9kZSgnOycsJHZhbCk7CiAgICAgICRfYmFkID0gZmFsc2U7CiAgICAgIGZvcmVhY2goICRjYXRlZ29yaWVzIGFzICRvbmUgKSB7Cgkkb25lID0gdHJpbSgkb25lKTsKCWlmKCBpc3NldCgkY2F0WyRvbmVdKSApIHsKCSAgJGRiciA9ICRkYi0+RXhlY3V0ZSgnSU5TRVJUIElOVE8gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4KCQkJICAgICAgJyAoY2F0ZWdvcnlfaWQsIGV2ZW50X2lkKSBWQUxVRVMgKD8sPyknLGFycmF5KCRjYXRbJG9uZV0sJGV2ZW50X2lkKSk7CgkgIGlmKCAhJGRiciApIHsKCSAgICAvLyBkZWxldGUgdGhlIGluc2VydGVkIHJlY29yZAoJICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CgkgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZXZlbnRfaWQpKTsKCgkgICAgLy8gZGVsZXRlIGFueSBvdGhlciBjYXRlZ29yaWVzLgoJICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKCSAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRldmVudF9pZCkpOwoKCSAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY3N2X2luc2VydCcsJGxpbmVudW0pLicgNCc7CgkgICAgJF9iYWQgPSB0cnVlOwoJICAgIGJyZWFrOwoJICB9Cgl9CiAgICAgIH0KICAgICAgaWYoICRfYmFkICkgY29udGludWU7CiAgICB9CgogICAgLy8gaW5zZXJ0IHRoZSBmaWVsZHMuCiAgICAkX2JhZCA9IGZhbHNlOwogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lLicgKGZpZWxkX25hbWUsZXZlbnRfaWQsZmllbGRfdmFsdWUpIFZBTFVFUyAoPyw/LD8pJzsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRmaWVsZG1hcCk7ICRpKysgKSB7CiAgICAgICRmbGRuYW1lID0gJGZpZWxkbWFwWyRpXTsKICAgICAgaWYoIGluX2FycmF5KCRmbGRuYW1lLCRyZXF1aXJlZF9maWVsZHMpICkgY29udGludWU7CiAgICAgIGlmKCBpbl9hcnJheSgkZmxkbmFtZSwkb3B0aW9uYWxfZmllbGRzKSApIGNvbnRpbnVlOwogICAgICBpZiggIWlzc2V0KCRmaWVsZHNbJGZsZG5hbWVdKSApIGNvbnRpbnVlOyAvLyBhbiB1bmtub3duIGZpZWxkLgogICAgICBpZiggJGZpZWxkc1skZmxkbmFtZV1bJ2ZpZWxkX3R5cGUnXSA9PSAxICkgY29udGludWU7IC8vIGZpbGUgdHlwZS4KCiAgICAgICR2YWx1ZSA9IG51bGw7CiAgICAgIGlmKCBpc3NldCgkZGF0YVskaV0pICkgJHZhbHVlID0gJGRhdGFbJGldOwogICAgICBpZiggZW1wdHkoJHZhbHVlKSApIGNvbnRpbnVlOwoKICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZsZG5hbWUsJGV2ZW50X2lkLCR2YWx1ZSkpOwogICAgICBpZiggISRkYnIgKSB7CgkvLyBkZWxldGUgdGhlIGluc2VydGVkIHJlY29yZAoJJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKCSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CgoJLy8gZGVsZXRlIHRoZSBjYXRlZ29yaWVzCgkkcXVlcnkgPSAnREVMRVRFIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRldmVudF9pZCkpOwoKCSRlcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZfaW5zZXJ0JywkbGluZW51bSkuJyA1JzsKCSRfYmFkID0gdHJ1ZTsKCWJyZWFrOwogICAgICB9CiAgICB9CiAgICBpZiggJF9iYWQgKSBjb250aW51ZTsKCiAgICAkaW1wb3J0ZWQrKzsKICB9IC8vIG5vdCBlbmQgb2YgZmlsZS4KCiAgZmNsb3NlKCRoYW5kbGUpOwoKICAvLyBkbyBmaW5hbCByZXBvcnQuCiAgJHNtYXJ0eS0+YXNzaWduKCdpbXBvcnRlZCcsJGltcG9ydGVkKTsKICBpZiggY291bnQoJGVycm9ycykgKSAkc21hcnR5LT5hc3NpZ24oJ2Vycm9ycycsJGVycm9ycyk7CiAgJHNtYXJ0eS0+YXNzaWduKCdsaW5lbnVtJywkbGluZW51bSk7CiAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9pbXBvcnQudHBsJyk7Cn0gLy8gZWxzZS4KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_remove_conflicted.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCi8vIGZpbmQgYWxsIG9mIHRoZSBldmVudHMgdGhhdCBkbyBub3QgYWxsb3cgb3ZlcmxhcC4KJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCxldmVudF9wYXJlbnRfaWQsZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicKICAgICAgICAgICBXSEVSRSBldmVudF9hbGxvd3Nfb3ZlcmxhcCA9IDAgT1JERVIgQlkgZXZlbnRfaWQgQVNDJzsKJGlkcyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKaWYoICEkaWRzICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCk7CiAgfQoKJHF1ZXJ5MSA9ICdTRUxFQ1QgZXZlbnRfaWQsZXZlbnRfcGFyZW50X2lkLCBqMS5uY2hpbGRyZW4KICAgICAgICAgICAgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4iIGV2CiAgICAgICAgICBMRUZUIEpPSU4gKFNFTEVDVCBldmVudF9wYXJlbnRfaWQgQVMgcGFyZW50LCBjb3VudChldmVudF9pZCkgQVMgbmNoaWxkcmVuIEZST00gIi4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuIiBXSEVSRSBldmVudF9wYXJlbnRfaWQgIT0gLTEgR1JPVVAgQlkgZXZlbnRfcGFyZW50X2lkKSBqMSBPTiBldi5ldmVudF9pZCA9IGoxLnBhcmVudAogICAgICAgICAgIFdIRVJFIGV2ZW50X2lkICE9ID8KICAgICAgICAgICAgIEFORCBldmVudF9wYXJlbnRfaWQgIT0gPwogICAgICAgICAgICAgQU5EICgoZXZlbnRfZGF0ZV9zdGFydCBCRVRXRUVOID8gYW5kID8pIE9SIChldmVudF9kYXRlX2VuZCBCRVRXRUVOID8gYW5kID8pKSI7CmZvcmVhY2goICRpZHMgYXMgJG9uZV9ldmVudCApCnsKICAkdG1wID0gJGRiLT5HZXRSb3coJHF1ZXJ5MSxhcnJheSgkb25lX2V2ZW50WydldmVudF9pZCddLAoJCQkJICAkb25lX2V2ZW50WydldmVudF9pZCddLAoJCQkJICB0cmltKCRvbmVfZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAoJCQkJICB0cmltKCRvbmVfZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10sIiciKSwKCQkJCSAgdHJpbSgkb25lX2V2ZW50WydldmVudF9kYXRlX3N0YXJ0J10sIiciKSwKCQkJCSAgdHJpbSgkb25lX2V2ZW50WydldmVudF9kYXRlX2VuZCddLCInIikKCQkJCSAgKSk7CiAgaWYoICEkdG1wICkKICAgIHsKICAgICAgLy8gbm90aGluZyBjb25mbGljdHMgd2l0aCB0aGlzIGV2ZW50LgogICAgICBjb250aW51ZTsKICAgIH0KCiAgLy8gd2UgaGF2ZSBhIGNvbmZsaWN0LgoKICAvLyBpcyB0aGlzIGEgcGFyZW50IGV2ZW50ID8KICBpZiggJHRtcFsnbmNoaWxkcmVuJ10gIT0gLTEgKQogICAgewogICAgICAvLyB5ZXMuLi4gZ2V0IHRoZSBmaXJzdCBjaGlsZCBldmVudCBpZC4uCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4iCiAgICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfcGFyZW50X2lkID0gPyBPUkRFUiBCWSBldmVudF9pZCBBU0MiOwogICAgICAkbmV3X3BhcmVudF9pZCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdG1wWydldmVudF9pZCddKSk7CgogICAgICAvLyBhbmQgbWFrZSBpdCB0aGUgcGFyZW50CiAgICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJwogICAgICAgICAgICAgICAgICAgU0VUIGV2ZW50X3BhcmVudF9pZCA9ID8KICAgICAgICAgICAgICAgICBXSEVSRSBldmVudF9wYXJlbnRfaWQgPSA/CiAgICAgICAgICAgICAgICAgICBBTkQgZXZlbnRfaWQgIT0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5ld19wYXJlbnRfaWQsJHRtcFsnZXZlbnRfaWQnXSwkbmV3X3BhcmVudF9pZCkpOwoKICAgICAgLy8gYW5kIHVwZGF0ZSB0aGUgbmV3IHBhcmVudCByZWNvcmQKICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nCiAgICAgICAgICAgICAgICAgICBTRVQgZXZlbnRfcGFyZW50X2lkID0gPwogICAgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoLTEsJG5ld19wYXJlbnRfaWQpKTsKICAgIH0KCiAgLy8gZGVsZXRlIHRoaXMgZXZlbnQsIHVubGVzcyBpdCBoYXMgY2hpbGQgZXZlbnRzCiAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBtYWtlIHRoZSBmaXJzdCBjaGlsZCBldmVudCB0aGUgcGFyZW50CiAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicKICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdG1wWydldmVudF9pZCddKSk7CgogICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicKICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdG1wWydldmVudF9pZCddKSk7Cn0KCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdkZWZhdWx0YWRtaW4nKTsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_remove_expired.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCnRyeSB7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FsX2NhbmNlbCddKSApIHsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgfQoKICAgIC8vIGdldCBhIGxpc3Qgb2YgdGhlIGV2ZW50cyAoYW5kIGV2ZW50IG5hbWVzLCBhbmQgd2V0aGVyIHRoZXkgYXJlIGEgY2hpbGQgZXZlbnQpCiAgICAvLyB0aGF0IGFyZSBleHBpcmVkLgogICAgJHNxbCA9ICdTRUxFQ1QgZXZlbnRfaWQsIGV2ZW50X3RpdGxlLCBldmVudF9zdW1tYXJ5LCBldmVudF9kYXRlX3N0YXJ0LCBldmVudF9kYXRlX2VuZCwgZXZlbnRfcmVjdXJfcGVyaW9kLCBldmVudF9wYXJlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nCiAgICAgICAgV0hFUkUgKGV2ZW50X2RhdGVfc3RhcnQgPCBOT1coKSkgT1IgKGV2ZW50X2RhdGVfZW5kIElTIE5PVCBOVUxMIEFORCBldmVudF9kYXRlX2VuZCA8IE5PVygpKQogICAgICAgIE9SREVSIEJZIGV2ZW50X2RhdGVfc3RhcnQgREVTQwogICAgICAgIExJTUlUIDUwMCc7CiAgICAkbGlzdCA9ICRkYi0+R2V0QXJyYXkoJHNxbCk7CiAgICBpZiggIWNvdW50KCRsaXN0KSApIHsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX25vZXhwaXJlZGV2ZW50cycpKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgfQoKICAgIC8vIGNvbnZlcnQgdGhlIGxpc3QgdG8gYSBoYXNoIGJhc2VkIG9uIHRoZSBldmVudCBpZAogICAgJGxpc3QgPSBcY2dlX2FycmF5Ojp0b19oYXNoKCRsaXN0LCdldmVudF9pZCcpOwoKICAgIC8vIG5vdywgZm9yIGFsbCB0aGUgcGFyZW50IGV2ZW50cywgZ2V0IHRoZSBsYXN0IGNoaWxkIGluIHRoZSBmdXR1cmUuCiAgICAkcGFyZW50X2lkcyA9IGFycmF5KCk7CiAgICAkbGlzdF9mdXR1cmVfcGFyZW50cyA9IGFycmF5KCk7IC8vIGV2ZW50IGlkcyB0aGF0IGhhdmUgY2hpbGRyZW4gaW4gdGhlIGZ1dHVyZS4KICAgIGZvcmVhY2goICRsaXN0IGFzICRyb3cgKSB7CiAgICAgICAgaWYoICFlbXB0eSgkcm93WydldmVudF9yZWN1cl9wZXJpb2QnXSkgJiYgJHJvd1snZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnICkgewogICAgICAgICAgICAkcGFyZW50X2lkc1tdID0gKGludCkgJHJvd1snZXZlbnRfaWQnXTsKICAgICAgICB9CiAgICB9CiAgICBpZiggY291bnQoJHBhcmVudF9pZHMpICkgewogICAgICAgICRzcWwgPSAnU0VMRUNUIHQxLmV2ZW50X2lkLHQxLmV2ZW50X3BhcmVudF9pZCx0MS5ldmVudF9kYXRlX3N0YXJ0LHQxLmV2ZW50X2RhdGVfZW5kIGZyb20gJXRhYmxlJSB0MQogICAgICAgICAgICAgICAgSk9JTiAoU0VMRUNUIGV2ZW50X3BhcmVudF9pZCxNQVgoZXZlbnRfZGF0ZV9zdGFydCkgZXZlbnRfZGF0ZV9zdGFydAogICAgICAgICAgICAgICAgICAgICAgRlJPTSAldGFibGUlCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBldmVudF9wYXJlbnRfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHBhcmVudF9pZHMpLicpCiAgICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBldmVudF9wYXJlbnRfaWQpIHQyCiAgICAgICAgICAgICAgICBPTiB0MS5ldmVudF9wYXJlbnRfaWQgPSB0Mi5ldmVudF9wYXJlbnRfaWQgQU5EIHQxLmV2ZW50X2RhdGVfc3RhcnQgPSB0Mi5ldmVudF9kYXRlX3N0YXJ0JzsKICAgICAgICAkc3FsID0gc3RyX3JlcGxhY2UoJyV0YWJsZSUnLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwkc3FsKTsKICAgICAgICAkbGlzdDIgPSAkZGItPkdldEFycmF5KCRzcWwpOwogICAgICAgIGFycmF5X3dhbGsoJGxpc3QyLGZ1bmN0aW9uKCRmdXR1cmVfcmVjb3JkKSB1c2UgKCYkbGlzdCwmJGRiKSB7CiAgICAgICAgICAgICAgICAkdGFyZ2V0X2V2ZW50ID0gKGludCkgJGZ1dHVyZV9yZWNvcmRbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgICAgICAgICAgaWYoICR0YXJnZXRfZXZlbnQgPCAxICkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYoICFpc3NldCgkbGlzdFskdGFyZ2V0X2V2ZW50XSkgKSByZXR1cm47CiAgICAgICAgICAgICAgICAkdHMgPSAkZGItPlVuaXhUaW1lU3RhbXAoJGZ1dHVyZV9yZWNvcmRbJ2V2ZW50X2RhdGVfc3RhcnQnXSk7CiAgICAgICAgICAgICAgICAkbGlzdFskdGFyZ2V0X2V2ZW50XVsnZXZlbnRfcmVjdXJfbGFzdCddID0gJHRzOwogICAgICAgICAgICAgICAgaWYoICR0cyA+IHRpbWUoKSApICRsaXN0X2Z1dHVyZV9wYXJlbnRzW10gPSAkdGFyZ2V0X2V2ZW50OwogICAgICAgICAgICB9KTsKICAgIH0KCiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FsX3N1Ym1pdCddKSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkY2FsX3NlbGVjdCA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjYWxfc2VsZWN0Jyk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJGNhbF9zZWxlY3QpIHx8ICFjb3VudCgkY2FsX3NlbGVjdCkgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3Jfbm90aGluZ3NlbGVjdGVkJykpOwoKICAgICAgICAgICAgJG4gPSAwOwogICAgICAgICAgICBmb3JlYWNoKCAkY2FsX3NlbGVjdCBhcyAkZXZlbnRfaWQgKSB7CiAgICAgICAgICAgICAgICAvLyBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGV2ZW50IGlzIG5vdCBhIHBhcmVudCB3aXRoIGNoaWxkcmVuIGluIHRoZSBmdXR1cmUKICAgICAgICAgICAgICAgIGlmKCBpbl9hcnJheSgkZXZlbnRfaWQsJGxpc3RfZnV0dXJlX3BhcmVudHMpICkgY29udGludWU7CiAgICAgICAgICAgICAgICBjZ2NhbGVuZGFyX3V0aWxzOjpkZWxldGVfZXZlbnQoJGV2ZW50X2lkKTsKICAgICAgICAgICAgICAgICRuKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnQnVsayBkZWxldGVkIGV4cGlyZWQgZXZlbnRzJyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdkZWxldGVkX24nLCRuKSk7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2FkbWluX3JlbW92ZV9leHBpcmVkLnRwbCcpKTsKICAgICR0cGwtPmFzc2lnbignbW9kJywkdGhpcyk7CiAgICAkdHBsLT5hc3NpZ24oJ2FjdGlvbmlkJywkaWQpOwogICAgJHRwbC0+YXNzaWduKCdldmVudHMnLCRsaXN0KTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgZXhpdDsKCgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBDYWxlbmRhciBBdHRyaWJ1dGVzJykgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluX21hbmFnZV9jYXRlZ29yaWVzJywgJHRoaXMtPkxhbmcoJ2NhbF9jYXRlZ29yaWVzJykpOwogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdmaWVsZHMnLCR0aGlzLT5MYW5nKCdmaWVsZHMnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluX21hbmFnZV9zZXR0aW5ncycsJHRoaXMtPkxhbmcoJ2NhbF9zZXR0aW5ncycpKTsKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoImFkbWluX21hbmFnZV9jYXRlZ29yaWVzIiwkcGFyYW1zKTsKICAgIGluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2NhdGVnb3JpZXNfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoImZpZWxkcyIsJHBhcmFtcyk7CiAgICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9maWVsZHN0YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigiYWRtaW5fbWFuYWdlX3NldHRpbmdzIik7CiAgICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9zZXR0aW5nc3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsK]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings_update.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgZXhpdDsKCiR0aGlzLT5TZXRDdXJyZW50QWN0aW9uKCdhZG1pbl9zZXR0aW5ncycpOwokdGhpcy0+U2V0Q3VycmVudFRhYignYWRtaW5fbWFuYWdlX2NhdGVnb3JpZXMnKTsKJHN1Ym1pdCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ3N1Ym1pdCcpOwppZigkc3VibWl0ICE9ICcnKSB7CgogICAgJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2FkbWluX21hbmFnZV9zZXR0aW5ncycpOwoKICAgICRmaXJzdGRheW9md2VlayA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZmlyc3RkYXlvZndlZWsnKTsKICAgICR1c2VfdHdlbHZlX2hvdXJfY2xvY2sgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3VzZV90d2VsdmVfaG91cl9jbG9jaycpOwogICAgJGZvcmNlX2NhdGVnb3J5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZm9yY2VfY2F0ZWdvcnknKTsKICAgICRzaG93cGFzdHllYXJzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnc2hvd3Bhc3R5ZWFycycpOwogICAgJHNob3dmdXR1cmV5ZWFycyA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ3Nob3dmdXR1cmV5ZWFycycpOwogICAgJGRlZmF1bHRfY2F0ZWdvcnkgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdkZWZhdWx0X2NhdGVnb3J5JywnJyk7CiAgICAkaGlkZXN1bW1hcnkgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdoaWRlc3VtbWFyeScsMCk7CiAgICAkaGlkZWNvbnRlbnQgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdoaWRlY29udGVudCcsMCk7CiAgICAkdXBsb2FkZGlyZWN0b3J5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndXBsb2FkZGlyZWN0b3J5Jyk7CiAgICAkdXBsb2FkZmlsZXR5cGVzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndXBsb2FkZmlsZXR5cGVzJyk7CiAgICAkdXBsb2FkdW5pcXVlID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndXBsb2FkdW5pcXVlJyk7CiAgICAkb3ZlcmxhcF9wb2xpY3kgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdvdmVybGFwX3BvbGljeScpOwogICAgJG92ZXJsYXBfYWN0aW9uID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnb3ZlcmxhcF9hY3Rpb24nKTsKICAgICRmcm9udGVuZF9yZWRpcmVjdHBhZ2UgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnKTsKCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9wb2xpY3knLCRvdmVybGFwX3BvbGljeSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9hY3Rpb24nLCRvdmVybGFwX2FjdGlvbik7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmlyc3RkYXlvZndlZWsnLCRmaXJzdGRheW9md2Vlayk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJywgJHVzZV90d2VsdmVfaG91cl9jbG9jayk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdGNhbGVuZGFycGFnZScsICRfUE9TVFsncGFyZW50X2lkJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnknLCAkZGVmYXVsdF9jYXRlZ29yeSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9yY2VfY2F0ZWdvcnknLCAkZm9yY2VfY2F0ZWdvcnkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Nob3dwYXN0eWVhcnMnLCAkc2hvd3Bhc3R5ZWFycyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2hvd2Z1dHVyZXllYXJzJywgJHNob3dmdXR1cmV5ZWFycyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZXN1bW1hcnknLCAkaGlkZXN1bW1hcnkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGVjb250ZW50JywgJGhpZGVjb250ZW50KTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cGxvYWRkaXJlY3RvcnknLCAkdXBsb2FkZGlyZWN0b3J5KTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cGxvYWRmaWxldHlwZXMnLCAkdXBsb2FkZmlsZXR5cGVzKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cGxvYWR1bmlxdWUnLCAkdXBsb2FkdW5pcXVlKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnLCB0cmltKCRwYXJhbXNbJ2ZyaWVuZGx5bmFtZSddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGZsdF9mZ2NvbG9yJywgdHJpbSgkcGFyYW1zWydkZmx0X2ZnY29sb3InXSkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfYmdjb2xvcicsIHRyaW0oJHBhcmFtc1snZGZsdF9iZ2NvbG9yJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpY2FsX2hvbGlkYXlzJyxcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2ljYWxfaG9saWRheXMnKSk7CgogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnLGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywndXJsX3ByZWZpeCcsJ2NhbGVuZGFyJykpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfYWxsZGF5ZXZlbnQnLGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZGZsdF9hbGxkYXlldmVudCcsMCkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hvbGlkYXlfZmdjb2xvcicsIHRyaW0oJHBhcmFtc1snaG9saWRheV9mZ2NvbG9yJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdob2xpZGF5X2JnY29sb3InLCB0cmltKCRwYXJhbXNbJ2hvbGlkYXlfYmdjb2xvciddKSk7CiAgICAkc3RhcnRfdGltZSA9ICcnOwogICAgJHN0YXJ0X3RpbWUgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2RmbHRfc3RhcnR0aW1lX0hvdXInLDEyKS4nOicuZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCdkZmx0X3N0YXJ0dGltZV9NaW51dGUnLDAwKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZmx0X3N0YXJ0dGltZScsJHN0YXJ0X3RpbWUpOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydmcm9udGVuZF9ncm91cCddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9ncm91cCcsJHBhcmFtc1snZnJvbnRlbmRfZ3JvdXAnXSk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZnJvbnRlbmRfbWFzdGVyZ3JvdXAnXSkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfbWFzdGVyZ3JvdXAnLCRwYXJhbXNbJ2Zyb250ZW5kX21hc3Rlcmdyb3VwJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3JlZGlyZWN0cGFnZScsJGZyb250ZW5kX3JlZGlyZWN0cGFnZSk7CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX3NldHRpbmdzX2NoYW5nZWQnKSk7Cn0KCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.ajax_fetchevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRzdGFydCA9IHN0cnRvdGltZShcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRfUkVRVUVTVCwnc3RhcnQnKSk7CiRlbmQgPSBzdHJ0b3RpbWUoXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkX1JFUVVFU1QsJ2VuZCcpKTsKJHNob3djaGlsZHJlbiA9IChpbnQpY2dlX3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdzaG93Y2hpbGRyZW4nLDApOwokY2F0ZWdvcnlfc3RyID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhdGVnb3J5Jyk7CiRrZXl3b3JkID0gdHJpbShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywna2V5d29yZCcpKTsKJHdoZW4gPSBzdHJ0b2xvd2VyKHRyaW0oY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3doZW4nLCdhbnknKSkpOwokbGltaXQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnbGltaXQnLDEwMDApOyAvLyAxMDAwIGlzIG1vcmUgdGhhbiBlbm91Z2guCiRkZXRhaWxwYWdlID0gKGludCkgY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2RldGFpbHBhZ2UnLCRyZXR1cm5pZCk7CmlmKCAkZGV0YWlscGFnZSA8IDEgKSAkZGV0YWlscGFnZSA9ICRyZXR1cm5pZDsKJGV2ZW50dGVtcGxhdGUgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnR0ZW1wbGF0ZScpOwokZWRpdHBhZ2UgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZWRpdHBhZ2UnKTsKJGVkaXRldmVudHRlbXBsYXRlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2VkaXRldmVudHRlbXBsYXRlJyk7CgpkZWJ1Z190b19sb2coX19GSUxFX18pOwpkZWJ1Z190b19sb2coJHBhcmFtcyk7CmRlYnVnX3RvX2xvZygiZGVidWcgJHN0YXJ0ICRlbmQgJHNob3djaGlsZHJlbiIpOwpkZWJ1Z190b19sb2coJF9SRVFVRVNUKTsKCi8vIHJlc29sdmUgdGhlIGNhdGVnb3JpZXMuCiRjYXRlZ29yaWVzID0gYXJyYXkoKTsKaWYoICRjYXRlZ29yeV9zdHIgKSB7CiAgICAkY2F0X21hcCA9IGFycmF5KCk7CiAgICAkdG1wID0gXENHQ2FsZW5kYXJcY2F0ZWdvcnk6OmdldF9jYXRlZ29yaWVzKCk7CiAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgJGNhdF9tYXBbJG9uZVsnY2F0ZWdvcnlfbmFtZSddXSA9IChpbnQpICRvbmVbJ2NhdGVnb3J5X2lkJ107CiAgICB9CgogICAgJGxpc3QgPSBleHBsb2RlKCcsJywkY2F0ZWdvcnlfc3RyKTsKICAgIGZvcmVhY2goICRsaXN0IGFzICRvbmUgKSB7CiAgICAgICAgJG9uZSA9IHRyaW0oJG9uZSk7CiAgICAgICAgaWYoIGlzX251bWVyaWMoJG9uZSkgJiYgKGludCkgJG9uZSA+IDAgKSB7CiAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJG9uZSwkY2F0ZWdvcmllcykgKSAkY2F0ZWdvcmllc1tdID0gKGludCkgJG9uZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggaXNzZXQoJGNhdF9tYXBbJG9uZV0pICkgewogICAgICAgICAgICAkY2F0ZWdvcmllc1tdID0gJGNhdF9tYXBbJG9uZV07CiAgICAgICAgfQogICAgfQp9CgovLyByZXNvbHZlIHRoZSBlZGl0cGFnZQokZWRpdHBhZ2UgPSAkcmV0dXJuaWQ7CnsKICAgICR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfcmVkaXJlY3RwYWdlJywnJyk7CiAgICBpZiggJHRtcCApIHsKICAgICAgICAkdG1wID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXApOwogICAgICAgICRlZGl0cGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJGVkaXRwYWdlKTsKICAgIH0KICAgICR0bXAgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2VkaXRwYWdlJyk7CiAgICBpZiggJHRtcCApIHsKICAgICAgICAkZWRpdHBhZ2UgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wLCRlZGl0cGFnZSk7CiAgICB9Cn0KJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKJGZldV91aWQgPSBudWxsOwppZiggJGZldSApICRmZXVfdWlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwoKJHN0X2RzID0gJGRiLT5EYlRpbWVTdGFtcCgkc3RhcnQpOwokZW5fZHMgPSAkZGItPkRiVGltZVN0YW1wKCRlbmQpOwppZiggJHN0YXJ0IDwgMSB8fCAkZW5kIDwgMSApIHsKICAgIHN3aXRjaCggJHdoZW4gKSB7CiAgICBjYXNlICdwYXN0JzoKICAgICAgICAkc3RhcnQgPSAxOwogICAgICAgICRlbmQgPSB0aW1lKCk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZnV0dXJlJzoKICAgICAgICAkc3RhcnQgPSB0aW1lKCk7CiAgICAgICAgJGVuZCA9IDIxNDc0ODM2NDg7IC8vIG1heCB1bml4IHRpbWUKICAgICAgICBicmVhazsKCiAgICBjYXNlICdhbnknOgogICAgICAgIGJyZWFrOwogICAgfQp9CmlmKCAkc3RhcnQgPiAkZW5kICkgewogICAgJGMgPSAkc3RhcnQ7CiAgICAkc3RhcnQgPSAkZW5kOwogICAgJGVuZCA9ICRjOwp9Cgokd2hlcmUgPSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwovLyBnZXQgYWxsIG9mIHRoZSBldmVudHMKJHF1ZXJ5ID0gJ1NFTEVDVCBFLiogRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIEUnOwppZiggY291bnQoJGNhdGVnb3JpZXMpICkgewogICAgJHF1ZXJ5IC49ICcgTEVGVCBKT0lOICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBFQyBPTiBFLmV2ZW50X2lkID0gRUMuZXZlbnRfaWQnOwogICAgJHdoZXJlW10gPSAnRUMuY2F0ZWdvcnlfaWQgaW4gKCcuaW1wbG9kZSgnLCcsJGNhdGVnb3JpZXMpLicpJzsKfQppZiggJHN0YXJ0ICYmICRlbmQgKSB7CiAgICAkd2hlcmVbXSA9ICcoKEUuZXZlbnRfZGF0ZV9zdGFydCBCRVRXRUVOID8gQU5EID8pIE9SIChFLmV2ZW50X2RhdGVfZW5kIEJFVFdFRU4gPyBBTkQgPykpJzsKICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCRzdGFydCksIiciKTsKICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRiVGltZVN0YW1wKCRlbmQpLCInIik7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkc3RhcnQpLCInIik7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZW5kKSwiJyIpOwp9CmlmKCAhJHNob3djaGlsZHJlbiApICR3aGVyZVtdID0gJ0NPQUxFU0NFKEUuZXZlbnRfcGFyZW50X2lkLDApIDwgMSc7CmlmKCAka2V5d29yZCApIHsKICAgIC8vIHVzZSB0aGUgZnVsbCB0ZXh0IGluZGV4CiAgICAkd2hlcmVbXSA9ICdNQVRDSChFLmV2ZW50X3RpdGxlLEUuZXZlbnRfc3VtbWFyeSxFLmV2ZW50X2RldGFpbHMpIEFHQUlOU1QgKD8gSU4gQk9PTEVBTiBNT0RFKSc7CiAgICAkcGFybXNbXSA9ICRrZXl3b3JkOwp9CgovLyBwdXQgdGhlIHF1ZXJ5IHRvZ2V0aGVyCmlmKCBjb3VudCgkd2hlcmUpICkgJHF1ZXJ5IC49ICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwokcnMgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeSwkbGltaXQsMCwkcGFybXMpOwokbGlzdDEgPSBhcnJheSgpOwp3aGlsZSggISRycy0+RU9GICkgewogICAgJGxpc3QxW10gPSAkcnMtPmZpZWxkczsKICAgICRycy0+TW92ZU5leHQoKTsKfQp1bnNldCgkcnMpOwoKJG91dGxpc3QgPSBhcnJheSgpOwppZiggY291bnQoJGxpc3QxKSApIHsKICAgIC8vIGdldCB0aGUgY2F0ZWdvcmllKHMpIGZvciB0aGVzZSBldmVudHMKICAgICRpZGxpc3QgPSBjZ2VfYXJyYXk6OmV4dHJhY3RfZmllbGQoJGxpc3QxLCdldmVudF9pZCcpOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIElOICgnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpIE9SREVSIEJZIGV2ZW50X2lkLGNhdGVnb3J5X2lkJzsKICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAkY2F0ZWdvcnlfbGlzdCA9IGFycmF5KCk7CiAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSB7CiAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkcmVjICkgewogICAgICAgICAgICAkY2F0ZWdvcnlfbGlzdFskcmVjWydldmVudF9pZCddXVtdID0gJHJlY1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gbm93IGNvbnZlcnQgdGhpcyBpbnRvIHNvbWV0aGluZyBjb21wYXRpYmxlIHdpdGggZnVsbGNhbGVuZGFyCiAgICBmb3JlYWNoKCAkbGlzdDEgYXMgJHJlYyApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkb3V0ID0gbmV3IHN0ZENsYXNzOwogICAgICAgICAgICAkb3V0LT5pZCA9ICRyZWNbJ2V2ZW50X2lkJ107CiAgICAgICAgICAgICRvdXQtPnRpdGxlID0gJHJlY1snZXZlbnRfdGl0bGUnXTsKICAgICAgICAgICAgJG91dC0+c3VtbWFyeSA9ICRyZWNbJ2V2ZW50X3N1bW1hcnknXTsKICAgICAgICAgICAgJG91dC0+Y2FuZWRpdCA9IDE7CiAgICAgICAgICAgICRvdXQtPmNhbmRlbGV0ZSA9IDA7CgogICAgICAgICAgICBpZiggaXNzZXQoJGNhdGVnb3J5X2xpc3RbJG91dC0+aWRdKSAmJiBjb3VudCgkY2F0ZWdvcnlfbGlzdFskb3V0LT5pZF0pID49IDEgKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzIGV2ZW50IGlzIGluIG9ubHkgb25lIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gc2V0IHRoZSBjb2xvciBhbmQgdGV4dGNvbG9yCiAgICAgICAgICAgICAgICAkY2F0ZWdvcnkgPSBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6bG9hZCgkY2F0ZWdvcnlfbGlzdFskb3V0LT5pZF1bMF0pOwogICAgICAgICAgICAgICAgJG91dC0+Y29sb3IgPSAkY2F0ZWdvcnlbJ2JnY29sb3InXTsKICAgICAgICAgICAgICAgICRvdXQtPnRleHRDb2xvciA9ICRjYXRlZ29yeVsnZmdjb2xvciddOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggJHJlY1snZXZlbnRfcGFyZW50X2lkJ10gPiAxICkgewogICAgICAgICAgICAgICAgLy8gaXMgYSBjaGlsZCBldmVudAogICAgICAgICAgICAgICAgJG91dC0+dGl0bGUgLj0gIiAoIi4kdGhpcy0+TGFuZygnY2hpbGQnKS4iKSI7CiAgICAgICAgICAgICAgICAkb3V0LT5jaGlsZCA9ICRyZWNbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgICAgICAgICAgJG91dC0+Y2FuZGVsZXRlID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCAkcmVjWydldmVudF9yZWN1cl9wZXJpb2QnXSAmJiAkcmVjWydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgKSB7CiAgICAgICAgICAgICAgICAvLyBpcyBhIHBhcmVudCBldmVudCBvZiBhIHJlY3VycmluZyBldmVudAogICAgICAgICAgICAgICAgJG91dC0+dGl0bGUgLj0gIiAoIi4kdGhpcy0+TGFuZygncmVwZWF0cycpLicpJzsKICAgICAgICAgICAgICAgICRvdXQtPnJlY3VycyA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0LT5jYW5kZWxldGUgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXQtPnN0YXJ0ID0gJHJlY1snZXZlbnRfZGF0ZV9zdGFydCddOwogICAgICAgICAgICAkb3V0LT5lbmQgPSAkcmVjWydldmVudF9kYXRlX2VuZCddOwogICAgICAgICAgICAkb3V0LT5hbGxEYXkgPSAoJHJlY1snZXZlbnRfYWxsX2RheSddKT90cnVlOmZhbHNlOwoKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJ2V2ZW50X2lkJz0+JHJlY1snZXZlbnRfaWQnXSk7CiAgICAgICAgICAgICRwYXJtc1snZGlzcGxheSddID0gJ2V2ZW50JzsKICAgICAgICAgICAgaWYoICRldmVudHRlbXBsYXRlICkgJHBhcm1zWydldmVudHRlbXBsYXRlJ10gPSAkZXZlbnR0ZW1wbGF0ZTsKICAgICAgICAgICAgJG91dC0+ZGV0YWlsX3VybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywnZGVmYXVsdCcsJGRldGFpbHBhZ2UsJHBhcm1zKTsKICAgICAgICAgICAgJG91dC0+ZGV0YWlsX3VybCA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCRvdXQtPmRldGFpbF91cmwpOwoKICAgICAgICAgICAgaWYoICRmZXVfdWlkICYmICRyZWNbJ2V2ZW50X2NyZWF0ZWRfYnknXSA9PSAkZmV1X3VpZCApIHsKICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCdldmVudF9pZCc9PiRyZWNbJ2V2ZW50X2lkJ10pOwogICAgICAgICAgICAgICAgaWYoICRlZGl0ZXZlbnR0ZW1wbGF0ZSApICRwYXJtc1snZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICRlZGl0ZXZlbnR0ZW1wbGF0ZTsKICAgICAgICAgICAgICAgICRwYXJtc1sncmV0dXJuX2lkJ10gPSAkcmV0dXJuaWQ7CiAgICAgICAgICAgICAgICAkb3V0LT5lZGl0X3VybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywnYWRkZWRpdF9ldmVudCcsJGVkaXRwYWdlLCRwYXJtcyk7CiAgICAgICAgICAgICAgICAkb3V0LT5lZGl0X3VybCA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCRvdXQtPmVkaXRfdXJsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0bGlzdFtdID0gJG91dDsKCiAgICAgICAgfQogICAgICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZyhfX0ZJTEVfXyk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9Cgp9CmNnZV91dGlsczo6c2VuZF9hamF4X2FuZF9leGl0KCRvdXRsaXN0KTsK]]></data>
	</file>
	<file>
	  <filename>/action.ajax_fetchholidays.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR1cmwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaWNhbF9ob2xpZGF5cycpOwppZiggISR1cmwgKSByZXR1cm47CiRtaW51dGVzID0gNyAqIDI0ICogNjA7ICAvLyA3IERBWVMKCiRjYWNoZWRmaWxlID0gbmV3IGNnZV9jYWNoZWRfcmVtb3RlX2ZpbGUoJHVybCwkbWludXRlcyk7CmlmKCAhJGNhY2hlZGZpbGUtPnNpemUoKSApIHJldHVybjsKCiRpY2FsID0gbmV3IFxDR0NhbGVuZGFyXEljYWxQYXJzZXI7CiRpY2FsLT5wYXJzZUZpbGUoJGNhY2hlZGZpbGUtPmdldF9kZXN0KCkpOwokZXZlbnRzID0gJGljYWwtPmdldFNvcnRlZEV2ZW50cygpOwppZiggY291bnQoJGV2ZW50cykgKSB7CiAgICAkb3V0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICRldmVudHMgYXMgJGV2ZW50ICkgewogICAgICAgICRvYmogPSBhcnJheSgpOwogICAgICAgICRvYmpbJ3N0YXJ0J10gPSAkZXZlbnRbJ0RUU1RBUlQnXS0+Zm9ybWF0KCdZLW0tZCcpOwogICAgICAgICRvYmpbJ2VuZCddID0gJGV2ZW50WydEVEVORCddLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAgICAgJG9ialsnYWxsRGF5J10gPSB0cnVlOwogICAgICAgICRvYmpbJ3RpdGxlJ10gPSAkZXZlbnRbJ1NVTU1BUlknXTsKICAgICAgICAkb2JqWyd0eXBlJ10gPSAnaG9saWRheSc7CiAgICAgICAgJG91dFtdID0gJG9iajsKICAgIH0KICAgIFxjZ2VfdXRpbHM6OnNlbmRfYWpheF9hbmRfZXhpdCgkb3V0KTsKfQpleGl0KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgokZGlzcGxheSA9IHN0cnRvbG93ZXIoXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdkaXNwbGF5JywnZnVsbGNhbGVuZGFyJykpOwpzd2l0Y2goJGRpc3BsYXkpIHsKY2FzZSAnZXZlbnQnOgogICAgcmVxdWlyZShfX0RJUl9fLicvZnVuY3Rpb24uZGlzcGxheWV2ZW50LnBocCcpOwogICAgYnJlYWs7CgpjYXNlICdtb250aGxpc3QnOgpjYXNlICdsaXN0JzoKICAgICRwYXJhbXNbJ2xpc3R0eXBlJ10gPSAnbW9udGgnOwogICAgcmVxdWlyZShfX0RJUl9fLicvYWN0aW9uLmxpc3QucGhwJyk7CiAgICBicmVhazsKCmNhc2UgJ2RheWxpc3QnOgogICAgJHBhcmFtc1snbGlzdHR5cGUnXSA9ICdkYXknOwogICAgcmVxdWlyZShfX0RJUl9fLicvYWN0aW9uLmxpc3QucGhwJyk7CiAgICBicmVhazsKCmNhc2UgJ3dlZWtsaXN0JzoKICAgICRwYXJhbXNbJ2xpc3R0eXBlJ10gPSAnd2Vlayc7CiAgICByZXF1aXJlKF9fRElSX18uJy9hY3Rpb24ubGlzdC5waHAnKTsKICAgIGJyZWFrOwoKY2FzZSAneWVhcmxpc3QnOgogICAgJHBhcmFtc1snbGlzdHR5cGUnXSA9ICd5ZWFyJzsKICAgIHJlcXVpcmUoX19ESVJfXy4nL2FjdGlvbi5saXN0LnBocCcpOwogICAgYnJlYWs7CgpjYXNlICdwYXN0bGlzdCc6CiAgICAkcGFyYW1zWydsaXN0dHlwZSddID0gJ3Bhc3RsaXN0JzsKICAgIHJlcXVpcmUoX19ESVJfXy4nL2FjdGlvbi5saXN0LnBocCcpOwogICAgYnJlYWs7CgpjYXNlICd1cGNvbWluZ2xpc3QnOgogICAgJHBhcmFtc1snbGlzdHR5cGUnXSA9ICd1cGNvbWluZ2xpc3QnOwogICAgcmVxdWlyZShfX0RJUl9fLicvYWN0aW9uLmxpc3QucGhwJyk7CiAgICBicmVhazsKCmNhc2UgJ2NhbGVuZGFyJzoKY2FzZSAnZnVsbGNhbGVuZGFyJzoKICAgcmVxdWlyZShfX0RJUl9fLicvYWN0aW9uLmZ1bGxjYWxlbmRhci5waHAnKTsKICAgYnJlYWs7CgpkZWZhdWx0OgogICBlY2hvICJDYWxlbmRhcjogdW5rbm93biBkaXNwbGF5IGF0dHJpYnV0ZSAnJGRpc3BsYXknISI7CiAgIGJyZWFrOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIGV4aXQ7CgovLyBjb3VsZCBpbnNlcnQgdGhlIGZpbGUgaGVyZSwgYnV0IGZvciBub3cgbGV0cyBsZWF2ZSBpdC4KcmVxdWlyZV9vbmNlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbmRpc3BsYXltYW5hZ2VldmVudHMucGhwJyk7CgoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.deleteevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmICghaXNzZXQoJGdDbXMpKSBkaWUoKTsKCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdkZWZhdWx0YWRtaW4nKTsKCiRldmVudF9pZHMgPSBhcnJheSgpOwppZiggaXNzZXQoJHBhcmFtc1sndGFnJ10pICkgJGV2ZW50X2lkcyA9ICRwYXJhbXNbJ3RhZyddOwoKaWYoIGNvdW50KCRldmVudF9pZHMpID09IDAgKSB7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwp9CgokbmRlbGV0ZWQgPSAwOwpmb3JlYWNoKCAkZXZlbnRfaWRzIGFzICRldmVudF9pZCApCnsKICAkcmVzID0gY2djYWxlbmRhcl91dGlsczo6ZGVsZXRlX2V2ZW50KCRldmVudF9pZCk7CiAgaWYoICRyZXMgKSAkbmRlbGV0ZWQrKzsKfQoKaWYoICRuZGVsZXRlZCA9PSAwICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfbm9uZWRlbGV0ZWQnKSk7Cn0KZWxzZSBpZiggJG5kZWxldGVkIDwgY291bnQoJGV2ZW50X2lkcykgKSB7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9zb21lZGVsZXRlZCcpKTsKfQplbHNlIHsKICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygndGFnZ2VkZGVsZXRlZCcpKTsKfQokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8vIGR1bW15IHBocCBmaWxlDQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.delete_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCnRyeSB7CiAgICAkZmV1ID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CiAgICBpZiggISRmZXUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgZGVsZXRlIGFuIGV2ZW50IGZyb20gdGhlIGZyb250ZW5kIHdpdGhvdXQgYmVpbmcgbG9nZ2VkIGluIHRvIHRoZSBGRVUgbW9kdWxlJyk7CgogICAgJGZldV91aWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CiAgICBpZiggJGZldV91aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGRlbGV0ZSBhbiBldmVudCBmcm9tIHRoZSBmcm9udGVuZCB3aXRob3V0IGJlaW5nIGxvZ2dlZCBpbiB0byB0aGUgRkVVIG1vZHVsZScpOwoKICAgICRldmVudF9pZCA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnZXZlbnRfaWQnKTsKICAgIGlmKCAkZXZlbnRfaWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBldmVudCBpZCBwYXNzZWQgdG8gZGVsZXRlX2V2ZW50IGFjdGlvbicpOwoKICAgICRldmVudCA9IG51bGw7CiAgICBpZiggJHRoaXMtPkhhdmVNYW5hZ2VSaWdodCgpICkgewogICAgICAgICRldmVudCA9ICR0aGlzLT5HZXRFdmVudCgkZXZlbnRfaWQpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGV2ZW50ID0gJHRoaXMtPkdldEV2ZW50KCRldmVudF9pZCwkZmV1X3VpZCk7CiAgICAgICAgaWYoICRldmVudFsnZXZlbnRfY3JlYXRlZF9ieSddICE9ICRmZXVfdWlkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignUGVybWlzc2lvbiBEZW5pZWQnKTsKICAgIH0KICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2lkJ10gIT0gJGV2ZW50X2lkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignRXZlbnQgbm90IGZvdW5kJyk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbF9jYW5jZWwnXSkgKSB7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJuaWQpOwogICAgfQogICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snY2FsX3N1Ym1pdCddKSApIHsKICAgICAgICAkcmVzID0gY2djYWxlbmRhcl91dGlsczo6ZGVsZXRlX2V2ZW50KCRldmVudF9pZCk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJuaWQpOwogICAgfQoKICAgICR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZGVsZXRlZXZlbnR0ZW1wbGF0ZScpOwogICAgaWYoICEkdGhldGVtcGxhdGUgKSB7CiAgICAgICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgnQ0dDYWxlbmRhcjo6ZGVsZXRlZXZlbnQnKTsKICAgICAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsKICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnTm8gZGVmYXVsdCBkZWxldGUgZXZlbnQgdGVtcGxhdGUgZm91bmQnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkdGhldGVtcGxhdGUgPSAkdHBsLT5nZXRfbmFtZSgpOwogICAgICAgIHVuc2V0KCR0cGwpOwogICAgfQogICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0aGV0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOwogICAgJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlbGV0ZV9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpKTsKICAgICR0cGwtPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2V2ZW50JywkZXZlbnQpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+RGlzcGxheUVycm9yTWVzc2FnZSgkZS0+R2V0TWVzc2FnZSgpKTsKfQoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZHVtbXkgcGhwIGZpbGUKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.fullcalendar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR0aGV0ZW1wbGF0ZSA9IFxjZ2NhbGVuZGFyX3V0aWxzOjpmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCdmdWxsY2FsZW5kYXJ0ZW1wbGF0ZScsJ0NHQ2FsZW5kYXI6OmZ1bGxjYWxlbmRhcicpOwovLyR0aGV0ZW1wbGF0ZSA9ICdvcmlnX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZS50cGwnOwokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7CiRsb2NhbGVfaW5mbyA9IGNnY2FsZW5kYXJfdXRpbHM6OmdldF9sb2NhbGVfZGF0ZXMoKTsKZm9yZWFjaCggJGxvY2FsZV9pbmZvIGFzICRrZXkgPT4gJiR2YWx1ZSApIHsKICAgICR2YWx1ZSA9IGpzb25fZW5jb2RlKCR2YWx1ZSk7Cn0KCiRjYXRlZ29yeSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY2F0ZWdvcnknKTsKJHRwbC0+YXNzaWduKCdmaXJzdGRheW9md2VlaycsKGludCkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpcnN0ZGF5b2Z3ZWVrJywxKSk7CiR0cGwtPmFzc2lnbignZGF0ZXN0cmluZ3MnLCRsb2NhbGVfaW5mbyk7CiR0cGwtPmFzc2lnbigndGV4dF93ZWVrJywkdGhpcy0+TGFuZygnd2VlaycpKTsKJHRwbC0+YXNzaWduKCd0ZXh0X21vbnRoJywkdGhpcy0+TGFuZygnbW9udGgnKSk7CiR0cGwtPmFzc2lnbigndGV4dF9kYXknLCR0aGlzLT5MYW5nKCdkYXknKSk7CiR0cGwtPmFzc2lnbigndGV4dF90b2RheScsJHRoaXMtPkxhbmcoJ3RvZGF5JykpOwokdHBsLT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiR0cGwtPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKCiRkZXRhaWxwYWdlID0gJHJldHVybmlkOwokZGV0YWlscGFnZV9zdHIgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2RldGFpbHBhZ2UnKTsKaWYoICRkZXRhaWxwYWdlX3N0ciApICRkZXRhaWxwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJGRldGFpbHBhZ2Vfc3RyLCRkZXRhaWxwYWdlKTsKCiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1snZGV0YWlscGFnZSddID0gJGRldGFpbHBhZ2U7CmlmKCAkY2F0ZWdvcnkgKSAkcGFybXNbJ2NhdGVnb3J5J10gPSAkY2F0ZWdvcnk7CiRmZXRjaF91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ2FqYXhfZmV0Y2hldmVudHMnLCRyZXR1cm5pZCwkcGFybXMpOwokZmV0Y2hfdXJsID0gc3RyX3JlcGxhY2UoJ2FtcDsnLCcnLCRmZXRjaF91cmwpOwoKJHRwbC0+YXNzaWduKCdmZXRjaF91cmwnLCRmZXRjaF91cmwpOwokdHBsLT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiR0cGwtPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKJHRwbC0+YXNzaWduKCdob2xpZGF5X2ZnY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob2xpZGF5Zmdjb2xvcicsJyMwMDAwMDAnKSk7CiR0cGwtPmFzc2lnbignaG9saWRheV9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaG9saWRheWJnY29sb3InLCcjY2NmZmZmJykpOwokdHBsLT5hc3NpZ24oJ2RldGFpbHBhZ2UnLCRkZXRhaWxwYWdlKTsKJHRwbC0+ZGlzcGxheSgpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.importtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZHVtbXkgcGhwIGZpbGUKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.list.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkZXRhaWxwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnLCRyZXR1cm5pZCk7CiRkZXRhaWxwYWdlPSgkZGV0YWlscGFnZT4wKT8kZGV0YWlscGFnZTokcmV0dXJuaWQ7CmlmIChpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pKSAkZGV0YWlscGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSwkZGV0YWlscGFnZSk7CiR0aGV0ZW1wbGF0ZSA9IFxjZ2NhbGVuZGFyX3V0aWxzOjpmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCdsaXN0dGVtcGxhdGUnLCdDR0NhbGVuZGFyOjpldmVudGxpc3QnKTsKCiR5ZWFyID0gJG1vbnRoID0gJGRheSA9ICR3ZWVrID0gJG9yaWdfeWVhciA9ICRvcmlnX3dlZWsgPSAkb3JpZ19tb250aCA9ICRvcmlnX2RheSA9IG51bGw7CiRsaXN0dHlwZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbGlzdHR5cGUnLCdtb250aCcpOwokcmV2ZXJzZSA9IFxjZ2VfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ3JldmVyc2UnKTsKJGxpbWl0ID0gbWluKDUwMDAsXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdsaW1pdCcsMTAwMCkpOwokY2F0ZWdvcnkgPSBodG1sX2VudGl0eV9kZWNvZGUoaHRtbF9lbnRpdHlfZGVjb2RlKFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2NhdGVnb3J5JywgbnVsbCkpKTsKCi8vIGJ1aWxkIHRoZSBpbml0aWFsIGxpc3Qgb2YgcGFyYWV0ZXJzIHRoYXQgd2lsbCBiZSB1c2VkIG9uIGFsbCBuYXZpZ2F0aW9uIGxpbmtzCiRuYXZwYXJtcyA9IGFycmF5KCk7CmlmKCBpc3NldCgkcGFyYW1zWydsaXN0dGVtcGxhdGUnXSkgKSAkbmF2cGFybXNbJ2xpc3R0ZW1wbGF0ZSddID0gJHBhcmFtc1snbGlzdHRlbXBsYXRlJ107CmlmKCBpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pICkgJG5hdnBhcm1zWydkZXRhaWxwYWdlJ10gPSAkcGFyYW1zWydkZXRhaWxwYWdlJ107CgppZiggaXNzZXQoJHBhcmFtc1snY2FsX29yaWdwYXJhbXMnXSkgKSB7CiAgICAvLyBwcm9sbHkgdGhlIHJlc3VsdCBvZiBhIHBhZ2luYXRpb24gbGluayBvciBzb21ldGhpbmcKICAgIC8vIHNldCBzb21lIGRlZmF1bHRzLCBidXQgYWxsb3cgcGFyYW1zIHRvIG92ZXJyaWRlIHRoZSBkYXRlIHN0dWZmLCBidXQgbm90IHRoZSB0ZW1wbGF0ZSBzdHVmZi4KICAgIGxpc3QoJGxpc3R0eXBlLCR5ZWFyLCRtb250aCwkZGF5LCR3ZWVrLCRyZXZlcnNlLCRsaW1pdCwkY2F0ZWdvcnkpID0gdW5zZXJpYWxpemUoYmFzZTY0X2RlY29kZShcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhbF9vcmlncGFyYW1zJykpKTsKICAgICRuYXZwYXJtc1snY2FsX29yaWdwYXJhbXMnXSA9ICRwYXJhbXNbJ2NhbF9vcmlncGFyYW1zJ107CiAgICAkb3JpZ19tb250aCA9ICRtb250aDsKICAgICRvcmlnX3dlZWsgPSAkd2VlazsKICAgICRvcmlnX2RheSA9ICRkYXk7CiAgICAkb3JpZ195ZWFyID0gJHllYXI7Cn0KCi8vIHdlIGRvIHRoZSBtYXggMCBzdHVmZi4uLiB0byBoYW5kbGUgLTEgaW4gbW9udGgsIHdlZWsgYW5kIGRheSBwYXJhbXMuCiR5ZWFyID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCd5ZWFyJyxkYXRlKCdZJykpOwokbW9udGggPSBtYXgoMCxcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ21vbnRoJyxkYXRlKCdtJykpKTsKJHdlZWsgPSBtYXgoMCxcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3dlZWsnLGRhdGUoJ1cnKSkpOwokZGF5ID0gbWF4KDAsXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdkYXknLGRhdGUoJ2QnKSkpOwoKaWYoICFpc3NldCgkcGFyYW1zWydjYWxfb3JpZ3BhcmFtcyddKSApIHsKICAgIC8vIHJhdyBleGVjdXRpb24gb2YgdGhlIHZpZXcgKG5vdCB2aWEgYSBwYWdpbmF0aW9uIGxpbmsgb3Igc29tZXRoaW5nKSB3ZSBzdG9yZSB0aGUgb3JpZ3BhcmFtcwogICAgJG5hdnBhcm1zWydjYWxfb3JpZ3BhcmFtcyddID0gYmFzZTY0X2VuY29kZShzZXJpYWxpemUoYXJyYXkoJGxpc3R0eXBlLCR5ZWFyLCRtb250aCwkZGF5LCR3ZWVrLCRyZXZlcnNlLCRsaW1pdCwkY2F0ZWdvcnkpKSk7CiAgICAkb3JpZ19tb250aCA9ICRtb250aDsKICAgICRvcmlnX3dlZWsgPSAkd2VlazsKICAgICRvcmlnX2RheSA9ICRkYXk7CiAgICAkb3JpZ195ZWFyID0gJHllYXI7Cn0KCi8vIGdldCB0aGUgZXZlbnRzIGJhc2VkIG9uIHRoZSBsaXN0dHlwZSBhbmQgdGhlIHllYXIvbW9udGgvZGF5IHBhcmFtZXRlcnMuCiRoYXNfbmF2ID0gVFJVRTsKJHN0YXJ0X3RzID0gJGVuZF90cyA9IG51bGw7CnN3aXRjaCggJGxpc3R0eXBlICkgewpjYXNlICdkYXknOgogICAgLy8gZGlzcGxheSBhIGRheSB2aWV3IHNwZWNpZmllZCBieSBtb250aCwgZGF5LCBhbmQgeWVhcgogICAgLy8gc3RhcnQgYW5kIGVuZCBhcmUgZm9yIHRvZGF5CiAgICAkc3RhcnRfdHMgPSBta3RpbWUoMDAsMDAsMDEsJG1vbnRoLCRkYXksJHllYXIpOwogICAgJGVuZF90cyA9IG1rdGltZSgyMyw1OSw1OSwkbW9udGgsJGRheSwkeWVhcik7CiAgICAvLyBjb3JyZWN0ICRtb250aCwgJGRheSwgJHllYXIgaW5jYXNlIG9mIG5lZ2F0aXZlIG9yIGludmFsaWQgdmFsdWVzIChpLmU6ICAzMiBkYXlzIGluIEphbnVhcnkpCiAgICAkZGF5ID0gZGF0ZSgnZCcsJHN0YXJ0X3RzKTsKICAgICRtb250aCA9IGRhdGUoJ20nLCRzdGFydF90cyk7CiAgICAkeWVhciA9IGRhdGUoJ1knLCRzdGFydF90cyk7CiAgICBicmVhazsKCmNhc2UgJ3dlZWsnOgogICAgLy8gZGlzcGxhIGEgd2VlayB2aWV3IHNwZWNpZmllZCBieSB5ZWFyLCBhbmQgd2VlawogICAgLy8gZml4IHVwIHdlZWsgYW5kIHllYXIgaW5jYXNlIG9mIG5lZ2F0aXZlIG9yIGludmFsaWQgdmFsdWVzIChpLmU6IHdlZWsgNTMgb3Igd2VlayAwKQogICAgaWYoICR3ZWVrIDwgMSApIHsKICAgICAgICAkd2VlayA9IDUzOwogICAgICAgICR5ZWFyLS07CiAgICB9IGVsc2UgaWYoICR3ZWVrID4gNTMgKSB7CiAgICAgICAgJHdlZWsgPSAxOwogICAgICAgICR5ZWFyKys7CiAgICB9CiAgICAvLyBhZGp1c3QgZm9yIGZpcnN0IGRheSBvZiB3ZWVrCiAgICAkZmlyc3RfZGF5X29mX3dlZWsgPSAoaW50KSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmlyc3RkYXlvZndlZWsnLDEpOwogICAgaWYoICRmaXJzdF9kYXlfb2Zfd2VlayA9PSAxICkgewogICAgICAgICRzZGF5ID0gMTsKICAgICAgICAkZWRheSA9IDc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkc2RheSA9IDA7CiAgICAgICAgJGVkYXkgPSA2OwogICAgfQogICAgLy8gY2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgdHMKICAgICRmbXQgPSAnJTA0ZC1XJTAyZC0lZCc7CiAgICAkc3RhcnRfdHMgPSBzdHJ0b3RpbWUoc3ByaW50ZigkZm10LCR5ZWFyLCR3ZWVrLCRzZGF5KSk7CiAgICAkZW5kX3RzID0gc3RydG90aW1lKHNwcmludGYoJGZtdCwkeWVhciwkd2VlaywkZWRheSkpOwogICAgYnJlYWs7CgpjYXNlICdtb250aCc6CmRlZmF1bHQ6CiAgICAvLyBkZWZhdWx0LCBkaXNwbGF5IGEgbW9udGggdmlldwogICAgJGxpc3R0eXBlID0gJ21vbnRoJzsKICAgICRzdGFydF90cyA9IG1rdGltZSgwLDAsMCwkbW9udGgsMSwkeWVhcik7CiAgICAkbGFzdF9kYXlfb2ZfbW9udGggPSBkYXRlKCd0Jywkc3RhcnRfdHMpOwogICAgJGVuZF90cyA9IG1rdGltZSgyMyw1OSw1OSwkbW9udGgsJGxhc3RfZGF5X29mX21vbnRoLCR5ZWFyKTsKICAgIC8vIGZpeCB1cCBtb250aCBhbmQgeWVhciBpbiBjYXNlIG9mIGludmFsaWQgb3IgbmVnYXRpdmUgdmFsdWVzIChpLmU6IG1vbnRoIC0xIG9yIG1vbnRoIDEzKQogICAgJG1vbnRoID0gZGF0ZSgnbScsJHN0YXJ0X3RzKTsKICAgICR5ZWFyID0gZGF0ZSgnWScsJHN0YXJ0X3RzKTsKICAgIGJyZWFrOwoKY2FzZSAneWVhcic6CiAgICAkc3RhcnRfdHMgPSBta3RpbWUoMCwwLDAsMSwxLCR5ZWFyKTsKICAgICRlbmRfdHMgPSBta3RpbWUoMjMsNTksNTksMTIsMzEsJHllYXIpOwogICAgYnJlYWs7CgpjYXNlICd1cGNvbWluZyc6CmNhc2UgJ3VwY29taW5nbGlzdCc6CiAgICAvLyBkaXNwbGF5IGZ1dHVyZSBldmVudHMKICAgICRsaXN0dHlwZSA9ICd1cGNvbWluZ2xpc3QnOwogICAgLy8gbm8gbmF2aWdhdGlvbiwgYW5kIG5vIHVzZSBvZiBtb250aC9kYXkveWVhciBwYXJhbXMKICAgICRzdGFydF90cyA9IG1rdGltZSgwLDAsMSk7ICAvLyBldmVyeXRoaW5nIGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgZGF5CiAgICAkaGFzX25hdiA9IGZhbHNlOwogICAgYnJlYWs7CgpjYXNlICdmdXR1cmUnOgpjYXNlICdwYXN0JzoKY2FzZSAncGFzdGxpc3QnOgogICAgLy8gZGlzcGxheSBwYXN0IGV2ZW50cwogICAgJGxpc3R0eXBlID0gJ3Bhc3RsaXN0JzsKICAgIC8vIG5vIG5hdmlnYXRpb24sIGFuZCBubyB1c2Ugb2YgbW9udGgvZGF5L3llYXIgcGFyYW1zCiAgICAkZW5kX3RzID0gbWt0aW1lKDAsMCwxKTsgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgZGF5LgogICAgJGhhc19uYXYgPSBmYWxzZTsKICAgICRyZXZlcnNlID0gISRyZXZlcnNlOwogICAgYnJlYWs7Cn0KCiRldmVudHMgPSBudWxsOwokc3FsID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X3F1ZXJ5KCRzdGFydF90cywkZW5kX3RzLCRjYXRlZ29yeSwkcmV2ZXJzZSk7Ci8vZGVidWdfZGlzcGxheSgkc3FsKTsKJGV2ZW50X2lkcyA9ICRkYi0+R2V0Q29sKGNnY2FsZW5kYXJfdXRpbHM6OmdldF9xdWVyeSgkc3RhcnRfdHMsJGVuZF90cywkY2F0ZWdvcnksJHJldmVyc2UsJGxpbWl0KSk7CmlmKCBpc19hcnJheSgkZXZlbnRfaWRzKSAmJiBjb3VudCgkZXZlbnRfaWRzKSApIHsKICAgICRsb2FkZXIgPSBuZXcgY2djX2V2ZW50X2xvYWRlcigkaWQsJGV2ZW50X2lkcywkZGV0YWlscGFnZSxGQUxTRSk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnR0ZW1wbGF0ZSddKSApICRsb2FkZXItPnNldF9ldmVudF90ZW1wbGF0ZSgkcGFyYW1zWydldmVudHRlbXBsYXRlJ10pOwogICAgJGV2ZW50cyA9ICRsb2FkZXItPmdldF9ldmVudHMoKTsKfQoKJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0aGV0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOwokbmF2ID0gbnVsbDsKaWYoICRoYXNfbmF2ICkgewogICAgJG5hdiA9IGFycmF5KCk7CiAgICAkb3Bhcm1zID0gJG5hdnBhcm1zOwogICAgc3dpdGNoKCAkbGlzdHR5cGUgKSB7CiAgICBjYXNlICdkYXknOgogICAgICAgICRvcGFybXNbJ21vbnRoJ10gPSAkbW9udGg7CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJHllYXI7CiAgICAgICAgaWYoICRkYXkgPT0gMSApIHsKICAgICAgICAgICAgJG9wYXJtc1snZGF5J10gPSAtMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRvcGFybXNbJ2RheSddID0gJGRheSAtIDE7CiAgICAgICAgfQogICAgICAgICRuYXZbJ3ByZXZfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWydkYXknXSA9ICRkYXkgKyAxOwogICAgICAgICRuYXZbJ25leHRfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWydtb250aCddID0gJG9yaWdfbW9udGg7CiAgICAgICAgJG9wYXJtc1snZGF5J10gPSAkb3JpZ19kYXk7CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJG9yaWdfeWVhcjsKICAgICAgICAkbmF2Wydob21lX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsaXN0JywkcmV0dXJuaWQsJG9wYXJtcyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnd2Vlayc6CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJHllYXI7CiAgICAgICAgaWYoICR3ZWVrID09IDEgKSB7CiAgICAgICAgICAgICRvcGFybXNbJ3dlZWsnXSA9IC0xOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJG9wYXJtc1snd2VlayddID0gJHdlZWsgLSAxOwogICAgICAgIH0KICAgICAgICAkbmF2WydwcmV2X3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsaXN0JywkcmV0dXJuaWQsJG9wYXJtcyk7CiAgICAgICAgJG9wYXJtc1snd2VlayddID0gJHdlZWsgKyAxOwogICAgICAgICRuYXZbJ25leHRfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWyd3ZWVrJ10gPSAkb3JpZ193ZWVrOwogICAgICAgICRvcGFybXNbJ3llYXInXSA9ICRvcmlnX3llYXI7CiAgICAgICAgJG5hdlsnaG9tZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ3llYXInOgogICAgICAgICRvcGFybXNbJ3llYXInXSA9ICR5ZWFyIC0gMTsKICAgICAgICAkbmF2WydwcmV2X3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsaXN0JywkcmV0dXJuaWQsJG9wYXJtcyk7CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJHllYXIgKyAxOwogICAgICAgICRuYXZbJ25leHRfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWyd5ZWFyJ10gPSAkb3JpZ195ZWFyOwogICAgICAgICRuYXZbJ2hvbWVfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICdtb250aCc6CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJHllYXI7CiAgICAgICAgaWYoICRtb250aCA9PSAxICkgewogICAgICAgICAgICAkb3Bhcm1zWydtb250aCddID0gLTE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG9wYXJtc1snbW9udGgnXSA9ICRtb250aCAtIDE7CiAgICAgICAgfQogICAgICAgICRuYXZbJ3ByZXZfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWydtb250aCddID0gJG1vbnRoICsgMTsKICAgICAgICAkbmF2WyduZXh0X3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsaXN0JywkcmV0dXJuaWQsJG9wYXJtcyk7CiAgICAgICAgJG9wYXJtc1snbW9udGgnXSA9ICRvcmlnX21vbnRoOwogICAgICAgICRvcGFybXNbJ3llYXInXSA9ICRvcmlnX3llYXI7CiAgICAgICAgJG5hdlsnaG9tZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgIGJyZWFrOwogICAgfQp9CgoKLy8gb3RoZXIgbGFuZ3VhZ2UgZmllbGRzCiRkYXlfbmFtZXMgPSAkdGhpcy0+R2V0RGF5TmFtZXMoKTsKJGRheV9zaG9ydF9uYW1lcyA9ICR0aGlzLT5HZXREYXlTaG9ydE5hbWVzKCk7CiRsYW5nID0gJHRoaXMtPkdldExhYmVscygpOwoKLy8gYXNzaWduIHRvIFNtYXJ0eQokdHBsLT5hc3NpZ24oJ2V2ZW50cycsICRldmVudHMpOwokdHBsLT5hc3NpZ24oJ3N0YXJ0X3RzJywkc3RhcnRfdHMpOwokdHBsLT5hc3NpZ24oJ2VuZF90cycsJGVuZF90cyk7CiR0cGwtPmFzc2lnbignbmF2JywkbmF2KTsKJHRwbC0+YXNzaWduKCdkYXlfbmFtZXMnLCAkZGF5X25hbWVzKTsKJHRwbC0+YXNzaWduKCdkYXlfc2hvcnRfbmFtZXMnLCAkZGF5X3Nob3J0X25hbWVzKTsKJHRwbC0+YXNzaWduKCdyZXZlcnNlJywkcmV2ZXJzZSk7CiR0cGwtPmFzc2lnbignbGlzdHR5cGUnLCRsaXN0dHlwZSk7CiR0cGwtPmFzc2lnbignZGF5JywgJGRheSk7CiR0cGwtPmFzc2lnbignbW9udGgnLCAkbW9udGgpOwokdHBsLT5hc3NpZ24oJ3dlZWsnLCR3ZWVrKTsKJHRwbC0+YXNzaWduKCd5ZWFyJywgJHllYXIpOwokdHBsLT5hc3NpZ24oJ2xhbmcnLCAkbGFuZyk7CiR0cGwtPmFzc2lnbignZmlsZV9sb2NhdGlvbicsY2djYWxlbmRhcl91dGlsczo6Z2V0X3VwbG9hZF9sb2NhdGlvbigpKTsKJHRwbC0+ZGlzcGxheSgpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.myevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCi8vCi8vIEluaXRpYWxpemF0aW9uCi8vCiRmZXUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKaWYoICFpc19vYmplY3QoJGZldSkgKSByZXR1cm47IC8vIG5vIGZldSBtb2R1bGUuCiRmZXVfdWlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwppZiggJGZldV91aWQgPD0gMCApIHJldHVybjsgLy8gbm90IGxvZ2dlZCBpbgoKJHRoZXRlbXBsYXRlID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdteWV2ZW50c3RlbXBsYXRlJyk7CmlmKCAhJHRoZXRlbXBsYXRlICkgewogICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgnQ0dDYWxlbmRhcjo6bXlldmVudHMnKTsKICAgIGlmKCAhaXNfb2JqZWN0KCR0cGwpICkgewogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ05vIGRlZmF1bHQgbXlldmVudHMgdGVtcGxhdGUgZm91bmQnKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkdGhldGVtcGxhdGUgPSAkdHBsLT5nZXRfbmFtZSgpOwogICAgdW5zZXQoJHRwbCk7Cn0KCiRkZXN0cGFnZSA9ICRyZXR1cm5pZDsKewogICAgJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnLCcnKTsKICAgICR0bXAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRtcCk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZWRpdHBhZ2UnXSkgKSAkdG1wID0gdHJpbSgkcGFyYW1zWydlZGl0cGFnZSddKTsKICAgIGlmKCAkdG1wICkgJHRtcCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwogICAgaWYoICR0bXAgKSAkZGVzdHBhZ2UgPSAkdG1wOwp9CgovLwovLyBHZXQgZGF0YQovLwokY2F0ZWdvcnlfaWRzID0gJyc7CmlmKCBpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSAmJiAkcGFyYW1zWydjYXRlZ29yeSddICE9ICcnICkgewogICRjYXRlZ29yeSA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2NhdGVnb3J5J10pOwogIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRjYXRlZ29yeSk7ICRpKysgKSB7CiAgICAkY2F0ZWdvcnlbJGldID0gIiciLnRyaW0oJGNhdGVnb3J5WyRpXSkuIiciOwogIH0KICAkcXVlcnkgPSAnU0VMRUNUIGNhdGVnb3J5X2lkIEZST00gJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgY2F0ZWdvcnlfbmFtZSBJTiAoJy5pbXBsb2RlKCcsJywkY2F0ZWdvcnkpLicpJzsKICAkY2F0ZWdvcnlfaWRzID0gJGRiLT5HZXRDb2woJHF1ZXJ5KTsKfQoKJHFwYXJtcyA9IGFycmF5KCk7CiR3aGVyZSAgPSBhcnJheSgpOwokam9pbnMgID0gYXJyYXkoKTsKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBldic7CiR3aGVyZVtdID0gJ2V2ZW50X2NyZWF0ZWRfYnkgPSA/JzsKJHdoZXJlW10gPSAnZXZlbnRfcGFyZW50X2lkIDwgMSc7CiRxcGFybXNbXSA9IChpbnQpJGZldV91aWQ7CmlmKCBpc19hcnJheSgkY2F0ZWdvcnlfaWRzKSAmJiBjb3VudCgkY2F0ZWdvcnlfaWRzKSA+IDAgKSB7CiAgJGpvaW5zW10gPSAnIExFRlQgSk9JTiAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgZWMgT04gZXYuZXZlbnRfaWQgPSBlYy5ldmVudF9pZCc7CiAgJHdoZXJlW10gPSAnZWMuY2F0ZWdvcnlfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJGNhdGVnb3J5X2lkcykuJyknOwp9CiRvcmRlciA9ICcgT1JERVIgQlkgZXZlbnRfbW9kaWZpZWRfZGF0ZSc7Ci8vIGJ1aWxkIHRoZSBxdWVyeS4KaWYoIGNvdW50KCRqb2lucykgKSAkcXVlcnkgLj0gaW1wbG9kZSgnICcsJGpvaW5zKTsKaWYoIGNvdW50KCR3aGVyZSkgKSAkcXVlcnkgLj0gJyBXSEVSRSAnLmltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwokcXVlcnkgLj0gJG9yZGVyOwokZGF0YSA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCRxcGFybXMpOwoKLy8KLy8gR2l2ZSBkYXRhIHRvIHNtYXJ0eQovLwokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7CiRzbWFydHktPmNsZWFyX2Fzc2lnbigncmVjb3JkcycpOwppZiggaXNfYXJyYXkoJGRhdGEpICYmIGNvdW50KCRkYXRhKSA+IDAgKSB7CiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZGF0YSk7ICRpKysgKSB7CiAgICAgICAgJHJlYyA9JiAkZGF0YVskaV07CiAgICAgICAgJHBhcm1zID0gJHBhcmFtczsKICAgICAgICB1bnNldCgkcGFybXNbJ3JldHVybmlkJ10pOwogICAgICAgIC8vJHBhcm1zWydyZXR1cm5faWQnXSA9ICRyZXR1cm5pZDsKICAgICAgICAkcGFybXNbJ2V2ZW50X2lkJ10gPSAkcmVjWydldmVudF9pZCddOwogICAgICAgICRyZWNbJ2VkaXRfdXJsJ10gPSAkdGhpcy0+Q3JlYXRlVVJMKCRpZCwnYWRkZWRpdF9ldmVudCcsJGRlc3RwYWdlLCRwYXJtcyk7CiAgICAgICAgJHJlY1snZGVsZXRlX3VybCddID0gJHRoaXMtPkNyZWF0ZVVSTCgkaWQsJ2RlbGV0ZV9ldmVudCcsJGRlc3RwYWdlLCRwYXJtcyk7CiAgICB9CiAgICAkdHBsLT5hc3NpZ24oJ3JlY29yZHMnLCRkYXRhKTsKfQokZ2lkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2dyb3VwJywnJyk7CmlmKCAkZ2lkICYmICRmZXUtPk1lbWJlck9mR3JvdXAoJGZldV91aWQsJGdpZCkgKSB7CiAgICAkdHBsLT5hc3NpZ24oJ2FkZF9ldmVudF91cmwnLCR0aGlzLT5DcmVhdGVVUkwoJGlkLCdhZGRlZGl0X2V2ZW50JywkcmV0dXJuaWQpKTsKfQokdHBsLT5kaXNwbGF5KCk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBJbml0aWFsaXphdGlvbgojCiR0aGV0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIX1RFTVBMQVRFKTsKJGRlc3RwYWdlID0gJHJldHVybmlkOwokaW5saW5lID0gMDsKJHNlYXJjaF9jYXRlZ29yeSA9IC0xOwokc2VhcmNoX3N0YXJ0X2RhdGUgPSB0aW1lKCk7CiRzZWFyY2hfZW5kX2RhdGUgPSBzdHJ0b3RpbWUoJysxIG1vbnRoJywkc2VhcmNoX3N0YXJ0X2RhdGUpOwokc2VhcmNoX3RleHQ9Jyc7CiRzZWFyY2hyZXN1bHRzID0gJyc7CiRlcnJvciA9ICcnOwokdXNlX3Nlc3Npb24gPSAnJzsKCiMKIyBTZXR1cAojCiR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnc2VhcmNodGVtbGF0ZScsJHRoZXRlbXBsYXRlKTsKJGlubGluZSA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnaW5saW5lJywwKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ3NlYXJjaHJlc3VsdHBhZ2UnXSkgKSB7CiAgICAkdG1wID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHBhcmFtc1snc2VhcmNocmVzdWx0cGFnZSddKTsKICAgIGlmKCAhZW1wdHkoJHRtcCkgKSAkZGVzdHBhZ2UgPSAkdG1wOwp9CmlmKCAkZGVzdHBhZ2UgIT0gJHJldHVybmlkICkgJGlubGluZSA9IDA7CmlmKCBpc3NldCgkcGFyYW1zWyd1c2Vfc2Vzc2lvbiddKSApIHsKICAgICRzZWFyY2hfdGV4dCA9ICR0aGlzLT5zZXNzaW9uX2dldCgkdXNlX3Nlc3Npb24uJ3NlYXJjaF90ZXh0Jywkc2VhcmNoX3RleHQpOwogICAgJHNlYXJjaF9jYXRlZ29yeSA9ICR0aGlzLT5zZXNzaW9uX2dldCgkdXNlX3Nlc3Npb24uJ3NlYXJjaF9jYXRlZ29yeScsJHNlYXJjaF9jYXRlZ29yeSk7CiAgICAkc2VhcmNoX3N0YXJ0X2RhdGUgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJHVzZV9zZXNzaW9uLidzZWFyY2hfc3RhcnRfZGF0ZScsJHNlYXJjaF9zdGFydF9kYXRlKTsKICAgICRzZWFyY2hfZW5kX2RhdGUgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJHVzZV9zZXNzaW9uLidzZWFyY2hfZW5kX2RhdGUnLCRzZWFyY2hfZW5kX2RhdGUpOwp9CgojCiMgR2V0IHRoZSBEYXRhCiMKCgoKIwojIEJ1aWxkIHRoZSBmb3JtIGRhdGEKIwokY2F0ZWdvcnlzID0gYXJyYXkoKTsKJGNhdGVnb3JpZXNbLTFdID0gJHRoaXMtPkxhbmcoJ2NhbF9hbnlfY2F0ZWdvcnknKTsKewogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCxjYXRlZ29yeV9uYW1lIEZST00gJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgT1JERVIgQlkgY2F0ZWdvcnlfb3JkZXIgQVNDJzsKICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICBpZiggaXNfYXJyYXkoJHRtcCkgKSB7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRtcCk7ICRpKysgKSB7CiAgICAgICAgICAgICRjYXRlZ29yaWVzWyR0bXBbJGldWydjYXRlZ29yeV9pZCddXSA9ICR0bXBbJGldWydjYXRlZ29yeV9uYW1lJ107CiAgICAgICAgfQogICAgfQp9CgojCiMgR2l2ZSBFdmVyeXRoaW5nIHRvIFNtYXJ0eQojCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlLCdzZWFyY2hfJyk7CiR0cGwtPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdzZWFyY2hyZXN1bHRzJywkZGVzdHBhZ2UsJHBhcmFtcywkaW5saW5lKSk7CiR0cGwtPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiR0cGwtPmFzc2lnbignbGlzdF9jYXRlZ29yaWVzJywkY2F0ZWdvcmllcyk7CiR0cGwtPmFzc2lnbignc2VhcmNoX2NhdGVnb3J5Jywkc2VhcmNoX2NhdGVnb3J5KTsKJHRwbC0+YXNzaWduKCdzZWFyY2hfc3RhcnRfZGF0ZScsJHNlYXJjaF9zdGFydF9kYXRlKTsKJHRwbC0+YXNzaWduKCdzZWFyY2hfZW5kX2RhdGUnLCRzZWFyY2hfZW5kX2RhdGUpOwokdHBsLT5hc3NpZ24oJ3NlYXJjaF90ZXh0Jywkc2VhcmNoX3RleHQpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.searchresults.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBJbml0aWFsaXphdGlvbgojCiRwYWdlbnVtID0gMTsKJGxpbWl0ID0gMTAwMDsKJHRoZXRlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX0RGTFRTRUFSQ0hSRVNVTFRfVEVNUExBVEUpOwokc2VhcmNoX3RleHQgPSAnJzsKJHNlYXJjaF90eXBlID0gJ29yJzsKCiMKIyBTZXR1cAojCiRsaW1pdCA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnaW1pdCcsJGxpbWl0KTsKJHRoZXRlbXBsYXRlID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdzZWFyY2hyZXN1bHR0ZW1wbGF0ZScsJHRoZXRlbXBsYXRlKTsKJHBhZ2VudW0gPSBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2NhbF9wYWdlbnVtJywkcGFnZW51bSk7CgojCiMgR2V0IERhdGEKIwoKIwojIEhhbmRsZSBGb3JtIFN1Ym1pc3Npb24KIwppZiggaXNzZXQoJHBhcmFtc1snY2FsX3NlYXJjaF9zdWJtaXQnXSkgKQp7CiAgICAkc2VhcmNoX3R5cGUgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhbF9zZWFyY2hfdHlwZScpOwogICAgJHNlYXJjaF90ZXh0ID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdjYWxfc2VhcmNoX3RleHQnKTsKICAgICRzZWFyY2hfY2F0ZWdvcnkgPSBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2NhbF9zZWFyY2hfY2F0ZWdvcnknKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYWxfc2VhcmNoX3N0YXJ0X2RhdGVfTW9udGgnXSkgKSB7CiAgICAgICAgJHNlYXJjaF9zdGFydF9kYXRlID0gbWt0aW1lKGlzc2V0KCRwYXJhbXNbJ2NhbF9zZWFyY2hfc3RhcnRfZGF0ZV9Ib3VyJ10pPyhpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9zdGFydF9kYXRlX0hvdXInXTowLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3NldCgkcGFyYW1zWydjYWxfc2VhcmNoX3N0YXJ0X2RhdGVfTWludXRlJ10pPyhpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9zdGFydF9kYXRlX01pbnV0ZSddOjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9zdGFydF9kYXRlX01vbnRoJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9zdGFydF9kYXRlX0RheSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfc3RhcnRfZGF0ZV9ZZWFyJ10pOwogICAgfQogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbF9zZWFyY2hfZW5kX2RhdGVfTW9udGgnXSkgKSB7CiAgICAgICAgJHNlYXJjaF9lbmRfZGF0ZSA9IG1rdGltZShpc3NldCgkcGFyYW1zWydjYWxfc2VhcmNoX2VuZF9kYXRlX0hvdXInXSk/KGludCkkcGFyYW1zWydjYWxfc2VhcmNoX2VuZF9kYXRlX0hvdXInXToyMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2V0KCRwYXJhbXNbJ2NhbF9zZWFyY2hfZW5kX2RhdGVfTWludXRlJ10pPyhpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9lbmRfZGF0ZV9NaW51dGUnXTo1OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfZW5kX2RhdGVfTW9udGgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9lbmRfZGF0ZV9EYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9lbmRfZGF0ZV9ZZWFyJ10pOwogICAgfQoKICAgIC8vIHZhbGlkYXRlIHJlc3VsdHMKICAgIGlmKCAkc2VhcmNoX2VuZF9kYXRlIDwgJHNlYXJjaF9zdGFydF9kYXRlICkgewogICAgICAgICR0bXAgPSAkc2VhcmNoX3N0YXJ0X2RhdGU7CiAgICAgICAgJHNlYXJjaF9zdGFydF9kYXRlID0gJHNlYXJjaF9lbmRfZGF0ZTsKICAgICAgICAkc2VhcmNoX2VuZF9kYXRlID0gJHRtcDsKICAgIH0KCiAgICBpZiggJHNlYXJjaF9lbmRfZGF0ZSAtICRzZWFyY2hfc3RhcnRfZGF0ZSA8IDYwICkgJGVycm9yID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJyk7CgogICAgLy8gc3RvcmUgdGhlIHJlc3VsdHMKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1c2Vfc2Vzc2lvbiddKSAgKSB7CiAgICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCR1c2Vfc2Vzc2lvbi4nc2VhcmNoX3RleHQnLCRzZWFyY2hfdGV4dCk7CiAgICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCR1c2Vfc2Vzc2lvbi4nc2VhcmNoX2NhdGVnb3J5Jywkc2VhcmNoX2NhdGVnb3J5KTsKICAgICAgICAkdGhpcy0+c2Vzc2lvbl9wdXQoJHVzZV9zZXNzaW9uLidzZWFyY2hfc3RhcnRfZGF0ZScsJHNlYXJjaF9zdGFydF9kYXRlKTsKICAgICAgICAkdGhpcy0+c2Vzc2lvbl9wdXQoJHVzZV9zZXNzaW9uLidzZWFyY2hfZW5kX2RhdGUnLCRzZWFyY2hfZW5kX2RhdGUpOwogICAgfQoKICAgIC8vIGRvIHRoZSBzZWFyY2gKICAgIGlmKCBlbXB0eSgkZXJyb3IpICkgewogICAgICAgIC8vIGZpbmQgYWxsIHRoZSBzZWFyY2hhYmxlIGZpZWxkIG5hbWVzLgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZmllbGRfbmFtZSBGUk9NICcuJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLicgV0hFUkUgZmllbGRfc2VhcmNoYWJsZSA9IDEnOwogICAgICAgICRzZWFyY2hhYmxlX2ZpZWxkcyA9ICRkYi0+R2V0Q29sKCRxdWVyeSk7CgogICAgICAgIC8vIGFzc2VtYmxlIHRoZSBxdWVyeSBmaXJzdC4KICAgICAgICAkZnJvbSA9IGFycmF5KCk7CiAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgLy8kcXVlcnkgPSAnU0VMRUNUIERJU1RJTkNUIGV2LmV2ZW50X2lkLGV2LmV2ZW50X3BhcmVudF9pZCxldi5ldmVudF90aXRsZSc7IEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBldic7CiAgICAgICAgJHdoZXJlID0gYXJyYXkoKTsKICAgICAgICAkd2hlcmUyID0gYXJyYXkoKTsKICAgICAgICAkd2hlcmUzID0gYXJyYXkoKTsKICAgICAgICAkaGF2aW5nID0gYXJyYXkoKTsKICAgICAgICAkam9pbnMgPSBhcnJheSgpOwogICAgICAgICRxcGFybXMgPSBhcnJheSgpOwogICAgICAgICRkYl9zdCA9ICRkYi0+RGJUaW1lU3RhbXAoJHNlYXJjaF9zdGFydF9kYXRlKTsKICAgICAgICAkZGJfZXQgPSAkZGItPkRiVGltZVN0YW1wKCRzZWFyY2hfZW5kX2RhdGUpOwoKICAgICAgICAkZnJvbVsnZXYnXSA9ICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZTsKICAgICAgICAkZmllbGRzW10gPSAnZXYuZXZlbnRfaWQnOwogICAgICAgICRmaWVsZHNbXSA9ICdldi5ldmVudF9wYXJlbnRfaWQnOwogICAgICAgICRmaWVsZHNbXSA9ICdldi5ldmVudF90aXRsZSc7CgogICAgICAgIC8vIGF1dG9tYXRpYyBmaWx0ZXJpbmcgYnkgZGF0ZS4KICAgICAgICAkd2hlcmVbXSA9ICIoKGV2LmV2ZW50X2RhdGVfc3RhcnQgQkVUV0VFTiAkZGJfc3QgQU5EICRkYl9ldCkgT1IgKGV2LmV2ZW50X2RhdGVfZW5kIEJFVFdFRU4gJGRiX3N0IGFuZCAkZGJfZXQpKSI7CgogICAgICAgIGlmKCBpc19hcnJheSgkc2VhcmNoYWJsZV9maWVsZHMpICYmIGNvdW50KCRzZWFyY2hhYmxlX2ZpZWxkcykgKSB7CiAgICAgICAgICAgICR0bXAgPSBhcnJheSgpOwogICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkc2VhcmNoYWJsZV9maWVsZHMpOyAkaSsrICkgewogICAgICAgICAgICAgICAgJHRtcFtdID0gIiciLiRzZWFyY2hhYmxlX2ZpZWxkc1skaV0uIiciOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vJGZyb21bJ2Z2J10gPSAkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWU7CiAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTgogICAgICAgICAgICAgICAgICAgICAgICAoU0VMRUNUIGV2ZW50X2lkLGdyb3VwX2NvbmNhdChmaWVsZF92YWx1ZSkgQVMgdmFscwogICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSAnLiR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZS4nCiAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBmaWVsZF9uYW1lIElOICgnLmltcGxvZGUoJywnLCR0bXApLicpCiAgICAgICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBldmVudF9pZCkgQVMgZnYgT04gZXYuZXZlbnRfaWQgPSBmdi5ldmVudF9pZCc7CiAgICAgICAgfQoKICAgICAgICBpZiggJHNlYXJjaF9jYXRlZ29yeSA+IDAgKSB7CiAgICAgICAgICAgIC8vIGZpbHRlcmluZyBieSBjYXRlZ29yeQogICAgICAgICAgICAkdG1wMiA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICRzZWFyY2hhYmxlX2ZpZWxkcyBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJHRtcDJbXSA9ICInIi4kb25lLiInIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc3RyID0gaW1wbG9kZSgnLCcsJHRtcDIpOwogICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIGVjIE9OIGVjLmV2ZW50X2lkID0gZXYuZXZlbnRfaWQnOwogICAgICAgICAgICAkd2hlcmVbXSA9ICdlYy5jYXRlZ29yeV9pZCA9ID8nOwogICAgICAgICAgICAkcXBhcm1zW10gPSAkc2VhcmNoX2NhdGVnb3J5OwogICAgICAgIH0KCiAgICAgICAgaWYoICFlbXB0eSgkc2VhcmNoX3RleHQpICkgewogICAgICAgICAgICBpZiggJHNlYXJjaF90eXBlID09ICdvcicgKSB7CiAgICAgICAgICAgICAgICAkd2hlcmUyW10gPSAnKE1BVENIIChldi5ldmVudF90aXRsZSxldi5ldmVudF9zdW1tYXJ5LGV2LmV2ZW50X2RldGFpbHMpIEFHQUlOU1QgKD8pKSc7CiAgICAgICAgICAgICAgICAkcXBhcm1zW10gPSAkc2VhcmNoX3RleHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkd2hlcmUyW10gPSAnKE1BVENIIChldi5ldmVudF90aXRsZSxldi5ldmVudF9zdW1tYXJ5LGV2LmV2ZW50X2RldGFpbHMpIEFHQUlOU1QgKD8gSU4gQk9PTEVBTiBNT0RFKSknOwogICAgICAgICAgICAgICAgJHFwYXJtc1tdID0gJHNlYXJjaF90ZXh0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiggaXNfYXJyYXkoJHNlYXJjaGFibGVfZmllbGRzKSAmJiBjb3VudCgkc2VhcmNoYWJsZV9maWVsZHMpICkgewogICAgICAgICAgICAvLyBzcGxpdCBhbmQgY2xlYW4gdXAgdGhlIHNlYXJjaCB3b3Jkcy4KICAgICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJyAnLCRzZWFyY2hfdGV4dCk7CiAgICAgICAgICAgICR3b3JkcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0bXApOyAkaSsrICkgewogICAgICAgICAgICAgICAgJHRtcDIgPSB0cmltKCR0bXBbJGldKTsKICAgICAgICAgICAgICAgIGlmKCAhJHRtcDIgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICR3b3Jkc1tdID0gJyUnLnRyaW0oJHRtcFskaV0pLiclJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHdvcmRzKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICR3aGVyZTNbXSA9ICcoZnYudmFscyBMSUtFID8pJzsKICAgICAgICAgICAgICAgICRxcGFybXNbXSA9ICR3b3Jkc1skaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgRElTVElOQ1QgJy5pbXBsb2RlKCcsJywkZmllbGRzKS4nIEZST00gJzsKICAgICAgICB7CiAgICAgICAgICAgICR0bXAgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCRmcm9tIGFzICR0YmwgPT4gJHN0ciApIHsKICAgICAgICAgICAgICAgICR0bXBbXSA9ICIgJHN0ciAkdGJsIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcXVlcnkgLj0gIiAiLmltcGxvZGUoJywnLCR0bXApOwogICAgICAgIH0KICAgICAgICBpZiggY291bnQoJGpvaW5zKSApICRxdWVyeSAuPSAnICcuaW1wbG9kZSgnICcsJGpvaW5zKTsKICAgICAgICBpZiggY291bnQoJHdoZXJlKSB8fCAkY291bnQoJHdoZXJlMikgKSAkcXVlcnkgLj0gJyBXSEVSRSAnOwogICAgICAgIGlmKCBjb3VudCgkd2hlcmUpICkgJHF1ZXJ5IC49IGltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwogICAgICAgIGlmKCBjb3VudCgkd2hlcmUyKSApIHsKICAgICAgICAgICAgJGV4cHIgPSAnIEFORCAnOwogICAgICAgICAgICBpZiggJHNlYXJjaF90eXBlID09ICdvcicgKSAkZXhwciA9ICcgT1IgJzsKICAgICAgICAgICAgaWYoIGNvdW50KCR3aGVyZSkgKSAkcXVlcnkgLj0gJyBBTkQgJzsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcoJzsKICAgICAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJGV4cHIsJHdoZXJlMik7CiAgICAgICAgICAgIGlmKCBjb3VudCgkd2hlcmUzKSApIHsKICAgICAgICAgICAgICAgICRxdWVyeSAuPSAnIE9SICc7CiAgICAgICAgICAgICAgICAkcXVlcnkgLj0gJygnIC4gaW1wbG9kZSgkZXhwciwgJHdoZXJlMykgLiAnKSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1ZXJ5IC49ICcpJzsKICAgICAgICB9CgogICAgICAgIGlmKGlzc2V0KCRwYXJhbXNbJ3VuaXF1ZV9vbmx5J10pICYmICgkcGFyYW1zWyd1bmlxdWVfb25seSddKSkgJHF1ZXJ5IC49ICcgR1JPVVAgQlkgZXYuZXZlbnRfdGl0bGUnOwoKICAgICAgICBpZiggY291bnQoJGhhdmluZykgKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIEhBVklORyAnOwogICAgICAgICAgICAkcXVlcnkgLj0gJygnIC4gaW1wbG9kZSgnIEFORCAnLCRoYXZpbmcpLiAnKSc7CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSBldi5ldmVudF9kYXRlX3N0YXJ0IEFTQyc7CiAgICAgICAgJHNlYXJjaHJlc3VsdHMgPSAkZGItPkdldEFycmF5KCRxdWVyeSwkcXBhcm1zKTsKICAgICAgICBpZiggISRzZWFyY2hyZXN1bHRzICYmICRkYi0+RXJyb3JNc2cgIT0gJycgKSAkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfcXVlcnlfZmFpbGVkJyk7CiAgICAgICAgJHNlYXJjaHJlc3VsdHMgPSBjZ2VfYXJyYXk6OmV4dHJhY3RfZmllbGQoJHNlYXJjaHJlc3VsdHMsJ2V2ZW50X2lkJyk7CiAgICB9Cn0KCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlLCdzZWFyY2hyZXN1bHRfJyk7Ci8vIGNhbGN1bGF0ZSBwYWdpbmF0aW9uIHN0dWZmCi8vIGFuZCB0aGUgc3Vic2V0IG9mIGV2ZW50IGlkcy4KJG51bXBhZ2VzID0gMDsKJG51bV9tYXRjaGVzID0gMDsKaWYoICFlbXB0eSgkc2VhcmNocmVzdWx0cykgKSB7CiAgICAkbnVtX21hdGNoZXMgPSBjb3VudCgkc2VhcmNocmVzdWx0cyk7CiAgICAkbnVtcGFnZXMgPSAoaW50KShjb3VudCgkc2VhcmNocmVzdWx0cykgLyAkbGltaXQpOwogICAgaWYoIGNvdW50KCRzZWFyY2hyZXN1bHRzKSAlICRsaW1pdCA+IDAgKSAkbnVtcGFnZXMrKzsKICAgICRzdGFydG9mZnNldCA9ICgkcGFnZW51bSAtIDEpKiRsaW1pdDsKICAgICRlbnRyaWVzID0gY2djYWxlbmRhcl91dGlsczo6ZXhwYW5kX2V2ZW50cygkc2VhcmNocmVzdWx0cywkcmV0dXJuaWQsJHBhcmFtcywkbGltaXQsJHN0YXJ0b2Zmc2V0KTsKICAgIGlmKCBpc19hcnJheSgkZW50cmllcykgJiYgY291bnQoJGVudHJpZXMpICkgewogICAgICAgICRwYXJtcyA9ICRwYXJhbXM7CiAgICAgICAgaWYoICRwYWdlbnVtID4gMSApIHsKICAgICAgICAgICAgJHBhcm1zWydjYWxfcGFnZW51bSddID0gJHBhZ2VudW0gLSAxOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3ByZXZwYWdlX3VybCcsJHRoaXMtPkNyZWF0ZVVSTCgkaWQsJ3NlYXJjaHJlc3VsdHMnLCRyZXR1cm5pZCwkcGFybXMpKTsKICAgICAgICAgICAgJHBhcm1zWydjYWxfcGFnZW51bSddID0gMTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdmaXJzdHBhZ2VfdXJsJywkdGhpcy0+Q3JlYXRlVVJMKCRpZCwnc2VhcmNocmVzdWx0cycsJHJldHVybmlkLCRwYXJtcykpOwogICAgICAgIH0KICAgICAgICBpZiggJHBhZ2VudW0gPCAkbnVtcGFnZXMgKSB7CiAgICAgICAgICAgICRwYXJtc1snY2FsX3BhZ2VudW0nXSA9ICRwYWdlbnVtICsgMTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCduZXh0cGFnZV91cmwnLCR0aGlzLT5DcmVhdGVVUkwoJGlkLCdzZWFyY2hyZXN1bHRzJywkcmV0dXJuaWQsJHBhcm1zKSk7CiAgICAgICAgICAgICRwYXJtc1snY2FsX3BhZ2VudW0nXSA9ICRudW1wYWdlczsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdsYXN0cGFnZV91cmwnLCR0aGlzLT5DcmVhdGVVUkwoJGlkLCdzZWFyY2hyZXN1bHRzJywkcmV0dXJuaWQsJHBhcm1zKSk7CiAgICAgICAgfQogICAgICAgICR0cGwtPmFzc2lnbignZXZlbnRzJywkZW50cmllcyk7CiAgICB9Cn0KCiMKIyBHaXZlIEV2ZXJ5dGhpbmcgdG8gc21hcnR5CiMKJHRwbC0+YXNzaWduKCdudW1wYWdlcycsJG51bXBhZ2VzKTsKJHRwbC0+YXNzaWduKCdwYWdlbnVtJywkcGFnZW51bSk7CiR0cGwtPmFzc2lnbignc2VhcmNoX3N0YXJ0X2RhdGUnLCRzZWFyY2hfc3RhcnRfZGF0ZSk7CiR0cGwtPmFzc2lnbignc2VhcmNoX2VuZF9kYXRlJywkc2VhcmNoX2VuZF9kYXRlKTsKJHRwbC0+YXNzaWduKCdzZWFyY2hfY2F0ZWdvcnknLCRzZWFyY2hfY2F0ZWdvcnkpOwokdHBsLT5hc3NpZ24oJ3NlYXJjaF90ZXh0Jywkc2VhcmNoX3RleHQpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.storesession.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZHVtbXkgZmlsZS4=]]></data>
	</file>
	<file>
	  <filename>/CGCalendar.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpmaW5hbCBjbGFzcyBDR0NhbGVuZGFyIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKICB2YXIgJGNhdGVnb3JpZXNfdGFibGVfbmFtZTsKICB2YXIgJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgdmFyICRldmVudHNfdGFibGVfbmFtZTsKICB2YXIgJGZpZWxkc190YWJsZV9uYW1lOwogIHZhciAkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWU7CiAgdmFyICRhZG1pbl90b29sc19sb2FkZWQ7CiAgc3RhdGljICRfY2FjaGVkX2ZpZWxkczsKCiAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogIHsKCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsKCSR0aGlzLT5BZGRJbWFnZURpcignaW1hZ2VzJyk7CgoJJHRoaXMtPmNhdGVnb3JpZXNfdGFibGVfbmFtZSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2djYWxlbmRhcl9jYXRlZ29yaWVzJzsKCSR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfdG9fY2F0ZWdvcmllcyc7CgkkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50cyc7CgkkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NnY2FsZW5kYXJfZXZlbnRfZmllbGRfdmFsdWVzJzsKCSR0aGlzLT5maWVsZHNfdGFibGVfbmFtZSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2djYWxlbmRhcl9maWVsZHMnOwoJJHRoaXMtPmFkbWluX3Rvb2xzX2xvYWRlZCA9IGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCiAgewoJJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CgkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RheScsQ0xFQU5fSU5UKTsKCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGlzcGxheScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeScsQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaXN0dHlwZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd3ZWVrJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vbnRoJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3llYXInLENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndXNlX3Nlc3Npb24nLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5saW5lJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JldmVyc2UnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGV0YWlscGFnZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdldmVudHRlbXBsYXRlJyxDTEVBTl9TVFJJTkcpOwoKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdldmVudF9pZCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaW1pdCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmdWxsY2FsZW5kYXJ0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdldmVudHRlbXBsYXRlJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xpc3R0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzZWFyY2h0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsgLy8gdG9kbywgZG9jIHRoaXMuCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2VhcmNocmVzdWx0dGVtcGxhdGUnLENMRUFOX1NUUklORyk7IC8vIHRvZG8sIGRvYyB0aGlzLgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NlYXJjaHJlc3VsdHBhZ2UnLENMRUFOX1NUUklORyk7IC8vIHRvZG8sIGRvYyB0aGlzCgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ215ZXZlbnRzdGVtcGxhdGUnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZWRpdGV2ZW50dGVtcGxhdGUnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGVsZXRlZXZlbnR0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlZGl0cGFnZScsQ0xFQU5fSU5UKTsKCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndW5pcXVlX29ubHknLENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmV0dXJuX2lkJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Nob3dfaWNhbCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93Y2hpbGRyZW4nLENMRUFOX0lOVCk7CgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQLicvY2FsXy4qLycsQ0xFQU5fU1RSSU5HKTsKCgkkcHJlZml4ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKCWlmKCAhJHByZWZpeCApICRwcmVmaXggPSAnY2FsZW5kYXInOwoJJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy8nLiRwcmVmaXguJ1wvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxldmVudF9pZD5bMC05XSspLS4qJC8nLGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcsJ2Rpc3BsYXknPT4nZXZlbnQnKSk7CiAgfQoKICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogIHsKCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ215ZXZlbnRzdGVtcGxhdGUnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnKSk7CgkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdlZGl0ZXZlbnR0ZW1wbGF0ZScsJycsJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnKSk7CgkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkZWxldGVldmVudHRlbXBsYXRlJywnJywkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9kZWxldGVldmVudHRlbXBsYXRlJykpOwoJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZWRpdHBhZ2UnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2VkaXRwYWdlJykpOwogIH0KCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgeyAkdGhpcy0+U2V0UGFyYW1ldGVycygpOyB9CiAgZnVuY3Rpb24gR2V0TmFtZSgpIHsgcmV0dXJuICdDR0NhbGVuZGFyJzsgfQogIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgcmV0dXJuICdSb2JlcnQgQ2FtcGJlbGwnOyB9CiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnY2FsZ3V5MTAwMEBnbWFpbC5jb20nOyB9CiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiB0cnVlOyB9CiAgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiB0cnVlOyB9CiAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbiggJGV2ZW50bmFtZSApIHsgcmV0dXJuICR0aGlzLT5sYW5nKCdldmVudGRlc2MtJyAuICRldmVudG5hbWUpOyB9CiAgZnVuY3Rpb24gR2V0RXZlbnRIZWxwKCAkZXZlbnRuYW1lICkgewlyZXR1cm4gJHRoaXMtPmxhbmcoJ2V2ZW50aGVscC0nIC4gJGV2ZW50bmFtZSk7IH0KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzIuMS4yJzsgfQogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIGFycmF5KCdDR0V4dGVuc2lvbnMnPT4nMS41MScsJ0NHU2ltcGxlU21hcnR5Jz0+JzEuOCcpOyB9CiAgZnVuY3Rpb24gR2V0RGVzY3JpcHRpb24oJGxhbmcgPSAnZW5fVVMnKSB7IHJldHVybiAkdGhpcy0+TGFuZygiZGVzY3JpcHRpb24iKTsgfQogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnY2FsX2Rlc2NyaXB0aW9uJyk7IH0KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7IHJldHVybiAnY29udGVudCc7IH0KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjEuMic7IH0KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IHJldHVybiBmaWxlX2dldF9jb250ZW50cyhfX0RJUl9fLicvY2hhbmdlbG9nLmluYycpOyB9CiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2luc3RhbGxfcG9zdG1lc3NhZ2UnKTsgfQogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnYXJleW91c3VyZV91bmluc3RhbGwnKTsgfQogIGZ1bmN0aW9uIEFsbG93QXV0b0luc3RhbGwoKSB7IHJldHVybiBGQUxTRTsgfQogIGZ1bmN0aW9uIEFsbG93QXV0b1VwZ3JhZGUoKSB7IHJldHVybiBGQUxTRTsgfQogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgewlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RfdW5pbnN0YWxsJyk7IH0KICBwdWJsaWMgZnVuY3Rpb24gTGF6eUxvYWRGcm9udGVuZCgpIHsgcmV0dXJuIEZBTFNFOyB9CiAgcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CgogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgewoJJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnKTsKCWlmKCAhJHRtcCApICR0bXAgPSAkdGhpcy0+TGFuZygnY2FsX2NhbGVuZGFyJyk7CglyZXR1cm4gJHRtcDsKICB9CgogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJykgfHwKICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSB8fAogICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSB8fAogICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIENhbGVuZGFyIEF0dHJpYnV0ZXMnKSB8fAogICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICB9CgogIHByb3RlY3RlZCBmdW5jdGlvbiBIYXZlTWFuYWdlUmlnaHQoKQogIHsKICAgICAgaWYoIENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApIHsKICAgICAgICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICAgICAgICBpZiggISRmZXUgKSByZXR1cm4gRkFMU0U7IC8vIG5vIGZldQogICAgICAgICAgJGZldV91aWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CiAgICAgICAgICBpZiggJGZldV91aWQgPCAxICkgcmV0dXJuIEZBTFNFOyAvLyBub3QgbG9nZ2VkIGluCiAgICAgICAgICAkbWFzdGVyX2dyb3VwID0gKGludCkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX21hc3Rlcmdyb3VwJyk7CiAgICAgICAgICBpZiggJG1hc3Rlcl9ncm91cCA+IDAgKSB7CiAgICAgICAgICAgICAgaWYoICRmZXUtPk1lbWJlck9mR3JvdXAoJGZldV91aWQsJG1hc3Rlcl9ncm91cCkgKSByZXR1cm4gVFJVRTsgLy8gY2FuIG1hbmFnZSBhbnkgZ3JvdXAKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgfQogICAgICBpZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJykgKSByZXR1cm4gVFJVRTsgLy8gY2FuIG1hbmFnZSBhbnkgZXZlbnQKICAgICAgcmV0dXJuIEZBTFNFOwogIH0KCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIENhbk1hbmFnZUV2ZW50KCRldmVudF9pZCkKICB7CiAgICAgICRldmVudF9pZCA9IChpbnQpICRldmVudF9pZDsKICAgICAgaWYoICR0aGlzLT5IYXZlTWFuYWdlUmlnaHQoKSApIHJldHVybiBUUlVFOwogICAgICBpZiggQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpICkgewogICAgICAgICAgLy8gaGF2ZSB0byBjaGVjayB0aGUgZGF0YWJhc2UgZm9yIG93bmVyc2hpcC4KICAgICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgZXZlbnRfY3JlYXRlZF9ieSBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICRyZXMgPSAoaW50KSAkZGItPkdldE9uZSgkc3FsLGFycmF5KCRldmVudF9pZCkpOwogICAgICAgICAgaWYoICRyZXMgPT0gJGZldV91aWQgKSByZXR1cm4gVFJVRTsKICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgfQoKICAgICAgLy8gYWRtaW4gcmVxdWVzdHMKICAgICAgaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgTXkgQ2FsZW5kYXJFdmVudHMnKSApIHsKICAgICAgICAgIC8vIGhhdmUgdG8gY2hlY2sgdGhlIGRhdGFiYXNlCiAgICAgICAgICAkdXNlcl9pZCA9IGdldF91c2VyaWQoRkFMU0UpICogLTEgLSAxMDA7CiAgICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGV2ZW50X2NyZWF0ZWRfYnkgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICAgICAkcmVzID0gKGludCkgJGRiLT5HZXRPbmUoJHNxbCxhcnJheSgkZXZlbnRfaWQpKTsKICAgICAgICAgIGlmKCAkcmVzID09ICR1c2VyX2lkICkgcmV0dXJuIFRSVUU7CiAgICAgIH0KICAgICAgcmV0dXJuIEZBTFNFOwogIH0KCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIEdldEV2ZW50KCRldmVudF9pZCwkdWlkID0gLTEpCiAgewogICAgICAkcnMgPSBudWxsOwogICAgICAkZXZlbnRfaWQgPSAoaW50KSAkZXZlbnRfaWQ7CiAgICAgICR1aWQgPSAoaW50KSAkdWlkOwoKICAgICAgaWYoICRldmVudF9pZCA+IDAgKSB7CiAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsgLyogQHZhciAkZGIgQURPQ29ubmVjdGlvbiAqLwogICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgKiBGUk9NICcgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICRwYXJtcyA9IGFycmF5KCRldmVudF9pZCk7CiAgICAgICAgICBpZiggJHVpZCA+IDAgJiYgISR0aGlzLT5IYXZlTWFuYWdlUmlnaHQoKSApIHsKICAgICAgICAgICAgICAkc3FsIC49ICcgQU5EIGV2ZW50X2NyZWF0ZWRfYnkgPSA/JzsKICAgICAgICAgICAgICAkcGFybXNbXSA9ICR1aWQ7CiAgICAgICAgICB9CiAgICAgICAgICAkcnMgPSAkZGItPkV4ZWN1dGUoJHNxbCwkcGFybXMpOwogICAgICB9CgogICAgICBpZiggJHJzICYmICRycy0+UmVjb3JkQ291bnQoKSA+IDApIHsKICAgICAgICAgICRyZXN1bHQgPSAkcnMtPkZldGNoUm93KCk7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX3N0YXJ0X3V0J10gPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJlc3VsdFsnZXZlbnRfZGF0ZV9zdGFydCddKTsKICAgICAgICAgIGlmKCBpc19udWxsKCRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kJ10pIHx8ICRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kJ10gPT0gJzAwMDAtMDAtMDAgMDA6MDA6MDAnKSAkcmVzdWx0WydldmVudF9kYXRlX2VuZCddID0gTlVMTDsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJlc3VsdFsnZXZlbnRfZGF0ZV9lbmQnXSk7CiAgICAgICAgICBpZiggaXNfbnVsbCgkcmVzdWx0WydldmVudF9kYXRlX3JlY3VyX2VuZCddKSB8fCAkcmVzdWx0WydldmVudF9kYXRlX3JlY3VyX2VuZCddID09ICcwMDAwLTAwLTAwIDAwOjAwOjAwJyApIHsKICAgICAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX3JlY3VyX2VuZCddID0gTlVMTDsKICAgICAgICAgIH0KICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10gPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJlc3VsdFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSk7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9yZWN1cl9jb3VudCddID0gJHJlc3VsdFsnZXZlbnRfcmVjdXJfbmV2ZW50cyddOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGV4cGxvZGUoJywnLCRyZXN1bHRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBleHBsb2RlKCcsJywkcmVzdWx0WydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICAgICAgICAkcmVzdWx0WydjYXRlZ29yaWVzJ10gPSBhcnJheSgpOwoKICAgICAgICAgIC8vIG5vdyBwaWNrIHVwIGNhdGVnb3JpZXMKICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGNhdGVnb3J5X2lkIEZST00gJyAuICR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lIC4gJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgICAgICAgJHJzID0gJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICAgICAgICBpZigkcnMpIHsKICAgICAgICAgICAgICB3aGlsZSgkcm93ID0gJHJzLT5GZXRjaFJvdygpKSB7CiAgICAgICAgICAgICAgICAgICRyZXN1bHRbJ2NhdGVnb3JpZXMnXVtdID0gJHJvd1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgLy8gbm93IHBpY2sgdXAgdGhlIGN1c3RvbSBmaWVsZHMKICAgICAgICAgICRyZXN1bHRbJ2ZpZWxkcyddID0gYXJyYXkoKTsKICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGZpZWxkX25hbWUsIGZpZWxkX3ZhbHVlIEZST00gJyAuICR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZSAuICcgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICRycyA9ICRkYi0+R2V0QXJyYXkoJHNxbCxhcnJheSgkZXZlbnRfaWQpKTsKICAgICAgICAgIGlmKCBlbXB0eSgkcnMpICYmICRyZXN1bHRbJ2V2ZW50X3BhcmVudF9pZCddID4gMCApIHsKICAgICAgICAgICAgICAkc3FsID0gJ1NFTEVDVCBmaWVsZF9uYW1lLCBmaWVsZF92YWx1ZSBGUk9NICcgLiAkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgLiAnIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICAgICAgICAgJHJzID0gJGRiLT5HZXRBcnJheSgkc3FsLGFycmF5KCRyZXN1bHRbJ2V2ZW50X3BhcmVudF9pZCddKSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiggaXNfYXJyYXkoJHJzKSAmJiBjb3VudCgkcnMpICkgewogICAgICAgICAgICAgIGZvcmVhY2goICRycyBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgICAkcmVzdWx0WydmaWVsZHMnXVskcm93WydmaWVsZF9uYW1lJ11dID0gJHJvd1snZmllbGRfdmFsdWUnXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgLy8gdGVzdCBpZiB0aGlzIGlzIGFuIGFsbCBkYXkgZXZlbnQuCiAgICAgICAgICAvLyBjdXogd2UgZG9uJ3Qgc3RvcmUgdGhhdCBpbmZvIGluIHRoZSBkYXRhYmFzZS4KICAgICAgICAgICRzZCA9IGRhdGUoJ3onLCRyZXN1bHRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSk7CiAgICAgICAgICAkc2ggPSBkYXRlKCdHJywkcmVzdWx0WydldmVudF9kYXRlX3N0YXJ0X3V0J10pOwogICAgICAgICAgJHNtID0gZGF0ZSgnaScsJHJlc3VsdFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKTsKICAgICAgICAgICRlZCA9IGRhdGUoJ3onLCRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pOwogICAgICAgICAgJGVoID0gZGF0ZSgnRycsJHJlc3VsdFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSk7CiAgICAgICAgICAkZW0gPSBkYXRlKCdpJywkcmVzdWx0WydldmVudF9kYXRlX2VuZF91dCddKTsKICAgICAgICAgICRyZXN1bHRbJ2FsbF9kYXlfZXZlbnQnXSA9ICRyZXN1bHRbJ2V2ZW50X2FsbF9kYXknXTsKICAgICAgICAgICRyZXN1bHRbJ2FsdF9lbmRfZGF0ZSddID0gMDsKICAgICAgICAgIGlmKCAkcmVzdWx0WydldmVudF9kYXRlX3N0YXJ0X3V0J10gPCAkcmVzdWx0WydldmVudF9kYXRlX2VuZF91dCddICkgJHJlc3VsdFsnYWx0X2VuZF9kYXRlJ10gPSAxOwogICAgICAgICAgLy9pZiggJHNkICE9JGVkICkgJHJlc3VsdFsnYWx0X2VuZF9kYXRlJ10gPSAxOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgLy8gY3JlYXRlIGFuIGVtcHR5IHJlY29yZAogICAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9pZCddID0gLTE7CiAgICAgICAgICAkcmVzdWx0WydldmVudF90aXRsZSddID0gJyc7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9zdW1tYXJ5J10gPSAnJzsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2RldGFpbHMnXSA9ICcnOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9zdGFydCddID0gTlVMTDsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kJ10gPSBOVUxMOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9zdGFydF91dCddID0gc3RydG90aW1lKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZmx0X3N0YXJ0dGltZScpKTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPSBOVUxMOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfY3JlYXRlZF9ieSddID0gLTE7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9jcmVhdGVfZGF0ZSddID0gTlVMTDsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X21vZGlmaWVkX2RhdGUnXSA9IE5VTEw7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9yZWN1cl9wZXJpb2QnXSA9ICdub25lJzsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10gPSBOVUxMOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSA9IE5VTEw7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9yZWN1cl9pbnRlcnZhbCddID0gLTE7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9wYXJlbnRfaWQnXSA9IC0xOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfcmVjdXJfY291bnQnXSA9IC0xOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGFycmF5KCk7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9yZWN1cl9tb250aGRheXMnXSA9IGFycmF5KCk7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddID0gMTsgLy8gZGVmYXVsdCB0byB5ZXMuCiAgICAgICAgICAkcmVzdWx0WydjYXRlZ29yaWVzJ10gPSBhcnJheSgpOwogICAgICAgICAgJHJlc3VsdFsnZmllbGRzJ10gPSBhcnJheSgpOwogICAgICAgICAgJHJlc3VsdFsnYWxsX2RheV9ldmVudCddID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfYWxsZGF5ZXZlbnQnKTsKICAgICAgICAgICRyZXN1bHRbJ2FsdF9lbmRfZGF0ZSddID0gMDsKICAgICAgfQoKICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgfQoKICAvLyBkZXByZWNhdGVkCiAgZnVuY3Rpb24gR2V0Q2F0ZWdvcmllcygpCiAgewogICAgICByZXR1cm4gXENHQ2FsZW5kYXJcY2F0ZWdvcnk6OmdldF9jYXRlZ29yaWVzKCk7CiAgfQoKICBwcml2YXRlIGZ1bmN0aW9uIF9Mb2FkQWRtaW4oKQogIHsKICAgICAgaWYoICR0aGlzLT5hZG1pbl90b29sc19sb2FkZWQgPT09IGZhbHNlICkgcmVxdWlyZV9vbmNlKCdmdW5jdGlvbnMuYWRtaW5fdG9vbHMucGhwJyk7CiAgfQoKICBmdW5jdGlvbiBHZXRGaWVsZHMoKQogIHsKICAgICAgaWYoICFpc19hcnJheShzZWxmOjokX2NhY2hlZF9maWVsZHMpICkgewogICAgICAgICAgc2VsZjo6JF9jYWNoZWRfZmllbGRzID0gYXJyYXkoKTsKCiAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsgLyogQHZhciAkZGIgQURPQ29ubmVjdGlvbiAqLwogICAgICAgICAgJGZpZWxkc190YWJsZV9uYW1lID0gJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lOwogICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICRmaWVsZHNfdGFibGVfbmFtZSBPUkRFUiBCWSBmaWVsZF9vcmRlcixmaWVsZF9uYW1lIjsKCiAgICAgICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgICAgICRycyA9ICRkYi0+RXhlY3V0ZSgkc3FsKTsKICAgICAgICAgIGlmKCRycyAmJiAkcnMtPlJlY29yZENvdW50KCkgPiAwKSB7CiAgICAgICAgICAgICAgJHJlc3VsdCA9ICRycy0+R2V0QXJyYXkoKTsKICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHJlc3VsdCkgJiYgY291bnQoJHJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICAgIGZvcmVhY2goICRyZXN1bHQgYXMgJiRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiggJG9uZVsnZmllbGRfZXh0cmEnXSAhPSAnJyApICRvbmVbJ2ZpZWxkX2V4dHJhJ10gPSB1bnNlcmlhbGl6ZSgkb25lWydmaWVsZF9leHRyYSddKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzZWxmOjokX2NhY2hlZF9maWVsZHMgPSAkcmVzdWx0OwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBzZWxmOjokX2NhY2hlZF9maWVsZHM7CiAgfQoKICBmdW5jdGlvbiBHZXREYXlOYW1lcygpCiAgewogICAgICAkdG1wID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwogICAgICAkZGF5X25hbWVzID0gJHRtcFsnZGF5TmFtZXMnXTsKCiAgICAgIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaXJzdGRheW9md2VlaycsMSkpIHsKICAgICAgICAgICRmaXJzdCA9IGFycmF5X3NoaWZ0KCRkYXlfbmFtZXMpOwogICAgICAgICAgJGRheV9uYW1lc1tdID0gJGZpcnN0OwogICAgICB9CiAgICAgIHJldHVybiAkZGF5X25hbWVzOwogIH0KCiAgZnVuY3Rpb24gR2V0RGF5U2hvcnROYW1lcygpCiAgewogICAgICAkdG1wID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwogICAgICAkZGF5X3Nob3J0X25hbWVzID0gJHRtcFsnZGF5TmFtZXNTaG9ydCddOwoKICAgICAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpcnN0ZGF5b2Z3ZWVrJywxKSkgewogICAgICAgICAgJGZpcnN0ID0gYXJyYXlfc2hpZnQoJGRheV9zaG9ydF9uYW1lcyk7CiAgICAgICAgICAkZGF5X3Nob3J0X25hbWVzW10gPSAkZmlyc3Q7CiAgICAgIH0KICAgICAgcmV0dXJuICRkYXlfc2hvcnRfbmFtZXM7CiAgfQoKICBmdW5jdGlvbiBHZXRNb250aE5hbWVzKCkKICB7CiAgICAgICR0bXAgPSBjZ2NhbGVuZGFyX3V0aWxzOjpnZXRfbG9jYWxlX2RhdGVzKCk7CiAgICAgICRtb250aF9uYW1lcyA9ICR0bXBbJ21vbnRoTmFtZXMnXTsKICAgICAgcmV0dXJuICRtb250aF9uYW1lczsKICB9CgogIGZ1bmN0aW9uIEdldExhYmVscygpCiAgewogICAgICAkbGFuZ1snZGF0ZSddID0gJHRoaXMtPkxhbmcoJ2NhbF9kYXRlJyk7CiAgICAgICRsYW5nWydzdW1tYXJ5J10gPSAkdGhpcy0+TGFuZygnY2FsX3N1bW1hcnknKTsKCiAgICAgICRsYW5nWydkZXRhaWxzJ10gPSAkdGhpcy0+TGFuZygnY2FsX2RldGFpbHMnKTsKICAgICAgJGxhbmdbJ3JldHVybiddID0gJHRoaXMtPkxhbmcoJ2NhbF9yZXR1cm4nKTsKCSAgJGxhbmdbJ2N1cnJlbnQnXSA9ICR0aGlzLT5MYW5nKCdjYWxfY3VycmVudCcpOwogICAgICAkbGFuZ1sndG9kYXknXSA9ICR0aGlzLT5MYW5nKCdjYWxfdG9kYXknKTsKCSAgJGxhbmdbJ2Zyb20nXSA9ICR0aGlzLT5MYW5nKCdjYWxfZnJvbScpOwogICAgICAkbGFuZ1sndG8nXSA9ICR0aGlzLT5MYW5nKCdjYWxfdG8nKTsKICAgICAgJGxhbmdbJ25leHQnXSA9ICR0aGlzLT5MYW5nKCdjYWxfbmV4dCcpOwogICAgICAkbGFuZ1sncHJldiddID0gJHRoaXMtPkxhbmcoJ2NhbF9wcmV2Jyk7CiAgICAgICRsYW5nWydwYXN0X2V2ZW50cyddID0gJHRoaXMtPkxhbmcoJ2NhbF9wYXN0X2V2ZW50cycpOwogICAgICAkbGFuZ1sndXBjb21pbmdfZXZlbnRzJ10gPSAkdGhpcy0+TGFuZygnY2FsX3VwY29taW5nX2V2ZW50cycpOwogICAgICAkbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSBhcnJheSgnZGFpbHknPT4kdGhpcy0+TGFuZygnZGFpbHknKSwnd2Vla2x5Jz0+JHRoaXMtPkxhbmcoJ3dlZWtseScpLCdtb250aGx5Jz0+JHRoaXMtPkxhbmcoJ21vbnRobHknKSwneWVhcmx5Jz0+JHRoaXMtPkxhbmcoJ3llYXJseScpKTsKICAgICAgcmV0dXJuICRsYW5nOwogIH0KCgogIGZ1bmN0aW9uIGlzVmFsaWRGaWxlbmFtZSgkZmlsZW5hbWUpCiAgewogICAgICAkdGhpcy0+X0xvYWRBZG1pbigpOwogICAgICByZXR1cm4gY2FsZW5kYXJfaXNWYWxpZEZpbGVuYW1lKCR0aGlzLCRmaWxlbmFtZSk7CiAgfQoKCiAgZnVuY3Rpb24gSGFuZGxlVXBsb2FkKCRmbGRuYW1lLCYkZXJyb3IpCiAgewogICAgICAkdGhpcy0+X0xvYWRBZG1pbigpOwogICAgICByZXR1cm4gY2FsZW5kYXJfSGFuZGxlVXBsb2FkKCR0aGlzLCRmbGRuYW1lLCRlcnJvcik7CiAgfQoKICBmdW5jdGlvbiBHZXREZWZhdWx0VGVtcGxhdGUoJHRlbXBsYXRlKQogIHsKICAgICAgJGZuID0gc3ByaW50Zignb3JpZ18lc190ZW1wbGF0ZS50cGwnLCR0ZW1wbGF0ZSk7CiAgICAgICRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywndGVtcGxhdGVzJywkZm4pOwogICAgICAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICByZXR1cm4gJGRhdGE7CiAgfQoKICBmdW5jdGlvbiBOb0JyZWFrKCRzdHJpbmcpIHsKICAgIHJldHVybiBzdHJfcmVwbGFjZSgiICIsIiZuYnNwOyIsJHN0cmluZyk7CiAgfQoKICBmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJHJldHVybmlkLCAkZXZlbnRfaWQsICRhdHRyID0gJycpCiAgewogICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgaWYoICRhdHRyICE9ICdldmVudCcpIHJldHVybiAkcmVzdWx0OwoKICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfdGl0bGUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICR0aXRsZSA9ICRkYi0+R2V0T25lKCAkcXVlcnksIGFycmF5KCRldmVudF9pZCkgKTsKCiAgICAgICRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7CiAgICAgICRyZXN1bHRbMV0gPSAkdGl0bGU7CgogICAgICAkdGl0bGVTRU8gPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCR0aXRsZSk7CiAgICAgICRkZXN0cGFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0Y2FsZW5kYXJwYWdlJywkcmV0dXJuaWQpOwogICAgICAkcHJlZml4ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKICAgICAgaWYoICEkcHJlZml4ICkgJHByZWZpeCA9ICdjYWxlbmRhcic7CiAgICAgICRwcmV0dHl1cmwgPSBzcHJpbnRmKCRwcmVmaXguIi8lZC8lZC0lcyIsICRkZXN0cGFnZSwkZXZlbnRfaWQsJHRpdGxlU0VPKTsKICAgICAgJHJlc3VsdFsyXSA9ICR0aGlzLT5DcmVhdGVMaW5rKGNudG50MDEsJ2RlZmF1bHQnLCRkZXN0cGFnZSwnJywKCQkJCQkgYXJyYXkoJ2V2ZW50X2lkJz0+JGV2ZW50X2lkLCdkaXNwbGF5Jz0+J2V2ZW50JywnZGV0YWlscGFnZSc9PiRkZXN0cGFnZSwncmV0dXJuX2lkJz0+JHJldHVybmlkKSwKCQkJCQkgJycsIHRydWUsICcnLCAnJywgJHByZXR0eXVybCk7CiAgICAgIHJldHVybiAkcmVzdWx0OwogIH0KCiAgZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgmJG1vZHVsZSkKICB7CiAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwoKICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBPUkRFUiBCWSBldmVudF9kYXRlX3N0YXJ0JzsKICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKCSAgJGZxdWVyeSA9ICdTRUxFQ1QgZnYuZmllbGRfdmFsdWUgRlJPTSAnLiR0aGlzLT5maWVsZHNfdGFibGVfbmFtZS4nIGZkCiAgICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy4kdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUuJyBmdgogICAgICAgICAgICAgICAgICAgICBPTiBmZC5maWVsZF9uYW1lID0gZnYuZmllbGRfbmFtZSBBTkQgZmQuZmllbGRfc2VhcmNoYWJsZSA9IDEKICAgICAgICAgICAgICAgICAgV0hFUkUgZnYuZXZlbnRfaWQgPSA/JzsKCiAgICAgIHdoaWxlICgkZGJyICYmICEkZGJyLT5FT0YpIHsKCQkkdGV4dCA9ICRkYnItPmZpZWxkc1snZXZlbnRfdGl0bGUnXS4nICcuJGRici0+ZmllbGRzWydldmVudF9zdW1tYXJ5J10uJyAnLiRkYnItPmZpZWxkc1snZXZlbnRfZGV0YWlscyddOwoKCQkkbW9yZXdvcmRzID0gJGRiLT5HZXRDb2woJGZxdWVyeSxhcnJheSgkZGJyLT5maWVsZHNbJ2V2ZW50X2lkJ10pKTsKCQlpZiggJG1vcmV3b3JkcyApICR0ZXh0IC49ICcgJy5pbXBsb2RlKCcgJywkbW9yZXdvcmRzKTsKCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0TmFtZSgpLCAkZGJyLT5maWVsZHNbJ2V2ZW50X2lkJ10sICdldmVudCcsICR0ZXh0LCBOVUxMKTsKCQkkZGJyLT5Nb3ZlTmV4dCgpOwoJICB9CiAgfQoKICBmdW5jdGlvbiBUb0FiYnJldmlhdGVkV2Vla2RheXMoJGRhdGEpCiAgewoJaWYoICFpc19hcnJheSgkZGF0YSkgKSAkZGF0YSA9IGV4cGxvZGUoJywnLCRkYXRhKTsKCgkkd2Vla2RheXMgPSBhcnJheSgwPT4nc3VuZGF5JywKCQkJCQkgIDE9Pidtb25kYXknLAoJCQkJCSAgMj0+J3R1ZXNkYXknLAoJCQkJCSAgMz0+J3dlZG5lc2RheScsCgkJCQkJICA0PT4ndGh1cnNkYXknLAoJCQkJCSAgNT0+J2ZyaWRheScsCgkJCQkJICA2PT4nc2F0dXJkYXknKTsKCSRyZXN1bHQgPSBhcnJheSgpOwoJZm9yZWFjaCggJGRhdGEgYXMgJG9uZSApIHsKCSAgJHJlc3VsdFtdID0gJHRoaXMtPkxhbmcoJ2FiYnJfJy4kd2Vla2RheXNbJG9uZV0pOwoJfQogICAgaWYoICFjb3VudCgkcmVzdWx0KSApIHJldHVybiAnJzsKCSR0bXAgPSBpbXBsb2RlKCcsJywkcmVzdWx0KTsKCXJldHVybiAkdG1wOwogIH0KCiAgLy8gdGltZXN0YW1wIGlzIGEgVW5peCB0aW1lc3RhbXAgKHNlY29uZHMgc2luY2UgZXBvY2gpCiAgLy8gdHpvbmUgaXMgYW4gdGltZS16b25lIG9mZnNldCBmcm9tIEdNVAogIGZ1bmN0aW9uIFVuaXhUaW1lc3RhbXBUb2lDYWwoJHRpbWVzdGFtcCwgJHR6b25lID0gMCkKICB7CgkkenVsdSA9ICR0aW1lc3RhbXAgKyAoJHR6b25lICogMzYwMCk7CgkkaUNhbCAgPSBkYXRlKCJZbWRcVEhpc1xaIiwgJHp1bHUpOwoJcmV0dXJuICRpQ2FsOwogIH0KCiAgZnVuY3Rpb24gR2V0Q2F0ZWdvcnlOYW1lcygkY2F0ZWdvcnlfaWRzKQogIHsKCWlmKCAhaXNfYXJyYXkoJGNhdGVnb3J5X2lkcykgJiYgKGludCkkY2F0ZWdvcnlfaWRzID4gMCApIHsKCSAgJGNhdGVnb3J5X2lkcyA9IGFycmF5KCRjYXRldGVnb3J5X2lkcyk7Cgl9CgoJJGFsbGNhdHMgPSAkdGhpcy0+R2V0Q2F0ZWdvcmllcygpOwoJaWYoICFpc19hcnJheSgkYWxsY2F0cykgfHwgY291bnQoJGFsbGNhdHMpID09IDAgKSByZXR1cm47CgoJJHRtcCA9IGFycmF5KCk7Cglmb3JlYWNoKCAkY2F0ZWdvcnlfaWRzIGFzICRvbmUgKSB7CgkgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRhbGxjYXRzKTsgJGkrKyApIHsKCQlpZiggJG9uZSA9PSAkYWxsY2F0c1skaV1bJ2NhdGVnb3J5X2lkJ10gKSB7CgkJICAkdG1wW10gPSAkYWxsY2F0c1skaV1bJ2NhdGVnb3J5X25hbWUnXTsKCQkgIGJyZWFrOwoJCX0KCSAgfQoJfQoJaWYoIGNvdW50KCR0bXApID4gMCApIHJldHVybiBpbXBsb2RlKCcsICcsJHRtcCk7CiAgfQoKICBmdW5jdGlvbiBDb252ZXJ0Q2F0ZWdvcmllc1RvU3RyaW5nKCRjYXRlZ29yaWVzKQogIHsKCSRhcnkgPSBhcnJheSgpOwoJZm9yZWFjaCAoJGNhdGVnb3JpZXMgYXMgJG9uZSkgewoJICAkYXJ5W10gPSAkb25lWydjYXRlZ29yeV9uYW1lJ107Cgl9CglyZXR1cm4gaW1wbG9kZSgnLCcsICRhcnkpOwogIH0KCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaygkc3RyKQogIHsKICAgICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDYWxlbmRhcicpOwogICAgICBpZiggaXNfb2JqZWN0KCRtb2QpICkgcmV0dXJuICRtb2QtPkxhbmcoJ3RwbHR5cGVfJy4kc3RyKTsKICB9CgogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gcmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzKENtc0xheW91dFRlbXBsYXRlVHlwZSAkdHlwZSkKICB7CiAgICAgIGlmKCAkdHlwZS0+Z2V0X29yaWdpbmF0b3IoKSAhPSAnQ0dDYWxlbmRhcicgKSB0aHJvdyBuZXcgQ21zTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZXNldCBjb250ZW50cyBmb3IgdGhpcyB0ZW1wbGF0ZSB0eXBlJyk7CgogICAgICAkZm4gPSBudWxsOwogICAgICBzd2l0Y2goICR0eXBlLT5nZXRfbmFtZSgpICkgewogICAgICBjYXNlICdzZWFyY2hmb3JtJzoKICAgICAgICAgICRmbiA9ICdvcmlnX3NlYXJjaF90ZW1wbGF0ZS50cGwnOwogICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NlYXJjaHJlc3VsdCc6CiAgICAgICAgICAkZm4gPSAnb3JpZ19zZWFyY2hyZXN1bHRfdGVtcGxhdGUudHBsJzsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdldmVudCc6CiAgICAgICAgICAkZm4gPSAnb3JpZ19ldmVudF90ZW1wbGF0ZS50cGwnOwogICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2V2ZW50bGlzdCc6CiAgICAgICAgICAkZm4gPSAnb3JpZ19saXN0X3RlbXBsYXRlLnRwbCc7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAnbXlldmVudHMnOgogICAgICAgICAgJGZuID0gJ29yaWdfbXlldmVudHNfdGVtcGxhdGUudHBsJzsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdlZGl0ZXZlbnQnOgogICAgICAgICAgJGZuID0gJ29yaWdfZWRpdGV2ZW50X3RlbXBsYXRlLnRwbCc7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAnZGVsZXRlZXZlbnQnOgogICAgICAgICAgJGZuID0gJ29yaWdfZGVsZXRlZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdmdWxsY2FsZW5kYXInOgogICAgICAgICAgJGZuID0gJ29yaWdfZnVsbGNhbGVuZGFyX3RlbXBsYXRlLnRwbCc7CiAgICAgICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHR5cGUtPmdldF9uYW1lKCkuJyBpcyBub3QgYSBrbm93biB0eXBlIGZvciB0aGUgJy4kdHlwZS0+Z2V0X29yaWdpbmF0b3IoKS4nIG9yaWdpbmF0b3InKTsKICAgICAgfQoKICAgICAgJGZuID0gY21zX2pvaW5fcGF0aChfX0RJUl9fLCd0ZW1wbGF0ZXMnLCRmbik7CiAgICAgIGlmKCBmaWxlX2V4aXN0cygkZm4pICkgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluTWVudUl0ZW1zKCkKICB7CiAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICBpZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJykgfHwKICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSB8fAogICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApICRvdXRbXSA9IENtc0FkbWluTWVudUl0ZW06OmZyb21fbW9kdWxlKCR0aGlzKTsKCiAgICAgIGlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpIHx8CiAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpKSB7CiAgICAgICAgICAkb2JqID0gbmV3IENtc0FkbWluTWVudUl0ZW0oKTsKICAgICAgICAgICRvYmotPm1vZHVsZSA9ICR0aGlzLT5HZXROYW1lKCk7CiAgICAgICAgICAkb2JqLT5zZWN0aW9uID0gJ3NpdGVhZG1pbic7CiAgICAgICAgICAkb2JqLT50aXRsZSA9ICR0aGlzLT5MYW5nKCd0aXRsZV9hZG1pbm5hdl9zZXR0aW5ncycpOwogICAgICAgICAgJG9iai0+ZGVzY3JpcHRpb24gPSAkdGhpcy0+TGFuZygnZGVzY19hZG1pbm5hdl9zZXR0aW5ncycpOwogICAgICAgICAgJG9iai0+YWN0aW9uID0gJ2FkbWluX3NldHRpbmdzJzsKICAgICAgICAgICRvYmotPnVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdtMV8nLCRvYmotPmFjdGlvbik7CiAgICAgICAgICAkb3V0W10gPSAkb2JqOwogICAgICB9CiAgICAgIHJldHVybiAkb3V0OwogIH0KCn07IC8vIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkZ1dHVyZSBjaGFuZ2VzPC9oMz4KPHA+SW4gdXBjb21pbmcgdmVyc2lvbnMgb2YgdGhpcyBtb2R1bGUgd2Ugd2lsbCBiZTo8L3A+Cgk8dWw+Cgk8bGk+Q29udmVydGluZyB0byBJbm5vREIgdG8gYWxsb3cgdGhlIHVzZSBvZiB0cmFuc2FjdGlvbnMgYW5kIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgVGhpcyB3aWxsIGFpZGUgaW4gcGVyZm9ybWFuY2UsIGFuZCBkYXRhIGludGVncml0eS4gPC9saT4KCTxsaT5VdGlsaXplIGNhY2hpbmcgd2hlbiBsb2FkaW5nIGV2ZW50cyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIChub3QgbG9hZGluZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcyBpbiBzb21lIHZpZXdzKTwvbGk+Cgk8bGk+SW1wcm92aW5nIHByZXR0eSB1cmwgc3VwcG9ydDwvbGk+Cgk8bGk+RnVydGhlciBPT1BpZnlpbmcgdGhlIGNvZGUgdG8gYWxsb3cgZm9yIGZ1dHVyZSBleHBhbnNpb24uPC9saT4KCTxsaT5BbGxvdyBmaWx0ZXJpbmcgYnkgY3VzdG9tIGZpZWxkcy4uLiBpLmU6IGEgZHJvcGRvd24gdmFsdWUgc28gdGhhdCB5b3UgY2FuIGZpbHRlciBieSBhIHJlc291cmNlLjwvbGk+Cgk8L3VsPgoKPGgzPkhpc3Rvcnk8L2gzPgo8dWw+CiAgPGxpPlZlcnNpb24gMi4xLjIKICAgICAJPHVsPgoJPGxpPkZpeCBwcm9ibGVtIG9uIG5ldyBpbnN0YWxscyB3aXRoIGRlZmF1bHQgdGVtcGxhdGVzIG5vdCBiZWluZyBzcGVjaWZpZWQuPC9saT4KCTxsaT5GaXggcHJvYmxlbSB3aXRoIGNhdGVnb3J5PSBub3Qgd29ya2luZyBpbiB2YXJpb3VzIGRpc3BsYXlzLjwvbGk+CiAgICAgICAgPGxpPkZpeCBwcm9ibGVtcyB3aXRoIHVwZ3JhZGUgZnJvbSAxLngKICAgICAgICA8L2xpPgoJPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDIuMQoJPHVsPgoJPGxpPkFkZHMgdGhlIGFiaWxpdHkgZm9yIG1lbWJlcnMgb2YgYSBzcGVjaWFsIEZFVSBncm91cCB0byBlZGl0IG9yIGRlbGV0ZSBhbnkgZXZlbnQgZnJvbSB0aGUgZnJvbnRlbmQuPC9saT4KCTxsaT5BYWRzIHRoZSBhYmlsaXR5IHRvIGJ1bGsgZGVsZXRlIGV4cGlyZWQgZXZlbnRzLjwvbGk+Cgk8bGk+TmV3IGluc3RhbGxzIHVzZSBJbm5vREIgaW5zdGVhZCBvZiBNeUlTQU0gd2hpY2ggYWxsb3dzIGZvciBkYXRhIGludGVncml0eS48L2xpPgoJPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAyLjAKCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IFRoaXMgdmVyc2lvbiBtYXJrcyBhIG1ham9yIGNoYW5nZSBmb3IgdGhlIENHQ2FsZW5kYXIgbW9kdWxlLiAgVGhpcyB2ZXJzaW9uIHJlcXVpcmVzIENNU01TIDIuMS4yIG9yIGJleW9uZCwgYW5kIGludGVncmF0ZXMgd2l0aCB0aGUgRGVzaWduIE1hbmFnZXIuICBBbHNvLCBzb21lIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkLiAgVXBncmFkaW5nIHdpbGwgcmVxdWlyZSBjcmVhdGluZyBuZXcgdGVtcGxhdGVzLCBhbmQgYWRqdXN0aW5nIHRoZWlyIHN0eWxlcywgYW5kIHBvdGVudGlhbGx5IGFkanVzdGluZyB0aGUgd2F5IHRoZSBtb2R1bGUgaXMgY2FsbGVkLjwvcD4KCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IENNU01TIDIueCByZXF1aXJlcyB0aGF0IGFsbCB0ZW1wbGF0ZXMgYmUgdW5pcXVlbHkgbmFtZWQuICBEdXJpbmcgdGhlIHVwZ3JhZGUgcHJvY2VzcyB3ZSBlbnN1cmUgdGhhdCBhbGwgQ0dDYWxlbmRhciB0ZW1wbGF0ZXMgYXJlIHVuaXF1ZWx5IG5hbWVkIHVwb24gY29udmVyc2lvbi4gIEhvd2V2ZXIsIHdlIGNhbm5vdCBhbmQgZG8gbm90IGVkaXQgeW91ciBjYWxscyB0byB0aGUgQ0dDYWxlbmRhciBtb2R1bGUuICBUaGVyZWZvcmUsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgeW91ciBjYWxscyB0byBDR0NhbGVuZGFyIHRvIGFkanVzdCBhIG1hbnVhbGx5IHNwZWNpZmllZCB0ZW1wbGF0ZSBuYW1lLjwvcD4KCTx1bD4KCTxsaT5SZW1vdmVzIHRoZSBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgY2FsZW5kYXIgdmlldy48L2xpPgoJPGxpPk1pZ3JhdGVzIGFsbCB0ZW1wbGF0ZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlIENNU01TIDIuMCBMYXlvdXQgc2NoZW1lLiAgQWxsIHRlbXBsYXRlcyBmb3IgQ0dDYWxlbmRhciBhcmUgbm93IGF2YWlsYWJsZSBpbiBEZXNpZ25NYW5hZ2VyLjwvbGk+Cgk8bGk+TW92ZXMgYWxsIHNldHRpbmdzIGNvbnRyb2xzIGludG8gdGhlaXIgb3duIG5hdmlnYXRpb24gaXRlbSBpbiB0aGUgYWRtaW4gY29uc29sZS48L2xpPgoJPGxpPlJlbW92ZXMgdGhlIHVwY29taW5nbGlzdCB0ZW1wbGF0ZSB0eXBlLCBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgc3RhbmRhcmQgbGlzdCB0ZW1wbGF0ZSB0eXBlLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIG1heSBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gIFBhc3RsaXN0IGFuZCB1cGNvbWluZ2xpc3Qgdmlld3Mgbm8gbG9uZ2VyIHN1cHBvcnQgcGFnaW5hdGlvbi48L2xpPgoJPGxpPkFkZHMgc3VwcG9ydCBmb3IgYSBkYXkgdmlldy48L2xpPgoJPGxpPlVuaWZpZXMgYWxsIHN1bW1hcnkgdmlld3MgKHllYXIsIG1vbnRoLCBkYXksIHVwY29taW5nbGlzdCwgcGFzdGxpc3QpIHRvIHVzZSB0aGUgc2FtZSBldmVudGxpc3QgdGVtcGxhdGVzLiBUaGUgZm9ybWF0IG9mIHRoaXMgdGVtcGxhdGUgaGFzIGNoYW5nZWQgc2lnbmlmaWNhbnRseS48L2xpPgoJPGxpPk5vIGxvbmdlciBwYXNzIHRoZSBldmVudHRlbXBsYXRlIHBhcmFtZXRlciBmcm9tIHRoZSBzdW1tYXJ5IHZpZXcgaW50byBkZXRhaWwgdXJscyB0byBwb3RlbnRpYWxseSBhbGxvdyBmb3IgcHJldHR5IHVybHMgaW4gZGV0YWlsIChldmVudCkgdmlld3MuICBVc2UgdGhlIHtjZ2VfbW9kdWxlX2hpbnR9IHRhZyBpbnN0ZWFkLjwvbGk+Cgk8bGk+Tm8gbG9uZ2VyIHVzZSB0aGUgdXNlX3Nlc3Npb24gcGFyYW1ldGVycyBmb3IgbGlzdCB2aWV3cy4gIFRoZSBkZWZhdWx0IHRlbXBsYXRlIGFsbG93cyBmb3Igc2Nyb2xsaW5nIGJ5IGFqYXguPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSBkaXNwbGF5Zm9yZGF5IHBhcmFtZXRlciBmb3IgcGFzdGxpc3Qgb3IgdXBjb21pbmdsaXN0LiAgVXBjb21pbmdsaXN0IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBkYXksIGFzIGRvZXMgcGFzdGxpc3QuPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSB1bmlxdWVfb25seSBwYXJhbWV0ZXJzIGZvciB0aGUgcGFzdGxpc3QgYW5kIHVwY29taW5nbGlzdCB2aWV3cyBhcyB0aGUgZXZlbnQgbmFtZSBjYW5ub3QgYmUgYXNzdW1lZCB0byBiZSBhIGtleS4gIFBvc3QgZmlsdGVyaW5nIGluIHRoZSBsaXN0IHRlbXBsYXRlIG1heSBiZSBhIHZhbGlkIHNvbHV0aW9uIGZvciB0aGlzIGlmIG9uIGEgcGFydGljdWxhciBzaXRlIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhlIGV2ZW50IG5hbWUgaXMgdW5pcXVlLjwvbGk+Cgk8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDEuMTYueAogICAgIDxwPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gTW9zdCBmcm9udGVuZCB0ZW1wbGF0ZXMgaGF2ZSBjaGFuZ2VkIGluIHRoaXMgdmVyc2lvbi4gIEV2ZW50IGRpc3BsYXkgdGVtcGxhdGVzIGhhdmUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZm9yIGFjY2Vzc2luZyBjdXN0b20gZmllbGRzLiAgUGxlYXNlIHNlZSB0aGUgZXhhbXBsZXMsIGFuZCByZS1zdHlsZSB5b3VyIHdlYnNpdGVzIGFmdGVyIHVwZ3JhZGluZy48L3A+CiAgICAgPHVsPgogICAgICAgPGxpPkFkZGVkIGNoZWNrYm94IGFuZCBkcm9wZG93biBjdXN0b20gZmllbGQgdHlwZXMuPC9saT4KICAgICAgIDxsaT5BZGRlZCB0aGUgYWJpbGl0eSB0byBtYW5pcHVsYXRlIHJlY3VycmluZyBldmVudHMgZnJvbSB0aGUgZnJvbnRlbmQgaW50ZXJmYWNlLjwvbGk+CiAgICAgICA8bGk+UmV3aXRlcyB0aGUgZnJvbnRlbmQgZGVsZXRlIGFjdGlvbi48L2xpPgogICAgICAgPGxpPnJld3JpdGUgdGhlIGZyb250ZW5kIGFkZC9lZGl0IGV2ZW50IGFjdGlvbi48L2xpPgogICAgICAgPGxpPk1vZGlmeSBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlIHRvIGFsbG93IGVkaXRpbmcgdGhlIGV2ZW50IGlmIGxvZ2dlZCBpbiB0byBGRVUuPC9saT4KICAgICAgIDxsaT5Ob3cgZmllbGRzIGFuZCBjYXRlZ29yaWVzIGFyZSBwcmVzZXJ2ZWQgYW5kIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBlZGl0aW5nIGNoaWxkIGV2ZW50cyBpbiB0aGUgZnJvbnRlbmQgb3IgYWRtaW4uPC9saT4KICAgICAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMgYW5kIGNvZGUgb3B0aW1pemF0aW9ucy48L2xpPgogICAgICAgPGxpPk1ha2UgcmVhZHkgcGxhbnMgdG8gcmVtb3ZlIHRlbXBsYXRlIGNvZGUgZW50aXJlbHkgaW4gZmF2b3Igb2YgRGVzaWduTWFuYWdlci48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KCiAgPGxpPlZlcnNpb24gMS4xNS54Cgk8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBXZSBub3cgY3JlYXRlIGEgc2VwYXJhdGUgc21hcnR5IHNjb3BlIGZvciBlYWNoIHZpc2libGUgdGVtcGxhdGUgdG8gcHJldmVudCBzbWFydHkgdmFyaWFibGUgbmFtZSBjb2xsaXNpb24gaXNzdWVzLCBhbmQgZm9yIG1lbW9yeSBvcHRpbWl6YXRpb24gcHVycG9zZXMuICBUaGlzIG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHRyeWluZyB0byBleHBvcnQgdmFyaWFibGVzIHRvIG90aGVyIHRlbXBsYXRlcywgb3Igd2hlbiB0cnlpbmcgdG8gdXNlIGEgdmFyaWFibGUgY3JlYXRlZCBpbiBhbm90aGVyIHRlbXBsYXRlLjwvcD4KCTxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIG5ldyBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIENHQ2FsZW5kYXIgbW9kdWxlIGlzIHRoZSBmdWxsY2FsZW5kYXIgdmlldy4gIFRoaXMgdmlldyByZXF1aXJlcyBqcXVlcnkgYW5kIGpxdWVyeS11aSB0byBvcGVyYXRlLiAgVGhlcmVmb3JlIHlvdXIgc2l0ZSBtYXkgYnJlYWsgb24gdXBncmFkZS4gIFRvIGZvcmNlIHRoZSBvbGQgPGVtPihkZXByZWNhdGVkKTwvZW0+IGNhbGVkbmFyIHZpZXcsIGNoYW5nZSB5b3VyIGNhbGwgdG8gPGNvZGU+e0NHQ2FsZW5kYXIgZGlzcGxheT1jYWxlbmRhcn08L2NvZGU+PC9wPgogICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gIEZpeGVkIGVycm9ycyBpbiBtYW55IG9mIHRoZSBkaXNwbGF5IHRlbXBsYXRlcy48L3A+Cgk8dWw+Cgk8bGk+VmVyc2lvbiAxLjE1Cgk8dWw+CgkgICA8bGk+SW50cm9kdWNlcyBzZXBhcmF0ZSBzbWFydHkgc2NvcGVzIGZvciBhbGwgZnJvbnRlbmQsIGFuZCBzb21lIGJhY2tlbmQgZGlzcGxheXMuPC9saT4KCSAgIDxsaT5VcGdyYWRlcyBmdWxsY2FsZW5kYXIgdG8gdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uLjwvbGk+CgkgICA8bGk+QWRkcyB0aGUgZnVsbGNhbGVuZGFyIGFjdGlvbiB0byB0aGUgZnJvbnRlbmQsIHdoaWNoIGlzIG5vdyB0aGUgZGVmYXVsdCBhY3Rpb24uIChyZXF1aXJlcyBqcXVlcnkgYW5kIGpxdWVyeS11aSk8L2xpPgogICAgICAgICAgIDxsaT5BZGRzIHN1cHBvcnQgZm9yIGFuIGljYWwgZmVlZCB0byBoaWxpdGUgaG9saWRheXMgaW4gZnVsbGNhbGVuZGFyIHZpZXdzLjwvbGk+CgkgICA8bGk+TnVtZXJvdXMgYnVnIGZpeGVzLjwvbGk+Cgk8L3VsPgoJPC9saT4KCTxsaT5WZXJzaW9uIDEuMTUuMQoJPHVsPgoJICAgPGxpPkZpeGVzIGVycm9yIHdpdGggZXZlbnQgZGlzcGxheSBpbiBhZG1pbiBhbmQgZnJvbnRlbmQgaWYgdGhlcmUgd2VyZSBubyBob2xpZGF5cy48L2xpPgoJPC91bD4KCTwvbGk+Cgk8bGk+VmVyc2lvbiAxLjE1LjIKCTx1bD4KCSAgIDxsaT5GaXhlcyBqYXZhc2NyaXB0IGVycm9ycyB3aXRoIGRhdGUgZm9ybWF0cyBpbiBmdWxsY2FsZW5kYXIgaW4gdGhlIGFkbWluIHBhbmVsLjwvbGk+Cgk8L3VsPgoJPGxpPlZlcnNpb24gMS4xNS4yCgk8dWw+CgkgICA8bGk+QWRkcyBtaXNzaW5nIGNvZGUgZnJvbSB1cGdyYWRlIHJvdXRpbmUgdG8gY3JlYXRlIGEgbmV3IHN5c3RlbSBkZWZhdWx0IGFuZCBpbml0aWFsIGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZS48L2xpPgoJPC91bD4KCTwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS4zCiAgICAgICAgPHVsPgogICAgICAgICAgIDxsaT5BZGRzIG1pc3NpbmcgdXBncmFkZSByb3V0aW5lIHRvIHBvcHVsYXRlIHNhbXBsZSBmdWxsY2FsZW5kYXIgdGVtcGxhdGUuPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNAogICAgICAgIDx1bD4KCSAgIDxsaT5DYXRlZ29yeSBwYXJhbSBub3cgd29ya3MgZm9yIHRoZSBmdWxsY2FsZW5kYXIgYWN0aW9uLjwvbGk+CgkgICA8bGk+Rml4ZXMgYW4gaXNzdWUgd2l0aCB3ZWVrbHkgcmVjdXJyaW5nIGV2ZW50cy48L2xpPgoJICAgPGxpPm1pbm9yIFVJIGNoYW5nZXMgaW4gdGhlIGFkZCBldmVudCB0ZW1wbGF0ZS48L2xpPgoJICAgPGxpPm1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICAgICAgIDwvdWw+Cgk8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNQogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Rml4ZXMgcHJvYmxvZW0gd2l0aCBjaGFuZ2luZyBmaWVsZCBuYW1lcy48L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Rml4ZXMgcHJvYmxvZW0gd2l0aCBkaXNwbGF5aW5nIGNoaWxkIGV2ZW50cyBpbiBmdWxsY2FsZW5kYXIgdmlldyA8ZW0+KE5vdGU6IGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZSBuZWVkcyB0byBiZSByZXNldCB0byBmYWN0b3J5IHNldHRpbmdzKTwvZW0+PC9saT4KICAgICAgICAgICAgPGxpPkFkZHMgc2FtcGxlIGRhdGUgZm9ybWF0dGluZyB0byBmdWxsY2FsZW5kYXI8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuOAogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+RW5oYW5jZSB0aGUgaW1hZ2UgdXBsb2FkIGRpcmVjdG9yeSBiZWhhdmlvciBzbyB0aGF0IHBhdGhzIHJlbGF0aXZlIHRvIHRoZSByb290IG9yIHVwbG9hZHMgZGlyZWN0b3J5IGNhbiBiZSBzcGVjaWZpZWQuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4xNC54CiAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAtIFRoZSAxLjE0IHNlcmllcyBpbnRyb2R1Y2VzIGEgZ3JlYXQgZGVhbCBvZiBpbXByb3ZlbWVudHMuICBJdCBhbHNvIGZpeGVzIGEgbG90IG9mIG91dHN0YW5kaW5nIGlzc3Vlcy4gIFRoZXJlIHdpbGwgcHJvYmFibHkgYmUgdGVtcGxhdGUgaW5jb21wYXRpYmlsaXRpZXMuPC9wPgogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gLSBGdXR1cmUgcmVsZWFzZXMgaW4gdGhpcyBzZXJpZXMgd2lsbCBiZSByZXBsYWNpbmcgdGhlIGZyb250ZW5kIGNhbGVuZGFyIHZpZXcgd2l0aCBmdWxsY2FsZW5kYXIuPC9wPgogICAgPHVsPgoJPGxpPlZlcnNpb24gMS4xNC40CiAgICAgICAgICA8dWw+CgkgICAgPGxpPmZpeGVzIHRvIGVudGl0aWVzIHdpdGggcmVzcGVjdCB0byB0aGUgZnJvbnRlbmQgZm9ybS4gIE5vdyBpdCBpcyBwb3NzaWJsZSB0byBzdWJtaXQgSFRNTCB2aWEgYWxsIHRleHQgYXJlYXMuICBIVE1MIGlzIHNhbml0aXplZCBiZWZvcmUgYmVpbmcgc3RvcmVkLiAgVGV4dCBpbnB1dCBmaWVsZHMgYXJlIGFsc28gc2FuaXRpemVkIG9uIGZyb250ZW5kIGZvcm1zLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPlRoaXMgbWF5IGludHJvZHVjZSBhIGNvbXBhdGliaWxpdHkgcHJvYmxlbS48L2xpPgogICAgICAgICAgICA8bGk+Tm93IHJlcXVpcmVzIFBIUCA1LjQuMys8L2xpPgogICAgICAgICAgPC91bD4KCTwvbGk+CgoKCTxsaT5WZXJzaW9uIDEuMTQuMwoJPHA+VGhlIDEuMTQueCBzZXJpZXMgc3RvcHMgdXNpbmcgdGhlIGhhcmRjb2RlZCBtb250aCBhbmQgZGF5IG5hbWVzIGluIHRoZSBsYW5nIGZpbGUgYW5kIGJlZ2FuIHVzaW5nIGxvY2FsZSBzcGVjaWZpZWQgZGF0ZSBuYW1lcy4gIElmIHlvdSBhcmUgZW5jb3VudGVyaW5nIGFuICdvZmYgYnkgb25lJyBwcm9ibGVtIGluIHRoZSBDR0NhbGVuZGFyIGRpc3BsYXkgdGVtcGxhdGVzIHlvdSB3aWxsIHdhbnQgdG8gZml4IHVwIHlvdXIgZnJvbnRlbmQgdGVtcGxhdGVzLiAgUmVzdG9yaW5nIGZyb250ZW5kIHRlbXBsYXRlcyB0byBmYWN0b3J5IGRlZmF1bHRzIHNob3VsZCBzb2x2ZSB0aGUgaXNzdWUuICBFc3NlbnRpYWxseSwgeW91IHNob3VsZCBub3QgdXNlIHRoZSB7JG1vbnRoX25hbWVzfSBvciB7JGRheV9uYW1lc30gYXJyYXkgKHRoZXkgYXJlIG9uZSBiYXNlZCkuICBBbmQgaW5zdGVhZCBzaG91bGQgdXNlIHRoZSB7JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR9IGFuZCB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfSBzbWFydHkgdmFyaWFibGVzLCBhbmQgdGhlIGRhdGVfZm9ybWF0IG1vZGlmaWVyIHRvIGZvcm1hdCBkYXRlcyBhcHByb3ByaWF0ZWx5LjwvcD4KCTx1bD4KCSAgPGxpPkZpeGVzIHRvIHRoZSB1cGNvbWluZyBsaXN0IHRlbXBsYXRlLjwvbGk+Cgk8L3VsPgoJPC9saT4KCgk8bGk+VmVyc2lvbiAxLjE0LjIKCTx1bD4KCTxsaT5SZXN0b3JlcyBpbXBvcnQgbGluayAob29wcykuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMgoJPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAgaW4gdGhlIG5lYXIgZnV0dXJlIChkZXBlbmRpbmcgdXBvbiBzcG9uc29yc2hpcCkgSSBwbGFuIHRvIHJlcGxhY2UgdGhlIGNhbGVuZGFyIHZpZXcgd2l0aCBhbiBhamF4eSBjYWxlbmRhciAoZnVsbGNhbGVuZGFyKS4gICBUaGlzIHdpbGwgcHJvYmFibHkgYnJlYWsKICAgICBjb21wYXRpYmlsaXR5LiAgWW91IGFyZSBmb3Jld2FybmVkLjwvcD4KCTx1bD4KCTxsaT5CdWcgZml4ZXMuPC9saT4KCTxsaT5SZXZpc2UgbGlzdCB0ZW1wbGF0ZSB0byB1c2UgZGF0ZV9mb3JtYXQgaW5zdGVhZCBvZiBoYXJkY29kZWQgbW9udGgvZGF5IHN0dWZmLiAoc3RpbGwgaGF2ZSB0byBkbyBjYWxlbmRhciB0ZW1wbGF0ZSk8L2xpPgoJPGxpPlJldmlzZWQgdXBjb21pbmcgbGlzdCBhY3Rpb24gdG8gY2FsbCB0aGUgdGVtcGxhdGUgZXZlbiBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzLjwvbGk+Cgk8bGk+UmV2aXNlZCB0aGUgZXZlbnQgbG9hZGVyIHRvIGZpZ3VyZSBvdXQgYSBjb2xvciBmb3IgZXZlbnQgKGJhc2VkIG9uIGNhdGVnb3J5IGNvbG9ycykuPC9sST4KCTxsaT5SZXZpc2UgdGhlIGxpc3QsIGFuZCBjYWxlbmRhciB0ZW1wbGF0ZXMgdG8gc2hvdyBzb21lIGFqYXh5IHN0dWZmLCBhbmQgdGhlIHVzZSBvZiBjb2xvcnMuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMQoJPHVsPgoJPGxpPkJ1ZyBmaXhlcy48L2xpPgoJPGxpPldlZWsgYW5kIGRheSBuYW1lcyBhcmUgbm93IGdlbmVyYXRlZCBieSB0aGUgbG9jYWxlLCBub3QgZnJvbSBsYW5nIHN0cmluZ3MuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQKCTx1bD4KCTxsaT5JbXBsZW1lbnRzIGZ1bGxjYWxlbmRhciBmb3IgdGhlIHByaW1hcnkgZXZlbnQgbGlzdGluZy4KCTx1bD4KICAJICA8bGk+RHJhZyBhbmQgZHJvcCBldmVudHMgdG8gbW92ZSB0aGVtIHRvIGRpZmZlcmVudCBkYXRlcywgb3IgYWRqdXN0IGVuZCB0aW1lIChhamF4KTwvbGk+CgkgIDxsaT5EZWxldGUgZXZlbnRzIHZpYSBhamF4PGxpPgoJPC91bD4KCTwvbGk+Cgk8bGk+QWRkcyB0aGUgQWxsIGRheSBldmVudCBmbGFnPC9saT4KCTxsaT5Bc3NvY2lhdGVzIGNvbG9ycyB3aXRoIGNhdGVnb3JpZXMgKHNleHkgaW4gdGhlIGZ1bGxjYWxlbmRhciB2aWV3KS4uLiBub3QgeWV0IGF2YWlsYWJsZSBpbiB0aGUgZnJvbnRlbmQuPC9saT4KCTxsaT5SZXdvcmsgdG8gdGhlIGFkZC9lZGl0IGV2ZW50IGZvcm0gKGFkbWluKTwvbGk+Cgk8bGk+Tm93IGRlcGVuZHMgb24gQ0dTaW1wbGVTbWFydHkuPC9saT4KCTxsaT5idWcgZml4ZXMuPC9saT4KCTwvdWw+Cgk8L2xpPgogICAgPC91bD4KICA8L2xpPgoKCjxsaT5WZXJzaW9uIDEuMTMueAogIDx1bD4KICAgIDxsaT5BZGRzIHR3byBuZXcgcGVybWlzc2lvbnMgKEFkZCBDYWxlbmRhciBFdmVudHMsIEVkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzKS48L2xpPgogICAgPGxpPk1pbm9yIGNsZWFudXAgb2YgdGhlIGFkbWluIGFkZCBldmVudCB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPk1pbm9yIHR3ZWFraW5nIHRvIHRoZSBldmVudCBsaXN0IHRlbXBsYXRlLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xMi54IC0gTm92ZW1iZXIsIDIwMTMKICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJbiB0aGUgZnV0dXJlIEkgd2lsbCBiZSBtb3ZpbmcgaW1hZ2VzIGludG8gdGhlaXIgb3duIGRpcmVjdG9yeSwgYW5kIGNsZWFuaW5nIHVwIHByZWZlcmVuY2VzIG1vcmUuICBUaGlzIHdpbGwgcHJvYmFibHkgY2F1c2UgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgZnV0dXJlLjwvcD4KICA8dWw+CiAgICA8bGk+UmVtb3ZlZCBhbGwgaW1hZ2UgY3JvcHBpbmcgb24gdXBsb2FkLgogICAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGNvdWxkIGNhdXNlIGNvbXBhdGliaWxpdHkgcHJvYmxlbSB3aXRoIGRpc3BsYXlpbmcgaW1hZ2VzIGluIHlvdXIgZXhpc3RpbmcgdGVtcGxhdGVzLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+QWRkcyB0aGUgZmlsZSBhdHRhY2htZW50IGZpZWxkIHR5cGUuPC9saT4KICAgIDxsaT5Db2RlIGNsZWFudXAgYW5kIGJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTEueCAtIE9jdG9iZXIsIDIwMTMKICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZXJlIHByb2JhYmx5IHdpbGwgYmUgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBmb3IgcGVvcGxlIHVwZ3JhZGluZyB0byBDR0NhbGVuZGFyIDEuMTEueCBhbmQgYmV5b25kIGZyb20KICBwcmV2aW91cyB2ZXJzaW9ucy4gIFBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHRoZSBkcm9wcGVkIHBhcmFtZXRlcnMgPGVtPihzZWUgYmVsb3cpPC9lbT4gYW5kIHNvbWUgb2YgdGhlIGlubGluZSBmaXhlcyBhbmQgY2hhbmdlcy4KICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRlc3Rpbmcgb24geW91ciBDR0NhbGVuZGFyIGluc3RhbGxzIGFuZCBmaXggYW55IGNhbGxzIHRvIENHQ2FsZW5kYXIsIGFuZCBhbHNvIG1ha2Ugc29tZSBjaGFuZ2VzIHRvIHRlbXBsYXRlcy48L3A+CiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogICAgPGxpPkRyb3BwZWQgdGhlIGNvbHVtbiBwYXJhbWV0ZXJzICh0aGlzIGlzIGEgZGVzaWduIHJlbGF0ZWQgaXRlbSwgbm90IHJlbGF0ZWQgdG8gYnVzaW5lc3MgbG9naWMgYW5kIHNob3VsZCBiZSBkb25lIGluIHRlbXBsYXRlcy4pLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgcmV0dXJubGluayBwYXJhbWV0ZXJzIGFzIHRoZXkgZGlkbnQgd29yayBwcm9wZXJseS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIHRlbXBsYXRlcy4gIChoaXN0b3J5LmdvKC0xKSBvciBzb21ldGhpbmcpLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgZmlyc3QtZGF5LW9mLXdlZWsgcGFyYW1ldGVyLCBhbmQgcmVwbGFjZWQgaXQgd2l0aCBhIHByZWZlcmVuY2UuPC9saT4KICAgIDxsaT5BbGwgbmF2aWdhdGlvbiBsaW5rcyBvbiBwcm90b3R5cGUgdGVtcGxhdGVzIG5vdyB1c2Ugbm9uLWlubGluZSBVUkxTLjwvbGk+CiAgICA8bGk+QWRkZWQgZGlzcGxheT13ZWVrbGlzdDwvbGk+CiAgICA8bGk+UmVmYWN0b3JlZCB0aGUgZXZlbnQgZGlzcGxheSBpbiB0aGUgYWRtaW4gcGFuZWwuCiAgICAgIDx1bD4KICAgICAgICA8bGk+RXZlbnRzIGFyZSBub3cgZGlzcGxheWVkIG9ubHkgZm9yIGEgc3BlY2lmaWVkIG1vbnRoIGFuZCB5ZWFyLjwvbGk+CiAgICAgICAgPGxpPkVhc3kgc2VsZWN0aW9uIG9mIG1vbnRoIGFuZCB5ZWFyLCBhbmQgc2Nyb2xsaW5nIGJldHdlZW4gbW9udGhzLjwvbGk+CiAgICAgICAgPGxpPlRoZSBhYmlsaXR5IHRvIGVkaXQgYSBwYXJlbnQgZXZlbnQgZnJvbSBhIGNoaWxkIGV2ZW50LjwvbGk+CiAgICAgICAgPGxpPkZpbHRlcnMgYXJlIHN0b3JlZCBpbiB0aGUgdXNlciBzZXNzaW9uLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPlJlZmFjdG9yZWQgYW5kIGNoZWNrZWQgYWxsIHBhcmFtZXRlcnMgcGFzc2VkIHRvIG5hdmlnYXRpb24gbGlua3MgaW4gdGhlIGluZGl2aWR1YWwgdmllZXdzPC9saT4KICAgIDxsaT5BbGwgbmF2aWdhdGlvbiB2aWV3cyBoYXZlIGluXyBhbmQgbmlfIHZhcmlhbnRzIHRvIGFsbG93IHNlbGVjdGluZyBhbiBpbmxpbmUsIG9yIG5vbiBpbmxpbmUgdmFyaWFudCBvZiB0aGUgbmF2aWdhdGlvbiBsaW5rLiAgVGhvdWdoIHRoZSBuaV8gcHJlZml4ZWQgVVJMUyBtYXkgaW5mYWN0IGJlIGlubGluZSBsaW5rcyBkZXBlbmRpbmcgdXBvbiB0aGUgdXNlX3Nlc3Npb24gc3R1ZmYuPC9saT4KICAgIDxsaT5EYXkgdmlldyBVUkxTIGZyb20gdGhlIGNhbGVuZGFyIHZpZXcgbm93IGhhdmUgbmlfIGFuZCBpbl8gdmFyaWFudHMuPC9saT4KICAgIDxsaT5UaGUgaW5saW5lIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZSBkcm9wcGVkIGF0IHRoZSBuZXh0IG1ham9yIHZlcnNpb24uPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIGFsbCBldmVudCB2aWV3cwogICAgICA8dWw+CiAgICAgICAgPGxpPkFsbCBldmVudCB2aWV3cyB1c2UgdGhlIGNnY19ldmVudF9sb2FkZXIgY2xhc3MuPC9saT4KICAgICAgICA8bGk+T3B0aW1pemUgY3VzdG9tIGZpZWxkLCBhbmQgY2F0ZWdvcnkgbG9hZGluZy48L2xpPgogICAgICAgIDxsaT5DdXN0b20gZmllbGRzIGFuZCBjYXRlZ29yaWVzIGFyZSBub3cgY29waWVkIGZyb20gdGhlIHBhcmVudCBldmVudCBpZiBub3Qgc3BlY2lmaWVkIGZvciB0aGUgY2hpbGQgZXZlbnQuPC9saT4KICAgICAgICA8bGk+QWxsIGxpbmtzL1VSTHMgZ2VuZXJhdGVkIHRvIGV2ZW50cyB1c2UgcHJldHR5IFVSTFMgKGlmIGVuYWJsZWQpIGFuZCBhcmUgbm9uIGlubGluZS48L2xpPgogICAgICAgIDxsaT5hdXRob3IgZmllbGQgbWF5IGJlIHByZXNlbnQgZm9yIGVhY2ggZXZlbnQgdGhhdCBoYXMgYW4gYXV0aG9yLi4uIGJ1dCBhdXRob3JuYW1lICh3aGljaCB3YXMgaW5jb25zaXN0ZW50bHkgYXBwbGllZCkgaGFzIGJlZW4gZHJvcHBlZC4gIFVzZSBhIHNtYXJ0eSBwbHVnaW4gdG8gZXh0cmFjdCB0aGUgYXV0aG9yIGluZm9ybWF0aW9uIGFuZCBkaXNwbGF5IGl0LjwvbGk+CiAgICAgICAgPGxpPnVzZV9zZXNzaW9uIG5vdyBhdXRvbWF0aWNhbGx5IHR1cm5zIG9uIGlubGluZSBtb2RlLi4gYW5kIHdpbGwgdXNlIGlubGluZSBtb2RlIGZvciBldmVuIG5pXyBsaW5rcy91cmxzPC9saT4KICAgICAgICA8bGk+dXNlX3Nlc3Npb24gdmFsdWUgaXMgb25seSB1c2VkIGFzIGEgcHJlZml4IGZvciB0aGUgc2Vzc2lvbiBrZXkuICBUaGUgc2Vzc2lvbiBrZXkgaXMgdW5pcXVlIHRvIGFsbCBjYWxscyBvZiBDR0NhbGVuZGFyLjwvbGk+CiAgICAgICAgPGxpPmZpZWxkIG91dHB1dCBpcyBub3cgY29uc2lzdGVudCB3aXRoIGZpZWxkIG9yZGVyaW5nIChieSBkZWZhdWx0KS48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBhZG1pbiBjYXRlZ29yaWVzIHRhYi4KICAgICAgPHVsPgogICAgICAgIDxsaT5BZGRzIGRyYWcgYW5kIGRyb3AgcmVvcmRlcmluZy48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBhZG1pbiBmaWVsZHMgdGFiLgogICAgICA8dWw+CiAgICAgICAgPGxpPkFkZHMgZHJhZyBhbmQgZHJvcCByZW9yZGVyaW5nLjwvbGk+CiAgICAgICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSB3ZXRoZXIgYSB0ZXh0IGFyZWEgZmllbGQgaGFzIGEgd3lzaXd5ZyAoYWRtaW4gaW50ZXJmYWNlIG9ubHkpLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPk1vcmU8L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTAuMiAtIEZlYnJ1YXJ5LCAyMDEzCiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTAgLSBBdWd1c3QgMjAxMgogIDx1bD4KICAgIDxsaT5BZGRzIGEgdG9nZ2xlIHRvIHVzZSB3eXNpd3lncyBmb3IgdGV4dGFyZWEgY3VzdG9tIGZpZWxkcy48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgZnJpZW5kbHkgbmFtZS48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjkuNyAtIEp1bHkgMjAxMgogIDx1bD4KICAgPGxpPk51bWVyb3VzIG1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICA8bGk+TW92ZSBoZWxwIG91dCBvZiBsYW5nIGZpbGUuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjYgLSBBcHJpbCAyMDEyCiAgPHVsPgogICA8bGk+TnVtZXJvdXMgbWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5GaXggamF2YXNjcmlwdCBpc3N1ZSBpbiBlZGl0IGV2ZW50LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuOS40IC0gTWFyY2gsIDIwMTIKICA8dWw+CiAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMuPC9saT4KICAgPGxpPkZpeGVkIG5vdGljZXMgaW4gZGVmYXVsdCB0ZW1wbGF0ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjEgLSBNYXJjaCwgMjAxMgogIDx1bD4KICAgPGxpPkFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBpbXBvcnQgY29sdW1uIGRlbGltaXRlcjwvbGk+CiAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45IC0gSmFudWFyeSwgMjAxMgogIDx1bD4KICAgPGxpPkltcHJvdmVkIGV2ZW50IGltcG9ydCBjYXBhYmlsaXRpZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS44LjIgLSBPY3RvYmVyLCAyMDExCiAgPHVsPgogICA8bGk+TWlub3IgZXZlbnQgbmFtZSBmaXguPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjUgLSBBdWd1c3QsIDIwMTEKICA8dWw+CiAgPGxpPkFkcyBmaXJzdCBkYXksIGFuZCBsYXN0IGRheSBzdHVmZiB0byB0aGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjMgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5Nb3JlIEZpeGVzIHRvIHRoZSBsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjIgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5GaXhlcyB0byB0aGUgbGlzdCB2aWV3LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNy4xIC0gSnVseSwgMjAxMQogIDx1bD4KICA8bGk+VGhlIHVuaXF1ZV9vbmx5IHBhcmFtZXRlciBub3cgZGVmYXVsdHMgdG8gJnF1b3Q7b2ZmJnF1b3Q7IGZvciBhbGwgdmlld3MuPC9saT4KICA8bGk+QWRkcyB0aGUgZGlzcGxheWZvcmRheSBwYXJhbWV0ZXIgdG8gdGhlIHVwY29taW5nbGlzdCB2aWV3LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNyAtIEp1bmUsIDIwMTEKICA8dWw+CiAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIHRoZSAmcXVvdDtteWV2ZW50cyZxdW90OyB2aWV3IGJ5IGEgY2F0ZWdvcnkuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS42LjEgLSBBcHJpbCwgMjAxMQogIDx1bD4KICAgIDxsaT5SZW1vdmUgZGVidWcgc3RhdGVtZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjYgLSBBcHJpbCwgMjAxMQogIDx1bD4KICAgIDxsaT5BZGRzIGEgY29tcGFueSBkaXJlY3RvcnkgZmllbGQgdHlwZS48L2xpPgogICAgPGxpPkJ1ZyBGaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNyAtIFNlcHRlbWJlciAyMDEwCiAgPHVsPgogICAgPGxpPk1vcmUgZml4ZXMgdG8gZGlzcGxheWNhbGVuZGFyIGFuZCBkaXNwbGF5dXBjb21pbmdsaXN0LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS42IC0gU2VwdGVtYmVyIDIwMTAKICA8dWw+CiAgICA8bGk+Rml4ZXMgdG8gdXBjb21pbmcgbGlzdCBwYWdpbmF0aW9uLjwvbGk+CiAgICA8bGk+Rml4ZXMgdG8gdW5pcXVlIG9ubHkgcGFyYW0gaW4gdXBjb21pbmcgbGlzdC48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNSAtIEF1Z3VzdCAyMDEwCiAgPHVsPgogICAgPGxpPk5vdyBSZXF1aXJlIENHRXh0ZW5zaW9ucyAxLjE5LjQ8L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgVVJMIHByZWZpeC48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIHRvIGRlZmF1bHQgbmV3IGV2ZW50cyB0byBhbGwgZGF5IGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgZGVmYXVsdCBzdGFydCB0aW1lIGZvciBub24tYWxsZGF5IGV2ZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNCAtIEF1Z3VzdCAyMDEwCiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuMyAtIEp1bHkgMjAxMAogIDx1bD4KICAgIDxsaT5NaW5vciBidWcgZml4LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS4yIC0gQXByaWwgMjAxMAogIDx1bD4KICAgIDxsaT5SZW1vdmUgbGVmdG92ZXIgZGVidWcgc3RhdGVtZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuMSAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNSAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIHNlYXJjaCBvbiBjdXN0b20gZmllbGQgdmFsdWVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNCAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzIHdydCBkZWxldGluZyBldmVudHMuPC9saT4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IGZvciBsb2dnZWQgaW4gZnJvbnRlbmQgdXNlcnMgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnRzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMy4xIC0gTWFyY2ggMjAxMAogIDx1bD4KICAgIDxsaT5NaW5vciBidWdmaXggaW4gaW5zdGFsbGVyLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMyAtIERlY2VtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+QWRkcyB0aGUgY29uY2VwdCBvZiBhbGwgZGF5IGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gYWxsb3cgZXZlbnRzIHRvIG92ZXJsYXAgb3Igbm90LjwvbGk+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byByZW1vdmUgYWxsIGNvbmZsaWN0aW5nL292ZXJsYXBwaW5nIGV2ZW50cy48L2xpPgogICAgPGxpPlZhcmlvdXMgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMi41IC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KCjxsaT5WZXJzaW9uOiAxLjIuNCAtIFNlcHRlbWJlciAyMDA5CiAgPHVsPgogICAgPGxpPkFkZHMgc3VwcG9ydCBmb3IgdGV4dGFyZWEgZmllbGRzLjwvbGk+CiAgICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMi4zIC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+Rml4ZXMgc3R1cGlkIGVycm9ycyB3aXRoIHRoZSBpbnN0YWxsZXIuPC9saT4KICAgIDxsaT5BZGRzIHVuaXF1ZV9vbmx5IHBhcmFtZXRlci48L2xpPgogICAgPGxpPkFkZHMgYmFzaWMgaWNhbCBzdXBwb3J0IGluIGV2ZW50IHZpZXdzLihUZWQpPC9saT4KICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjIgLSBNYXkgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBlZGdlIGNhc2UgcHJvYmxlbSB3aXRoIGRhdGVzIHJlY3VycmluZyBtb250aGx5IG9uIHRoZSBOdGggd2Vla2RheTwvbGk+CiAgICA8bGk+Rml4ZXMgdXBjb21pbmdsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjEgLSBNYXkgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBwcm9ibGVtIHdpdGggZGF0ZXMgcmVjdXJyaW5nIG1vbnRobHkgb24gdGhlIE50aCB3ZWVrZGF5PC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yIC0gQXByaWwgMjAwOQogIDx1bD4KICAgIDxsaT5BZGRzIHBhZ2luYXRpb24gdG8gdXBjb21pbmcgbGlzdCB2aWV3LjwvbGk+CiAgICA8bGk+VmFyaW91cyBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4xIC0gTWFyY2ggMjAwOQogPHVsPgogICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5BZGQgZW5oYW5jZWQgbW9udGhseSByZWN1cmluZyBldmVudCBjYXBhYmlsaXRpZXMuPC9saT4KICAgPGxpPkFkZCBzZWFyY2ggZm9ybS48L2xpPgogPC91bD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDEuMDwvcD4KPHA+Rm9yayB2ZXJzaW9uIDAuOC4yIG9mIHRoZSBDYWxlbmRhciBtb2R1bGUsIGFuZCBjb21wbGV0ZWx5IHJlLWRvIGV2ZW50IGFkZGluZywgZWRpdGluZywgcmVjdXJyaW5nIGV2ZW50cywgYW5kIHRlbXBsYXRlcy4gIFRoaXMgbW9kdWxlIGlzIG5vdCBjb21wdGlibGUgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgQ2FsZW5kYXIgbW9kdWxlPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC44LjI8L3A+CiAgPHA+Rml4IHRvIHByZXR0eSB1cmxzLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuOC4xPC9wPgogIDxwPk1pbm9yIGZpeCB0byBzZWFyY2ggaW50ZWdyYXRpb24gd2hlbiB1cGRhdGluZyBhbiBldmVudC48L3A+CiAgPHA+QWRkIGNhdGVnb3JpZXMgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QgZGlzcGxheS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjg8L3A+CiAgPHA+QWRkcyBzZWFyY2ggY2FwYWJpbGl0aWVzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjE0PC9wPgogIDxwPkZpeGVzIGEgc2VyaW91cyBpc3N1ZSB0aGF0IGNvdWxkIHJlc3VsdCBpbiB0aG91c2FuZHMgb2YgbmVlZGxlc3MgY2FsZW5kYXIgZW50cmllcyBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTM8L3A+CiAgPHA+Rml4ZXMgZnJpZW5kbHkgdXJscyBmb3IgZGV0YWlsIGFydGljbGVzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjEyPC9wPgogIDxwPkZpeGVzIGZpbGUgdXBsb2FkIGZpZWxkczwvcD4KICA8cD5GaXhlcyBpc3N1ZXMgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBBbGJ1bSBtb2R1bGU8L3A+CiAgPHA+QWRkcyByZWN1cnJpbmcgZXZlbnRzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjExPC9wPgogIDxwPkZpeGVkIGEgYnVnIGludHJvZHVjZWQgYnkgYnJpbmluZyBpbiB0aGUgY2F0ZWdvcmllcywgd2hlcmVieSB0aGUgam9pbiBkaWQgbm90IHdvcmsgb24gZWFybGllciB2ZXJzaW9ucyBvbiBteVNRTC4gKGNvZGVwb2V0KTwvcD4KICA8cD5BZGRlZCBhIGxpc3Qgb2YgY2F0ZWdvcmllcyB0aGF0IGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRvIHRoZSBkYXRhIGF2YWlsYWJsZSB0byB0aGUgdGVtcGxhdGUuIChjb2RlcG9ldCk8L3A+CiAgPHA+Rml4ZWQgYSBidWcgaW50cm9kdWNlZCBpbiAwLjcuMTAgdGhhdCBwcmV2ZW50cyBhIGNsZWFuIGluc3RhbGwgZnJvbSB3b3JraW5nLCBiZWNhdXNlIG9mIGFuIGV4dHJhIGNvbW1hIG9uIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGxpc3QgZm9yIHRhYmxlIGNtc19tb2R1bGVfZWNhbGFuZGVyX2V2ZW50X2ZpZWxkX3ZhbHVlcyAoY29kZXBvZXQpPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjEwIC0gY2FsZ3V5MTAwMDwvcD4KPHA+QWRkZWQgc3VwcG9ydCBmb3IgZmlsZSB1cGxvYWRzIGluIGN1c3RvbSBmaWVsZHM8L3A+CjxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHN1cHBseSBcJ25leHRcJyBhcyB0aGUgZXZlbnRfaWQgaW4gdGhlIGV2ZW50IGRpc3BsYXksIHRvIGRpc3BsYXkgdGhlIG5leHQgdXBjb21pbmcgZXZlbnQuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43Ljk8L3A+CiAgPHA+QWRkZWQgY3VzdG9tIGZpZWxkcyB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggZWFjaCBldmVudC48L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43Ljg8L3A+CiAgPHA+Rml4ZWQgYSBkZXRhaWxwYWdlL3JldHVybmxpbmsgYnVnLi4uIGFnYWluLi4uPC9wPgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy43PC9wPgogIDxwPkFkZGVkIGEgZGVmYXVsdCBjYXRlZ29yeTwvcD4KICA8cD5BZGRlZCBhbiBvcHRpb24gdG8gYWxsb3cgYW4gZXZlbnQgdG8gYmUgZm9yY2VkIGEgbWVtYmVyIG9mIGF0IGxlYXN0IDEgY2F0ZWdvcnk8L3A+CiAgPHA+QWRkZWQgb3B0aW9ucyBvZiBob3cgbWFueSB5ZWFycyBpbiB0aGUgcGFzdCBhbmQgZnV0dXJlIHlvdSBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3Q8L3A+CiAgPHA+UHJvZ3Jlc3MgdG93YXJkcyBtb3JlIHVwdG9kYXRlIEFQSS11c2FnZSwgdXNpbmcgdGVtcGxhdGVzLCBhY3Rpb25zIGV0Yy48L3A+CiAgPHA+TnVtZXJvdXMgYnVnZml4ZXM8L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43LjY8L3A+CiAgPHA+QWRkZWQgY29sdW1uIHN0eWxlIG91dHB1dCBmb3IgdXBjb21pbmdsaXN0IGFuZCBwYXN0bGlzdDwvcD4KICA8cD5Nb3ZlZCBleGFtcGxlIHN0eWxlc2hlZXQgdG8gdGhlIHN0eWxlc2hlZXRsaXN0PC9wPgogIDxwPkFkZGVkIHRhZ2dpbmcgb2YgZXZlbnRzIGFuZCBkZWxldGlvbnMgb2YgdGFnZ2VkIG9uZXM8L3A+CiAgPHA+UmV3b3JrZWQgZm9yIHVzZSBvZiBleHRlcm5hbCBhY3Rpb25maWxlczwvcD4KICA8cD5JbXByb3ZlZCB0YWItZnVuY3Rpb25hbGl5IGFuZCBhY3Rpb25tZXNzYWdlczwvcD4KPC9saT4KCjxsaT48cD5WZXJzaW9uOiAwLjcuNTwvcD4KICA8cD5GaXhlZCBhIGxvdCBvZiBvcGVuYmFzZWRpci1pc3N1ZXM8L3A+Cgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy40PC9wPgogIDxwPkZpeGVkIGhhcmRjb2RlZCBsZW5ndGggb2YgdGl0bGUgaW5wdXQgZmllbGQ8L3A+CiAgPHA+Rml4ZWQgc29tZSBtaXNzaW5nIGxvY2FsaXphdGlvbjwvcD4KICA8cD5SZW1vdmVkIHN1cHBvcnQgZm9yIHByZXR0eSB1cmxzIChpdCB3YXMgbm90IHdvcmtpbmcsIGFzIHNvbWUgcGFyYW1ldGVycyB3ZXJlIG1pc3NpbmcsIGFuZCBwdXR0aW5nIHRoZW0gaW4gd291bGQgaGF2ZSBtYWRlIHRoZSB1cmxzIHVucHJldHR5IGFueXdheXM8L3A+CgogIDxwPlVwZGF0ZWQgcGVybWlzc2lvbnMgbW9kZWwuICBOb3cgbmVlZCBcJ01vZGlmeSBUZW1wbGF0ZXNcJyBwZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGVzLCBhbmQgXCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlc1wnIHBlcm1pc3Npb24gdG8gYWRqdXN0IHRoZSBwcmVmZXJlbmNlcy48L3A+Cgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjM8L3A+CiAgICA8cD5BZGRlZCBNaW5pbXVtIENNUyBWZXJzaW9uPC9wPgogICAgPHA+QWRkZWQgdGhlIHBhc3RsaXN0IG9wdGlvbjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNy4yPC9wPgogICAgPHA+Q01TIDEuMCBjb21wYXRpYmxpdHk8L3A+CiAgICA8cD5TcGxpdCBvdXQgaW50byBudW1lcm91cyBmaWxlcyBmb3IgYmV0dGVyIG1lbW9yeSBlZmZpY2llbmN5PC9wPgogICAgPHA+SW50cm9kdWNlZCByZWZlcmVuY2VzIHdoZXJlIG5lY2Vzc2FyeSB0byBpbXByb3ZlIG1lbW9yeSBlZmZpY2llbmN5PC9wPgogICAgPHA+QWRkZWQgZnVuY3Rpb25zIHRvIGFsbG93IGZvciB0YWxraW5nIHdpdGggdGhpcyBtb2R1bGUgdmlhIG90aGVyIG1vZHVsZXM8L3A+CiAgICA8cD5BZGRlZCBldmVudHM8L3A+CiAgICA8cD5JbXByb3ZlZCBzZWN1cml0eSBhbmQgcmVkdWNlZCBtZW1vcnkgZm9vdHByaW50PC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43IHN0YWJsZTwvcD4KICAgIDxwPkZpeGVkIHByb2JsZW0gd2l0aCBicm9rZW4gbW9udGggbGlzdCBvbiAzMXN0IG9mIGVhY2ggbW9udGg7PC9wPgogICAgPHA+Rml4ZWQgcHJvYmxlbSB3aXRoIENhbGVuZGFyIHNob3dpbmcgaW4gdGhlIG1lbnUgZm9yIHVuYXV0aG9yaXplZCBhZG1pbiB1c2Vycy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdiZXRhMzwvcD4KICAgIDxwPkFkZGVkIHRoZSB5ZWFybGlzdCB2aWV3IG9wdGlvbiB0byBsaXN0IGFsbCBldmVudHMgaW4gdGhlIHllYXIuIEFjdHMgbGlrZSB0aGUgbGlzdCBvcHRpb24uPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YmV0YTI8L3A+CiAgICA8cD5BZGRlZCB0aGUgcmV2ZXJzZSBwYXJhbWV0ZXIgdG8gc2hvdyBldmVudHMgaW4gcmV2ZXJzZSBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuN2JldGExPC9wPgogICAgPHA+QWRkZWQgbmF2aWdhdGlvbiBpbiB0aGUgbGlzdCB2aWV3LCBmaXhlZCBwcm9ibGVtIHdpdGggZXZlbnRzIG5vdCBzaG93aW5nIHVwIGluIHRoZSBsaXN0IHZpZXcuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YWxwaGEyPC9wPgogICAgPHA+PHVsPgogICAgICAgPGxpPkJ1ZyBmaXg6IGluY2x1ZGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoITwvbGk+CiAgICAgICA8bGk+QnVnIGZpeDogdGVtcGxhdGUgdXNlIG9mICR0YWJsZV9pZCBzaG91bGQgaGF2ZSB7fSBhcm91bmQgaXQuPC9saT4KICAgICAgIDxsaT5JbmNsdWRlIGljb24gZm9yIGNvbnRlbnQgcGFnZS48L2xpPgogICAgICAgPGxpPldoaXRlc3BhY2UgY2hhbmdlcyAtIHRyYWlsaW5nIHNwYWNlcyBhbmQgdGFicy9zcGFjZSB0aWR5IHVwLjwvbGk+CiAgICAgICA8bGk+TWFrZSBkZWZhdWx0IHRlbXBsYXRlcyBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsIGNvbXBsaWFudC48L2xpPgogICAgPC91bD48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdhbHBoYTE8L3A+CiAgICA8cD5Db21wbGV0ZSByZXdyaXRlIHRvIGZpdCBpbnRvIDAuMTAueCBiZXR0ZXIuPC9wPgogICAgPHA+U3VwcG9ydCBsYW5ndWFnZSBmb3IgZGF5IGFuZCBtb250aCBuYW1lczwvcD4KICAgIDxwPlVzZSBzbWFydHkgdGVtcGxhdGVzIGZvciBjb250cm9sbGluZyB0aGUgZGlzcGxheS48L3A+CiAgICA8cD5SZXdyaXRlIHRoZSBTUUwgdXNlZCB0byBzZWxlY3QgdGhlIGV2ZW50cyB0byBob3BlZnVsbHkgYmUgbW9yZSBtYWludGFpbmFibGUuPC9wPgogICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdGhlIGxhbmd1YWdlIGZpbGVzIGFyZSBub3QgZnVsbHkgdXBkYXRlZCBmb3IgdGhpcyB2ZXJzaW9uITwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNi4xPC9wPgogICAgPHA+TW9yZSBmaXhlcyBmb3IgbXVsdGktZGF5IGV2ZW50IG9uIGNhbGVuZGFyLiBBZGRlZCBuZXcgcGFyYW1ldGVyICJ0aW1lX2Zvcm1hdCIgc28gd2UgY2FuIG1ha2UgdGhlIGRpc3BsYXkgb2YgYSBzaW5nbGUgZGF5IGV2ZW50IHdpdGggYSBzdGFydCBhbmQgc3RvcCB0aW1lIGxvb2sgYmV0dGVyLiBDaGFuZ2UgZGVfREVcJ3MgInRvIiB0byAiYmlzIiBhcyBwZXIgTW9yZHJhblwncyBwb3N0IG9uIHRoZSBib2FyZHMuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC42PC9wPgogICA8cD5GaXggZXZlbnQgZGlzcGxheSBzbyB0aGF0IGlmIHRoZSBlbmQgZGF0ZSBpcyBub3Qgc2V0LCB3ZSBkb25cJ3QgZGlzcGxheSAidG8iLjwvcD4KICAgPHA+RmlsdGVyIGJ5IGNhdGVnb3J5IHdoZW4gZGlzcGxheWluZyBhbiB1cGNvbWluZ2xpc3QuPC9wPgogICA8cD5GaXggRW5kIGRhdGUgc2V0dGluZyB0aGF0IHdhcyBvZmYgYnkgb25lLjwvcD4KICAgPHA+Rml4IG9kZCBiZWhhdmlvdXIgb2YgeWVhciB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBKYW4gdG8gRGVjIG9yIERlYyB0byBKYW4gaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9wPgogICA8cD5TdXBwb3J0IG11dGxpLWRheSBldmVudHMgaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC41PC9wPgogICAgPHA+Rml4IHRoZSBkcm9wIGRvd24gbGlzdCBmb3IgZW5kIGRhdGUgeWVhci4gRml4IERFIHRyYW5zbGF0aW9uIG9mICJSZXR1cm4iICh0aGFua3MgUGlyYXRvcyEpLjwvcD4KICAgIDxwPkZpeCBzcGFjaW5nIGFyb3VuZCAidG8iICh0aGFua3MgR3JlZyEpLiBBZGQgRGFuaXNoIGFuZCBEdXRjaCB0cmFuc2xhdGlvbnMgY291cnRlc3kgb2YgYm9hcmQgbWVtYmVycyBlc21hbm4gYW5kIGRvbnQuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC40PC9wPgogICAgPHA+U3VwcG9ydCBmb3IgbGFuZ3VhZ2UgdHJhbnNsYXRpb25zLiBEZWZhdWx0IHRvIGEgTlVMTCBlbmQgZGF0ZS4gSW1wcm92ZWQgdGhlIGhlbHAgaW5mb3JtYXRpb24uPC9wPgogICAgPHA+RGlzcGxheSB1cGNvbWluZyBldmVudHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIhIE90aGVyIG1pbm9yIGJ1ZyBmaXhlcy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjM8L3A+CiAgICA8cD5Jbml0aWFsIHN1cHBvcnQgZm9yICJGcm9tIiBhbmQgIlRvIiBkYXRlcyBmb3IgZXZlbnRzLiBBYmlsaXR5IHRvIGZpbHRlciBhZG1pbiBsaXN0IG9mIGV2ZW50cyBieSBjYXRlZ29yeS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjI8L3A+CiAgICA8cD5OZXcgZGlzcGxheSBvcHRpb246ICJ1cGNvbWluZ2xpc3QiLiBBbHNvIG1hbnkgYnVnZml4ZXMhPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC4xPC9wPgogICAgPHA+SW5pdGlhbCByZWxlYXNlLjwvcD4KPC9saT4KPC91bD4K]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/function.admindisplaymanageevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhJGdDbXMgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIHJldHVybjsKCgovLyBnZXQgdGhlIGxvY2FsZSBzcGVjaWZpZWQgZGF0ZXMKJGxvY2FsZV9pbmZvID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwpmb3JlYWNoKCAkbG9jYWxlX2luZm8gYXMgJGtleSA9PiAmJHZhbHVlICkgewogICAgJHZhbHVlID0ganNvbl9lbmNvZGUoJHZhbHVlKTsKfQokc21hcnR5LT5hc3NpZ24oJ2Nhbl9tYW5hZ2UnLCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdmaXJzdGRheW9md2VlaycsKGludCkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpcnN0ZGF5b2Z3ZWVrJywxKSk7CiRzbWFydHktPmFzc2lnbignZGF0ZXN0cmluZ3MnLCRsb2NhbGVfaW5mbyk7CiRzbWFydHktPmFzc2lnbigndGV4dF93ZWVrJywkdGhpcy0+TGFuZygnd2VlaycpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXh0X21vbnRoJywkdGhpcy0+TGFuZygnbW9udGgnKSk7CiRzbWFydHktPmFzc2lnbigndGV4dF9kYXknLCR0aGlzLT5MYW5nKCdkYXknKSk7CiRzbWFydHktPmFzc2lnbigndGV4dF90b2RheScsJHRoaXMtPkxhbmcoJ3RvZGF5JykpOwokc21hcnR5LT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiRzbWFydHktPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdob2xpZGF5X2ZnY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob2xpZGF5Zmdjb2xvcicsJyMwMDAwMDAnKSk7CiRzbWFydHktPmFzc2lnbignaG9saWRheV9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaG9saWRheWJnY29sb3InLCcjY2NmZmZmJykpOwokY2F0ZWdvcmllcyA9ICR0aGlzLT5HZXRDYXRlZ29yaWVzKCk7CmlmKCBpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgY291bnQoJGNhdGVnb3JpZXMpICkgewogICAgJG91dCA9IGFycmF5KCk7CiAgICAkb3V0Wy0xXSA9ICR0aGlzLT5MYW5nKCdhbnknKTsKICAgIGZvcmVhY2goICRjYXRlZ29yaWVzIGFzICRyb3cgKSB7CiAgICAgICAgJG91dFskcm93WydjYXRlZ29yeV9pZCddXSA9ICRyb3dbJ2NhdGVnb3J5X25hbWUnXTsKICAgIH0KICAgICRzbWFydHktPmFzc2lnbignY2F0ZWdvcmllcycsJG91dCk7Cn0KCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fZXZlbnRzX3RhYi50cGwnKTsK]]></data>
	</file>
	<file>
	  <filename>/function.admin_categories_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCiAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAkY2F0ZWdvcmllcyA9IFxDR0NhbGVuZGFyXGNhdGVnb3J5OjpnZXRfY2F0ZWdvcmllcygpOwoKICAkc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3JpZXMnLCRjYXRlZ29yaWVzKTsKICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2NhdGVnb3JpZXNfdGFiLnRwbCcpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_fieldstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9maWVsZHNfdXBkYXRlJywgJHJldHVybmlkLCAncG9zdCcsICcnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRmaWVsZHMgPSAkdGhpcy0+R2V0RmllbGRzKCk7CmlmKCBpc19hcnJheSgkZmllbGRzKSAmJiBjb3VudCgkZmllbGRzKSApICRzbWFydHktPmFzc2lnbignZmllbGRzJywkZmllbGRzKTsKCiR0eXBlcyA9IGFycmF5KCk7CiR0eXBlc1skdGhpcy0+TGFuZygndGV4dGZpZWxkJyldID0gJzAnOwokdHlwZXNbJHRoaXMtPkxhbmcoJ3VwbG9hZGZpZWxkJyldID0gJzEnOwokdHlwZXNbJHRoaXMtPkxhbmcoJ3RleHRhcmVhJyldID0gJzInOwokY2Rtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NvbXBhbnlEaXJlY3RvcnknKTsKaWYoIGlzX29iamVjdCgkY2Rtb2QpICkgJHR5cGVzWyR0aGlzLT5MYW5nKCdjZF9jb21wYW55JyldID0gJzMnOwokdHlwZXNbJHRoaXMtPkxhbmcoJ2ZpbGVhdHRhY2htZW50JyldID0gNDsKJHR5cGVzWyR0aGlzLT5MYW5nKCdjaGVja2JveCcpXSA9IDU7CiR0eXBlc1skdGhpcy0+TGFuZygnZHJvcGRvd24nKV0gPSA2Owokc21hcnR5LT5hc3NpZ24oJ3R5cGVzJyxhcnJheV9mbGlwKCR0eXBlcykpOwoKCiRzbWFydHktPmFzc2lnbigndHlwZXRleHQnLCR0aGlzLT5MYW5nKCd0eXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywkdGhpcy0+TGFuZygnbmFtZScpKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmaWVsZHN0YWIudHBsJyk7CgovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settingstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCiRnQ21zID0gY21zbXMoKTsKCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9zZXR0aW5nc191cGRhdGUnLCAkcmV0dXJuaWQsICRtZXRob2Q9J3Bvc3QnLCAkZW5jdHlwZT0nJykpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRzbWFydHktPmFzc2lnbignZnJpZW5kbHluYW1lJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJpZW5kbHluYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ3R3ZWx2ZWhvdXJ0ZXh0JywkdGhpcy0+TGFuZygnY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jaycpKTsKJHNtYXJ0eS0+YXNzaWduKCd0d2VsdmVob3VyaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJywgMSwKICAJICAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJywwKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JjZWNhdHRleHQnLCR0aGlzLT5MYW5nKCdmb3JjZV9jYXRlZ29yeScpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JjZWNhdGlucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdmb3JjZV9jYXRlZ29yeScsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmb3JjZV9jYXRlZ29yeScsIDApKSk7CgokY2F0ZWdvcmllcyA9ICR0aGlzLT5HZXRDYXRlZ29yaWVzKCk7CmlmKCBpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgY291bnQoJGNhdGVnb3JpZXMpICkgewogICRzbWFydHktPmFzc2lnbignZGVmY2F0dGV4dCcsJHRoaXMtPkxhbmcoJ2NhbF9kZWZhdWx0X2NhdGVnb3J5JykpOwogIGZvcmVhY2ggKCRjYXRlZ29yaWVzIGFzICRrZXkgPT4gJGNhdCkgewogICAgJGxpc3RfY2F0ZWdvcmllc1skY2F0WydjYXRlZ29yeV9uYW1lJ11dID0gJGNhdFsnY2F0ZWdvcnlfaWQnXTsKICB9CiAgJHNtYXJ0eS0+YXNzaWduKCdkZWZjYXRpbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnZGVmYXVsdF9jYXRlZ29yeScsICRsaXN0X2NhdGVnb3JpZXMsIC0xLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9jYXRlZ29yeScsJycpKSk7Cn0KCiR5ZWFyc19hcnJheT1hcnJheSgxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCk7CiR5ZWFyc19hcnJheT1hcnJheV9jb21iaW5lKCR5ZWFyc19hcnJheSwkeWVhcnNfYXJyYXkpOwokc21hcnR5LT5hc3NpZ24oInBhc3R5ZWFyc3RleHQiLCR0aGlzLT5MYW5nKCJzaG93cGFzdHllYXJzIikpOwokc21hcnR5LT5hc3NpZ24oInBhc3R5ZWFyc2lucHV0IiwkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzaG93cGFzdHllYXJzJywgJHllYXJzX2FycmF5LCAtMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3dwYXN0eWVhcnMiLDIpKSk7Cgokc21hcnR5LT5hc3NpZ24oImZ1dHVyZXllYXJzdGV4dCIsJHRoaXMtPkxhbmcoInNob3dmdXR1cmV5ZWFycyIpKTsKJHNtYXJ0eS0+YXNzaWduKCJmdXR1cmV5ZWFyc2lucHV0IiwkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzaG93ZnV0dXJleWVhcnMnLCAkeWVhcnNfYXJyYXksIC0xLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2hvd2Z1dHVyZXllYXJzIiwxMCkpKTsKCiRzbWFydHktPmFzc2lnbignaGlkZXN1bW1hcnl0ZXh0JywkdGhpcy0+TGFuZygnaGlkZXN1bW1hcnknKSk7CiRzbWFydHktPmFzc2lnbignaGlkZXN1bW1hcnlpbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaGlkZXN1bW1hcnknLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZXN1bW1hcnknLCAwKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdoaWRlY29udGVudHRleHQnLCR0aGlzLT5MYW5nKCdoaWRlY29udGVudCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdoaWRlY29udGVudGlucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdoaWRlY29udGVudCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRlY29udGVudCcsIDApKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiRzbWFydHktPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKCiRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdGNhbGVuZGFycGFnZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnKSk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdGNhbGVuZGFycGFnZV9pbnB1dCcsICRjb250ZW50b3BzLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bignJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnLCctMScpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3VwbG9hZGRpcmVjdG9yeV90ZXh0JywkdGhpcy0+TGFuZygndXBsb2FkZGlyZWN0b3J5JykpOwokc21hcnR5LT5hc3NpZ24oJ3VwbG9hZGRpcmVjdG9yeV9pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3VwbG9hZGRpcmVjdG9yeScsCgkJCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZGRpcmVjdG9yeScsJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10pLAoJCQkJCQkJICAgICAgIDMwKSk7CgokdmFsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZGZpbGV0eXBlcycsJ2pwZyxqcGVnLGdpZixwbmcnKTsKJHNtYXJ0eS0+YXNzaWduKCd1cGxvYWRmaWxldHlwZXNfdGV4dCcsJHRoaXMtPkxhbmcoJ3VwbG9hZGZpbGV0eXBlcycpKTsKJHNtYXJ0eS0+YXNzaWduKCd1cGxvYWRmaWxldHlwZXNfaW5wdXQnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCd1cGxvYWRmaWxldHlwZXMnLCR2YWwsIDMwKSk7CgokdmFsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZHVuaXF1ZScsMSk7CiRzbWFydHktPmFzc2lnbigndXBsb2FkdW5pcXVlX3RleHQnLCR0aGlzLT5MYW5nKCd1cGxvYWR1bmlxdWUnKSk7CiRzbWFydHktPmFzc2lnbigndXBsb2FkdW5pcXVlX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3VwbG9hZHVuaXF1ZScsIDEsICR2YWwpKTsKCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfcmVkaXJlY3RwYWdlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfcmVkaXJlY3RwYWdlJykpOwoKJHBvbGljaWVzID0gYXJyYXkoKTsKJHBvbGljaWVzWydhbGwnXSA9ICR0aGlzLT5MYW5nKCdwb2xpY3lfYWxsJyk7CiRwb2xpY2llc1snbm9uZSddID0gJHRoaXMtPkxhbmcoJ3BvbGljeV9ub25lJyk7CiRwb2xpY2llc1snaW5kaXZpZHVhbCddID0gJHRoaXMtPkxhbmcoJ3BvbGljeV9pbmRpdmlkdWFsJyk7CiRzbWFydHktPmFzc2lnbignb3ZlcmxhcF9wb2xpY2llcycsJHBvbGljaWVzKTsKJHNtYXJ0eS0+YXNzaWduKCdvdmVybGFwX3BvbGljeScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfcG9saWN5JywnYWxsJykpOwoKJG92ZXJsYXBfYWN0aW9ucyA9IGFycmF5KCk7CiRvdmVybGFwX2FjdGlvbnNbJ3JlbW92ZSddID0gJHRoaXMtPkxhbmcoJ292ZXJsYXBfYWN0aW9uX3JlbW92ZScpOwokb3ZlcmxhcF9hY3Rpb25zWydlcnJvciddID0gJHRoaXMtPkxhbmcoJ292ZXJsYXBfYWN0aW9uX2Vycm9yJyk7CiRzbWFydHktPmFzc2lnbignb3ZlcmxhcF9hY3Rpb25zJywkb3ZlcmxhcF9hY3Rpb25zKTsKJHNtYXJ0eS0+YXNzaWduKCdvdmVybGFwX2FjdGlvbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfYWN0aW9uJywnZXJyb3InKSk7CgokcHJlZml4ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKaWYoICEkcHJlZml4ICkgJHByZWZpeCA9ICdjYWxlbmRhcic7CiRzbWFydHktPmFzc2lnbigndXJsX3ByZWZpeCcsJHByZWZpeCk7CiRzbWFydHktPmFzc2lnbignZGZsdF9zdGFydHRpbWUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZmx0X3N0YXJ0dGltZScsJzEyOjAwJykpOwokc21hcnR5LT5hc3NpZ24oJ2RmbHRfYWxsZGF5ZXZlbnQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZmx0X2FsbGRheWV2ZW50JywwKSk7CiRzbWFydHktPmFzc2lnbignZmlyc3RkYXlvZndlZWsnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaXJzdGRheW9md2VlaycsMSkpOwokc21hcnR5LT5hc3NpZ24oJ2RheW9wdGlvbnMnLGFycmF5KDA9PiR0aGlzLT5MYW5nKCdzdW5kYXknKSwxPT4kdGhpcy0+TGFuZygnbW9uZGF5JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpY2FsX2hvbGlkYXlzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaWNhbF9ob2xpZGF5cycpKTsKJHNtYXJ0eS0+YXNzaWduKCdob2xpZGF5X2ZnY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob2xpZGF5X2ZnY29sb3InLCcjMDAwMDAwJykpOwokc21hcnR5LT5hc3NpZ24oJ2hvbGlkYXlfYmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hvbGlkYXlfYmdjb2xvcicsJyNjY2ZmZmY3JykpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnY2FsX3VwZGF0ZXNldHRpbmdzJykpKTsKCiRmZXUgPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKaWYoICRmZXUgKSB7CiAgICAkdG1wID0gJGZldS0+R2V0R3JvdXBMaXN0KCk7CiAgICAkdG1wID0gY2dlX2FycmF5OjpoYXNoX3ByZXBlbmQoJHRtcCwkdGhpcy0+TGFuZygnbm9uZScpLC0xKTsKICAgICRzbWFydHktPmFzc2lnbignZ3JvdXBsaXN0JyxhcnJheV9mbGlwKCR0bXApKTsKICAgICRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfZ3JvdXAnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9ncm91cCcsLTEpKTsKICAgICRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfbWFzdGVyZ3JvdXAnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9tYXN0ZXJncm91cCcsLTEpKTsKfQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3NldHRpbmdzLnRwbCcpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/function.displayevent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRldmVudHNfdGFibGVfbmFtZSA9ICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZTsKJGV2ZW50X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdldmVudF9pZCcpOwppZiggJGV2ZW50X2lkIDwgMSApICRldmVudF9pZCA9ICduZXh0JzsKCiR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnR0ZW1wbGF0ZScpOwppZiggISR0aGV0ZW1wbGF0ZSApIHsKICAgICR0cGwgPSBDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJ0NHQ2FsZW5kYXI6OmV2ZW50Jyk7CiAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdObyBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlIGZvdW5kJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgJHRoZXRlbXBsYXRlID0gJHRwbC0+Z2V0X25hbWUoKTsKICAgIHVuc2V0KCR0cGwpOwp9CgppZiggJGV2ZW50X2lkID09ICduZXh0JyApIHsKICAgICRzdGFydCA9IGRhdGUoJ1ktbS1kIEg6aTpzJyk7IC8vIHN0YXJ0IG5vdyAhCiAgICAkc3FsID0gIlNFTEVDVCBESVNUSU5DVCBldmVudF9pZCBGUk9NICRldmVudHNfdGFibGVfbmFtZSAiOwogICAgJHNxbCAuPSAiV0hFUkUgZXZlbnRfZGF0ZV9zdGFydCA+ICckc3RhcnQnIE9SIGV2ZW50X2RhdGVfZW5kID4gJyRzdGFydCciOwogICAgJHNxbCAuPSAnIExJTUlUIDEnOwogICAgJGV2ZW50X2lkID0gJGRiLT5HZXRPbmUoJHNxbCk7Cn0KZWxzZSBpZiggKGludCkkZXZlbnRfaWQgPiAwICkgewovLyBub3RoaW5nLgp9CmVsc2UgewovLyBubyBldmVudAogICAgZWNobyAnPGRpdiBjbGFzcz0iY2FsZW5kYXItZXJyb3IiPicuJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCcsJGV2ZW50X2lkKS4nPC9kaXY+JzsKICAgIHJldHVybjsKfQoKJGxvYWRlciA9IG5ldyBjZ2NfZXZlbnRfbG9hZGVyKCRpZCxhcnJheSgkZXZlbnRfaWQpLCRyZXR1cm5pZCxGQUxTRSk7CiRldmVudHMgPSAkbG9hZGVyLT5nZXRfZXZlbnRzKCk7CmlmKCAhaXNfYXJyYXkoJGV2ZW50cykgfHwgY291bnQoJGV2ZW50cykgIT0gMSApIHsKICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNhbGVuZGFyLWVycm9yIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9ldmVudF9ub3RfZm91bmQnLCRldmVudF9pZCkuJzwvZGl2Pic7CiAgICByZXR1cm47Cn0KJGV2ZW50ID0gJGV2ZW50c1swXTsKCi8vIG90aGVyIGxhbmd1YWdlIGZpZWxkcwokbGFuZyA9ICR0aGlzLT5HZXRMYWJlbHMoKTsKCmlmIChpc3NldCgkcGFyYW1zWydzaG93X2ljYWwnXSkpIHsKICAgICRkb21haW4gPSAkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddOwogICAgJHRpbWVfem9uZSA9IDA7CiAgICAkb3V0c3RyICA9ICJCRUdJTjpWQ0FMRU5EQVJcbiI7CiAgICAkb3V0c3RyIC49ICJQUk9ESUQ6LS8vIi4kZG9tYWluLiIvL0NHQ2FsZW5kYXIgIi4kdGhpcy0+R2V0VmVyc2lvbigpLiIvL0VOXG4iOwogICAgJG91dHN0ciAuPSAiVkVSU0lPTjoyLjBcbiI7CiAgICAkb3V0c3RyIC49ICJDQUxTQ0FMRTpHUkVHT1JJQU5cbiI7CiAgICAkb3V0c3RyIC49ICJNRVRIT0Q6UFVCTElTSFxuIjsKICAgICRvdXRzdHIgLj0gIlgtV1ItQ0FMTkFNRToiLnN0cnRvdXBwZXIoJHRoaXMtPkNvbnZlcnRDYXRlZ29yaWVzVG9TdHJpbmcoJGNhdGVnb3JpZXMpKS4iXG4iOwogICAgaWYgKGRhdGUoJ2UnLCBzdHJ0b3RpbWUoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pKSAhPSAnZScpCiAgICAgICAgJG91dHN0ciAuPSAiWC1XUi1USU1FWk9ORToiLmRhdGUoJ2UnLCBzdHJ0b3RpbWUoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pKS4iXG4iOwogICAgJG91dHN0ciAuPSAiWC1XUi1DQUxERVNDOlNjaGVkdWxlIGZyb20gIi5nZXRfc2l0ZV9wcmVmZXJlbmNlKCdzaXRlbmFtZScsICdDTVNNUyBTaXRlJykuIlxuIjsKCiAgICAkb3V0c3RyIC49ICJCRUdJTjpWRVZFTlRcbiI7CiAgICAkb3V0c3RyIC49ICJEVFNUQVJUOiI7CiAgICAkb3V0c3RyIC49ICR0aGlzLT5Vbml4VGltZXN0YW1wVG9pQ2FsKHN0cnRvdGltZSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSksICR0aW1lX3pvbmUpLiJcbiI7CiAgICAkb3V0c3RyIC49ICJEVEVORDoiOwogICAgJGVuZF9kYXRlID0gc3RydG90aW1lKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKSArIDM2MDA7CiAgICBpZighKGVtcHR5KCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSkgfHwgJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IG51bGwgfHwgJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IDApKSB7CiAgICAgICAgJGVuZF9kYXRlID0gc3RydG90aW1lKCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSk7CiAgICB9CiAgICAkb3V0c3RyIC49ICR0aGlzLT5Vbml4VGltZXN0YW1wVG9pQ2FsKCRlbmRfZGF0ZSwgJHRpbWVfem9uZSkuIlxuIjsKICAgICRvdXRzdHIgLj0gJ1NVTU1BUlk6Jy5zdHJfcmVwbGFjZSgiXG4iLCAiXFxuIiwgJGV2ZW50WydldmVudF90aXRsZSddKS4iXG4iOwogICAgJG91dHN0ciAuPSAnREVTQ1JJUFRJT046Jy5zdHJfcmVwbGFjZSgiXG4iLCAiXFxuIiwgJGV2ZW50WydldmVudF9kZXRhaWxzJ10pOwogICAgJGV4dHJhZmllbGRzID0gIlNFTEVDVCBmaWVsZF9uYW1lLGZpZWxkX3ZhbHVlIEZST00gIi4kdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUuIiBXSEVSRSBldmVudF9pZCA9ID8iOwogICAgJGZycyA9ICRkYi0+RXhlY3V0ZSgkZXh0cmFmaWVsZHMsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICB3aGlsZSAoJGZycyAmJiAkcm93PSRmcnMtPkZldGNoUm93KCkpIHsKICAgICAgICAkb3V0c3RyIC49ICJcXG4iIC4gJHJvd1snZmllbGRfbmFtZSddLic6ICcuc3RyX3JlcGxhY2UoIlxuIiwgIlxcbiIsICRyb3dbJ2ZpZWxkX3ZhbHVlJ10pOwogICAgfQogICAgJG91dHN0ciAuPSAiXG4iOwogICAgJG91dHN0ciAuPSAnVUlEOicuJGV2ZW50X2lkLidAJy4kZG9tYWluLiJcbiI7CiAgICAkb3V0c3RyIC49ICdEVFNUQU1QOicuJHRoaXMtPnVuaXhUaW1lc3RhbXBUb2lDYWwodGltZSgpLCAkdGltZV96b25lKS4iXG4iOwogICAgJG91dHN0ciAuPSAiQ0xBU1M6UFVCTElDXG4iOwogICAgJG91dHN0ciAuPSAiRU5EOlZFVkVOVFxuIjsKICAgICRvdXRzdHIgLj0gIkVORDpWQ0FMRU5EQVJcbiI7CgogICAgd2hpbGUoQG9iX2VuZF9jbGVhbigpKTsKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9jYWxlbmRhcicpOwogICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIHN0cmxlbigkb3V0c3RyKSk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWNhbGVuZGFyLmljcycpOwogICAgZWNobyAkb3V0c3RyOwogICAgZXhpdDsKfQplbHNlIHsKICAgIC8vIGFzc2lnbiB0byBTbWFydHkKICAgIC8vJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCdvcmlnX2V2ZW50X3RlbXBsYXRlLnRwbCcpLG51bGwsbnVsbCwkc21hcnR5KTsKICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgkdGhldGVtcGxhdGUpLG51bGwsbnVsbCwkc21hcnR5KTsKICAgICR0cGwtPmFzc2lnbignZXZlbnQnLCAkZXZlbnQpOwogICAgJHRwbC0+YXNzaWduKCdsYW5nJywgJGxhbmcpOwogICAgJHRwbC0+YXNzaWduKCdpY2FsX3VybCcsICR0aGlzLT5DcmVhdGVMaW5rKCdjbnRudDAxJywgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgnc2hvd19pY2FsJyA9PiAndHJ1ZScsICdkaXNwbGF5JyA9PiAnZXZlbnQnLCAnZXZlbnRfaWQnID0+ICRldmVudF9pZCksICcnLCB0cnVlKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2ZpbGVfbG9jYXRpb24nLGNnY2FsZW5kYXJfdXRpbHM6OmdldF91cGxvYWRfbG9jYXRpb24oKSk7CgogICAgJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKICAgIGlmKCAkZmV1ICkgewogICAgICAgICRmZXVfdWlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwogICAgICAgICRtYXN0ZXJfZ3JvdXAgPSAkdGhpcy0+R2V0UHJlZmVybmNlKCdmcm9udGVuZF9tYXN0ZXJncm91cCcpOwogICAgICAgIGlmKCAkdGhpcy0+SGF2ZU1hbmFnZVJpZ2h0KCkgfHwgKCRmZXVfdWlkID4gMCAmJiAkZXZlbnRbJ2V2ZW50X2NyZWF0ZWRfYnknXSA9PSAkZmV1X3VpZCkgKSB7CiAgICAgICAgICAgICRlZGl0cGFnZSA9ICRyZXR1cm5pZDsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnLCcnKTsKICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRtcCk7CiAgICAgICAgICAgICAgICAgICAgJGVkaXRwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCwkZWRpdHBhZ2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZWRpdHBhZ2UnKTsKICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAgICAgICAgICRlZGl0cGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJGVkaXRwYWdlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcGFybXMgPSBhcnJheSgnZXZlbnRfaWQnPT4kZXZlbnRfaWQpOwogICAgICAgICAgICAkcGFybXNbJ3JldHVybl9pZCddID0gJHJldHVybmlkOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZWRpdGV2ZW50dGVtcGxhdGUnXSkgKSAkcGFybXNbJ2VkaXRldmVudHRlbXBsYXRlJ10gPSAkcGFyYW1zWydlZGl0ZXZlbnR0ZW1wbGF0ZSddOwogICAgICAgICAgICAkZWRpdF91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ2FkZGVkaXRfZXZlbnQnLCAkZWRpdHBhZ2UsICRwYXJtcyk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignZWRpdF91cmwnLCRlZGl0X3VybCk7CiAgICAgICAgfQogICAgfQogICAgLy8gQXNzaWduIHRpdGxlIHRvIGNsYXNzIHZhciBzbyBldmVudCB0aXRsZSBjYW4gYmUgYWRkZWQgdG8gcGFnZSB0aXRsZSBpbiAgQ29udGVudFBvc3RSZW5kZXIoKQogICAgJHRoaXMtPmN1cnJlbnRfZXZlbnRfdGl0bGUgPSAkZXZlbnRbJ2V2ZW50X3RpdGxlJ107CgogICAgLy8gRGlzcGxheSB0ZW1wbGF0ZQogICAgJHRwbC0+ZGlzcGxheSgpOwp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/functions.admin_tools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpmdW5jdGlvbiBjYWxlbmRhcl9pc1ZhbGlkRmlsZW5hbWUoJiRtb2QsJGZpbGVuYW1lKQp7CiAgJGZpbGVfbmFtZSA9IHRyaW0gKCRmaWxlbmFtZSk7CiAgJGV4dGVuc2lvbiA9IHN0cnRvbG93ZXIgKHN0cnJjaHIgKCRmaWxlX25hbWUsICIuIikpOwoKICAkdmFsaWRfZXh0ZW5zaW9ucyA9IGV4cGxvZGUoJywnLHN0cnRvbG93ZXIoJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZmlsZXR5cGVzJywnanBnLGpwZWcsZ2lmLHBuZycpKSk7CiAgJGNvdW50ID0gY291bnQoJHZhbGlkX2V4dGVuc2lvbnMpOwoKICBpZiggISRmaWxlX25hbWUgKSByZXR1cm4gZmFsc2U7CiAgaWYoICRjb3VudCA9PSAwICkgcmV0dXJuIHRydWU7CiAgZm9yZWFjaCggJHZhbGlkX2V4dGVuc2lvbnMgYXMgJG9uZWV4dGVuc2lvbiApIHsKICAgICRmYyA9IHN1YnN0cigkb25lZXh0ZW5zaW9uLCAwLCAxKTsKICAgIGlmKCAkZmMgIT0gJy4nICkgJG9uZWV4dGVuc2lvbiA9ICcuJy4kb25lZXh0ZW5zaW9uOwogICAgaWYoICRvbmVleHRlbnNpb24gPT0gJGV4dGVuc2lvbiApIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGNhbGVuZGFyX0hhbmRsZVVwbG9hZCgmJG1vZCwkZmxkbmFtZSwmJGVycm9yKQp7CiAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICRkZXN0RGlyID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZGlyZWN0b3J5Jyk7CiAgaWYoICEkZGVzdERpciApICRkZXN0RGlyID0gJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ107CgogIGlmKCAhaXNzZXQoJF9GSUxFUykgfHwgIWlzc2V0KCRfRklMRVNbJGZsZG5hbWVdKSB8fCAhJF9GSUxFU1skZmxkbmFtZV1bJ25hbWUnXSApIHsKICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX25vdXBsb2FkJyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAkZmlsZSA9JiAkX0ZJTEVTWyRmbGRuYW1lXTsKICBpZiggIWlzc2V0KCRmaWxlWyd0eXBlJ10pICkgJGZpbGVbJ3R5cGUnXSA9ICcnOwogIGlmKCAhaXNzZXQoJGZpbGVbJ25hbWUnXSkgKSAkZmlsZVsnbmFtZSddID0gJyc7CiAgaWYoICFpc3NldCgkZmlsZVsnc2l6ZSddKSApICRmaWxlWydzaXplJ10gPSAnJzsKICAkZmlsZVsnbmFtZSddID0KICAgIHByZWdfcmVwbGFjZSgnL1teYS16QS1aMC05XC5cJFwlXCdcYFwtXEBce1x9XH5cIVwjXChcKVwmXF9cXl0vJywgJycsIHN0cl9yZXBsYWNlIChhcnJheSAoJyAnLCAnJTIwJyksIGFycmF5ICgnXycsICdfJyksICRmaWxlWyduYW1lJ10pKTsKICBpZiggISRtb2QtPmlzVmFsaWRGaWxlbmFtZSggJGZpbGVbJ25hbWUnXSApICkgewogICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGZpbGVuYW1lJyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBpZiggJGZpbGVbJ2Vycm9yJ10gIT0gMCB8fCAkZmlsZVsnc2l6ZSddID09ICcnIHx8ICRmaWxlWydzaXplJ10gPT0gMCApIHsKICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAkZGVzdG5hbWUgPSAkZmlsZVsnbmFtZSddOwogICRkZXN0ZmlsZXNwZWMgPSBjbXNfam9pbl9wYXRoKCAkZGVzdERpciwgJGRlc3RuYW1lICk7CiAgaWYoIGZpbGVfZXhpc3RzKCAkZGVzdGZpbGVzcGVjICkgKSB7CiAgICBpZiggJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkdW5pcXVlJywxKSA9PSAxICkgewogICAgICAkaSA9IDA7CiAgICAgIGZvciggJGkgPSAwOyAgJGkgPCAxMDA7ICRpKysgKSB7CgkkZGVzdG5hbWUgPSAkZmlsZVsnbmFtZSddOwoJaWYoICRpID4gMCApICRkZXN0bmFtZSA9ICRpLidfJy4kZmlsZVsnbmFtZSddOwoJJGRlc3RmaWxlc3BlYyA9IGNtc19qb2luX3BhdGgoICRkZXN0RGlyLCAkZGVzdG5hbWUgKTsKCWlmKCAhZmlsZV9leGlzdHMoICRkZXN0ZmlsZXNwZWMgKSApIGJyZWFrOwogICAgICB9CiAgICAgIGlmKCAkaSA9PSAxMDAgKSB7CgkkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9maWxlZXhpc3RzJyk7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9maWxlZXhpc3RzJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIGlmKCAhQGNvcHkoJGZpbGVbJ3RtcF9uYW1lJ10sICRkZXN0ZmlsZXNwZWMpICkgewogICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfZmlsZWNvcHlmYWlsZWQnKTsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIHJldHVybiAkZGVzdG5hbWU7Cn0KCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPkNhbGd1eXMgQ2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUgbW9kdWxlIGlzIGluc3RhbGxlZCwgYSAmcXVvdDtDYWxndXlzIENhbGVuZGFyJnF1b3Q7IGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIHBsdWdpbnMgbWVudQp0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+Cgo8aDM+U2VjdXJpdHk8L2gzPgo8cD5UaGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICdNb2RpZnkgQ2FsZW5kYXInIHBlcm1pc3Npb24gaW4gb3JkZXIgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnQgZW50cmllcy48L3A+Cgo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CjxvbD4KICA8bGk+UHV0IHRoZSBjbXNfbW9kdWxlIHRhZyBpbiB0aGUgcGFnZSBjb250ZW50LiBNYWtlIHN1cmUgaXQgaXMgbm90IGVuY2xvc2VkIGluICZsdDtwcmUmZ3Q7Li4uJmx0Oy9wcmUmZ3Q7IHRhZ3MuICBZb3Ugd2lsbCBuZWVkIHRvIHZpZXcgc291cmNlIGNvZGUgZm9yIHRoaXMuICBUaGUgY29kZSB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOjxiciAvPgogIDx0dD57Y21zX21vZHVsZSBtb2R1bGU9IkNHQ2FsZW5kYXIifTwvdHQ+PGJyIC8+CiAgPGxpPlN0eWxlIHRoZSBjYWxlbmRhciBhcHByb3ByaWF0ZWx5IGZvciB5b3VyIGRpc3BsYXk8L2xpPgo8L29sPgoKPGgzPk5vdGVzOjwvaDM+Cjx1bD4KICA8bGk+QWRtaW4gVGhlbWVzCiAgICA8cD5UaGlzIG1vZHVsZXMgYWRtaW4gcGFuZWwgPGVtPih2ZXJzaW9uIDEuMTQrKSByZWxpZXMgaGVhdmlseSBvbiBzdHlsZXMgYW5kIHRvb2xzIGluIHRoZSBDTVNNUyBPbmVFbGV2ZW4gYWRtaW4gdGhlbWUuICBJdCBtYXkgbm90IGZ1bmN0aW9uIHByb3BlcnkgKG9yIGF0IGxlYXN0IGxvb2sgcHJvcGVybHkpIGluIG90aGVyIGFkbWluIHRoZW1lcyB0aGF0IGRvbid0IGRpcmVjdGx5IHJlcGxpY2F0ZSB0aGVzZSBzdHlsZXMuPC9wPgogIDwvbGk+CiAgPGxpPlRlbXBsYXRlcwogICAgPHA+VGhlIGRlZmF1bHQgdGVtcGxhdGVzIHByb3ZpZGVkIHdpdGggdGhpcyBtb2R1bGUgYXJlIHB1cmVseSBzYW1wbGVzLiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdCB0aGUgdGVtcGxhdGVzLCBhbmQgYWRkIHN0eWxlcyB0byB5b3VyIHN0eWxlc2hlZXRzIGluIG9yZGVyIHRvIGFkanVzdCB0aGUgb3V0cHV0IG9mIHRoaXMgbW9kdWxlIHRvIG1hdGNoIHlvdXIgdXNhZ2UsIGFuZCB5b3VyIHNpdGVzIHRoZW1lLjwvcD4KICA8L2xpPgogIDxsaT5qUXVlcnkKICAgIDxwPlRoZSB0ZW1wbGF0ZXMgcHJvdmlkZWQgYnkgZGVmYXVsdCB3aXRoIHRoaXMgbW9kdWxlIG1ha2UgdXNlIG9mIEpRdWVyeSwgYW5kIEpRdWVyeVVJLiBJbiBvcmRlciBmb3IgdGhlIHByb3BlciBmdW5jdGlvbmluZyBvZiB0aGlzIG1vZHVsZSBvbiBhIGRlZmF1bHQgaW5zdGFsbCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvcGVybHkgY29uZmlndXJlZCBvbiB0aGUgd2ViIHBhZ2VzIHRoYXQgd2lsbCBiZSBkaXNwbGF5aW5nIHRoZSBvdXRwdXQgb2YgdGhpcyBtb2R1bGUuPC9wPgogIDwvbGk+CjwvdWw+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+CiAgPHRyPgogICAgIDx0ZD5hY3Rpb248L3RkPgogICAgIDx0ZD5BY2NlcHRhYmxlIHZhbHVlczo8YnI+CiAgICAgICAgImRlZmF1bHQiIC0gU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFjdGlvbiwgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgImRpc3BsYXkiIHBhcmFtZXRlciBiZWxvdy48YnIvPgoJImZ1bGxjYWxlbmRhciIgLSBVc2VzIHRoZSBmdWxsQ2FsZW5kYXIganF1ZXJ5IHBsdWdpbiAocmVxdWlyZXMganF1ZXJ5LCBqcXVlcnktdWkgYW5kIGpzcmVuZGVyIHRvIGJlIGVuYWJsZWQpIHRvIHByb3ZpZGUgYSBkeW5hbWljIGludGVyYWN0aXZlIGNhbGVuZGFyIGRpc3BsYXkuCgkic2VhcmNoIiAtIERpc3BsYXkgYSBmb3JtIGZvciBhZHZhbmNlZCBzZWFyY2hpbmcgb2YgY2FsZW5kYXIgZXZlbnRzLjxici8+CiAgICAgICAgIm15ZXZlbnRzIiAtIERpc3BsYXkgYSBsaXN0IG9mIGFsbCBvZiBhIHVzZXJzIGV2ZW50cywgYW5kIGFsbG93IGFkZGluZywgZWRpdGluZyBvciBkZWxldGluZyB0aG9zZSBldmVudHM8YnIvPgogICAgICAgICJhZGRlZGl0X2V2ZW50IiAtIERpc3BsYXkgYSBmb3JtIGFsbG93aW5nIHRvIGFkZCBvciBlZGl0IGEgc2luZ2xlIGV2ZW50LjsKICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZGlzcGxheTwvdGQ+CiAgICAgPHRkPkFjY2VwdGFibGUgdmFsdWVzOjxicj4KCSAiZnVsbGNhbGVuZGFyIiAtIGRpc3BsYXlzIGV2ZW50cyBmb3IgdGhlIGN1cnJlbnQgbW9udGggaW4gYSBkeW5hbWljIGphdmFzY3JpcHQgZm9ybS48L3A+CgkgImV2ZW50IiAtIGRpc3BsYXkgYSBkZXRhaWwgcmVwb3J0IGZvciBhIHNwZWNpZmljIGV2ZW50LiAgVG8gdXNlIHRoaXMgZGlzcGxheSBtb2RlLCB0aGUgZXZlbnRfaWQgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkLjxici8+CgkgImxpc3QvbW9udGgiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBtb250aCBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCBtb250aHMuPGJyLz4KCSAiZGF5bGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IGRheSBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCB3ZWVrcy48YnIvPgoJICJ3ZWVrbGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IHdlZWsgYXMgYSBsaXN0LiAgSW5jbHVkZXMgbGlua3MgdG8gcHJldi4gYW5kIG5leHQgd2Vla3MuPGJyLz4KCSAieWVhcmxpc3QiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCB5ZWFyIGluIGEgbGlzdC4gIEluY2x1ZGVzIGxpbmtzIHRvIHByZXYuIGFuZCBuZXh0IHllYXJzLjxici8+CgkgInBhc3RsaXN0IiAtIGRpc3BsYXlzIGFsbCBwYXN0IGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgoJICJ1cGNvbWluZ2xpc3QiIC0gZGlzcGxheXMgYWxsIHVwY29taW5nIGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgogIAkgIERlZmF1bHRzIHRvICJmdWxsY2FsZW5kYXIiIDxlbT4ob3B0aW9uYWwpPC9lbT4KICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+Y2F0ZWdvcnk8L3RkPgogICAgIDx0ZD5Pbmx5IGRpc3BsYXkgaXRlbXMgZm9yIHRoYXQgY2F0ZWdvcnkuIExlYXZpbmcgdW5zZXQsIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAgPHA+Tm90ZSB0aGF0IHlvdSBjYW4gbGltaXQgdG8gbXVsdGlwbGUgY2F0ZWdvcmllcyBieSBzZXBhcmF0aW5nIGVhY2ggb25lIHdpdGggYSBjb21tYS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlCiAgICAgICAgIHVzZWQgd2l0aCB0aGUgbXlldmVudHMgYWN0aW9uIGFuZCB3aXRoIHRoZSB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucy4gIElmIG11bHRpcGxlIGNhdGVnb3J5IG5hbWVzIGFyZSBzcGVjaWZpZWQKICAgICAgICAgYSBtYXRjaCBpcyBkb25lIG9uIEFOWSBvZiB0aGUgY2F0ZWdvcmllcyBzcGVjaWZpZWQuIDxlbT4ob3B0aW9uYWwpPC9lbT48L3A+CgkgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPm1vbnRoPC90ZD4KICAgICA8dGQ+RGlzcGxheSBlbnRyaWVzIGZvciBhIHBhcnRpY3VsYXIgbW9udGguIElmIHllYXIgaXMgbm90IHNldCwgdGhlbiB0aGUgY3VycmVudCB5ZWFyIGlzCgkgYXNzdW1lZC4gVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIG9uZSBvZiB0aGUgbGlzdCB2aWV3cy48ZW0+KG9wdGlvbmFsKTwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPnllYXI8L3RkPgogICAgIDx0ZD5EaXNwbGF5IGVudHJpZXMgZm9yIGEgcGFydGljdWxhciB5ZWFyLgoJVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIHNldCB0byAibGlzdCIgPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5saW1pdDwvdGQ+Cgk8dGQ+PGVtPihvcHRpb25hbCk8L2VtPiAgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheS4gVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSB2YXJpb3VzICJsaXN0IiB2aWV3cy4gIFRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgbGltaXQgcGFyYW1ldGVyIGlzIDUwMDAgZXZlbnRzLjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD51c2Vfc2Vzc2lvbjwvdGQ+CiAgICAgPHRkPlVzZSBzZXNzaW9uIHZhcmlhYmxlcyB0byBzdG9yZSB0aGUgY3VycmVudCBkYXRlIG9mIGEgY2FsZW5kYXIgdmlldy4gVGhpcyBpcyB1c2VkIG9ubHkgaW4gdGhlIHNlYXJjaCBmb3JtIHRvIGFsbG93IHNhdmluZyB0aGUgc2VhcmNoIHNldHRpbmdzIHVudGlsIHRoZSBicm93c2VyIGlzIHJlc2V0LiAgRGVmYXVsdCBpcyBmYWxzZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+cmV2ZXJzZTwvdGQ+CiAgICAgPHRkPlNldCB0byB0cnVlIHRvIGRpc3BsYXkgZXZlbnRzIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlci4gQXBwbGljYWJsZSB0byAibGlzdCIsICJwYXN0bGlzdCIgYW5kICJ1cGNvbWluZ2xpc3QiIGRpc3BsYXlzLiBEZWZhdWx0IGlzIGZhbHNlLiBGb3IgdGhlICJwYXN0bGlzdCIgZGlzcGxheSB0aGlzIHdpbGwgcmVzdWx0IGluIG91dHB1dCBiZWluZyBkaXNwbGF5ZWQgaW4gaW5jcmVhc2luZyBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmRldGFpbHBhZ2U9InBhZ2VhbGlhcyI8L3RkPgogICAgIDx0ZD5QYWdlIHRvIGRpc3BsYXkgQ2FsZW5kYXIgZXZlbnQgZGV0YWlscyBpbi4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgcGFnZSBhbGlhcyBvciBhbiBpZC4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCB0ZW1wbGF0ZSBmcm9tIHRoZSBzdW1tYXJ5LiBEZWZhdWx0IGlzIGN1cnJlbnQgcGFnZS4gPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5ldmVudF9pZDwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCB0aGUgZGlzcGxheT1ldmVudCBtb2RlLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBldmVudCBvbiBkZW1hbmQuPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmZ1bGxjYWxlbmRhcnRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9ZnVsbGNhbGVuZGFyLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZXZlbnR0ZW1wbGF0ZTwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCBkaXNwbGF5PWV2ZW50LCBvciB5b3UgY2FuIGFsc28gc3BlY2lmeSB0aGlzIHBhcmFtZXRlciBvbiBhbnkgQ2FsZW5kYXIgbW9kdWxlIGNhbGwsIHRoaXMgcGFyYW1ldGVyIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIG5vbiBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlLiAgVGhpcyBwYXJhbWV0ZXIgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiBwcmV0dHkgdXJscyBhcmUgZW5hYmxlZC48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+bGlzdHRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9bGlzdCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgbm9uIGRlZmF1bHQgbGlzdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+dW5pcXVlX29ubHk8L3RkPgogICAgIDx0ZD5Vc2VkIHdpdGggYWN0aW9uPXNlYXJjaCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoYXQgb25seSBvbmUgZXZlbnQgd2l0aCBhIGNlcnRhaW4gbmFtZSBzaG91bGQgYmUgcmV0dXJuZWQuICBEZWZhdWx0IHZhbHVlIGlzIDAnOwogIDwvdHI+CjwvdGFibGU+Cgo8aDM+Q3VzdG9tIEZpZWxkczwvaDM+CjxwPkl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIG51bWJlciBvZiBjdXN0b20gZmllbGRzIHRvIGFzc29jaWF0ZSB3aXRoIGVhY2ggZXZlbnQgdXNpbmcgdGhlIEZpZWxkcyB0YWIgaW4gdGhlIGFkbWluLiBPbmNlIG9uZSBvciBtb3JlIGZpZWxkcyBoYXMgYmVlbiBkZWZpbmVkIHRoZSB2YWx1ZXMgb2YgdGhhdCBmaWVsZCBmb3IgZWFjaCBldmVudCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBldmVudHMgdGFiIGluIHRoZSBhZG1pbi4gVGhlc2UgZmllbGQgdmFsdWVzIGNhbiBiZSByZW5kZXJlZCB1c2luZyBhIHRlbXBsYXRlIHVzaW5nIHRoZSBzeW50YXggZXZlbnQuZmllbGRzLmZpZWxkbmFtZS4gSGludCAtIGluc2VydCB7ZGVidWd9IGludG8geW91ciB0ZW1wbGF0ZSBzZWUgYWxsIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuPC9wPgoKPGgzPkV4YW1wbGVzPC9oMz4KPGg0PkV4YW1wbGUgb2YgYWxsb3dpbmcgQ29tbWVudHMgb24gQ2FsZW5kYXIgZXZlbnRzPC9oND4KPHA+SW5zdGFsbCB0aGUgQ0dGZWVkYmFjayBtb2R1bGUgYW5kIHB1dCB0aGlzIGluIHlvdXIgQ2FsZW5kYXIgIkV2ZW50IFRlbXBsYXRlIjo8L3A+CjxwcmU+e0NHRmVlZEJhY2sna2V5MT0nQ0dDYWxlbmRhcicga2V5Mj0kZXZlbnQuZXZlbnRfaWR9PC9wcmU+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jZ2NhbGVuZGFyIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE2LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+SGlzdG9yeTwvaDM+CjxwPlRoaXMgbW9kdWxlIG9yaWdpbmF0ZWQgYXMgdGhlIENhbGVuZGFyIG1vZHVsZSBmb3IgQ01TTVMgYnkgUm9iIEFsbGVuIDxlbT4oYWtyYWJhdCk8L2VtPi4gIEl0IHdhcyBmb3JrZWQgdG8gQ0dDYWxlbmRhciBieSBSb2JlcnQgQ2FtcGJlbGwgPGVtPihjYWxndXkxMDAwKTwvZW0+IGluIDIwMDgsIGFuZCBzaW5jZSB0aGVuIGhhcyBoYWQgbnVtZXJvdXMgY29udHJpYnV0aW9ucyBieSBNb3J0ZW4gUG91bHNlbiA8ZW0+KG1vcnRlbkBwb3Vsc2VuLm9yZyk8L2VtPi48L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/calendar_delete.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/calendar_edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKbSURBVDjLpZNLbIxRGIaf/9Lfpa1rZ0hNtYpEVRBiNkUiEZFoKjSxQmLBglizIQiJILEgWHQlgkpLGg1BU6E3imorLkElLmOmM1XV6mXm/8/5LH5GI7EQJ/lyztm85/ne872GiPA/ywa40NC3X4TtSnRIa43S4GmNUhqlBU/pUaVQnqC0fnRk89ywDaBFdpeHs3P+5eUDlW8XpgmU1jkAmdU7QQSUB1qB6/rnVBLcFCRdcF0G99bjumrMKIFfPgjkBkB7fon3UyQJbhK8FLyIAuB66rcHSumfAgZ8ToBon0Rrn0T5+6AzyKd5eVi3j7HDuUfnmchWRITTN6PyfdiViw3dIiJS2RgTEZErzf69qiUmg59rJFq/R/o6a0UGIvK1s0paTqyN2QCu0mgRbAuqW+JYlsnVB3FsC2pa4yQSuxjKLmbK3BJ6u17iGCmyJ0wna+rMiekWBLAtgw3hADWtCdaHg9Q+jrO64BVDmUVMKlxDMnoZZ7zB+/ZX9A+ZGMmeRWkC0WCbUPskQWvPcR7eEEI6xvDYPCbNKWMkcg7T8cjIysfxPnC+dwun95a/Nn1HNSJChgWlSwMAFNtDbJw+g4lzyhiJnMXMcEn1F9B9vwNZto/vTggAE/ypA7BMg7qOHnL6PrBYxhEsXkcqVoHlCMn+fLob2mDVSQIFC9M/ZwN4nud7YMKMgTpyJ8/GkyDRZ6eYHHQY6c2jp/Ul5qqTBHLz0VqwTH4TuMpvYcHMLDoaK5i/fAdjPjbyuqaJ9lu9PL/zFKPkEMFQoU9qGWgtetQgSdPBS28Wp5TOzO1KkHpey6xFK/iW+EJX2xvuhg7z5do34GE6C30DI9cBjD/jvGnllOElhdPscNEsJCPZPBxPbCs92vnub6H6AWmNdrgLt0FkAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/false.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFAAUANUAAP/U1P7S0v7MzP7Ly/7Dw/7CwvzBwf+9vf68vP25uf63t/23t/y1tfu0tPyzs/+ysvyysvutrf+srP2pqf+oqP+np/2mpv2jo/Sfn/+bm/SdnfyZmfScnPSamvSbm/Obm/Kbm/OZmfaZmfKamvOamvGZmfCZmfKZmeyZmeuZmeqZmeWZmeaZmeGZmeCZmeKZmd+Zmd2ZmdyZmduZmdmZmdiZmdeZmdqZmdaZmdWZmdSZmdOZmc+Zmc2ZmdGZmf///yH5BAEHAD8ALAAAAAAUABQAAAaXwJ9wSCwaj8jkDdlKyg4qIwuAOroei8SM6Ao4KqyiTAIBgRY04UyAAUUoTWJrVCqNFrAVu85xHVt1dgwDGnwxSS+BJR98aUk/MSeKJX6PPzIGig07ljcIHpMTOEk2BB11JCeqJxY8VgUhsSE5NKsnFzJFOgqys0IyqxsZo0SJda5DNSYiKT1HMiY+RjoqzkjSR9iW29xHQQA7]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQAAvAPcAAHIcFnshHm8oJXAxLn4wL24zMHg1Mk1PT1ZTU19QUV1eWWtFRGFOTXpIR3dOTGlXVmBZV2dUUntaWV5gXmZlZG5ua2tmZH1sam9wa3FybXR1cXd4cnh5dJwZD4QbFIoYEJwbE5UeGLQOAK8VB6QWDKsXC64bD7MUB7wUBLQWCb0XCbMZDKIdE6gcEoUiHZkgF5YhGZwoH6ogFqYiGasoH7coHIktK4kpJJonIZwqI5YuKZYqJYcwLJoyL4szMI07N544M5k7N6EoILktI6oyLKU0Lqk6NMMUA8wVBMUYB88YBsoXCMUaCs0dDdQWBNoXBN0YBNUaCeQXA+MZBesaBOUbB/EcBMciFeQjDu0iCuwiBPMiBPMjCfQsDuUrGPMtE/MxFvI0G8YrIcs5Lt0+MOo/LeI8LPQ+JfI6JYRBPpZBP55AO6NDP9lFOPRELPZILe9JNulMPvBGMPRKNPROOfdRN/RTPYpKRpVKRZ5IRJZTUphVU5pcXJFcWKpFQatTT6VaWIhhXqFjX4djYIZrZpVsbIJ8eId4dpd6eKx+e+hURvNUQvVZRPVdSvZhTeZnWvVlU/ZsW/RnWfdxXu51aepyZvZ0Y/h5Zfd8a/h+bvh1Ye98cvd/cHmAeIOEf+uCefiEdPiHePiLfPSFeIaFg4mKho2OipiIiI+QjJKTjpSUkpeYk5qblpubm6KKiJ+gm6GinaSko6eoo6mqpqysq6+wq7Gyrq+vsLS0s7e4s7q6try8u+mPh/WNgvmOgPmSg/aUifmWifeZjfmajeyel/abk/idkfmilPejnPmlmfmpnvmsovauqfmxp/Syrfq0qui1s/O2tPq+tvO7uL/Au8HCvvXCvvvAuMTEw8bIw8nKxszNys/Qy9LTzs7R0tTV0tfY09rb1t3e2trX2erEwuzOzfvLxPfKxfrSzOjb2vrb2fjX0t/g2+Lj3vzh3eXm4efo4urr5e3u6eri4fzl4vrp5/vu6+/w6/Lz7fzx7fX28f318vf48/r69v3++gAAACH5BAEAAP8ALAAAAABAAC8AAAj+AP/9MySwgsAJnQQqXMiwocOHECOSM8IHEBE8ifw0cPVvwaF/DwgiIPXvQMSTKCUO8ZFDRIwgI0DokQFijxEYfPzcKPTHAKI7DlwtuIAowSkEFv4hSMlUYbkxPFwcgSHgyIoBI1QQKKHCx4oTP0yYyFMiRx4SeYDkEHRjDx4ehQoQWiDhAQMLEAxRINlUYLo2Y2o8EaMDSRMbKJQESIEEQIolAE6oCHCkhdQdLE7YOKFjxoogJYLIKAJkBp4ce3b08REozaA7hAZd+PgwnSIquKtgKVPGjBcqUaRISfJEigolTko8WaK8xOMPRzqUOOJBhYsRLDqsCLFiR4odK3r+mAAiIwiNPEUA1X6khcuWLW/QIRMlqUsXK1a45MfP3wqVLLhRUUUVwmFxBRRJIMEEE06cgEQJSJCQhIQgqBBCCiCYAMND41SixXvwuQOKG2BM4ksXjDQyByeRfDFHI464IUcydHxxxhdccAFJL5ygkYUVi0jin3BSQDEFGVU4AYUTTjCowkPdfAJiiMqE8oYd6NgxjCPSIGNOJJmYs4wyjaADSTHDzMHFGc7M8cUboUQSSSh1WHKGI46EYYcwctzooxZUTPGQN7xM+YY7k9jXRTPXBBPfL5PMAcoykDxDhzRnYNIMJGs+E8YWdCSzjCa+IPPMJcskE4ooxjhyzCX+ony6hRaDErOFFe+d8cwxvmjChSPmMLLFJcXQeUkwjihzRjNyLgNKF18EA0ojvjyzDCeiABNKI9KKMswxvzwT5xY5boGFQ9hAE8cccrwhBx102DFHGGjIEQYYYLgxbxhn5GvjGWfUmGMYjDASMB1unEHwGXO84UYjjMzhSB1uvGeFFlk4hMs89dRjDz0g06POyOiUfM7J50wzTTTROOMMM8yMiQwyxRQDDDC99PLJJ5tsQgklllQSiSSQONLI0RAvYociDtESjz9QRy311FRXbTXV/fQDtdb79LNPPmDb41As70wtTjXvsAOP1PHswk07a0ftjTjz6BP1PNqIMw7+P1DHs808fPuDzzhx+yOPOIWPLY7WcpOiSiq2MO5PO6WUkgotkm8TCyrdRD0OKa208o7W8NACyzdQy5MLNoy3A0sudvsztjeS+6OPPPLcg48/WfOODz66S94P8IFrrc/vjPejz/K889571vjo83xDrXhjd+1SZ63981rX3j30vUONz+iM47O49vG0sz3120iv/dbdO7/9+/O/f48s98QvTyy78y3PK/Ho3TZqkTXpNUQV1cDH/JpXvwY6cHjUCKD28KGN3fWDH/wQh/uGd4/lKe+AuMjf9uSXNX6U8IElxKDyGkjCCyqwgLhbnj4OeAt51G9rKuSH9ExYP33AI3/+MuxHOL7BQwxSYxva40cuWAGOrN3DFrWQhwwZgopYzON7F4QHNmyIQRVWoxYbLOEsqqG85fFjFp4IYj90QcAL9oMasmji8rqxDSkujyGqINsCwZEBbVwQg9KrxQbg4UYeVgMeOpRhO7hhRh0ir4s8lN7yfnc8fOCxFXtLYj/kcYu94YMf0dPHPdjRyAImcpJmlCEG8SGPd3ySH/foRjYC6ENasEIev7OkQlSBSQUWUR+Q/GQQVSlDeMQjHLnERzuqMYt2yFAcqyBFOzB4v1nAY3n3yEUt4JHLhfDSG/KAJCjj8Q5kClMf4fhiNU6pD1vIYgOk/CQ7VvGKdS5PddT+eMcq4TbJZALvHgtphSq28Y5G8uMbqshGKRBJyW6YYhaskOHytmGLQ+ZylD8MpQz9CY92RA8f8NCFLnB5D3koRKDY2FsiM1gKXKTClbmMBzfC4Ux/9jOX8ohHRqPXDl3YIh6/gwcsPNGNoMKCFeL450lbsYtxfBSY+IgH7vx5Tn/eAxzgQOY9dNcNWMACHLlsRypW8Y1/6oIaHt3qO4yJO5MKJHS48IbuNHq83AHvd/eoRi5eUVS83s8Uq4jHVkfJCllwQ3f3iAc42AHUwQ62rSXNaTzi8dZWxFWKydTFLkyBP8dSIwMVkMU/t0qNXOjih1uVB2odq1rG4g4euZj+RThyKtnJTrayuNAGN+eKD1pUrhSOvQc3qFGNcLAWl8CTKu7aAY5DtnUcpthANbYaj1qsohq0NSY8trvdf8SiFbfAhkeRi49wZIOmiG2rXxMrWHhkQxe5sK1iPZEBW7AXHrKABTck2w64cfe/222Hd1tBC2ywg5XqTWZbc1oNZoJDvkLFAAUebEx2yEIX3ZisduWrU+6+Y60d7W9/BzzGbyxYtdXQRi1mq1x51MITnuCGbY3Jxl2o7b8aBnCHPdwOdoSDjtroBjgU8t1WVKOOUpUqPFahAQXAgrZS1YUs0LbjD68Vbu14B5YBvN13iGOI28DGLnJxC1rcAhe72Mb+OE6qCgRmw5g61SkrYFGLbNS2w1W2spZFzGd26O0b3MjGLnBxi1nIghZmxoWid7GLbDBEoKjYRTX8C+DX7rjL8Pgwn73c4x9zoxqlpUUsRj0LRN/CtIzexUlU8Y/w6oLSXI51n4cY6F1A0dCwkIUsZnHmRTO6LwoJb1PjMQ89g5i7Iv5xmAct6lE7+8yaTTWwH5Lbangjy5reszi+IUtq6AIXtJhFqW9BbkWLVKSqnnZKtpGNa+vNG8smc6FlUYtalJvRDRazutXtDW9oQ9CDJnS5cWFaXVQDGw3et8IV4o1xhBkbEEc4oyO+8IozRBzv7vc2tmHxjj+Esh4POUMCAgIAOw==]]></data>
	</file>
	<file>
	  <filename>/images/true.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgASAOYAAPb68vT58fD56PD17+L5y935wdz5wdz5wNz4wNjn09nn09Phz7HOpofTR4bSR4bSRoTRRoXRRnnFP3jEPnjFPnfDPXfDPo+0hnS8Q3K6QIaufYaufHC6Pm+5Pm+5PHW2TnC5PnC5P3S1S3W1TXO1THO1S3S1TXS1TGy4OWy3OnO0THS0TW23On+pdXGuUX2ocnCuT3GtUHCtT2+tTm2sSnajam2oUmSsOW2nUnOhZ3ShaGaoQmqiVm+eY2agUWmdWWqeWWqbXmmbXWSXV1ucPWOWVleOSU+MPFCJQiqVKiaTJiWTJRaLFheLFxOKExKJEg+IDwuFCwqFCgiECAKBAgCAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFYALAAAAAAWABIAAAfDgFaCg4SFggpVAYaLhQpRO1QAjIwJUTQlGVUCk4UJTDQiGBINVZyDnjOhFKQFgwsDi6gnHBQOVa2CC1JPsISeMicgtVUGgwNSLRpNvVYJTTMjIBO2xYIDVT0XGzVOC81LMCYhEw/EhFVG2i85Q1AMSjAfHeRVB4ZTRS86QkA+STEkPFgoZ29RFSRBfvCwEUMFCgsR6nGqcoQHDhcqUkCsgsCUlSpEXKxIUSFiR48fb7CoAIEjykFVWLp8CXMmzUEEUAYCADs=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyBTaW1wbGUgTGFuZ3VhZ2UgZmlsZSBmb3IgdGhlIENhbGVuZGFyIG1vZHVsZS4KIyBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUm9iIEFsbGVuIDxyb2JAYWtyYWJhdC5jb20+CiRsYW5nWydkZWxldGVkX24nXSA9ICdEZWxldGVkICVkIGV2ZW50cyc7CiRsYW5nWydtc2dfbm9leHBpcmVkZXZlbnRzJ10gPSAnVGhlcmUgYXJlIG5vIGV4cGlyZWQgZXZlbnRzIHRvIHJlbW92ZSc7CiRsYW5nWydjYWxfZGVsZXRlX2V4cGlyZWQnXSA9ICdEZWxldGUgRXhwaXJlZCBFdmVudHMnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9tYXN0ZXJncm91cCddID0gJ0ZFVSBHcm91cCB0aGF0IGlzIGFsbG93ZWQgdG8gZWRpdCBhbnkgdXNlcnMgZXZlbnRzJzsKJGxhbmdbJ2NhbF9yZWN1cl9zdHInXSA9ICdUaGlzIGV2ZW50IHJlY3VycyAlcyB1bnRpbCAlcyB0byBhIG1heGltdW0gb2YgJWQgdGltZXMnOwokbGFuZ1snY2FsX3JlY3VyX3N0cjInXSA9ICdUaGlzIGV2ZW50IHJlY3VycyAlcyB1bnRpbCAlcyc7CiRsYW5nWydpbmZvX2Fib3V0X3BhcmVudF9ldmVudCddID0gJ1RoaXMgZXZlbnQgcmVjdXJzJzsKJGxhbmdbJ2luZm9fYWJvdXRfY2hpbGRfZXZlbnQnXSA9ICdUaGlzIGV2ZW50IGlzIGFjdHVhbGx5IGEgcmVjdXJyYW5jZSBvZiBhbm90aGVyIGV2ZW50IGluIG91ciBkYXRhYmFzZS4gIFlvdSBjYW4gdmlldyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyZW50IGV2ZW50IGJ5IGNsaWNraW5nIG9uIHRoZSBsaW5rIGJlbG93Lic7OwokbGFuZ1sndmlld19wYXJlbnRfZXZlbnQnXSA9ICdWaWV3IHBhcmVudCBldmVudCc7CiRsYW5nWydoZHJfZGF5bGlzdCddID0gJ0V2ZW50cyBmb3IgdGhlIGRheSBvZic7CiRsYW5nWydoZHJfeWVhcmxpc3QnXSA9ICdFdmVudHMgZm9yIHRoZSBZZWFyJzsKJGxhbmdbJ2hkcl93ZWVrbGlzdCddID0gJ0V2ZW50cyBmb3IgV2VlayAlZCBvZiAlZCc7CiRsYW5nWydoZHJfdXBjb21pbmdsaXN0J10gPSAnVXBjb21pbmcgRXZlbnRzJzsKJGxhbmdbJ2hkcl9tb250aGxpc3QnXSA9ICdFdmVudHMgZm9yIHRoZSBNb250aCBvZiAnOwokbGFuZ1snY2FsX3RvZGF5J10gPSAnVG9kYXknOwokbGFuZ1snbXNnX3NldHRpbmdzX2NoYW5nZWQnXSA9ICdTZXR0aW5ncyBjaGFuZ2VkJzsKJGxhbmdbJ3RpdGxlX2FkbWlubmF2X3NldHRpbmdzJ10gPSAnQ0dDYWxlbmRhciBTZXR0aW5ncyc7CiRsYW5nWydkZXNjX2FkbWlubmF2X3NldHRpbmdzJ10gPSAnTWFuYWdlIFNldHRpbmdzIGZvciB0aGUgQ0dDYWxlbmRhciBNb2R1bGUnOwokbGFuZ1sndHBsdHlwZV9zZWFyY2hmb3JtJ10gPSAnU2VhcmNoIEZvcm0nOwokbGFuZ1sndHBsdHlwZV9zZWFyY2hyZXN1bHQnXSA9ICdTZWFyY2ggUmVzdWx0IFZpZXcnOwokbGFuZ1sndHBsdHlwZV9mdWxsY2FsZW5kYXInXSA9ICdmdWxsQ2FsZW5kYXIgVmlldyc7CiRsYW5nWyd0cGx0eXBlX2RlbGV0ZWV2ZW50J10gPSAnRGVsZXRlIEV2ZW50IEZvcm0nOwokbGFuZ1sndHBsdHlwZV9lZGl0ZXZlbnQnXSA9ICdFZGl0IEV2ZW50IEZvcm0nOwokbGFuZ1sndHBsdHlwZV9ldmVudCddID0gJ0V2ZW50IFZpZXcnOwokbGFuZ1sndHBsdHlwZV9ldmVudGxpc3QnXSA9ICdFdmVudCBMaXN0IFZpZXcnOwokbGFuZ1sndHBsdHlwZV9teWV2ZW50cyddID0gJ015RXZlbnRzIExpc3QgVmlldyc7CiRsYW5nWyd0cGx0eXBlX0NHQ2FsZW5kYXInXSA9ICdDR0NhbGVuZGFyJzsKJGxhbmdbJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGRyZW4nXSA9ICc8c3Ryb25nPldhcm5pbmchPC9zdHJvbmc+ICBUaGlzIGV2ZW50IGFwcGVhcnMgdG8gcmVjdXIgb24gbXVsdGlwbGUgZGF0ZXMuICBEZWxldGluZyB0aGlzIGV2ZW50IHdpbGwgZGVsZXRlIGl0LCBhbmQgYWxsIG9mIHRoZSBvdGhlciByZWN1cnJpbmcgZGF0ZXMuICBQcm9jZWVkIHdpdGggY2F1dGlvbi4nOwokbGFuZ1snZGVsZXRlZXZlbnRfd2Fybl9jaGlsZCddID0gJzxzdHJvbmc+V2FybmluZyE8L3N0cm9uZz4gIFRoaXMgZXZlbnQgYXBwZWFycyB0byBiZSB0aGUgY2hpbGQgb2YgYSByZWN1cnJpbmcgZXZlbnQuICBEZWxldGluZyB0aGlzIG9iamVjdCB3aWxsIG9ubHkgZGVsZXRlIHRoaXMgcmVjdXJyYW5jZSwgYW5kIG5vdCBhbGwgcmVjdXJyYW5jZXMgb2YgdGhpcyBldmVudC4gIFByb2NlZWQgd2l0aCBjYXV0aW9uLic7CiRsYW5nWydwcm9tcHRfZGRvcHRzJ10gPSAnRHJvcGRvd24gT3B0aW9ucyc7CiRsYW5nWydpbmZvX2Rkb3B0cyddID0gJ1NvbWUgaW5mb3JtYXRpb24gaXMgcmVxdWlyZWQgZm9yIGEgZHJvcGRvd24gZmllbGQuICBFbnRlciBvbmUgb3B0aW9uIHBlciBsaW5lLiAgVmFsdWVzIGNhbiBiZSBzZXBhcmF0ZWQgZnJvbSBsYWJlbHMgd2l0aCB0aGUgPSBjaGFyYWN0ZXIuICBpLmU6ICBmPUZlbWFsZSc7CiRsYW5nWydvayddID0gJ09rJzsKJGxhbmdbJ3RpdGxlX2VkaXRfZGRvcHRzJ10gPSAnRWRpdCBkcm9wZG93biBvcHRpb25zJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydob2xpZGF5X2NvbG9ycyddID0gJ0hvbGlkYXkgaGlsaXRlIGNvbG9ycyc7CiRsYW5nWydwcm9tcHRfaWNhbF9ob2xpZGF5cyddID0gJ0lDQUwgZmVlZCBmb3IgaG9saWRheXMnOwokbGFuZ1snaW5mb19pY2FsX2hvbGlkYXlzJ10gPSAnVGhpcyBpcyB1c2VkIG9uIHRoZSBmdWxsY2FsZW5kYXIgdmlld3MgdG8gaGlsaXRlIHB1YmxpYyBob2xpZGF5cy4gVGhlcmUgaXMgbm8gZnVydGhlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBldmVudHMgaW4gdGhpcyBpY2FsIGZlZWQuJzsKJGxhbmdbJ2FsbGRheSddID0gJ0FsbCBEYXknOwokbGFuZ1snZGF5dmlldyddID0gJ0RheSBWaWV3JzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsKJGxhbmdbJ2Vycm9yX2ZldGNoaW5nX2V2ZW50cyddID0gJ09vcHMuLi4gc29tZXRoaW5nIGhhcHBlbmVkIHdoZW4gd2Ugd2VyZSB0YWxraW5nIHRvIHRoZSBzZXJ2ZXIsIHBsZWFzZSB0cnkgYWdhaW4nOwokbGFuZ1snbm9yZXN1bHRzJ10gPSAnU29ycnksIG5vIGV2ZW50cyBtYXRjaGluZyB5b3VyIGNyaXRlcmlhIHdlcmUgZm91bmQnOwokbGFuZ1snaGVscF9maW5kX3doZW4nXSA9ICdQYXN0IGFuZCBmdXR1cmUgZXZlbnRzIGFyZSBhbHdheXMgcmVsYXRpdmUgdG8gdGhlIGFjdHVhbCBkYXRlJzsKJGxhbmdbJ3Jlb3JkZXInXSA9ICdSZW9yZGVyJzsKJGxhbmdbJ2RmbHRfY29sb3JzJ10gPSAnRGVmYXVsdCBDb2xvcnMnOwokbGFuZ1snZWRpdF9jYXRlZ29yeSddID0gJ0VkaXQgY2F0ZWdvcnknOwokbGFuZ1snZmdjb2xvciddID0gJ0ZvcmVncm91bmQgQ29sb3InOwokbGFuZ1snYmdjb2xvciddID0gJ0JhY2tncm91bmQgQ29sb3InOwokbGFuZ1snaGVscF9maW5kX3Nob3djaGlsZHJlbiddID0gJ0luZGljYXRlcyBpZiBjaGlsZCBldmVudHMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHNlYXJjaCByZXN1bHRzPyc7CiRsYW5nWydoZWxwX2ZpbmRfZXZlbnRfa2V5d29yZCddID0gJ0VudGVyIG9uZSBvciBtb3JlIGtleXdvcmRzIHRvIHNlYXJjaCBieS4gIFRoZSBldmVudCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRldGFpbCBmaWVsZHMgd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIG1hdGNoaW5nIHdvcmRzLic7CiRsYW5nWydpbmZvX2ZpbmRfcmVzdWx0cyddID0gJ1RoZSBmaXJzdCAxMCBtYXRjaGVzIG9mIHlvdXIgcXVlcnkgYXJlIGRpc3BsYXllZCBiZWxvdy48YnIvPkNsaWNraW5nIG9uIHRoZSBldmVudCB0aXRsZSB3aWxsIGFsbG93IHlvdSB0byBlZGl0IHRoZSBldmVudC48YnIvPkNsaWNrIG9uIHRoZSB2aWV3IGljb24gdG8gbmF2aWdhdGUgdGhlIGNhbGVuZGFyIHRvIHRoZSBhcHByb3hpbWF0ZSBkYXRlIG9mIHRoZSBldmVudCA8ZW0+KGRlcGVuZGluZyBvbiB0aGUgdmlldyk8L2VtPic7CiRsYW5nWydnb3RvX2RhdGUnXSA9ICdHbyB0byB0aGlzIGRhdGUnOwokbGFuZ1snaW5mb19maW5kX2V2ZW50cyddID0gJ1NlYXJjaCBmb3IgbWF0Y2hpbmcgZXZlbnRzLiAgVXAgdG8gMTAgbWF0Y2hpbmcgZXZlbnRzIHdpbGwgYmUgcmV0dXJuZWQuJzsKJGxhbmdbJ3Jlc3VsdHMnXSA9ICdSZXN1bHRzJzsKJGxhbmdbJ2tleXdvcmRzJ10gPSAnS2V5d29yZHMnOwokbGFuZ1snZmluZF9zaG93Y2hpbGRyZW4nXSA9ICdTaG93IENoaWxkcmVuJzsKJGxhbmdbJ2FueSddID0gJ0FueSc7CiRsYW5nWydwYXN0J10gPSAnUGFzdCc7CiRsYW5nWydmdXR1cmUnXSA9ICdGdXR1cmUnOwokbGFuZ1snZmluZF93aGVuJ10gPSAnV2hlbic7CiRsYW5nWydmaW5kX3BhcmVudHNvbmx5J10gPSAnUGFyZW50cyBPbmx5JzsKJGxhbmdbJ2ZpbmQnXSA9ICdGaW5kLi4uJzsKJGxhbmdbJ2VkaXRwYXJlbnQnXSA9ICdFZGl0IHBhcmVudCc7CiRsYW5nWydoZWxwX2V2ZW50c3RhYiddID0gJzxwPlRoZSBldmVudHMgdGFiIHByb3ZpZGVzIGEgc2ltcGxlIHdheSB0byBicm93c2UgZXZlbnRzIGJ5IGRhdGUuICBUaGUgc2VsZWN0ZWQgZGF0ZSBpcyBzYXZlZCA8ZW0+KGluIGEgY29va2llKTwvZW0+IGZvciB0d28gZGF5cy4gIFRoaXMgdmlldyBhbHNvIHByb3ZpZGVzIHNpbXBsZSBlZGl0aW5nIGFuZCBkZWxldGlvbiBmdW5jdGlvbmFsaXR5LjwvcD48YnIvPjxwPkluIHRoZSBtb250aCB2aWV3IGRyYWdnaW5nIGFuIGV2ZW50IHdpbGwgY2hhbmdlIHRoZSBzdGFydCBkYXkgPGVtPihidXQgbm90IHRoZSB0aW1lKS48L2VtPi4gIFJlc2l6aW5nIHRoZSBldmVudCB3aWxsIGNoYW5nZSB0aGUgZXZlbnRzIGVuZCBkYXRlLjwvcD48YnIvPjxwPkluIHRoZSB3ZWVrLCBhbmQgZGF5IHZpZXdzIHRoZSBzdGFydCBkYXRlL3RpbWUgb2YgdGhlIGV2ZW50IGNhbiBiZSBjaGFuZ2VkIGJ5IGRyYWdnaW5nIHRoZSBldmVudC4gIFRoZSBlbmQgZGF0ZS90aW1lIG9mIHRoZSBldmVudCBjYW4gYmUgY2hhbmdlZCBieSByZXNpemluZyBpdC4gIEFkZGl0aW9uYWxseSwgdGhlc2Ugdmlld3Mgc3VwcG9ydCB0aGUgYWJpbGl0eSB0byBxdWlja2x5IGNoYW5nZSBhbiBldmVudCB0byBhbiBhbGwgZGF5IGV2ZW50IGJ5IGRyYWdnaW5nIGl0IGludG8gdGhlICZxdW90O0FsbCBEYXkmcXVvdDsgYXJlYSBhdCB0aGUgdG9wLjwvcD48YnIvPjxwPk5vIGNoZWNrcyBmb3IgY29uZmxpY3RzIGFyZSBwZXJmb3JtZWQgd2hlbiBkcmFnZ2luZyBldmVudHMuPC9wPic7CiRsYW5nWydwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCddID0gJ1JlbW92ZSB0aGlzIGV2ZW50IGZyb20gdGhlIHBhcmVudCBldmVudCc7CiRsYW5nWydpbmZvX3JlbW92ZWZyb21wYXJlbnQnXSA9ICdJZiBzZWxlY3RlZCwgdGhpcyBwYXJ0aWN1bGFyIGV2ZW50IHdpbGwgbm90IGJlIGVmZmVjdGVkIGJ5IGFueSBjaGFuZ2VzIGluIHRoZSBwYXJlbnQgZXZlbnQuJzsKJGxhbmdbJ2luZm9fZWRpdF9wYXJlbnRldmVudCddID0gJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhpcyBldmVudCByZWN1cnMgb24gb25lIG9yIG1vcmUgZGlmZmVyZW50IGRhdGVzLiAgQ2xpY2sgdGhlIG9wdGlvbiBiZWxvdyB1cGRhdGUgY2hpbGQgZXZlbnRzIHdpdGggdGhlIGRldGFpbHMgb2YgdGhpcyBldmVudC4nOwokbGFuZ1snaW5mb19lZGl0X2NoaWxkZXZlbnQnXSA9ICc8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgZXZlbnQgaXMgdGhlIGNoaWxkIG9mIGFub3RoZXIgZXZlbnQuICBDaGFuZ2VzIG1hZGUgaGVyZSB3aWxsIGVmZmVjdCBvbmx5IHRoaXMgcGFydGljdWxhciBjaGlsZC4gIFRvIGVmZmVjdCBhbGwgcmVjdXJyYW5jZXMgeW91IHNob3VsZCBhZGp1c3QgdGhlIHBhcmVudCBldmVudC4nOwokbGFuZ1snYWxsZGF5X2V2ZW50J10gPSAnVGhpcyBpcyBhbiBhbGxkYXkgZXZlbnQnOwokbGFuZ1snbm90ZSddID0gJ05vdGUnOwokbGFuZ1sndGl0bGVfcGFyZW50X2V2ZW50J10gPSAnVGhpcyBldmVudCByZWN1cnMsIGFuZCBjb250YWlucyBjaGlsZCBldmVudHMnOwokbGFuZ1snc3RhcnQnXSA9ICdTdGFydCc7CiRsYW5nWydlbmQnXSA9ICdFbmQnOwokbGFuZ1snZXZlbnRfYWN0aW9uJ10gPSAnRXZlbnQgQWN0aW9uJzsKJGxhbmdbJ2luZm9fZXZlbnRfYWN0aW9uJ10gPSAnU2VsZWN0IHRoZSBhY3Rpb24gdG8gcGVyZm9ybSBvbiB0aGlzIGV2ZW50Ljxici8+RWRpdGluZyB0aGUgZXZlbnQgd2lsbCByZWRpcmVjdCB0byBhIG5ldyBwYWdlLic7CiRsYW5nWydlcnJvcl9kZWxldGVwYXJlbnRldmVudCddID0gJ1NvcnJ5LCBidXQgeW91IGNhbm5vdCBkZWxldGUgYSBwYXJlbnQgZXZlbnQnOwokbGFuZ1snY2hpbGQnXSA9ICdDaGlsZCc7CiRsYW5nWydyZXBlYXRzJ10gPSAncmVwZWF0cyc7CiRsYW5nWydlcnJvcl9ldmVudG5vdGZvdW5kJ10gPSAnRXZlbnQgbm90IGZvdW5kJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdVbmtub3duIGVycm9yJzsKJGxhbmdbJ2luZm9fY2FsX2ZpbHRlcl9ieSddID0gJ1doZW4gc2VhcmNoaW5nIDxlbT4oZmlsdGVyaW5nKTwvZW0+IGJ5IHdvcmRzIGluIHRoZSB0aXRsZSwgZGF0ZSBzY3JvbGxpbmcgaXMgbm90IGF2YWlsYWJsZSc7CiRsYW5nWydtc2dfbm9kYXRlcyddID0gJ1RpdGxlIHNlYXJjaCBhcHBsaWVkJzsKJGxhbmdbJ3RpdGxlX3JlY3VycmluZ19ldmVudCddID0gJ1RoaXMgaXMgYSByZWN1cnJpbmcgZXZlbnQgd2l0aCBjaGlsZHJlbic7CiRsYW5nWyd0aXRsZV9jaGlsZF9ldmVudCddID0gJ1RoaXMgaXMgYSByZWN1cnJhbmNlIG9mIGEgcGFyZW50IGV2ZW50JzsKJGxhbmdbJ2Vycm9yX3NvbWVkZWxldGVkJ10gPSAnU29tZSBvZiB0aGUgZXZlbnRzIHdlcmUgZGVsZXRlZC4gIEhvd2V2ZXIsIGR1ZSB0byBwZXJtaXNzaW9ucyBzb21lIHdlcmUgbm90JzsKJGxhbmdbJ2Vycm9yX25vbmVkZWxldGVkJ10gPSAnRHVlIHRvIHBlcm1pc3Npb25zIG9yIG90aGVyIGVycm9ycywgbm9uZSBvZiB0aGUgc2VsZWN0ZWQgZXZlbnRzIHdlcmUgZGVsZXRlZCc7CiRsYW5nWydlcnJvcl9kZWxldGVmYWlsZWQnXSA9ICdFdmVudCBkZWxldGlvbiBmYWlsZWQnOwokbGFuZ1snZmlsZWF0dGFjaG1lbnQnXSA9ICdGaWxlIEF0dGFjaG1lbnQnOwokbGFuZ1sncHJvbXB0X2dlbmVyYWxfc2V0dGluZ3MnXSA9ICdHZW5lcmFsIFNldHRpbmdzJzsKJGxhbmdbJ3Byb21wdF9lZGl0aW5nX3NldHRpbmdzJ10gPSAnRXZlbnQgRWRpdGluZyBTZXR0aW5ncyc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X3NldHRpbmdzJ10gPSAnRnJvbnRlbmQgRWRpdGluZyBTZXR0aW5ncyc7CiRsYW5nWydwcmV2X21vbnRoJ10gPSAnR28gdG8gdGhlIHByZXZpb3VzIG1vbnRoJzsKJGxhbmdbJ25leHRfbW9udGgnXSA9ICdHbyB0byB0aGUgbmV4dCBtb250aCc7CiRsYW5nWydpbmZvX2N1c3RvbWZpZWxkc190YWInXSA9ICdDdXN0b20gZmllbGRzIGNhbiBiZSByZW9yZGVyZWQgYnkgZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIHJvd3MuICBPbmx5IHRleHQgZmllbGRzIGFyZSBzZWFyY2hhYmxlLCBhbmQgb25seSB0ZXh0IGFyZWFzIGNhbiBoYXZlIFdZU0lXWUcgZmllbGRzIGF0dGFjaGVkLiA8c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+Tm90ZTo8L3N0cm9uZz4gV1lTSVdZRyBmaWVsZHMgd2lsbCBub3QgYmUgc2hvd24gZm9yIHRleHRhcmVhIGZpZWxkcyBvbiB0aGUgZnJvbnRlbmQuJzsKJGxhbmdbJ21zZ19jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yaWVzIHVwZGF0ZWQnOwokbGFuZ1snbXNnX2ZpZWxkc3VwZGF0ZWQnXSA9ICdGaWVsZCBkZWZpbml0aW9ucyB1cGRhdGVkJzsKJGxhbmdbJ3d5c2l3eWcnXSA9ICdXWVNJV1lHJzsKJGxhbmdbJ2luZm9fcmVvcmRlcl9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcnkgb3JkZXIgY2FuIGJlIGRlZmluZWQgYnkgZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIHJvd3MnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnluYW1lcm93J10gPSAnVGhlIG5hbWUgaGFzIGJlZW4gZXJhc2VkIGZvciBhIHZhbGlkIGNhdGVnb3J5IGF0IHJvdzonOwokbGFuZ1snY29uZmlybV9ub2NhdGVnb3JpZXMnXSA9ICdXZSBkZXRlY3RlZCBubyB2YWxpZCBjYXRlZ29yaWVzLiAgQXJlIHlvdSBzdXJlIHRoYXQgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvPyc7CiRsYW5nWydhZGRfZmllbGQnXSA9ICdBZGQgZmllbGQnOwokbGFuZ1snYWRkX2NhdGVnb3J5J10gPSAnQWRkIGNhdGVnb3J5JzsKJGxhbmdbJ3Byb21wdF9maXJzdGRheW9md2VlayddID0gJ0ZpcnN0IGRheSBvZiB0aGUgd2Vlayc7CiRsYW5nWydlZGl0X2V2ZW50J10gPSAnRWRpdCB0aGlzIGV2ZW50JzsKJGxhbmdbJ2VkaXRfcGFyZW50X2V2ZW50J10gPSAnRWRpdCB0aGUgcGFyZW50IGV2ZW50JzsKJGxhbmdbJ3RpdGxlX2NoaWxkX2V2ZW50J10gPSAnVGhpcyBpcyBhIGNoaWxkIG9mIGEgcGFyZW50IHJlY3VycmluZyBldmVudCc7CiRsYW5nWydzZWxlY3RfcGVyaW9kJ10gPSAnUGVyaW9kJzsKJGxhbmdbJ3Nob3dfZmlsdGVyJ10gPSAnU2hvdyBmaWx0ZXInOwokbGFuZ1snc2hvd19maWx0ZXJfYXBwbGllZCddID0gJ1Nob3cgZmlsdGVyIDxlbT4oYXBwbGllZCk8L2VtPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0JzsKJGxhbmdbJ2NhbF9jdXJyZW50J10gPSAnVGhpcyBwZXJpb2QnOwokbGFuZ1snY2FsX2Zyb20nXSA9ICdGcm9tJzsKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ1RoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4gdG8gRkVVLiAgQWRkaW5nIG9yIGVkaXRpbmcgZXZlbnRzIGlzIG5vdCBwZXJtaXR0ZWQnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ0ZyaWVuZGx5IE5hbWUgZm9yIHRoaXMgTW9kdWxlIGluIEFkbWluIE5hdmlnYXRpb24nOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdOb3RlOiBZb3UgbWF5IG5lZWQgdG8gY2xlYXIgdGhlIHNpdGUgY2FjaGUgZm9yIHRoaXMgcHJlZmVyZW5jZSB0byBoYXZlIGVmZmVjdC4gIElmIG5vIHZhbHVlIGlzIHN1cHBsaWVkIGEgZGVmYXVsdCB3aWxsIGJlIHVzZWQuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnVXNlIFd5c2l3eWcnOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnSW5zdWZmaWNpZW50IG9yIGludmFsaWQgcGFyYW1ldGVycyc7CiRsYW5nWydjb2x1bW5fZGVsaW1pdGVyJ10gPSAnSW1wb3J0IGZpbGUgY29sdW1uIGRlbGltaXRlcic7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0IENvbXBsZXRlJzsKJGxhbmdbJ251bV9pbXBvcnRlZCddID0gJ051bWJlciBvZiBldmVudHMgY3JlYXRlZDogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnTnVtYmVyIG9mIGxpbmVzIHByb2Nlc3NlZCBmcm9tIGZpbGU6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0Vycm9ycyc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnXSA9ICdGaWVsZDogJXMgaXMgbm90IHJlY29nbml6ZWQsIGFuZCBpcyBub3QgYSBjdXN0b20gZmllbGQnOwokbGFuZ1snaW5mb19jc3ZfZm9ybWF0J10gPSA8PDxFT1QKPGg0PkNTViBGaWxlIEZvcm1hdCBJbmZvcm1hdGlvbi48L2g0Pgo8dWw+CiAgPGxpPkdlbmVyYWwgSW5mb3JtYXRpb246CiAgIDx1bD4KICAgICA8bGk+VGhlIGZpbGUgbXVzdCBiZSBhbiBBU0NJSSBmaWxlIHdpdGggdW5peCAocHJlZmVycmVkKSwgZG9zLCBvciBtYWMgbGluZSBlbmRpbmdzLjwvbGk+CiAgICAgPGxpPkNvbW1lbnRzIHN0YXJ0IHdpdGggLy8gYW55IGNoYXJhY3RlcnMgYWZ0ZXIgdGhpcyBvbiBhIGxpbmUgd2lsbCBiZSBpZ25vcmVkIChpbmNsdWRpbmcgd2l0aGluIHF1b3Rlcy48L2xpPgogICAgIDxsaT5FbXB0eSBsaW5lcyBhcmUgaWdub3JlZDwvbGk+CiAgICAgPGxpPkZpZWxkIGRlbGltaXRlcnMgYXJlIHVzZXIgY29udHJvbGxhYmxlLCBob3dldmVyIGEgZGVsaW1pdGVyIGNhbiBiZSB1c2VkIGFzIGEgdmFsdWUgd2l0aGluIGEgZmllbGQgaWYgdGhlIGZpZWxkIGlzIGRlbGltaXRlZCBieSBkb3VibGUgcXVvdGVzLjwvbGk+CiAgICAgPGxpPlJvd3MgYXJlIGRlbGltaXRlZCBieSBuZXdsaW5lIGNoYXJzIChhcyBhYm92ZSkuPC9saT4KICAgPC91bD4KICA8L2xpPgogIDxsaT5UaGUgRmllbGQgTWFwOgogICA8dWw+CiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgJnF1b3Q7Y3VzdG9tIGZpZWxkcyZxdW90OyBhcmUgZGVmaW5lZCBpbiB0aGUgZmlsZS4gRGF0YSBjYW4gc3RhcnQgb24gdGhlIHNlY29uZCBub24tZW1wdHkgbGluZSwgb3IgYWZ0ZXIuPC9saT4KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+CiAgICA8bGk+VGhlcmUgaXMgb25lIG9wdGlvbmFsIGNvbHVtbjo6ICZxdW90O2NhdGVnb3J5JnF1b3Q7LiAgSWYgc3BlY2lmaWVkIGl0IGNhbiBjb250YWluIGEgOyBzZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBuYW1lcyB0aGF0IHRoZSBldmVudCB3aWxsIGJlbG9uZyB0by48L2xpPgogICA8L3VsPgogIDwvbGk+CiAgPGxpPlRoZSBEYXRhIFJvd3M6CiAgIDx1bD4KICAgIDxsaT5UaGUgc3RhcnQgdGltZSwgdGl0bGUsIGFuZCBkZXNjcmlwdGlvbiBmaWVsZHMgbXVzdCBub3QgYmUgZW1wdHkuPC9saT4KPGxpPlN0YXJ0IGFuZCBFbmQgVGltZXM6PC9saT4KICA8dWw+CiAgIDxsaT5TdGFydCB0aW1lIHByb2Nlc3NpbmcgaXMgZmxleGlibGUuICBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyICBZWVlZLU1NLUREIEhIOk1NIGZvcm1hdCwgb3IgbWFueSBmb3JtYXRzIGFzIGRlZmluZWQgYnkgdGhlIHN0cnRvdGltZSBmdW5jdGlvbiwgaW5jbHVkaW5nIHJlbGF0aXZlIHRpbWVzLiAgSWYgYSByZWxhdGl2ZSB0aW1lIGlzIHN1cHBsaWVkIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS48L2xpPgogICA8bGk+RW5kIHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZSwgYW5kIG1heSBiZSBlbXB0eS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYW4gYWJzb2x1dGUgdGltZSAoaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBzdGFydCB0aW1lKSBvciBhIHJlbGF0aXZlIHRpbWUuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3BlY2lmaWVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCB0aW1lLiAgIGkuZTogJnF1b3Q7KzQgaG91cnMmcXVvdDsgd291bGQgaW5kaWNhdGUgNCBob3VycyBmcm9tIHRoZSBzdGFydCB0aW1lIGNvbHVtbi48L2xpPgogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICZxdW90O0FsbCBkYXkmcXVvdDsgPGVtPihjYXNlIGluc2Vuc2l0aXZlKTwvZW0+IGl0IHdpbGwgYXNzdW1lIGFuIGFsbCBkYXkgZXZlbnQgZnJvbSB0aGUgc3RhcnQgdGltZS48L2xpPgogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPkNhdGVnb3JpZXMKICA8dWw+CiAgIDxsaT5JZiBzcGVjaWZpZWQsIHRoZSBjYXRlZ29yeSBjb2x1bW4gY2FuIGNvbnRhaW4gYSBsaXN0IChzZXBhcmF0ZWQgYnkgOykgb2YgY2F0ZWdvcnkgbmFtZXMgZm9yIHdoaWNoIHRoZSBldmVudCBzaG91bGQgYmVsb25nLjwvbGk+CiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4KICAgPGxpPkNhdGVnb3JpZXMgYXJlIG5vdCBjcmVhdGVkIGlmIHRoZXkgZG8gbm90IGV4aXN0LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPkN1c3RvbSBGaWVsZHM6CiAgPHVsPgogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPgogICAgPGxpPkN1dG9tIGZpZWxkcyBhcmUgbm90IGNyZWF0ZWQgaWYgc3BlY2lmaWVkIGluIHRoZSBDU1YgZmlsZS4gIFVua25vd24gY3VzdG9tIGZpZWxkIGNvbHVtbnMgd2lsbCBiZSBpZ25vcmVkLjwvbGk+CiAgICA8bGk+Q3VzdG9tIGZpZWxkcyBvZiB0eXBlICZxdW90O2ZpbGUmcXVvdDsgY2Fubm90IGJlIGltcG9ydGVkLiAgVGhlIGVudGlyZSBpbXBvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbC48L2xpPgogIDwvdWw+CiAgPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+QSBzYW1wbGUgY3N2IGZpbGUgZXhpc3RzIGluIHRoZSBtb2R1bGVzIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS48L2xpPgo8L3VsPgpFT1Q7CiRsYW5nWydwcm9tcHRfY3N2X2ZpbGUnXSA9ICdTZWxlY3QgSW1wb3J0IEZpbGUnOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ2NkX2NvbXBhbnknXSA9ICdDb21wYW55IERpcmVjdG9yeSBDb21wYW55JzsKJGxhbmdbJ2RmbHRfdXJscHJlZml4J10gPSAnRGVmYXVsdCBVUkwgcHJlZml4IGZvciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmV3IGV2ZW50cyBhcmUgJnF1b3Q7QWxsIERheSZxdW90OyBldmVudHMgYnkgZGVmYXVsdCc7CiRsYW5nWydkZmx0X3N0YXJ0dGltZSddID0gJ0RlZmF1bHQgc3RhcnQgdGltZSBmb3IgbmV3IGV2ZW50cyc7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPihhcHBsaWVzIG9ubHkgaWYgbmV3IGV2ZW50cyBhcmUgbm90ICZxdW90O0FsbCBEYXkmcXVvdDsgZXZlbnRzLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ1NlYXJjaCBUeXBlJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdSZXR1cm4gcmVzdWx0cyBtYXRjaGluZyBhbnkgd29yZCc7CiRsYW5nWydzZWFyY2hfYWxsJ10gPSAnUmV0dXJuIHJlc3VsdHMgbWF0Y2hpbmcgYWxsIHdvcmRzJzsKJGxhbmdbJ3NlYXJjaGFibGUnXSA9ICdTZWFyY2hhYmxlJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCBlZGl0IGV2ZW50IHRlbXBsYXRlIHRvIHVzZSB3aGVuIGEgdXNlciBjcmVhdGVzIG9yIGVkaXRzIGFuIGV2ZW50JzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQgcGFnZSBmb3IgdGhlIGVkaXQgZm9ybS4nOwokbGFuZ1snaGVscF9wYXJhbV9teWV2ZW50c3RlbXBsYXRlJ10gPSAnQXBwbGljYWJsZSBvbmx5IHRvIHRoZSBteWV2ZW50cyBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIGEgbm9uIGRlZmF1bHQgdGVtcGxhdGUgdG8gdXNlJzsKJGxhbmdbJ2NhbF9lZGl0X2V2ZW50J10gPSAnRWRpdCBDYWxlbmRhciBFdmVudCc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgRXJyb3InOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdQcm90b3R5cGUgJnF1b3Q7RWRpdCBFdmVudCZxdW90OyBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZGVsZXRlZXZlbnRfdGVtcGxhdGUnXSA9ICdQcm90b3R5cGUgJnF1b3Q7RGVsZXRlIEV2ZW50JnF1b3Q7IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9teWV2ZW50c190ZW1wbGF0ZSddID0gJ1Byb3RvdHlwZSAmcXVvdDtNeSBFdmVudHMmcXVvdDsgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9ncm91cCddID0gJ01lbWJlcnMgb2YgdGhpcyBGRVUgZ3JvdXAgY2FuIGFkZCBldmVudHMnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnRGVmYXVsdCBwYWdlIGZvciB0aGUgZnJvbnRlbmQgZWRpdCBmb3JtLic7CiRsYW5nWydub25lJ10gPSAnTm9uZSc7CiRsYW5nWydvd25lciddID0gJ093bmVyJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnRWRpdCBFdmVudCBGb3JtIFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfZGVsZXRlZXZlbnRfdGVtcGxhdGVzJ10gPSAnRGVsZXRlIEV2ZW50IEZvcm0gVGVtcGxhdGVzJzsKJGxhbmdbJ2luZm9fZWRpdGV2ZW50X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBlZGl0IGV2ZW50IGZvcm0nOwokbGFuZ1snaW5mb19kZWxldGVldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgZGVsZXRlIGV2ZW50IGZvcm0nOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIEVkaXQgRXZlbnQgRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydkZWxldGVldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIERlbGV0ZSBFdmVudCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdNeSBFdmVudHMgTGlzdCBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19teWV2ZW50c190ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHVzZXIgZXZlbnRzJzsKJGxhbmdbJ215ZXZlbnRzdGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgJnF1b3Q7TXkgRXZlbnRzJnF1b3Q7IHJlcG9ydCB0ZW1wbGF0ZSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVGhpcyBhY3Rpb24gd2lsbCByZW1vdmUgYW55IGV2ZW50cyB0aGF0IGNvbmZsaWN0IHdpdGggbm9uLW92ZXJsYXBwYWJsZSBldmVudHMuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdGVyIENvbmZsaWN0aW5nIEV2ZW50cyc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdTaWxlbnRseSByZW1vdmUgY29uZmxpY3RpbmcgZXZlbnRzJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnRGlzcGxheSBhbiBlcnJvcic7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdXaGF0IHNob3VsZCBoYXBwZW4gd2hlbiBhIGNvbmZsaWN0IGlzIGRldGVjdGVkIGR1cmluZyBlZGl0aW5nIG9yIGFkZGluZyBvZiBhbiBldmVudCc7CiRsYW5nWydlcnJvcl9ldmVudF9jb25mbGljdCddID0gJ1RoZSBldmVudCB2YWx1ZXMgc3BlY2lmaWVkIG92ZXJsYXAgd2l0aCBhbiBleGlzdGluZyBldmVudCB0aGF0IGRvZXMgbm90IGFsbG93IGNvbmZsaWN0cyc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnQXBwbGllcyBvbmx5IHRvIGV2ZW50cyB3aXRoIGFuIGVuZCB0aW1lIChvciBhbGwgZGF5IGV2ZW50cyknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdBbGxvdyBuZXcgZXZlbnRzIHRvIG92ZXJsYXAgd2l0aCB0aGlzIG9uZSc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9wb2xpY3knXSA9ICdFdmVudCBPdmVybGFwIFBvbGljeSc7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ05vIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ0RlY2lkZWQgb24gYW4gZXZlbnQgYnkgZXZlbnQgYmFzaXMnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdCYWNrJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOwokbGFuZ1snZXJyb3JfY2FsZW5kYXJfaW5jb21wYXRpYmxlJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCB0aGF0IHRoZSBDYWxlbmRhciBtb2R1bGUgaXMgYWxzbyBpbnN0YWxsZWQuLiAgVGhpcyBtb2R1bGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgQ2FsZW5kYXIgbW9kdWxlIGFuZCBjYW5ub3QgY28tZXhpc3Qgd2l0aCBpdCBvbiB0aGUgc2FtZSBpbnN0YWxsLiAgUGxlYXNlIHVuaW5zdGFsbCB0aGUgQ2FsZW5kYXIgbW9kdWxlJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0VpdGhlciBldmVudF9pZCBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBvciB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGV2ZW50IHdpdGggdGhpcyBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnJmx0OyZsdDsnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnJmx0Oyc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICcmZ3Q7JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJyZndDsmZ3Q7JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdlICVkIG9mICVkJzsKJGxhbmdbJ3NlYXJjaF9yZXN1bHRzJ10gPSAnQ2FsZW5kYXIgU2VhcmNoIFJlc3VsdHMnOwokbGFuZ1snc2VhcmNoX3dvcmRzJ10gPSAnU2VhcmNoIFdvcmRzJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdObyBkaXNwbGF5YWJsZSBldmVudHMgZm91bmQgZm9yIHRoaXMgcGVyaW9kLic7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdGcmVxdWVuY3knOwokbGFuZ1snc3BlY2lmaWVkX2RhdGUnXSA9ICdVc2UgdGhlIHNwZWNpZmllZCBkYXRlJzsKJGxhbmdbJ2ZpcnN0X3N1bmRheSddID0gJ0ZpcnN0IFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnRmlyc3QgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnRmlyc3QgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRmlyc3QgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ0ZpcnN0IFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9mcmlkYXknXSA9ICdGaXJzdCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3NhdHVyZGF5J10gPSAnRmlyc3QgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdTZWNvbmQgU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfbW9uZGF5J10gPSAnU2Vjb25kIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3R1ZXNkYXknXSA9ICdTZWNvbmQgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3dlZG5lc2RheSddID0gJ1NlY29uZCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF90aHVyc2RheSddID0gJ1NlY29uZCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ1NlY29uZCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9zYXR1cmRheSddID0gJ1NlY29uZCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfc3VuZGF5J10gPSAnVGhpcmQgU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9tb25kYXknXSA9ICdUaGlyZCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3R1ZXNkYXknXSA9ICdUaGlyZCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUaGlyZCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnVGhpcmQgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX2ZyaWRheSddID0gJ1RoaXJkIEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfc2F0dXJkYXknXSA9ICdUaGlyZCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ0ZvdXJ0aCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9tb25kYXknXSA9ICdGb3VydGggTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ0ZvdXJ0aCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnRm91cnRoIFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3RodXJzZGF5J10gPSAnRm91cnRoIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnRm91cnRoIEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3NhdHVyZGF5J10gPSAnRm91cnRoIFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ0xhc3QgU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X21vbmRheSddID0gJ0xhc3QgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3R1ZXNkYXknXSA9ICdMYXN0IFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3Rfd2VkbmVzZGF5J10gPSAnTGFzdCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfdGh1cnNkYXknXSA9ICdMYXN0IFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X2ZyaWRheSddID0gJ0xhc3QgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnTGFzdCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwoKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnSW52YWxpZCBmcmVxdWVuY3kuLi4uIHlvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIHRoZSBzcGVjaWZpZWQgZGF0ZSBBTkQgb3RoZXIgdmFsdWVzJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIGRpc3BsYXknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1Byb3RvdHlwZSBTZWFyY2ggUmVzdWx0IFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9zZWFyY2hfcmVzdWx0X3RlbXBsYXRlcyddID0gJ1NlYXJjaCBSZXN1bHQgVGVtcGxhdGVzJzsKJGxhbmdbJ2Vycm9yX3F1ZXJ5X2ZhaWxlZCddID0gJ0RhdGFiYXNlIFF1ZXJ5IEZhaWxlZCc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ0ludmFsaWQgU2VhcmNoIERhdGVzIFNwZWNpZmllZCc7CiRsYW5nWyd0ZXh0J10gPSAnVGV4dCc7CiRsYW5nWydzZWFyY2gnXSA9ICdTZWFyY2gnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnUHJvdG90eXBlIFNlYXJjaCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc2VhcmNoX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBzZWFyY2ggZm9ybSc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnU2VhcmNoIEZvcm0gVGVtcGxhdGVzJzsKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ3RpbWVzJzsKJGxhbmdbJ29uJ10gPSAnb24nOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8gIENvbnRpbnVpbmcgd2lsbCBwZXJtYW5lbmVudGx5IGVyYXNlIGFsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZHVsZS4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdUaGUgQ2FsZW5kYXIgbW9kdWxlIGhhcyBiZWVuIHVuaW5zdGFsbGVkIGFuZCBhbGwgZXZlbnQgYW5kIHRlbXBsYXRlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZHVsZSBoYXMgYmVlbiByZW1vdmVkJzsKJGxhbmdbJ2ZpZWxkdXBkYXRlZCddID0gJ0ZpZWxkIFVwZGF0ZWQnOwokbGFuZ1snZXZlcnknXSA9ICdFdmVyeSc7CiRsYW5nWydvciddID0gJ29yJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ1VwZGF0ZSBDaGlsZCBFdmVudHMnOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ1lvdSBtdXN0IHNlbGVjdCBhdCBsZWFzdCBvbmUgY2F0ZWdvcnknOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTm90aGluZyBoYXMgYmVlbiBzZWxlY3RlZCB0byBkZWxldGUnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnVGhlIHJlY3VyaW5nIGV2ZW50IHBhcmFtZXRlcnMgeW91IGhhdmUgc3BlY2lmaWVkIHdvdWxkIHJlc3VsdCBpbiBvdmVybGFwcGluZyBldmVudHMuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JlY3Vycyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnT25lIG9yIG1vcmUgb2YgdGhlIGRhdGUgdmFsdWVzIGVudGVyZWQgd2VyZSBpbnZhbGlkJzsKJGxhbmdbJ3N1bmRheSddID0gJ1N1bmRheSc7CiRsYW5nWydtb25kYXknXSA9ICdNb25kYXknOwokbGFuZ1sndHVlc2RheSddID0gJ1R1ZXNkYXknOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnV2VkbmVzZGF5JzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnVGh1cnNkYXknOwokbGFuZ1snZnJpZGF5J10gPSAnRnJpZGF5JzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU2F0dXJkYXknOwoKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnU3UnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUdSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1dlJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdUaCc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CgokbGFuZ1snd2VlayddID0gJ1dlZWsnOwokbGFuZ1snbW9udGgnXSA9ICdNb250aCc7CiRsYW5nWydkYXknXSA9ICdEYXknOwokbGFuZ1sndG9kYXknXSA9ICdUb2RheSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dlZWtkYXlzJzsKJGxhbmdbJ3BsdXJhbF9ub25lJ10gPSAnTm9uZSc7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEYXlzJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdXZWVrcyc7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01vbnRocyc7CiRsYW5nWydwbHVyYWxfeWVhcmx5J10gPSAnWWVhcnMnOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWyd5ZXMnXSA9ICdZZXMnOwokbGFuZ1snZGFpbHknXSA9ICdEYWlseSc7CiRsYW5nWyd3ZWVrbHknXSA9ICdXZWVrbHknOwokbGFuZ1snbW9udGhseSddID0gJ01vbnRobHknOwokbGFuZ1sneWVhcmx5J10gPSAnWWVhcmx5JzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnUmVwZWF0IGV2ZXJ5JzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnUmVjdXJyaW5nIEV2ZW50IERldGFpbHMnOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnVW5saW1pdGVkJzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBldmVudHMnOwokbGFuZ1sndXNlX3RvX2RhdGUnXSA9ICdTcGVjaWZ5IGEgZGlmZmVyZW50IGVuZCBkYXRlL3RpbWU/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzIDxlbT4obWF5IHJlc3VsdCBpbiB2ZXJ5IGxvbmcgZGlzcGxheSk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2EnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVjdXIgVW50aWwnOwokbGFuZ1sncGFyZW50J10gPSAnUGFyZW50JzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1JlY3VyIFBlcmlvZCc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1N0YXJ0IERhdGUnOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFbmQgRGF0ZSc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB1cGNvbWluZ2xpc3Qgdmlld3MnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIFVwY29taW5nbGlzdCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQcm90b3R5cGUgVXBjb21pbmdsaXN0IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBsaXN0IHZpZXdzJzsKJGxhbmdbJ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gTGlzdCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnUHJvdG90eXBlIExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1Byb3RvdHlwZSBFdmVudCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZnVsbGNhbGVuZGFyX3RlbXBsYXRlJ10gPSAnUHJvdG90eXBlIGZ1bGxDYWxlbmRhciBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGNhbGVuZGFyIHZpZXdzJzsKJGxhbmdbJ2luZm9fZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGZ1bGxjYWxlbmRhciB2aWV3JzsKJGxhbmdbJ2Z1bGxjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIGZ1bGxDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgQ2FsZW5kYXIgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdQcm90b3R5cGUgQ2FsZW5kYXIgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X3RlbXBsYXRlJ10gPSAnVGhpcyBmb3JtIGRlZmluZXMgdGhlIHRlbXBsYXRlIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4geW91IGNsaWNrICZxdW90O05ldyBUZW1wbGF0ZSZxdW90OyBpbiB0aGUgYXBwcm9wcmlhdGUgdGFiLiAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIGhhdmUgbm8gaW1tZWRpYXRlIGVmZmVjdCBvbiB0aGUgZGlzcGxheXMgZ2VuZXJhdGVkIGZyb20gdGhpcyBtb2R1bGUuJzsKCiMgTGFuZ3VhZ2U6IGVuX1VTCiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NhbGxlZCBhZnRlciBhZGRpbmcgYSBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgZWRpdGluZyBhbiBleGlzdGluZyBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGFuIGV2ZW50IGhhcyBiZWVuIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYSBjYXRlZ29yeSBpcyBjcmVhdGVkJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0NhbGxlZCBhZnRlciBhIGNhdGVnb3J5IGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGEgY2F0ZWdvcnkgaXMgZGVsZXRlZCc7CgokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICcKPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgYWRkZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEV2ZW50IFRpdGxlPC9saT4KPGxpPlwiZXZlbnRfc3VtbWFyeVwiIC0gU3VtbWFyeSBUZXh0PC9saT4KPGxpPlwiZXZlbnRfZGV0YWlsc1wiIC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPgo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4KPGxpPlwiZXZlbnRfZGF0ZV9lbmRcIiAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4KPGxpPlwiZXZlbnRfY3JlYXRlZF9ieVwiIC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4KPGxpPlwiZXZlbnRfaWRcIiAtIFRoZSBldmVudCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICcKPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT5cImV2ZW50X3RpdGxlXCIgLSBFdmVudCBUaXRsZTwvbGk+CjxsaT5cImV2ZW50X3N1bW1hcnlcIiAtIFN1bW1hcnkgVGV4dDwvbGk+CjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4KPGxpPlwiZXZlbnRfZGF0ZV9zdGFydFwiIC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+CjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+CjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+CjxsaT5cImV2ZW50X2lkXCIgLSBUaGUgZXZlbnQgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJwo8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT5cImV2ZW50X2lkXCIgLSBUaGUgZXZlbnQgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICcKPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgYWRkZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICcKPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT5cImNhdGVnb3J5X2lkXCIgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPgo8bGk+XCJjYXRlZ29yeV9uYW1lXCIgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+CjxsaT5cImNhdGVnb3J5X29yZGVyXCIgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnCjxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+CjxsaT5cImNhdGVnb3J5X25hbWVcIiAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4KPGxpPlwiY2F0ZWdvcnlfb3JkZXJcIiAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4KPC91bD4KJzsKCiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRXJyb3IgaW1wb3J0aW5nIGV2ZW50IGZyb20gY3N2IGF0IGxpbmUgJWQnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5lZmxkbm90Zm91bmQnXSA9ICdBIHJlcXVpcmVkIGZpZWxkOiAlcywgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBjc3YgZmlsZSBoZWFkZXIgbGluZSc7CiRsYW5nWydlcnJvcl9jc3ZpbnZhbGlkZmlyc3RsaW5lJ10gPSAnQ291bGQgbm90IGZpbmQgYSB2YWxpZCBmaXJzdCBsaW5lIG9mIHRoZSBDU1YgZmlsZSc7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW50IEFkZGVkJzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnQSB0aXRsZSBmb3IgdGhlIGV2ZW50IGlzIHJlcXVpcmVkJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJST1I6IE5vIHVwbG9hZGVkIGZpbGUgZm91bmQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRVJST1I6IFRoZSBmaWxlIHVwbG9hZGVkIGNhbm5vdCBiZSBhY2NlcHRlZCc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0VSUk9SOiBBIHByb2JsZW0gb2NjdXJyZWQgdHJ5aW5nIHRvIHVwbG9hZCB0aGUgZmlsZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VSUk9SOiBBIFByb2JsZW0gb2NjdXJyZWQgd2hlbiBjb3B5aW5nIHRoZSBmaWxlIHRvIGl0cyBmaW5hbCBkZXN0aW5hdGlvbic7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJST1I6IEEgZmlsZSBieSB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRVJST1I6IENvdWxkIG5vdCBmaW5kIHRoZSBDU1YgRmlsZSc7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUlJPUjogQ2Fubm90IG9wZW4gZmlsZSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk9SOiBBIGNhdGVnb3J5IHdpdGggdGhlIG5hbWUgJXMgYWxyZWFkeSBleGlzdHMnOwoKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9mdWxsY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdmdWxsQ2FsZW5kYXIgdGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGd1eXMgQ2FsZW5kYXInOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnUHJvdG90eXBlIHRlbXBsYXRlcyc7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdBZGQsIGVkaXQgYW5kIHJlbW92ZSBldmVudHMnOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnQWRkIGV2ZW50JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0IGV2ZW50cyc7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAnRXZlbnRzJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmllcyc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdDYWxlbmRhciB0ZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdMaXN0IFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVXBjb21pbmcgdGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ0V2ZW50IHRlbXBsYXRlcyc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgUHJldic7CiRsYW5nWydjYWxfbmV4dCddID0gJ05leHQgJnJhcXVvOyc7CgokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpZXMgdXBkYXRlZCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldHRpbmdzIHVwZGF0ZWQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0FkZCBldmVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXQgdGhpcyBldmVudCc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnRGVsZXRlIHRoaXMgZXZlbnQnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT8nOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwZGF0ZSB0ZW1wbGF0ZSc7CgokbGFuZ1snY2FsX3N1bmRheSddID0gJ1N1bmRheSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTW9uZGF5JzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnVHVlc2RheSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnV2VkbmVzZGF5JzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ1RodXJzZGF5JzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmlkYXknOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2F0dXJkYXknOwokbGFuZ1snY2FsX3N1biddID0gJ1N1bic7CiRsYW5nWydjYWxfbW9uJ10gPSAnTW9uJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVHVlJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdXZWQnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnVGh1JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdGcmknOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhdCc7CgokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW51YXJ5JzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJ1YXJ5JzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ01hcmNoJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYXknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5lJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVseSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0RlY2VtYmVyJzsKCiRsYW5nWydjYWxfYWRkJ10gPSAnQWRkJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdVcGRhdGUnOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnRXZlbnQnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRlJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU3VtbWFyeSc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFpbHMnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtb3JlID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdSZXR1cm4nOwokbGFuZ1snY2FsX3RvJ10gPSAndG8nOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnUGFzdCBldmVudHMnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ1VwY29taW5nIGV2ZW50cyc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnQW55IGNhdGVnb3J5JzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnU2hvdyBvbmx5IGV2ZW50cyBpbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnU2VhcmNoIHRpdGxlIDxlbT4ocmVnZXgpPC9lbT4nOwokbGFuZ1snY2FsX2dvJ10gPSAnR28nOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0bGUnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnU3RhcnQgRGF0ZSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnVG8gRGF0ZSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1N1bW1hcnknOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSBmdWxsIGZlYXR1cmVkLCBhbmQgZmxleGlibGUgbW9kdWxlIHRvIGFsbG93IGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQgZXZlbnRzIGluIG51bWVyb3VzIGZvcm1hdHMuJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ1VwZGF0ZSBDYXRlZ29yaWVzJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ0xhbmd1YWdlJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ1VwZGF0ZSBTZXR0aW5ncyc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnVXNlIHR3ZWx2ZSBob3VyIGNsb2NrIG9uIGhvdXIgZHJvcC1kb3ducz8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdEZWZhdWx0IENhdGVnb3J5JzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnVXBkYXRlIEZpZWxkcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddPSdGb3JjZSBhdCBsZWFzdCBvbmUgY2F0ZWdvcnknOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddPSdIb3cgbWFueSB5ZWFycyBpbiB0aGUgcGFzdCBpcyBhbGxvd2VkJzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddPSdIb3cgbWFueSB5ZWFyIGludG8gdGhlIGZ1dHVyZSBpcyBhbGxvd2VkJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J109J1Nob3VsZCB0aGUgc3VtbWFyeSBmaWVsZCBiZSBoaWRkZW4nOwokbGFuZ1snaGlkZWNvbnRlbnQnXT0nU2hvdWxkIHRoZSBjb250ZW50IGZpZWxkIGJlIGhpZGRlbic7CgokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXT0nUGxlYXNlIGNoZWNrIG9uZSBvciBtb3JlIGNhdGVnb3JpZXMgZm9yIHRoaXMgZXZlbnQnOwokbGFuZ1sibW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCJdPSJDYWxndXlzIENhbGVuZGFyIENTUyBleGFtcGxlIjsKCiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnWW91IGRvIG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGZ1bmN0aW9uYWxpdHkgKG9yIHlvdSBtYXkgbm90IG93biB0aGUgZXZlbnQgeW91IGFyZSB0cnlpbmcgdG8gbW9kaWZ5KSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgIk1vZGlmeSBDYWxlbmRhciIgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwoKJGxhbmdbImRlbGV0ZXRhZ2dlZCJdPSJEZWxldGUgdGFnZ2VkIGV2ZW50cyI7CiRsYW5nWyJjb25maXJtZGVsZXRldGFnZ2VkIl09IkFyZSB5b3Ugc3VyZSB0aGVzZSBldmVudHMgc2hvdWxkIGJlIGRlbGV0ZWQ/IjsKJGxhbmdbInRhZ2dlZGRlbGV0ZWQiXT0iVGFnZ2VkIGV2ZW50cyBzdWNjZXNzZnVsbHkgZGVsZXRlZCI7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1RlbXBsYXRlIEhlbHAnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdGaWxlIFRlbXBsYXRlcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkZCBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdUZW1wbGF0ZSBOYW1lJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXQgVGVtcGxhdGUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdEZWxldGUgVGVtcGxhdGUnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOZXcgVGVtcGxhdGUgTmFtZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFcnJvcjogQSB0ZW1wbGF0ZSB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cy4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBuYW1lLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNlc3NmdWxseSBpbXBvcnRlZCBpbnRvIHRoZSBkYXRhYmFzZSBhbmQgaXMgbm93IGluc3RhbGxlZCBmb3IgdXNlLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1ZpZXcgRGVmYXVsdCBTdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsZW5hbWUnOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnQgVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJhc2UuJzsKJGxhbmdbInVwZGF0ZXRlbXBsYXRlc3VjY2VzcyJdPSJUaGUgdGVtcGxhdGUgd2FzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IjsKJGxhbmdbInVwZGF0ZXRlbXBsYXRlZmFpbHVyZSJdPSJBbiBlcnJvciBvY2N1cnJlZCB1cGRhdGluZyB0aGUgdGVtcGxhdGUiOwokbGFuZ1sic2V0dGluZ3NzYXZlZCJdPSJTZXR0aW5ncyB3ZXJlIHNhdmVkIHN1Y2Nlc3NmdWxseSI7CiRsYW5nWyJjYXRlZ29yeWRlbGV0ZWQiXT0iQ2F0ZWdvcnkgZGVsZXRlZCI7CiRsYW5nWyJjYXRlZ29yeXVwZGF0ZWQiXT0iQ2F0ZWdvcnkgdXBkYXRlZCI7CiRsYW5nWyJjYXRlZ29yeWFkZGVkIl09IkNhdGVnb3J5IGFkZGVkIjsKJGxhbmdbImV2ZW50ZGVsZXRlZCJdPSJFdmVudChzKSBkZWxldGVkIHN1Y2Nlc3NmdWxseSI7CiRsYW5nWyJldmVudHVwZGF0ZWQiXT0iVGhlIGV2ZW50IHdhcyB1cGRhdGVkIjsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vycm9yOiBZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IHBhZ2UgaW4gb3JkZXIgdG8gdXNlIENhbGVuZGFyIHdpdGggcHJldHR5IFVSTHMgdHVybmVkIG9uLiBQbGVhc2UgZ28gdG8gdGhlIENhbGVuZGFyIHNldHRpbmdzIHRhYiBhbmQgY2hvb3NlIG9uZS4nOwokbGFuZ1sidGltZV9hdCJdPSJhdCI7CiRsYW5nWyd0eXBlJ109J1R5cGUnOwokbGFuZ1sibmFtZSJdPSJOYW1lIjsKJGxhbmdbIm9yZGVyIl09Ik9yZGVyIjsKCiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnRmllbGQgU3VjY2Vzc2Z1bGx5IEFkZGVkJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0ZpZWxkIERlbGV0ZWQnOwokbGFuZ1snZmllbGRzJ10gPSAnQ3VzdG9tIEZpZWxkcyc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0IEZpZWxkJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnRmlsZSB1cGxvYWQgZmllbGQnOwokbGFuZ1siZGVzY3JpcHRpb24iXT0iQ0dDYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgZXZlbnRzIG9uIHlvdXIgd2Vic2l0ZSI7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnRGVmYXVsdCBldmVudCB2aWV3IHBhZ2UnOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnRGlyZWN0b3J5IHdoZXJlIGZpbGUgdXBsb2FkcyBzaG91bGQgYmUgcGxhY2VkJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ0FsbG93ZWQgZmlsZSB0eXBlcyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdFbnN1cmUgdW5pcXVlIGZpbGVuYW1lcyc7CgokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JlY3Vycyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwoKCiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnCjxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+Cjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4KJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/ca_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ20mYWdyYXZlO3hpbSc7CiRsYW5nWyd0aW1lcyddID0gJ3ZlZ2FkZXMnOwokbGFuZ1snb24nXSA9ICdhJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnTiYjMDM5O2VzdCZhZ3JhdmU7cyBzZWd1ciBxdWUgdm9scyBmZXIgYWl4Jm9ncmF2ZTs/IFNpIGNvbnRpbnVlcywgZXNib3JyYXImYWdyYXZlO3MgcGVybWFuZW50bWVudCB0b3RlcyBsZXMgZGFkZXMgYXNzb2NpYWRlcyBhIGFxdWVzdCBtJm9ncmF2ZTtkdWwuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnRWwgbSZvZ3JhdmU7ZHVsIENhbGVuZGFyaSBoYSBlc3RhdCBkZXNpbnN0YWwubGF0IGkgdG90YSBsYSBpbmZvcm1hY2kmb2FjdXRlOyBkJiMwMzk7ZXNkZXZlbmltZW50cyBpIHBsYW54ZXRlcyBhc3NpY2lhZGEgYSBhcXVlc3QgbSZvZ3JhdmU7ZHVsIGhhIGVzdGF0IGVsaW1pbmFkYS4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnQ2FtcCBhY3R1YWxpdHphdCc7CiRsYW5nWydldmVyeSddID0gJ0NhZGEnOwokbGFuZ1snb3InXSA9ICdvJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ0FjdHVhbGl0emEgZWxzIGV2ZW50IGZpbGxzJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdDYWwgcXVlIHRyaSZpdW1sO3MgYWxlbW55cyB1bmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ05vIHMmIzAzOTtoYSB0cmlhdCByZXMgcGVyIGVzYm9ycmFyJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0VscyBwYXImYWdyYXZlO21ldHJlcyBxdWUgaGFzIGVzcGVjaWZpY2F0IHBlciBsJiMwMzk7ZXNkZXZlbmltZW50IHJlY3VycmVudCByZXN1bHRhcmFuIGVuIGVzZGV2ZW5pbWVudHMgc29icmVwb3NhdHMuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JlcGV0ZWl4JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdVbmEgbyBtJmVhY3V0ZTtzIGRlIGxlcyBkYXRlcyBlbnRyYWRlcyBlcmEgaW52JmFncmF2ZTtsaWRhJzsKJGxhbmdbJ3N1bmRheSddID0gJ0RpdW1lbmdlJzsKJGxhbmdbJ21vbmRheSddID0gJ0RpbGx1bnMnOwokbGFuZ1sndHVlc2RheSddID0gJ0RpbWFydHMnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnRGltZWNyZXMnOwokbGFuZ1sndGh1cnNkYXknXSA9ICdEaWpvdXMnOwokbGFuZ1snZnJpZGF5J10gPSAnRGl2ZW5kcmVzJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnRGlzc2FidGUnOwokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdEZyc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ0RsJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ0RtJzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnRGMnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ0RqJzsKJGxhbmdbJ2FiYnJfZnJpZGF5J10gPSAnRHYnOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ0RzJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnRGllcyBkZSBjYWRhIGRpYSc7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEaWVzJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdTZXRtYW5lcyc7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01lc29zJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbnlzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snZGFpbHknXSA9ICdEaSZhZ3JhdmU7cmlhbWVudCc7CiRsYW5nWyd3ZWVrbHknXSA9ICdTZXRtYW5hbG1lbnQnOwokbGFuZ1snbW9udGhseSddID0gJ01lbnN1YWxtZW50JzsKJGxhbmdbJ3llYXJseSddID0gJ0FudWFsbWFuZXQnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdSZXBldGVpeCBjYWRhJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRGV0YWxscyBkJiMwMzk7ZXNkZXZlbmltZW50IHJlY3VycmVudC4nOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnSWwubGltaXRhdCc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTm9tYnJlIG0mYWdyYXZlO3hpbSBkJiMwMzk7ZXNkZXZlbmltZW50cyBmaWxscyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ0VzcGVjaWZpY2EgdW5hIGRhdGEgZGUgZmluYWwgZGlmZXJlbnQ/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbC5sYSc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ01vc3RyYSBlc2RldmVuaW1lbnRzIGZpbGxzIDxlbT4ocG90IHJlc3VsdGFyIGVuIHVuYSBsbGlzdGEgbW9sdCBsbGFyZ2EpPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAnbi9hJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ1JlcGV0aXIgZmlucyc7CiRsYW5nWydwYXJlbnQnXSA9ICdQYXJlJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1BlcmlvZGUgZGUgcmVwZXRpY2kmb2FjdXRlOyc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cmUnOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0RhdGEgaW5pY2lhbCc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0RhdGEgZmluYWwnOwokbGFuZ1snaW5mb191cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGxpc3RhIGRlIHBsYW50aWxsZXMgcXVlIGVzdGFuIGRpc3BvbmlibGVzIHBlciBsZXMgdmlzdGVzIGRlIFByb3BlcnMgRXNkZXZlJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZmVnZWl4L21vZGlmaWNhIHVuYSBwbGFudGlsbGEgZCYjMDM5O0VzZGV2ZW5pbWVudCBQcm9wZXInOwokbGFuZ1snaW5mb19zeXNkZmx0X3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFVwY29taW5nbGlzdCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgbGlzdCB2aWV3cyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIExpc3QgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEV2ZW50IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgY2FsZW5kYXIgdmlld3MnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IENhbGVuZGFyIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RoaXMgZm9ybSBkZWZpbmVzIHRoZSB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBjbGljayAmcXVvdDtOZXcgVGVtcGxhdGUmcXVvdDsgaW4gdGhlIGFwcHJvcHJpYXRlIHRhYi4gIENoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBoYXZlIG5vIGltbWVkaWF0ZSBlZmZlY3Qgb24gdGhlIGRpc3BsYXlzIGdlbmVyYXRlZCBmcm9tIHRoaXMgbW9kdWxlLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NyaWRhdCBkZXNwciZlYWN1dGU7cyBkJiMwMzk7YWZlZ2lyIHVuIGVzZGV2ZW5pbWVudCBkZWwgY2FsZW5kYXJpJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0NyaWRhdCBkZXNwciZlYWN1dGU7cyBkZSBtb2RpaWZjYXIgdW4gZXNkZXZlbmltZW50IGRlbCBjYWxlbmRhcmknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0NyaWRhdCBkZXNwciZlYWN1dGU7cyBkJiMwMzk7ZXNib3JyYSB1biBlc2RldmVuaW1lbnQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDcmlkYXRzIGRlc3ByJmVhY3V0ZTtzIGRlIGNyZWFyIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnQ3JpZGF0IGRlc3ByJmVhY3V0ZTtzIGRlIG1vZGlmaWNhciB1bmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdDcmlkYXQgZGVzcHImZWFjdXRlO3MgZCYjMDM5O2VzYm9ycmFyIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdFdmVudCBBZGRlZCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0EgbmFtZSBmb3IgdGhlIGV2ZW50IGlzIHJlcXVpcmVkJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJST1I6IE5vIHVwbG9hZGVkIGZpbGUgZm91bmQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRVJST1I6IFRoZSBmaWxlIHVwbG9hZGVkIGNhbm5vdCBiZSBhY2NlcHRlZCc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0VSUk9SOiBBIHByb2JsZW0gb2NjdXJyZWQgdHJ5aW5nIHRvIHVwbG9hZCB0aGUgZmlsZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VSUk9SOiBBIFByb2JsZW0gb2NjdXJyZWQgd2hlbiBjb3B5aW5nIHRoZSBmaWxlIHRvIGl0cyBmaW5hbCBkZXN0aW5hdGlvbic7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJST1I6IEEgZmlsZSBieSB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRVJST1I6IENvdWxkIG5vdCBmaW5kIHRoZSBDU1YgRmlsZSc7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUlJPUjogQ2Fubm90IG9wZW4gZmlsZSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk9SOiBBIGNhdGVnb3J5IHdpdGggdGhlIG5hbWUgJXMgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snY2FsX2lkJ10gPSAnSWQnOwokbGFuZ1snY2FsX2NhbGVuZGFyJ10gPSAnQ2FsZW5kYXInOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSBmdWxsIGZlYXR1cmVkLCBhbmQgZmxleGlibGUgbW9kdWxlIHRvIGFsbG93IGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQgZXZlbnRzIGluIG51bWVyb3VzIGZvcm1hdHMuJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0FkZCBFdmVudCc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ0ltcG9ydCBFdmVudHMnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0V2ZW50cyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnQ2FsZW5kYXIgVGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnTGlzdCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1VwY29taW5nIFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdFdmVudCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IFByZXYnOwokbGFuZ1snY2FsX25leHQnXSA9ICdOZXh0ICZyYXF1bzsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpZXMgVXBkYXRlZCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldHRpbmdzIFVwZGF0ZWQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0FkZCBFdmVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwZGF0ZSBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRGl1bWVuZ2UnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0RpbGx1bnMnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdEaW1hcnRzJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdEaW1lY3Jlcyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdEaWpvdXMnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ0RpdmVuZHJlcyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdEaXNzYWJ0ZSc7CiRsYW5nWydjYWxfc3VuJ10gPSAnRGcnOwokbGFuZ1snY2FsX21vbiddID0gJ0RsJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnRG0nOwokbGFuZ1snY2FsX3dlZCddID0gJ0RjJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0RqJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdEdic7CiRsYW5nWydjYWxfc2F0J10gPSAnRHMnOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdHZW5lcic7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJyZXInOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFyJmNjZWRpbDsnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQWJyaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01haWcnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW55JzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVsaW9sJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnU2V0ZW1icmUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3R1YnJlJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYnJlJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0Rlc2VtYnJlJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdBZmVnZWl4JzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdNb2RpZmljYSc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdFc2RldmVuaW1lbnQnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnUmVzdW0nOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhbGxzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnbSZlYWN1dGU7cyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVHJvbmEnOwokbGFuZ1snY2FsX3RvJ10gPSAndG9hJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0VzZGV2ZW5pbWVudHMgcGFzc2F0cyc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnRXNkZXZlbmltZW50cyBwcm9wZXJzJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdRdWFsc2V2b2wgY2F0ZWdvcmlhJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTW9zdHJhIG5vbSZlYWN1dGU7cyBlc2RldmVuaW1lbnRzIGVuICc7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJhIFQmaWFjdXRlO3RvbCBwZXIgPGVtPihyZWdleCk8L2VtPic7CiRsYW5nWydjYWxfZ28nXSA9ICdWJmVhY3V0ZTtzJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1QmaWFjdXRlO3RvbCc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdEZXMgZGUgbGEgZGF0YSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnQSBsYSBkYXRhJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ01vZGlmaWNhIGNhdGVnb3JpZXMnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnSWRpb21hJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0FjdHVhbGl0emEgdmFsb3MgZGUgY29uZmlndXJhY2kmb2FjdXRlOyc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnVXRpbGl0emEgcmVsbG90Z2UgZGUgZG90emUgaG9yZXMgZW4gZWxzIGRlc3BsZWdhYmxlcz8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yaWEgcGVyIGRlZmVjdGUnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdNb2RpZmljYSBjYW1wcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvciZjY2VkaWw7YSBhbG1lbnlzIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ1F1YW50cyBhbnlzIGNhcCBhbCBwYXNzYXQgZXMgcGVybWV0ZW4nOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnUXVhbnRzIGFueXMgY2FwIGFsIGZ1dHVyIGVzIHBlcm1ldGVuJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnQ2FsIG9jdWx0YXIgZWwgY2FtcCBkZSByZXN1bSc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0NhbCBvY3VsdGFyIGVsIGNhbXAgZGUgY29udGluZ3V0JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnU2kgZXQgcGxhdSwgdHJpYSB1bmEgbyBtJmVhY3V0ZTtzIGNhdGVnb3JpZXMgcGVyIGwmIzAzOTtlc2RldmVuaW1lbnQnOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0V4ZW1wbGUgZGUgQ2FsZW5kYXJpIENTUyc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnWW91IG5lZWQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb24gKCVzKSB0byBhY2Nlc3MgdGhpcyBmdW5jdGlvbmFsaXR5JzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdNYWtlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnRGVsZXRlIHRhZ2dlZCBldmVudHMnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0FyZSB5b3Ugc3VyZSB0aGVzZSBldmVudHMgc2hvdWxkIGJlIGRlbGV0ZWQ/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdUYWdnZWQgZXZlbnRzIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnVGVtcGxhdGUgSGVscCc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0ZpbGUgVGVtcGxhdGVzJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnQWRkIFRlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnRWRpdCBUZW1wbGF0ZSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ0RlbGV0ZSBUZW1wbGF0ZSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ05ldyBUZW1wbGF0ZSBOYW1lJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Vycm9yOiBBIHRlbXBsYXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzLiBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IG5hbWUuJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdUaGUgdGVtcGxhdGUgd2FzIHN1Y2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gdGhlIGRhdGFiYXNlIGFuZCBpcyBub3cgaW5zdGFsbGVkIGZvciB1c2UuJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnVmlldyBEZWZhdWx0IFN0eWxlc2hlZXQnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdGaWxlbmFtZSc7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydCBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseSc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdBbiBlcnJvciBvY2N1cnJlZCB1cGRhdGluZyB0aGUgdGVtcGxhdGUnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldHRpbmdzIHdhcyBzYXZlZCBzdWNjZXNzZnVsbHknOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnQ2F0ZWdvcnkgZGVsZXRlZCc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdDYXRlZ29yeSB1cGRhdGVkJzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yeSBhZGRlZCc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdUaGUgZXZlbnQgd2FzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnR1cGRhdGVkJ10gPSAnVGhlIGV2ZW50IHdhcyB1cGRhdGVkJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vycm9yOiBZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IHBhZ2UgaW4gb3JkZXIgdG8gdXNlIENhbGVuZGFyIHdpdGggcHJldHR5IFVSTHMgdHVybmVkIG9uLiBQbGVhc2UgZ28gdG8gdGhlIENhbGVuZGFyIHNldHRpbmdzIHRhYiBhbmQgY2hvb3NlIG9uZS4nOwokbGFuZ1sndGltZV9hdCddID0gJ2F0JzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JkZXInOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZpZWxkIFN1Y2Nlc3NmdWxseSBBZGRlZCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGaWVsZCBEZWxldGVkJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0N1c3RvbSBGaWVsZHMnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGV4dCBGaWVsZCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0ZpbGUgdXBsb2FkIGZpZWxkJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+Q2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUNCgkJbW9kdWxlIGlzIGluc3RhbGxlZCwgYSBDYWxlbmRhciBhZG1pbiBwYWdlIGlzIGFkZGVkIHRvIHRoZSBjb250ZW50IG1lbnUNCgkJdGhhdCB3aWxsIGFsbG93IHlvdSB0byBtYW5hZ2UgeW91ciBldmVudHMuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnRGVmYXVsdCBwYWdlIHRoYXQgY29udGFpbnMgQ2FsZW5kYXIuIFRoaXMgcGFnZSBtdXN0IGNvbnRhaW4gYSBTbWFydHkgdGFnIHRoYXQgY2FsbHMgQ2FsZW5kYXIuIFJlcXVpcmVkIGlmIHlvdSB1c2UgdGhlIHByZXR0eSBVUkxzLic7CiRsYW5nWyd1cGxvYWRkaXJlY3RvcnknXSA9ICdEaXJlY3Rvcnkgd2hlcmUgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnQWxsb3dlZCBmaWxlIHR5cGVzJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ0Vuc3VyZSB1bmlxdWUgZmlsZW5hbWVzJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnVGh1bWJuYWlsIFdpZHRoJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1RodW1ibmFpbCBIZWlnaHQnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICdMYXJnZSBJbWFnZSBXaWR0aCc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdMYXJnZSBJbWFnZSBIZWlnaHQnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JlY3Vycyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+DQo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ2tyJmFhY3V0ZTt0JzsKJGxhbmdbJ29uJ10gPSAnbmEnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdPcHJhdmR1IHRvIGNoY2V0ZSBwcm92JmVhY3V0ZTtzdD8gIFRhdG8gYWtjZSBrb21wbGV0bsSbIHZ5bWHFvmUgZGF0YSBzcG9qZW4mYWFjdXRlOyBzIG1vZHVsZW0uJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnTW9kdWwgS2FsZW5kJmFhY3V0ZTvFmSBieWwgb2RpbnN0YWxvdiZhYWN1dGU7biBhIHYmc2Nhcm9uO2VjaG55IHVkJmFhY3V0ZTtsb3N0aSBhICZzY2Fyb247YWJsb255IHMgbiZpYWN1dGU7bSBzcG9qZW4mZWFjdXRlOyBieWx5IG9kZWJyJmFhY3V0ZTtueS4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnUG9sZSBieWxvIGFrdHVhbGl6b3YmYWFjdXRlO25vJzsKJGxhbmdbJ2V2ZXJ5J10gPSAnS2HFvmQmeWFjdXRlOyc7CiRsYW5nWydvciddID0gJ25lYm8nOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnQWt0dWFsaXpvdmF0IHZub8WZZW4mZWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ011cyZpYWN1dGU7dGUgdnlicmF0IG5lam0mZWFjdXRlO27EmyBqZWRudSBrYXRlZ29yaWknOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTmljIG5lYnlsbyB2eWJyJmFhY3V0ZTtubyBrZSBzbWF6JmFhY3V0ZTtuJmlhY3V0ZTsnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnT3Bha292JmFhY3V0ZTtuJmlhY3V0ZTsgdWQmYWFjdXRlO2xvc3RpLCBrdGVyJmVhY3V0ZTsganN0ZSB6YWRhbGksIHpwxa9zb2ImaWFjdXRlOyBwxZlla3ImeWFjdXRlO3YmYWFjdXRlO24maWFjdXRlOyB1ZCZhYWN1dGU7bG9zdCZpYWN1dGU7Lic7CiRsYW5nWydyZWN1cnMnXSA9ICdPcGFrdWplIHNlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdKZWRlbiBuZWJvIHYmaWFjdXRlO2NlIHphZGFuJnlhY3V0ZTtjaCBkYXR1bcWvIGplIG5lcGxhdG4meWFjdXRlO2NoJzsKJGxhbmdbJ3N1bmRheSddID0gJ05lZMSbbGUnOwokbGFuZ1snbW9uZGF5J10gPSAnUG9uZMSbbCZpYWN1dGU7JzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICcmVWFjdXRlO3RlciZ5YWN1dGU7JzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1N0xZllZGEnOwokbGFuZ1sndGh1cnNkYXknXSA9ICfEjHR2cnRlayc7CiRsYW5nWydmcmlkYXknXSA9ICdQJmFhY3V0ZTt0ZWsnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdTb2JvdGEnOwokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdOZSc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ1BvJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJyZVYWN1dGU7dCc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1N0JzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICfEjHQnOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdQJmFhY3V0ZTsnOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ1NvJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnRG55IHYgdCZ5YWN1dGU7ZG51JzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RueSc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVCZ5YWN1dGU7ZG55JzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTcSbcyZpYWN1dGU7Y2UnOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ1Jva3knOwokbGFuZ1snbm8nXSA9ICdOZSc7CiRsYW5nWydkYWlseSddID0gJ0Rlbm7Emyc7CiRsYW5nWyd3ZWVrbHknXSA9ICdUJnlhY3V0ZTtkbsSbJzsKJGxhbmdbJ21vbnRobHknXSA9ICdNxJtzJmlhY3V0ZTvEjW7Emyc7CiRsYW5nWyd5ZWFybHknXSA9ICdSb8SNbsSbJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnT3Bha292YXQnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdEZXRhaWx5IG9wYWt1aiZpYWN1dGU7YyZpYWN1dGU7Y2ggc2UgdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdOZW9tZXplbiZlYWN1dGU7JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbSZhYWN1dGU7bG4maWFjdXRlOyBwb8SNZXQgdm5vxZllbiZ5YWN1dGU7Y2ggdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ1VyxI1pdCBvZGxpJnNjYXJvbjtuJmVhY3V0ZTsgZGF0dW0ga29uY2UgdWQmYWFjdXRlO2xvc3RpPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdTdG9ybm8nOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdVayZhYWN1dGU7emF0IHZub8WZZW4mZWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGkgPGVtPihzZXpuYW0gbcWvxb5lIGImeWFjdXRlO3QgdmVsbWkgZGxvdWgmeWFjdXRlOyk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2EnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnT3Bha292YXQgZG8nOwokbGFuZ1sncGFyZW50J10gPSAnU291xI0mYWFjdXRlO3N0IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydyZWN1cl9wZXJpb2QnXSA9ICdQZXJpb2RhIG9wYWtvdiZhYWN1dGU7biZpYWN1dGU7JzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRyJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdEYXR1bSB6YcSNJmFhY3V0ZTt0a3UnOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdEYXR1bSBrb25jZSc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdTZXpuYW0gJnNjYXJvbjthYmxvbiwga3RlciZlYWN1dGU7IGpzb3UgayBkaXNwb3ppY2kgcHJvIHBvaGxlZCBuYSBidWRvdWMmaWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ1DFmWlkYXQvVXByYXZpdCAmc2Nhcm9uO2FibG9udSBzZXpuYW11IGJ1ZG91YyZpYWN1dGU7Y2ggdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnUMWZZWRuYXN0YXZlbiZhYWN1dGU7ICZzY2Fyb247YWJsb25hIHNlem5hbXUgYnVkb3VjJmlhY3V0ZTtjaCB1ZCZhYWN1dGU7bG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdTZXpuYW0gJnNjYXJvbjthYmxvbiwga3RlciZlYWN1dGU7IGpzb3UgayBkaXNwb3ppY2kgcHJvIHBvaGxlZCBuYSBzZXpuYW0gdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ1DFmWlkYXQvVXByYXZpdCAmc2Nhcm9uO2FibG9udSBzZXpuYW11IHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTsnOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdQxZllZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmxvbmEgc2V6bmFtdSB1ZCZhYWN1dGU7bG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnU2V6bmFtICZzY2Fyb247YWJsb24sIGt0ZXImZWFjdXRlOyBqc291IGsgZGlzcG96aWNpIHBybyBwb2hsZWQgbmEgamVkbm90bGl2b3UgdWQmYWFjdXRlO2xvc3QnOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnUMWZaWRhdC9VcHJhdml0ICZzY2Fyb247YWJsb251IGplZG5vdGxpdiZlYWN1dGU7IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdQxZllZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmxvbmEgamVkbm90bGl2JmVhY3V0ZTsgdWQmYWFjdXRlO2xvc3RpJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnU2V6bmFtICZzY2Fyb247YWJsb24sIGt0ZXImZWFjdXRlOyBqc291IGsgZGlzcG96aWNpIHBybyBwb2hsZWQgbmEga2FsZW5kJmFhY3V0ZTvFmSc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdQxZlpZGF0L1VwcmF2aXQgJnNjYXJvbjthYmxvbnUga2FsZW5kJmFhY3V0ZTvFmWUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnUMWZZWRuYXN0YXZlbiZhYWN1dGU7ICZzY2Fyb247YWJsb25hIGthbGVuZCZhYWN1dGU7xZllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1QmaWFjdXRlO210byBmb3JtdWwmYWFjdXRlO8WZZW0gbcWvxb5ldGUgbmFzdGF2aXQgJnNjYXJvbjthYmxvbnUsIGt0ZXImYWFjdXRlOyBzZSBvYmpldiZpYWN1dGU7LCBrZHnFviBrbGlrbmV0ZSBuYSAmYW1wO3F1b3Q7Tm92JmFhY3V0ZTsgJnNjYXJvbjthYmxvbmEmYW1wO3F1b3Q7IHYgcMWZJmlhY3V0ZTtzbHUmc2Nhcm9uO24mZWFjdXRlOyB6JmFhY3V0ZTtsb8W+Y2UuIFptxJtuYSB0JmVhY3V0ZTt0byBob2Rub3R5IG5lbSZhYWN1dGU7IMW+JmFhY3V0ZTtkbiZ5YWN1dGU7IGJlenByb3N0xZllZG4maWFjdXRlOyBlZmVrdCBuYSB2JnlhY3V0ZTtzdHVweSBnZW5lcm92YW4mZWFjdXRlOyB0JmlhY3V0ZTttdG8gbW9kdWxlbS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdaYXZvbCZhYWN1dGU7bm8gcG8gcMWZaWQmYWFjdXRlO24maWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGkgdiBrYWxlbmQmYWFjdXRlO8WZaSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdaYXZvbCZhYWN1dGU7bm8gcG8gZWRpdGFjaSBleGlzdHVqJmlhY3V0ZTtjJmlhY3V0ZTsgdWQmYWFjdXRlO2xvc3RpIHYga2FsZW5kJmFhY3V0ZTvFmWknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ1phdm9sJmFhY3V0ZTtubyBwbyB0b20sIGNvIGJ5bGEgdiBrYWxlZG4mYWFjdXRlO8WZaSBzbWF6JmFhY3V0ZTtuYSB1ZCZhYWN1dGU7bG9zdCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ1phdm9sJmFhY3V0ZTtubyBwbyB2eXR2b8WZZW4maWFjdXRlOyBrYWdvcmllJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1phdm9sJmFhY3V0ZTtubyBwbyBlZGl0YWNpIGthdGVnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnWmF2b2wmYWFjdXRlO25vIHBvIHNtYXomYWFjdXRlO24maWFjdXRlOyBrYXRlZ29yaWUnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdVZCZhYWN1dGU7bG9zdCBwxZlpZCZhYWN1dGU7bmEnOwokbGFuZ1snZXJyb3Jfbm9ldmVudG5hbWUnXSA9ICdBIG5hbWUgZm9yIHRoZSBldmVudCBpcyByZXF1aXJlZCc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0NIWUJBOiBzb3Vib3IgdXLEjWVuJnlhY3V0ZTsgayB1cGxvYWR1IG5lbmFsZXplbic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdDSFlCQTogc291Ym9yIHVyxI1lbiZ5YWN1dGU7IGsgdXBsb2FkdSBuZWJ5bCBwxZlpamF0JzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnQ0hZQkE6IHDFmWkgdXBsb2FkdSBzb3Vib3J1IGRvJnNjYXJvbjtsbyBrIHByb2JsJmVhY3V0ZTttdSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0NIWUJBOiBwxZlpIGtvcCZpYWN1dGU7cm92JmFhY3V0ZTtuJmlhY3V0ZTsgc291Ym9ydSBkbyBjJmlhY3V0ZTtsb3YmZWFjdXRlO2hvIHVtJmlhY3V0ZTtzdMSbbiZpYWN1dGU7IGRvJnNjYXJvbjtsbyBrIHByb2JsJmVhY3V0ZTttdSc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnQ0hZQkE6IHNvdWJvciBzIHQmaWFjdXRlO210byBqbSZlYWN1dGU7bmVtIGppxb4gZXhpc3R1amUnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnQ0hZQkE6IE5lbHplIG5hbCZlYWN1dGU7enQgc291Ym9yIHZlIGZvcm0mYWFjdXRlO3R1IC5jc3YnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnQ0hZQkE6IE5lbHplIG90ZXbFmSZpYWN1dGU7dCBzb3Vib3InOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdDSFlCQTogS2F0ZWdvcmllIHBvam1lbm92YW4mYWFjdXRlOyAlcyBqacW+IGV4aXN0dWplJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZCZhYWN1dGU7xZknOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnViZ5YWN1dGU7Y2hveiZpYWN1dGU7ICZzY2Fyb247YWJsb255JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ1Zsb8W+aXQsIHVwcmF2aXQgYSBvZGVicmF0IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdWbG/Fvml0IHVkJmFhY3V0ZTtsb3N0JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0b3ZhdCB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1VkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZSc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYSBrYWxlbmQmYWFjdXRlO8WZZSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hIHNlem5hbXUnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hIG5hZGNoJmFhY3V0ZTt6ZWomaWFjdXRlO2MmaWFjdXRlO2NoIHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTsnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbmEgdWQmYWFjdXRlO2xvc3RpJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ05hc3RhdmVuJmlhY3V0ZTsnOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IFDFmWVkY2hveiZpYWN1dGU7JzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnRGFsJnNjYXJvbjsmaWFjdXRlOyAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWUgYWt0dWFsaXpvdiZhYWN1dGU7bnknOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdOYXN0YXZlbiZpYWN1dGU7IGFrdHVhbGl6b3YmYWFjdXRlO25vJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdWbG/Fvml0IHVkJmFhY3V0ZTtsb3N0JzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnVXByYXZpdCc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnU21hemF0JzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnT3ByYXZkdSBjaGNldGUgc21hemF0JzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdBa3R1YWxpem92YXQgJnNjYXJvbjthYmxvbnUnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ05lZMSbbGUnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ1BvbmTEm2wmaWFjdXRlOyc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJyZVYWN1dGU7dGVyJnlhY3V0ZTsnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1N0xZllZGEnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnxIx0dnJ0ZWsnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ1AmYWFjdXRlO3Rlayc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTb2JvdGEnOwokbGFuZ1snY2FsX3N1biddID0gJ05lJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICdQbyc7CiRsYW5nWydjYWxfdHVlcyddID0gJyZVYWN1dGU7dCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnU3QnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnxIx0JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdQJmFhY3V0ZTsnOwokbGFuZ1snY2FsX3NhdCddID0gJ1NvJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnTGVkbmEnOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnJlVhY3V0ZTtub3JhJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ0LFmWV6bmEnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnRHVibmEnOwokbGFuZ1snY2FsX21heSddID0gJ0t2xJt0bmEnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICfEjGVydm5hJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnxIxlcnZlbmNlJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdTcnBuYSc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnWiZhYWN1dGU7xZkmaWFjdXRlOyc7CiRsYW5nWydjYWxfb2N0b2JlciddID0gJ8WYJmlhY3V0ZTtqbmEnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTGlzdG9wYWR1JzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ1Byb3NpbmNlJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdQxZlpZGF0JzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBa3R1YWxpem92YXQnOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnVWQmYWFjdXRlO2xvc3QnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1NvdWhybic7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFpbHknOwokbGFuZ1snY2FsX21vcmUnXSA9ICd2JmlhY3V0ZTtjZSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnTiZhYWN1dGU7dnJhdCc7CiRsYW5nWydjYWxfdG8nXSA9ICdkbyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdVZCZhYWN1dGU7bG9zdGkgdiBtaW51bG9zdGknOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ05hZGNoJmFhY3V0ZTt6ZWomaWFjdXRlO2MmaWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0phayZhYWN1dGU7a29saXYga2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnWm9icmF6aXQgcG91emUgdWQmYWFjdXRlO2xvc3RpIHYnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ1TFmSZpYWN1dGU7ZGl0IHBvZGxlJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0pkaSc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdUaXR1bGVrJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhdHVtIHphxI0mYWFjdXRlO3RrdSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnRGF0dW0ga29uY2UnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWt0dWFsaXpvdmF0IGthdGVnb3JpZSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdKYXp5ayc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdBa3R1YWxpem92YXQgbmFzdGF2ZW4maWFjdXRlOyc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnUG91xb4maWFjdXRlO3ZhdCBkdmFuJmFhY3V0ZTtjdGlob2Rpbm92JmVhY3V0ZTsgcm96ZMSbbGVuJmlhY3V0ZTsgxI1hc3UgcMWZaSB2JnlhY3V0ZTtixJtydSBob2Rpbj8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdQxZllZG5hc3RhdmVuJmFhY3V0ZTsga2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnQWt0dWFsaXpvdmF0IFBvbGUnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdWeW51dGl0IHZ5dHZvxZllbiZpYWN1dGU7IGFsc3BvxYggamVkbiZlYWN1dGU7IGthdGVnb3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnS29saWsgbGV0IGRvIG1pbnVsb3N0aSBqZSBwb3ZvbGVubyc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdLb2xpayBsZXQgZG8gYnVkb3Vjbm9zdGkgamUgcG92b2xlbm8nOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdNxJtsbyBieSBiJnlhY3V0ZTt0IHN1bW1hcnkgcG9sZSBza3J5dCZlYWN1dGU7JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnTcSbbG8gYnkgYiZ5YWN1dGU7dCBjb250ZW50IHBvbGUgc2tyeXQmZWFjdXRlOyc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ1Byb3MmaWFjdXRlO20gdnliZXJ0ZSBqZWRudSBuZWJvIHYmaWFjdXRlO2NlIGthdGVnb3JpJmlhY3V0ZTssIGRvIGt0ZXImeWFjdXRlO2NoIHNwYWQmYWFjdXRlOyB0YXRvIHVkJmFhY3V0ZTtsb3N0Lic7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnVWsmYWFjdXRlO3prb3YmZWFjdXRlOyBDU1Mga2FsZW5kJmFhY3V0ZTvFmWUnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1BvdMWZZWJ1amV0ZSBvZHBvdiZpYWN1dGU7ZGFqJmlhY3V0ZTtjJmlhY3V0ZTsgb3ByJmFhY3V0ZTt2bsSbbiZpYWN1dGU7ICglcykgcHJvIHDFmSZpYWN1dGU7c3R1cCBrIHQmZWFjdXRlO3RvIGZ1bmtjaSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnWmFqaXN0xJt0ZSBuYXN0YXZlbiZpYWN1dGU7ICZxdW90O01vZGlmeSBjYWxlbmRhciZxdW90OyBvcHImYWFjdXRlO3ZuxJtuJmlhY3V0ZTsgcHJvIHYmc2Nhcm9uO2VjaG55IHXFvml2YXRlbGUsIGt0ZcWZJmlhY3V0ZTsgYnVkb3Uga2FsZWRuJmFhY3V0ZTvFmSBzcHJhdm92YXQuJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ1NtYXphdCBvem5hxI1lbiZlYWN1dGU7IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnSnN0ZSBzaSBqaXN0aSB2eW1heiZhYWN1dGU7biZpYWN1dGU7bSB0xJtjaHRvIHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTs/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdPem5hxI1lbiZlYWN1dGU7IHVkJmFhY3V0ZTtsb3N0aSBieWx5IHNtYXomYWFjdXRlO255JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJyZTY2Fyb247YWJsb255JzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdOJmFhY3V0ZTtwb3bEm2RhIGsgJnNjYXJvbjthYmxvbiZhYWN1dGU7bSc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJyZTY2Fyb247YWJsb255IHNvdWJvcsWvJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnUMWZaWRhdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdKbSZlYWN1dGU7bm8gJnNjYXJvbjthYmxvbnknOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnVXByYXZpdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1NtYXphdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ0ptJmVhY3V0ZTtubyBub3YmZWFjdXRlOyAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdDSFlCQTogJnNjYXJvbjthYmxvbmEgcyB0JmlhY3V0ZTttdG8gam0mZWFjdXRlO25lbSBqacW+IGV4aXN0dWplLiBWeWJlcnRlIHByb3MmaWFjdXRlO20gamluJmVhY3V0ZTsgam0mZWFjdXRlO25vLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnJlNjYXJvbjthYmxvbmEgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBpbXBvcnRvdiZhYWN1dGU7bmEgZG8gZGF0YWImYWFjdXRlO3plIGEgamUgbmFpbnN0YWxvdiZhYWN1dGU7bmEgYSBwxZlpcHJhdmVuYSBrIHBvdcW+aXQmaWFjdXRlOy4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdab2JyYXppdCBwxZllZG5hc3RhdmVuJnlhY3V0ZTsgc3R5bCAoQ1NTKSc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0ptJmVhY3V0ZTtubyBzb3Vib3J1JzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0b3ZhdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnJlNjYXJvbjthYmxvbmEgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBzbWF6JmFhY3V0ZTtuYSB6IGRhdGFiJmFhY3V0ZTt6ZS4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnJlNjYXJvbjthYmxvbmEgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBha3R1YWxpem92JmFhY3V0ZTtuYSc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdQxZlpIGFrdHVhbGl6YWNpICZzY2Fyb247YWJsb255IGRvJnNjYXJvbjtsbyBrIGNoeWLEmyc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnTmFzdGF2ZW4maWFjdXRlOyBieWxhICZ1YWN1dGU7c3DEmyZzY2Fyb247bsSbIHVsb8W+ZW5hJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpZSBieWxhIHNtYXomYWFjdXRlO25hJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0thdGVnb3JpZSBieWxhIGFrdHVhbGl6b3YmYWFjdXRlO25hJzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdLYXRlZ29yaWUgYnlsYSBwxZlpZCZhYWN1dGU7bmEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnVWQmYWFjdXRlO2xvc3QgYnlsYSBzbWF6JmFhY3V0ZTtuYSc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdVZCZhYWN1dGU7bG9zdCBieWxhIGFrdHVhbGl6b3YmYWFjdXRlO25hJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0NoeWJhOiBNdXMmaWFjdXRlO3RlIG5lamTFmSZpYWN1dGU7dmUgbmFzdGF2aXQgdiZ5YWN1dGU7Y2hveiZpYWN1dGU7IHN0ciZhYWN1dGU7bmt1IGFieSBqc3RlIG1vaGxpIHBvdcW+JmlhY3V0ZTt2YXQgS2FsZW5kJmFhY3V0ZTvFmSBzZSB6YXBudXQmeWFjdXRlO21hIHByZXR0eSBVUkwuIFByb3MmaWFjdXRlO20gamTEm3RlIG5hIG5hc3RhdmVuJmlhY3V0ZTsgS2FsZW5kJmFhY3V0ZTvFmWUgYSB2eWJlcnRlIGplZG51Lic7CiRsYW5nWyd0aW1lX2F0J10gPSAndmUnOwokbGFuZ1sndHlwZSddID0gJ1R5cCc7CiRsYW5nWyduYW1lJ10gPSAnSm0mZWFjdXRlO25vJzsKJGxhbmdbJ29yZGVyJ10gPSAnUG/FmWFkJmlhY3V0ZTsnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ1BvbGUgJnVhY3V0ZTtzcMSbJnNjYXJvbjtuxJsgcMWZaWQmYWFjdXRlO25vJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ1BvbGUgc21heiZhYWN1dGU7bm8nOwokbGFuZ1snZmllbGRzJ10gPSAnVmxhc3RuJmlhY3V0ZTsgUG9sZSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0b3YmZWFjdXRlOyBwb2xlJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnUG9sZSBwcm8gdXBsb2FkIHNvdWJvcnUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5LYWxlbmQmYWFjdXRlO8WZIGplIG1vZHVsIHBybyB6b2JyYXpvdiZhYWN1dGU7biZpYWN1dGU7IHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTsgbmEgVmEmc2Nhcm9uO2ljaCBzdHImYWFjdXRlO25rJmFhY3V0ZTtjaC4gS2R5xb4gamUgbW9kdWwgbmFpbnN0YWxvdiZhYWN1dGU7biwgYWRtaW5pc3RyYcSNbiZpYWN1dGU7IHJvemhyYW4maWFjdXRlOyBLYWxlbmQmYWFjdXRlO8WZZSBqZSBwxZlpZCZhYWN1dGU7bm8gZG8gbWVudSBPYnNhaCwgY2/FviB2JmFhY3V0ZTttIHVtb8W+biZpYWN1dGU7IHNwcmF2b3ZhdCB1ZCZhYWN1dGU7bG9zdGkuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnU3RyJmFhY3V0ZTtua2EsIGt0ZXImYWFjdXRlOyBvYnNhaHVqZSBrYWxlbmQmYWFjdXRlO8WZLiBUYXRvIHN0ciZhYWN1dGU7bmthIG11cyZpYWN1dGU7IG9ic2Fob3ZhdCBTbWFydHkgdGFnLCBrdGVyJnlhY3V0ZTsgdm9sJmFhY3V0ZTsga2FsZW5kJmFhY3V0ZTvFmS4gUG/FmWFkb3ZhbiZlYWN1dGU7IHBva3VkIHBvdcW+JmlhY3V0ZTt2JmFhY3V0ZTt0ZSBwcmV0dHkgVVJMcy4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnQWRyZXMmYWFjdXRlO8WZIHBybyB1a2wmYWFjdXRlO2QmYWFjdXRlO24maWFjdXRlOyB1cGxvYWTFryc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdQb3ZvbGVuJmVhY3V0ZTsgdHlweSBzb3Vib3LFryc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdaYWppc3RpdCBqZWRpbmXEjW4mYWFjdXRlOyBqbSZlYWN1dGU7bmEgc291Ym9yxa8nOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICcmU2Nhcm9uOyZpYWN1dGU7xZlrYSBtaW5pYXR1cnknOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnViZ5YWN1dGU7JnNjYXJvbjtrYSBtaW5pYXR1cnknOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICcmU2Nhcm9uOyZpYWN1dGU7xZlrYSB2ZWxrJmVhY3V0ZTtobyBvYnImYWFjdXRlO3prdSc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdWJnlhY3V0ZTsmc2Nhcm9uO2thIHZlbGsmZWFjdXRlO2hvIG9iciZhYWN1dGU7emt1JzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdPcGFrdWplIHNlJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ09wYWt1amUgc2UgZG8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlZ5cCZpYWN1dGU7JnNjYXJvbjtlIEF1dG9yb3ZvIEptJmVhY3V0ZTtubzo8L2I+PC9wPg0KPGNvZGU+QXV0b3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGUgQ2FsZW5kYXIgbW9kdWxlIGlzIGFsc28gaW5zdGFsbGVkLi4gIFRoaXMgbW9kdWxlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIENhbGVuZGFyIG1vZHVsZSBhbmQgY2Fubm90IGNvLWV4aXN0IHdpdGggaXQgb24gdGhlIHNhbWUgaW5zdGFsbC4gIFBsZWFzZSB1bmluc3RhbGwgdGhlIENhbGVuZGFyIG1vZHVsZSc7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFaXRoZXIgZXZlbnRfaWQgaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgb3IgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBldmVudCB3aXRoIHRoaXMgaWQhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlZCBvZiAlZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0NhbGVuZGFyIFNlYXJjaCBSZXN1bHRzJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1NlYXJjaCBXb3Jkcyc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnTm8gcmVzdWx0cyBmb3VuZCBtYXRjaGluZyB0aGUgcXVlcnkgc3BlY2lmaWVkJzsKJGxhbmdbJ2ZyZXF1ZW5jeSddID0gJ0ZyZXF1ZW5jeSc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ1VzZSB0aGUgc3BlY2lmaWVkIGRhdGUnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnRmlyc3QgU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9tb25kYXknXSA9ICdGaXJzdCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdGaXJzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdGaXJzdCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnRmlyc3QgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ0ZpcnN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3Rfc2F0dXJkYXknXSA9ICdGaXJzdCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ1NlY29uZCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdTZWNvbmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ1NlY29uZCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnU2Vjb25kIFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3RodXJzZGF5J10gPSAnU2Vjb25kIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfZnJpZGF5J10gPSAnU2Vjb25kIEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3NhdHVyZGF5J10gPSAnU2Vjb25kIFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUaGlyZCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX21vbmRheSddID0gJ1RoaXJkIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ1RoaXJkIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3dlZG5lc2RheSddID0gJ1RoaXJkIFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfdGh1cnNkYXknXSA9ICdUaGlyZCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVGhpcmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ1RoaXJkIFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnRm91cnRoIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0ZvdXJ0aCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90dWVzZGF5J10gPSAnRm91cnRoIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF93ZWRuZXNkYXknXSA9ICdGb3VydGggV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdGb3VydGggVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9mcmlkYXknXSA9ICdGb3VydGggRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfc2F0dXJkYXknXSA9ICdGb3VydGggU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3Rfc3VuZGF5J10gPSAnTGFzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnTGFzdCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ0xhc3QgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF93ZWRuZXNkYXknXSA9ICdMYXN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90aHVyc2RheSddID0gJ0xhc3QgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnTGFzdCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdMYXN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX3JlY3VyX21vbnRobHlfZnJlcSddID0gJ0ludmFsaWQgZnJlcXVlbmN5Li4uLiB5b3UgY2Fubm90IHNwZWNpZnkgYm90aCB0aGUgc3BlY2lmaWVkIGRhdGUgQU5EIG90aGVyIHZhbHVlcyc7CiRsYW5nWydzZWFyY2hyZXN1bHR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBTZWFyY2ggUmVzdWx0IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyBkaXNwbGF5JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hyZXN1bHRfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBTZWFyY2ggUmVzdWx0IFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9zZWFyY2hfcmVzdWx0X3RlbXBsYXRlcyddID0gJ1NlYXJjaCBSZXN1bHQgVGVtcGxhdGVzJzsKJGxhbmdbJ2Vycm9yX3F1ZXJ5X2ZhaWxlZCddID0gJ0RhdGFiYXNlIFF1ZXJ5IEZhaWxlZCc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ0ludmFsaWQgU2VhcmNoIERhdGVzIFNwZWNpZmllZCc7CiRsYW5nWyd0ZXh0J10gPSAnVGV4dCc7CiRsYW5nWydzZWFyY2gnXSA9ICdTZWFyY2gnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnU3lzdGVtIERlZmF1bHQgU2VhcmNoIEZvcm0gVGVtcGxhdGUnOwokbGFuZ1snc2VhcmNodGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgU2VhcmNoIEZvcm0gVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCBmb3JtJzsKJGxhbmdbJ2NhbF9zZWFyY2hfZm9ybV90ZW1wbGF0ZXMnXSA9ICdTZWFyY2ggRm9ybSBUZW1wbGF0ZXMnOwokbGFuZ1snbWF4J10gPSAnbWFrcyc7CiRsYW5nWyd0aW1lcyddID0gJ2dhbmdlJzsKJGxhbmdbJ29uJ10gPSAndGlsJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGR1IHZpbCBnJm9zbGFzaDtyZSBkZXR0ZT8gSHZpcyBkdSBmb3J0cyZhZWxpZzt0dGVyIHNsZXR0ZXMgYWxsZSBkYXRhIHRpbGtueXR0ZXQgZGV0dGUgbW9kdWwgcGVybWFuZW50Lic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ1RoZSBDYWxlbmRhciBtb2R1bGUgaGFzIGJlZW4gdW5pbnN0YWxsZWQgYW5kIGFsbCBldmVudCBhbmQgdGVtcGxhdGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmVsdCBvcGRhdGVyZXQnOwokbGFuZ1snZXZlcnknXSA9ICdIdmVyJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnT3BkYXQmZWFjdXRlO3IgdW5kZXItaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdEdSBza2FsIHYmYWVsaWc7bGdlIG1pbmRzdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdEZXIgZXIgaWtrZSB2YWxndCBub2dldCB0aWwgc2xldG5pbmcnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnRGVuIGdlbnRhZ2VuZGUgaCZhZWxpZztuZGVsc2UgZHUgaGFyIGFuZ2l2ZXQgdmlsbGUgcmVzdWx0ZXJlIGkgb3ZlcmxhcHBlbmRlIGgmYWVsaWc7bmRlbHNlci4nOwokbGFuZ1sncmVjdXJzJ10gPSAnR2VudGFnZXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ0VuIGVsbGVyIGZsZXJlIGF0IGRlIGFuZ2l2bmUgZGF0b2VyIGVyIHVneWxkaWcnOwokbGFuZ1snc3VuZGF5J10gPSAnUyZvc2xhc2g7bmRhZyc7CiRsYW5nWydtb25kYXknXSA9ICdNYW5kYWcnOwokbGFuZ1sndHVlc2RheSddID0gJ1RpcnNkYWcnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnT25zZGFnJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnVG9yc2RhZyc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdMJm9zbGFzaDtyZGFnJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnUyZvc2xhc2g7bic7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ01hbic7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUaXInOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdPbnMnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1Rvcic7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyZSc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnTCZvc2xhc2g7cic7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1VnZWRhZ2UnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnRGFnZSc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVWdlcic7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ00mYXJpbmc7bmVkZXInOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJyZBcmluZztyJzsKJGxhbmdbJ25vJ10gPSAnTmVqJzsKJGxhbmdbJ2RhaWx5J10gPSAnRGFnbGlndCc7CiRsYW5nWyd3ZWVrbHknXSA9ICdVZ2VudGxpZ3QnOwokbGFuZ1snbW9udGhseSddID0gJ00mYXJpbmc7bmVkbGlndCc7CiRsYW5nWyd5ZWFybHknXSA9ICcmQXJpbmc7cmxpZ3QnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdHZW50YWcgaHZlcic7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ0RldGFsamVyIG9tIHRpbGJhZ2V2ZW5kZW5kZSBoJmFlbGlnO25kZWxzZSc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdVYmVnciZhZWxpZztuc2V0JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYWtzaW1hbHQgYW50YWwgdW5kZXIgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnQW5naXYgZW4gYWx0ZXJuYXRpdiBzbHV0IGRhdG8/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FmYnJ5ZCc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1ZpcyB1bmRlci1oJmFlbGlnO25kZWxzZXIgPGVtPihrYW4gbWVkZiZvc2xhc2g7cmUgbWVnZXQgbGFuZyB2aXNuaW5nKTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdHZW50YWcgaW5kdGlsJzsKJGxhbmdbJ3BhcmVudCddID0gJ092ZXJoJmFlbGlnO25kZWxzZXInOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnR2VudGFnZWxzZXNwZXJpb2RlJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnQgZGF0byc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ1NsdXQgZGF0byc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB1cGNvbWluZ2xpc3Qgdmlld3MnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIFVwY29taW5nbGlzdCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBVcGNvbWluZ2xpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGxpc3Qgdmlld3MnOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBMaXN0IERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBMaXN0IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZXZlbnQgdmlld3MnOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gRXZlbnQgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBFdmVudCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGNhbGVuZGFyIHZpZXdzJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgQ2FsZW5kYXIgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBDYWxlbmRhciBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdUaGlzIGZvcm0gZGVmaW5lcyB0aGUgdGVtcGxhdGUgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB5b3UgY2xpY2sgJnF1b3Q7TmV3IFRlbXBsYXRlJnF1b3Q7IGluIHRoZSBhcHByb3ByaWF0ZSB0YWIuICBDaGFuZ2luZyB0aGlzIHZhbHVlIHdpbGwgaGF2ZSBubyBpbW1lZGlhdGUgZWZmZWN0IG9uIHRoZSBkaXNwbGF5cyBnZW5lcmF0ZWQgZnJvbSB0aGlzIG1vZHVsZS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdLYWxkZXMgZWZ0ZXIgZW4gaCZhZWxpZztuZGVsc2UgZXIgdGlsZiZvc2xhc2g7amV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0thbGRlcyBlZnRlciBlbiBoJmFlbGlnO25kZWxzZSBlciBibGV2ZXQgJmFlbGlnO25kcmV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdLYWxkZXMgZWZ0ZXIgZW4gaCZhZWxpZztuZGVsc2UgZXIgYmxldmV0IHNsZXR0ZXQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdLYWxkZXMgZWZ0ZXIgZW4ga2F0ZWdvcmkgZXIgb3ByZXR0ZXQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnS2FsZGVzIGVmdGVyIGVuIGthdGVnb3JpIGVyIGJsZXZldCByZWRpZ2VyZXQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ0thbGRlcyBlZnRlciBlbiBrYXRlZ29yaSBlciBibGV2ZXQgc2xldHRldCc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0gmYWVsaWc7bmRlbHNlIHRpbGYmb3NsYXNoO2pldCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0gmYWVsaWc7bmRlbHNlbiBza2FsIGhhdmUgZXQgbmF2bic7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0VSUk9SOiBObyB1cGxvYWRlZCBmaWxlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VSUk9SOiBUaGUgZmlsZSB1cGxvYWRlZCBjYW5ub3QgYmUgYWNjZXB0ZWQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUlJPUjogQSBwcm9ibGVtIG9jY3VycmVkIHRyeWluZyB0byB1cGxvYWQgdGhlIGZpbGUnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogQSBQcm9ibGVtIG9jY3VycmVkIHdoZW4gY29weWluZyB0aGUgZmlsZSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0VSUk9SOiBBIGZpbGUgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0Zlamw6IGt1bm5lIGlra2UgZmluZGUgQ1NWLWZpbGVuJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0Zlamw6IGthbiBpa2tlICZhcmluZztibmUgZmlsZW4nOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJPUjogQSBjYXRlZ29yeSB3aXRoIHRoZSBuYW1lICVzIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZGVyJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYXJkIHNrYWJlbG9uZXInOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnVGlsZiZvc2xhc2g7aiwgcmV0IG9nIHNsZXQgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ1RpbGYmb3NsYXNoO2ogaCZhZWxpZztuZGVsc2UnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnQmZWFjdXRlO3IgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdIJmFlbGlnO25kZWxzZXInOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWVyJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVuZGVyIHNrYWJlbG9uJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnTGlzdGUgc2thYmVsb24nOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1NrYWJlbG9uIGZvciBrb21tZW5kZSBoJmFlbGlnO25kZWxzZXInOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnU2thYmVsb24gZm9yIGgmYWVsaWc7bmRlbHNlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0luZHN0aWxsaW5nZXInOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IEZvcnJpZ2UnOwokbGFuZ1snY2FsX25leHQnXSA9ICdOJmFlbGlnO3N0ZSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWVyIG9wZGF0ZXJldCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ0luZHN0aWxsaW5nZXIgb3BkYXRlcmV0JzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdUaWxmJm9zbGFzaDtqIGgmYWVsaWc7bmRlbHNlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnUmV0JzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTbGV0JzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGR1IHZpbCBzbGV0dGUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ09wZGF0JmVhY3V0ZTtyIHNrYWJlbG9uJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdTJm9zbGFzaDtuZGFnJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdNYW5kYWcnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdUaXJzZGFnJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdPbnNkYWcnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnVG9yc2RhZyc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnRnJlZGFnJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ0wmb3NsYXNoO3JkYWcnOwokbGFuZ1snY2FsX3N1biddID0gJ1Mmb3NsYXNoO24nOwokbGFuZ1snY2FsX21vbiddID0gJ01hbic7CiRsYW5nWydjYWxfdHVlcyddID0gJ1Rpcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnT25zJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1Rvcic7CiRsYW5nWydjYWxfZnJpJ10gPSAnRnJlJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdMJm9zbGFzaDtyJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnSmFudWFyJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJ1YXInOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFydHMnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQXByaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01haic7CiRsYW5nWydjYWxfanVuZSddID0gJ0p1bmknOwokbGFuZ1snY2FsX2p1bHknXSA9ICdKdWxpJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBdWd1c3QnOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NlcHRlbWJlcic7CiRsYW5nWydjYWxfb2N0b2JlciddID0gJ09rdG9iZXInOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTm92ZW1iZXInOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnRGVjZW1iZXInOwokbGFuZ1snY2FsX2FkZCddID0gJ09wZGF0JmVhY3V0ZTtyJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdUaWxmJm9zbGFzaDtqJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0gmYWVsaWc7bmRlbHNlJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0byc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ092ZXJzaWd0JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWxqZXInOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtZXJlID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdUaWxiYWdlJzsKJGxhbmdbJ2NhbF90byddID0gJ3RpbCc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdPdmVyc3QmYXJpbmc7ZWRlIGgmYWVsaWc7bmRlbHNlcic7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnS29tbWVuZGUgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdBbGxlIGthdGVnb3JpZXInOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdWaXMga3VuIGgmYWVsaWc7bmRlbHNlciBpJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0ciZlYWN1dGU7ciBwJmFyaW5nOyc7CiRsYW5nWydjYWxfZ28nXSA9ICdLJm9zbGFzaDtyJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1RpdGVsJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0ZyYSBkYXRvJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdUaWwgZGF0byc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdPcGRhdCZlYWN1dGU7ciBrYXRlZ29yaWVyJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ1Nwcm9nJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ09wZGF0JmVhY3V0ZTtyIGluZHN0aWxsaW5nZXInOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0Jlbnl0IDEyLXRpZHNhbmdpdmVsc2UgaSBkcm9wZG93bi4nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdTdGFuZGFyZCBrYXRlZ29yaSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ09wZGF0ZXIgZmVsdGVyJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnUCZhcmluZzt0dmluZyBtaW5kc3QgZW4ga2F0ZWdvcmknOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0h2b3IgbWFuZ2UgJmFyaW5nO3IgdGlsYmFnZSBpIHRpZGVuIGRlciBrYW4gYW5naXZlcyc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIdm9yIG1hbmdlICZhcmluZztyIHVkIGkgZnJlbXRpZGVuIGRlciBrYW4gYW5naXZlcyc7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ1NrYWwgcmVzdW1lIGZlbHRldCBza2p1bGVzJzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnU2thbCBpbmRob2xkc2ZlbHRldCBza2p1bGVzJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnQW5naXYgbWluZHN0IGVuIGthdGVnb3JpIGZvciBkZW5uZSBoJmFlbGlnO25kZWxzZSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnS2FsZW5kZXIgQ1NTIGVrc2VtcGVsJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdEdSBza2FsIGhhdmUgZGVuIG4mb3NsYXNoO2R2ZW5kaWdlIHRpbGxhZGVsc2UgKCVzKSBmb3IgYXQga3VubmUgYmVueXR0ZSBkZW4gZnVua3Rpb24nOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ0h1c2sgYXQgc2wmYXJpbmc7IHRpbGxhZGVsc2VuICZxdW90O01vZGlmeSBDYWxlbmRhciZxdW90OyB0aWwgZm9yIGJydWdlcmUgZGVyIHNrYWwga3VubmUgYWRtaW5pc3RyZXJlIGthbGVuZGVyZW4uJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ1NsZXQgbWFya2VyZWRlIGgmYWVsaWc7bmRlbHNlcic7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGRpc3NlIGgmYWVsaWc7bmRlbHNlciBza2FsIHNsZXR0ZXM/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdNYXJrZXJlZGUgaCZhZWxpZztuZGVsc2VyIGJsZXYgc2xldHRldCc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdTa2FiZWxvbmVyJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdTa2FiZWxvbiBoaiZhZWxpZztscCc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0ZpbC1za2FiZWxvbmVyJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnVGlsZiZvc2xhc2g7aiBza2FiZWxvbic7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1NrYWJlbG9uJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdTa2FiZWxvbiBuYXZuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1JlZGlnJmVhY3V0ZTtyIHNrYWJlbG9uJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnU2xldCBza2FiZWxvbic7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ055dCBza2FiZWxvbiBuYXZuJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Zlamw6IEVuIHNrYWJlbG9uIG1lZCBkZXQgbmF2biBla3Npc3RlcmVyIGFsbGVyZWRlJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdTa2FiZWxvbmVuIGJsZXYgaW1wb3J0ZXJldCBpIGRhdGFiYXNlbiBvZyBlciBudSBrbGFyIHRpbCBicnVnLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1ZpcyBzdGFuZGFyZCBzdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsbmF2bic7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydCZlYWN1dGU7ciBza2FiZWxvbic7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnU2thYmVsb25lbiBibGV2IHNsZXR0ZXQgZnJhIGRhdGFiYXNlbic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdTa2FiZWxvbmVuIGJsZXYgb3BkYXRlcmV0JzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0RlciBza2V0ZSBlbiBmZWpsIHZlZCBvcGRhdGVyaW5nJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbmRzdGlsbGluZ2VybmUgYmxldiBnZW10JzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpZW4gYmxldiBzbGV0dGV0JzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0thdGVnb3JpZW4gYmxldiBvcGRhdGVyZXQnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0thdGVnb3JpZW4gYmxldiB0aWxmJm9zbGFzaDtqZXQnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnSCZhZWxpZztuZGVsc2VuIGJsZXYgc2xldHRldCc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdIJmFlbGlnO25kZWxzZSBibGV2IG9wZGF0ZXJldCc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdGZWpsOiBEdSBza2FsIGFuZ2l2ZSBlbiBzdGFuZGFyZHNpZGUgaHZpcyBkdSB2aWwgYmVueXR0ZSBrYWxlbmRlcmVuIG1lZCBwcmV0dHkgVVJMJiMwMzk7cyBzbCZhcmluZztldCB0aWwuIEcmYXJpbmc7IHZlbmxpZ3N0IHRpbCBrYWxlbmRlciBpbmRzdGlsbGluZ2VybmUgb2cgdiZhZWxpZztsZyBlbi4nOwokbGFuZ1sndGltZV9hdCddID0gJ2tsLic7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWyduYW1lJ10gPSAnTmF2bic7CiRsYW5nWydvcmRlciddID0gJ1ImYWVsaWc7a2tlZiZvc2xhc2g7bGdlJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdGZWx0ZXQgYmxldiB0aWxmJm9zbGFzaDtqZXQnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnRmVsdGV0IHNsZXR0ZXQnOwokbGFuZ1snZmllbGRzJ10gPSAnQnJ1Z2VyZGVmaW5lcmVkZSBmZWx0ZXInOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGVrc3QgZmVsdCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0ZpbC11cGxvYWQgZmVsdCc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkthbGVuZGVyIG1vZHVsZXQgYnJ1Z2VzIHRpbCBhdCB2aXNlIGJlZ2l2ZW5oZWRlciBwJmFyaW5nOyBkaW4gc2lkZS4gTiZhcmluZztyIG1vZHVsZXQgZXIgaW5zdGFsbGVyZXQgYmxpdmVyIGRlciB0aWxmJm9zbGFzaDtqZXQgZW4ga2FsZW5kZSBhZG1pbiBzaWRlIHRpbCBpbmRob2xkc21lbnVlbiwgZGVyIHZpbCBsYWRlIGRpZyBzdHlyZSBkaW5lIGJlZ2l2ZW5oZWRlci48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdTaWRlbiwgZGVyIHNvbSBzdGFuZGFyZCBpbmRlaG9sZGVyIEthbGVuZGVyZW4uIERlbm5lIHNpZGUgc2thbCBpbmRlaG9sZGUgZW4gU21hcnR5IHRhZyBkZXIga2FsZGVyIEthbGVuZGVyLiBOJm9zbGFzaDtkdmVuZGlnIGh2aXMgZHUgJm9zbGFzaDtuc2tlciBhdCBiZW55dHRlICZxdW90O3ByZXR0eSBVUkxzJnF1b3Q7JzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZXIgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnVGlsbGFkdGUgZmlsdHlwZXInOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnVHZpbmcgdW5pa2tlIGZpbG5hdm5lJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnVGh1bWJuYWlsIGJyZWRkZSc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdUaHVtYm5haWwgaCZvc2xhc2g7amRlJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnU3RvcnQgYmlsbGVkZSBicmVkZGUnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnU3RvcnQgYmlsbGVkZSBoJm9zbGFzaDtqZGUnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ0dlbnRhZ2VzJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ0dlbnRhZ2VzIGluZHRpbCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hvbGlkYXlfY29sb3JzJ10gPSAnTWFya2llcnVuZ3NmYXJiZW4gZsO8ciBGZWllcnRhZ2UnOwokbGFuZ1sncHJvbXB0X2ljYWxfaG9saWRheXMnXSA9ICdJQ0FMLUZlZWQgZsO8ciBGZWllcnRhZ2UnOwokbGFuZ1snaW5mb19pY2FsX2hvbGlkYXlzJ10gPSAnRGllcyB3aXJkIGJlaSBkZXIgS2FsZW5kZXJhbnNpY2h0IHZlcndlbmRldCwgdW0gZ2VzZXR6bGljaGUgRmVpZXJ0YWdlIGZhcmJsaWNoIHp1IG1hcmtpZXJlbi4gRXMgZ2lidCBrZWluZSB3ZWl0ZXJlIEludGVyYWt0aW9uIG1pdCBFcmVpZ25pc3NlbiBpbiBkaWVzZW0gRmVlZC4nOwokbGFuZ1snYWxsZGF5J10gPSAnR2FuenRhZ3MnOwokbGFuZ1snZGF5dmlldyddID0gJ1RhZ2VzYW5zaWNodCc7CiRsYW5nWydlZGl0J10gPSAnRWRpdGllcmVuJzsKJGxhbmdbJ2Vycm9yX2ZldGNoaW5nX2V2ZW50cyddID0gJ0hvcHBsYeKApiBCZWltIFZlcnN1Y2ggZGVuIFNlcnZlciB6dSBrb250YWt0aWVyZW4gZ2luZyBldHdhcyBzY2hpZWYuIEJpdHRlIG5vY2htYWxzIHZlcnN1Y2hlbiEnOwokbGFuZ1snbm9yZXN1bHRzJ10gPSAnRXMga29ubnRlbiBrZWluZSBUZXJtaW5lIGbDvHIgZGllIGFuZ2VnZWJlbmVuIFN1Y2hrcml0ZXJpZW4gZ2VmdW5kZW4gd2VyZGVuLic7CiRsYW5nWydoZWxwX2ZpbmRfd2hlbiddID0gJ1ZlcmdhbmdlbmUgdW5kIHp1a8O8bmZ0aWdlIFRlcm1pbmUgc2luZCBpbW1lciByZWxhdGl2IHp1bSBlaWdlbnRsaWNoZW4gRGF0dW0nOwokbGFuZ1sncmVvcmRlciddID0gJ05ldSBhbm9yZG5lbic7CiRsYW5nWydkZmx0X2NvbG9ycyddID0gJ1N0YW5kYXJkZmFyYmVuJzsKJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdLYXRlZ29yaWUgYmVhcmJlaXRlbic7CiRsYW5nWydmZ2NvbG9yJ10gPSAnVGV4dGZhcmJlJzsKJGxhbmdbJ2JnY29sb3InXSA9ICdIaW50ZXJncnVuZGZhcmJlJzsKJGxhbmdbJ2hlbHBfZmluZF9zaG93Y2hpbGRyZW4nXSA9ICdHaWJ0IGFuLCBvYiB1bnRlcmdlb3JkbmV0ZSBUZXJtaW5lIGluIGRpZSBTdWNoZXJnZWJuaXNzZSBlaW5nZXNjaGxvc3NlbiBzZWluIHNvbGxlbi4nOwokbGFuZ1snaGVscF9maW5kX2V2ZW50X2tleXdvcmQnXSA9ICdFaW5lbiBvZGVyIG1laHJlcmUgU3VjaGJlZ3JpZmZlIGVpbmdlYmVuLiBUaXRlbCwgWnVzYW1tZW5mYXNzdW5nIHVuZCBkYXMgRGV0YWlscy1GZWxkIHdlcmRlbiBuYWNoIHBhc3NlbmRlbiBCZWdyaWZmZW4gZHVyY2hzdWNodCc7CiRsYW5nWydpbmZvX2ZpbmRfcmVzdWx0cyddID0gJ0RpZSBlcnN0ZW4gemVobiBUcmVmZmVyIGRlciBBbmZyYWdlIHdlcmRlbiB1bnRlbiBhbmdlemVpZ3QuPGJyLz5EZXIgQW5sYXNzIGthbm4gZHVyY2ggQW5rbGlja2VuIGRlcyBUaXRlbHMgYmVhcmJlaXRldCB3ZXJkZW4uPGJyLz5FaW4gS2xpY2sgYXVmIGRhcyDigJ5WaWV34oCcLUljb24gbmF2aWdpZXJ0IGRlbiBLYWxlbmRlciB1bmdlZsOkaHIgenVtIERhdHVtIGRlcyBBbmxhc3Nlcy48ZW0+KGplIG5hY2ggQW5zaWNodCk8L2VtPic7CiRsYW5nWydnb3RvX2RhdGUnXSA9ICdadSBkaWVzZW0gRGF0dW0gc3ByaW5nZW4nOwokbGFuZ1snaW5mb19maW5kX2V2ZW50cyddID0gJ1N1Y2hlIG5hY2ggcGFzc2VuZGVuIFRlcm1pbmVuOyBiaXMgenUgemVobiBUZXJtaW5lIHdlcmRlbiBhdXNnZWdlYmVuJzsKJGxhbmdbJ3Jlc3VsdHMnXSA9ICdFcmdlYm5pc3NlJzsKJGxhbmdbJ2tleXdvcmRzJ10gPSAnU3VjaGJlZ3JpZmZlJzsKJGxhbmdbJ2ZpbmRfc2hvd2NoaWxkcmVuJ10gPSAnVW50ZXJnZW9yZG5ldGUgYW56ZWlnZW4nOwokbGFuZ1snYW55J10gPSAnZWdhbCc7CiRsYW5nWydwYXN0J10gPSAndmVyZ2FuZ2VuJzsKJGxhbmdbJ2Z1dHVyZSddID0gJ3p1a8O8bmZ0aWcnOwokbGFuZ1snZmluZF93aGVuJ10gPSAnV2Fubic7CiRsYW5nWydmaW5kX3BhcmVudHNvbmx5J10gPSAnTnVyIMO8YmVyZ2VvcmRuZXRlJzsKJGxhbmdbJ2ZpbmQnXSA9ICdGaW5kZW7igKYnOwokbGFuZ1snZWRpdHBhcmVudCddID0gJ8OcYmVyZ2VvcmRuZXRlcyBiZWFyYmVpdGVuJzsKJGxhbmdbJ3Byb21wdF9yZW1vdmVmcm9tcGFyZW50J10gPSAnRGllc2VuIFRlcm1pbiBhdXMgZGVtIMO8YmVyZ2VvcmRuZXRlbiBUZXJtaW4gZW50ZmVybmVuJzsKJGxhbmdbJ2FsbGRheV9ldmVudCddID0gJ0RpZXMgaXN0IGVpbiBnYW56dMOkZ2lnZXIgVGVybWluJzsKJGxhbmdbJ25vdGUnXSA9ICdIaW53ZWlzJzsKJGxhbmdbJ3RpdGxlX3BhcmVudF9ldmVudCddID0gJ0RpZXNlciBUZXJtaW4gaXN0IHdpZWRlcmtlaHJlbmQgdW5kIGVudGjDpGx0IHVudGVyZ2VvcmRuZXRlJzsKJGxhbmdbJ3N0YXJ0J10gPSAnQmVnaW5uJzsKJGxhbmdbJ2VuZCddID0gJ0VuZGUnOwokbGFuZ1snZXZlbnRfYWN0aW9uJ10gPSAnVGVybWluYWt0aW9uJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZXBhcmVudGV2ZW50J10gPSAnRWluIFRlcm1pbiBtaXQgdW50ZXJnZW9yZG5ldGVuIFRlcm1pbmVuIGthbm4gbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbic7CiRsYW5nWydjaGlsZCddID0gJ3VudGVyZ2VvcmRuZXQnOwokbGFuZ1sncmVwZWF0cyddID0gJ3dpZWRlcmtlaHJlbmQnOwokbGFuZ1snZXJyb3JfZXZlbnRub3Rmb3VuZCddID0gJ1Rlcm1pbiBuaWNodCBnZWZ1bmRlbic7CiRsYW5nWydlcnJvcl91bmtub3duJ10gPSAnVW5iZWthbm50ZXIgRmVobGVyJzsKJGxhbmdbJ21zZ19ub2RhdGVzJ10gPSAnVGl0ZWxzdWNoZSBhbmdld2VuZGV0JzsKJGxhbmdbJ3RpdGxlX3JlY3VycmluZ19ldmVudCddID0gJ0RpZXMgaXN0IGVpbiB3aWVkZXJrZWhyZW5kZXMgRXJlaWduaXMgbWl0IHVudGVyZ2VvcmRuZXRlbiBFaW50csOkZ2VuJzsKJGxhbmdbJ3RpdGxlX2NoaWxkX2V2ZW50J10gPSAnRGllcyBpc3QgZWluIHVudGVyZ2VvcmRuZXRlciBFaW50cmFnIGVpbmVzIHdpZWRlcmtlaHJlbmRlbiBFcmVpZ25pc3Nlcyc7CiRsYW5nWydlcnJvcl9zb21lZGVsZXRlZCddID0gJ0F1ZmdydW5kIHZvbiBCZXJlY2h0aWd1bmdzZWluc2NocsOkbmt1bmdlbiB3dXJkZW4gZWluaWdlIFRlcm1pbmUgbmljaHQgZ2Vsw7ZzY2h0Lic7CiRsYW5nWydlcnJvcl9ub25lZGVsZXRlZCddID0gJ0F1ZmdydW5kIHZvbiBCZXJlY2h0aWd1bmdzLSBvZGVyIGFuZGVyZW4gRmVobGVybiB3dXJkZSBrZWlucyBkZXIgYXVzZ2V3w6RobHRlbiBUZXJtaW5lIGdlbMO2c2NodC4nOwokbGFuZ1snZXJyb3JfZGVsZXRlZmFpbGVkJ10gPSAnTMO2c2NoZW4gZGVzIFRlcm1pbnMgZmVobGdlc2NobGFnZW4nOwokbGFuZ1snZmlsZWF0dGFjaG1lbnQnXSA9ICdEYXRlaWFuaGFuZyc7CiRsYW5nWydwcm9tcHRfZ2VuZXJhbF9zZXR0aW5ncyddID0gJ0FsbGdlbWVpbmUgRWluc3RlbGx1bmdlbic7CiRsYW5nWydwcm9tcHRfZWRpdGluZ19zZXR0aW5ncyddID0gJ1Rlcm1pbmJlYXJiZWl0dW5nc2VpbnN0ZWxsdW5nZW4nOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9zZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nZW4gZsO8ciDDtmZmZW50bGljaGUgQmVhcmJlaXR1bmcnOwokbGFuZ1sncHJldl9tb250aCddID0gJ1p1bSB2b3JpZ2VuIE1vbmF0JzsKJGxhbmdbJ25leHRfbW9udGgnXSA9ICdadW0gbsOkY2hzdGVuIE1vbmF0JzsKJGxhbmdbJ21zZ19jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWVuIGFrdHVhbGlzaWVydCc7CiRsYW5nWydtc2dfZmllbGRzdXBkYXRlZCddID0gJ0ZlbGRkZWZpbml0aW9uZW4gYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ3d5c2l3eWcnXSA9ICdXWVNJV1lHJzsKJGxhbmdbJ2luZm9fcmVvcmRlcl9jYXRlZ29yaWVzJ10gPSAnRGllIFJlaWhlbmZvbGdlIGRlciBLYXRlZ29yaWVuIGthbm4gZHVyY2ggWmllaGVuIGRlciBaZWlsZW4gZ2XDpG5kZXJ0IHdlcmRlbi4nOwokbGFuZ1snYWRkX2ZpZWxkJ10gPSAnRmVsZCBoaW56dWbDvGdlbic7CiRsYW5nWydhZGRfY2F0ZWdvcnknXSA9ICdLYXRlZ29yaWUgaGluenVmw7xnZW4nOwokbGFuZ1sncHJvbXB0X2ZpcnN0ZGF5b2Z3ZWVrJ10gPSAnV29jaGUgYmVnaW5udCBhbSc7CiRsYW5nWydlZGl0X2V2ZW50J10gPSAnRXJlaWduaXMgYmVhcmJlaXRlbic7CiRsYW5nWydlZGl0X3BhcmVudF9ldmVudCddID0gJ8OcYmVyZ2VvcmRuZXRlcyBFcmVpZ25pcyBiZWFyYmVpdGVuJzsKJGxhbmdbJ3NlbGVjdF9wZXJpb2QnXSA9ICdaZWl0cmF1bSc7CiRsYW5nWydzaG93X2ZpbHRlciddID0gJ0ZpbHRlciBhbnplaWdlbic7CiRsYW5nWydzaG93X2ZpbHRlcl9hcHBsaWVkJ10gPSAnRmlsdGVyIGFuemVpZ2VuIDxlbT4oYW5nZXdlbmRldCk8L2VtPic7CiRsYW5nWydyZXNldCddID0gJ1p1csO8Y2tzZXR6ZW4nOwokbGFuZ1snY2FsX2N1cnJlbnQnXSA9ICdEaWVzZXIgWmVpdHJhdW0nOwokbGFuZ1snY2FsX2Zyb20nXSA9ICd2b24nOwokbGFuZ1snZXJyb3JfZmV1X2xvZ2dlZGluJ10gPSAnRGVyIEJlbnV0emVyIGlzdCBuaWNodCBhbmdlbWVsZGV0LiBEYXMgSGluenVmw7xnZW4gb2RlciBCZWFyYmVpdGVuIHZvbiBUZXJtaW5lbiBpc3QgbmljaHQgZ2VzdGF0dGV0Lic7CiRsYW5nWydwcm9tcHRfZnJpZW5kbHluYW1lJ10gPSAnU2VsYnN0Z2V3w6RobHRlciBOYW1lIGbDvHIgZGllc2VzIE1vZHVsIGltIEFkbWluaXN0cmF0aW9uc2JlcmVpY2gnOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdIaW53ZWlzOiBEYW1pdCBkaWVzZSDDhG5kZXJ1bmcgc2ljaHRiYXIgd2lyZCwgbXVzcyB1LiBVLiBkZXIgWndpc2NoZW5zcGVpY2hlciBnZWxlZXJ0IHdlcmRlbi4gV2VubiBuaWNodHMgYW5nZWdlYmVuIHdpcmQsIHdpcmQgZGllIFN0YW5kYXJkYmV6ZWljaG51bmcgdmVyd2VuZGV0Lic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ1dZU0lXWUctRWRpdG9yIHZlcndlbmRlbic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdVbmdlbsO8Z2VuZGUgUGFyYW1ldGVyJzsKJGxhbmdbJ2NvbHVtbl9kZWxpbWl0ZXInXSA9ICdTcGFsdGVudHJlbm5lcic7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0IHZvbGxzdMOkbmRpZyc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdBbnphaGwgZGVyIGVpbmdldHJhZ2VuZW4gVGVybWluZTogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnQW56YWhsIGRlciBhdXMgZGVyIERhdGVpIHZlcmFyYmVpdGV0ZW4gWmVpbGVuOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdGZWhsZXInOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5laW52YWxpZGZpZWxkJ10gPSAnRmVsZCAlcyB3dXJkZSBuaWNodCBlcmthbm50IHVuZCBpc3Qga2VpbiBhbmdlcGFzc3RlcyBGZWxkJzsKJGxhbmdbJ2luZm9fY3N2X2Zvcm1hdCddID0gJzxoND5DU1YgRmlsZSBGb3JtYXQgSW5mb3JtYXRpb24uPC9oND4NCjx1bD4NCiAgPGxpPkdlbmVyYWwgSW5mb3JtYXRpb246DQogICA8dWw+DQogICAgIDxsaT5UaGUgZmlsZSBtdXN0IGJlIGFuIEFTQ0lJIGZpbGUgd2l0aCB1bml4LCBkb3MsIG9yIChob3BlZnVsbHkpIG1hYyBsaW5lIGVuZGluZ3MuPC9saT4NCiAgICAgPGxpPkNvbW1lbnRzIHN0YXJ0IHdpdGggLy8gYW55IGNoYXJhY3RlcnMgYWZ0ZXIgdGhpcyBvbiBhIGxpbmUgd2lsbCBiZSBpZ25vcmVkIChpbmNsdWRpbmcgd2l0aGluIHF1b3Rlcy48L2xpPg0KICAgICA8bGk+RW1wdHkgbGluZXMgYXJlIGlnbm9yZS5kPC9saT4NCiAgICAgPGxpPkZpZWxkcyBhcmUgZGVsaW1pdGVkIHdpdGggYSAsIGhvd2V2ZXIgYSAsIGNhbiBiZSB1c2VkIGFzIGEgdmFsdWUgd2l0aGluIGEgZmllbGQgaWYgdGhlIGZpZWxkIGlzIGRlbGltaXRlZCBieSBkb3VibGUgcXVvdGVzLjwvbGk+DQogICAgIDxsaT5Sb3dzIGFyZSBkZWxpbWl0ZWQgYnkgbmV3bGluZSBjaGFycyAoYXMgYWJvdmUpLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIEZpZWxkIE1hcDoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgImN1c3RvbSBmaWVsZHMiIGFyZSBkZWZpbmVkIGluIHRoZSBmaWxlLiBEYXRhIGNhbiBzdGFydCBvbiB0aGUgc2Vjb25kIG5vbi1lbXB0eSBsaW5lLCBvciBhZnRlci48L2xpPg0KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAiY2F0ZWdvcnkiLiAgSWYgc3BlY2lmaWVkIGl0IGNhbiBjb250YWluIGEgOyBzZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBuYW1lcyB0aGF0IHRoZSBldmVudCB3aWxsIGJlbG9uZyB0by48L2xpPg0KICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPlRoZSBEYXRhIFJvd3M6DQogICA8dWw+DQogICAgPGxpPlRoZSBzdGFydCB0aW1lLCB0aXRsZSwgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyBtdXN0IG5vdCBiZSBlbXB0eS48L2xpPg0KPGxpPlN0YXJ0IGFuZCBFbmQgVGltZXM6PC9saT4NCiAgPHVsPg0KICAgPGxpPlN0YXJ0IHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgIFlZWVktTU0tREQgSEg6TU0gZm9ybWF0LCBvciBtYW55IGZvcm1hdHMgYXMgZGVmaW5lZCBieSB0aGUgc3RydG90aW1lIGZ1bmN0aW9uLCBpbmNsdWRpbmcgcmVsYXRpdmUgdGltZXMuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3VwcGxpZWQgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lLjwvbGk+DQogICA8bGk+RW5kIHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZSwgYW5kIG1heSBiZSBlbXB0eS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYW4gYWJzb2x1dGUgdGltZSAoaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBzdGFydCB0aW1lKSBvciBhIHJlbGF0aXZlIHRpbWUuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3BlY2lmaWVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCB0aW1lLiAgIGkuZTogIis0IGhvdXJzIiB3b3VsZCBpbmRpY2F0ZSA0IGhvdXJzIGZyb20gdGhlIHN0YXJ0IHRpbWUgY29sdW1uLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICJBbGwgZGF5IiA8ZW0+KGNhc2UgaW5zZW5zaXRpdmUpPC9lbT4gaXQgd2lsbCBhc3N1bWUgYW4gYWxsIGRheSBldmVudCBmcm9tIHRoZSBzdGFydCB0aW1lLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkNhdGVnb3JpZXMNCiAgPHVsPg0KICAgPGxpPklmIHNwZWNpZmllZCwgdGhlIGNhdGVnb3J5IGNvbHVtbiBjYW4gY29udGFpbiBhIGxpc3QgKHNlcGFyYXRlZCBieSA7KSBvZiBjYXRlZ29yeSBuYW1lcyBmb3Igd2hpY2ggdGhlIGV2ZW50IHNob3VsZCBiZWxvbmcuPC9saT4NCiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DdXN0b20gRmllbGRzOg0KICA8dWw+DQogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPg0KICAgIDxsaT5DdXN0b20gZmllbGRzIG9mIHR5cGUgImZpbGUiIGNhbm5vdCBiZSBpbXBvcnRlZC4gIFRoZSBlbnRpcmUgaW1wb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwuPC9saT4NCiAgPC91bD4NCiAgPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+QSBzYW1wbGUgY3N2IGZpbGUgZXhpc3RzIGluIHRoZSBtb2R1bGVzIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS48L2xpPg0KPC91bD4nOwokbGFuZ1sncHJvbXB0X2Nzdl9maWxlJ10gPSAnRGllIHp1IGltcG9ydGllcmVuZGUgRGF0ZWkgYXVzd8OkaGxlbic7CiRsYW5nWydkZWxldGUnXSA9ICdMw7ZzY2hlbic7CiRsYW5nWydjZF9jb21wYW55J10gPSAnRmlybWVudmVyemVpY2huaXMnOwokbGFuZ1snZGZsdF91cmxwcmVmaXgnXSA9ICdWb3JlaW5nZXN0ZWxsdGVzIFVSTC1QcsOkZml4IGbDvHIgUHJldHR5IFVSTHMnOwokbGFuZ1snZGZsdF9hbGxkYXlldmVudCddID0gJ05ldWUgVGVybWluZSBzb2xsZW4gdm9yZWluZ2VzdGVsbHQgZ2FuenTDpGdpZyBzZWluJzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFN0YXJ0emVpdCBmw7xyIG5ldWUgVGVybWluZSc7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPih3aXJkIG51ciBkYW5uIGFuZ2V3ZW5kZXQsIHdlbm4gbmV1ZSBUZXJtaW5lIGtlaW5lIGdhbnp0w6R0aWdlbiBUZXJtaW5lIHNpbmQuKTwvZW0+JzsKJGxhbmdbJ3NlYXJjaF90eXBlJ10gPSAnU3VjaC1UeXAnOwokbGFuZ1snc2VhcmNoX2FueSddID0gJ0dpYnQgRXJnZWJuaXNzZSB6dXLDvGNrLCB3ZW5uIGlyZ2VuZCBlaW4gV29ydCBlbnRoYWx0ZW4gaXN0JzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdHaWJ0IEVyZ2Vibmlzc2UgenVyw7xjaywgd2VubiBhbGxlIFdvcnRlIGVudGhhbHRlbiBzaW5kJzsKJGxhbmdbJ3NlYXJjaGFibGUnXSA9ICdEdXJjaHN1Y2hiYXInOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0thbm4gbnVyIHp1c2FtbWVuIG1pdCBkZXIgQWt0aW9uIOKAnm15ZXZlbnRz4oCcIHZlcndlbmRldCB3ZXJkZW4uIE1pdCBkaWVzZW0gUGFyYW1ldGVyIGthbm4gZWluZSB2b24gZGVuIFZvcmVpbnN0ZWxsdW5nZW4gYWJ3ZWljaGVuZGUgVm9ybGFnZSBmZXN0Z2VsZWd0IHdlcmRlbiwgd2VubiBlaW4gQmVudXR6ZXIgZWluZW4gVGVybWluIGVyc3RlbGx0IG9kZXIgYmVhcmJlaXRldCc7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnS2FubiBudXIgenVzYW1tZW4gbWl0IGRlciBBa3Rpb24gbXlldmVudHMgdmVyd2VuZGV0IHdlcmRlbi4gTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBlaW5lIHZvbiBkZW4gVm9yZWluc3RlbGx1bmdlbiBhYndlaWNoZW5kZSBTZWl0ZSBmw7xyIGRhcyBCZWFyYmVpdHVuZ3Nmb3JtdWxhciBmZXN0Z2VsZWd0IHdlcmRlbi4nOwokbGFuZ1snaGVscF9wYXJhbV9teWV2ZW50c3RlbXBsYXRlJ10gPSAnS2FubiBudXIgenVzYW1tZW4gbWl0IGRlciBBa3Rpb24gbXlldmVudHMgdmVyd2VuZGV0IHdlcmRlbi4gTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBlaW5lIHZvbiBkZW4gVm9yZWluc3RlbGx1bmdlbiBhYndlaWNoZW5kZSBWb3JsYWdlIGZlc3RnZWxlZ3Qgd2VyZGVuLic7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ0thbGVuZGVyLUVpbnRyYWcgYmVhcmJlaXRlbic7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0ZW5iYW5rZmVobGVyJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0Fic2VuZGVuJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdWb3JlaW5nZXN0ZWxsdGUgVm9ybGFnZSBmw7xyIOKAnlRlcm1pbiBiZWFyYmVpdGVu4oCcJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9teWV2ZW50c190ZW1wbGF0ZSddID0gJ1ZvcmVpbmdlc3RlbGx0ZSBWb3JsYWdlIGbDvHIg4oCeTWVpbmUgVGVybWluZeKAnCc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTWl0Z2xpZWRlciBkaWVzZXIgRkVVLUdydXBwZSBkw7xyZmVuIFRlcm1pbmUgaGluenVmw7xnZW4nOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFNlaXRlIGbDvHIgZGFzIEJlYXJiZWl0dW5nc2Zvcm11bGFyIGF1ZiBkZXIgV2Vic2VpdGUvRnJvbnRlbmQnOwokbGFuZ1snbm9uZSddID0gJ0tlaW4oZSkvb2huZSBWb3JnYWJlJzsKJGxhbmdbJ293bmVyJ10gPSAnRWlnZW50w7xtZXInOwokbGFuZ1snY2FsX2VkaXRldmVudF90ZW1wbGF0ZXMnXSA9ICdWb3JsYWdlbiB6dW0gQmVhcmJlaXRlbiB2b24gVGVybWluLUZvcm11bGFyZW4nOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnRGllIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEJlYXJiZWl0dW5nIHZvbiBUZXJtaW4tRm9ybXVsYXJlbiB2ZXJmw7xnYmFyIHNpbmQnOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUgVm9ybGFnZSB6dW0gQmVhcmJlaXRlbiB2b24gVGVybWluLUZvcm11bGFyZW4gaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydjYWxfbXlldmVudHNfdGVtcGxhdGVzJ10gPSAnTWVpbmUgVGVybWlubGlzdGVuLVZvcmxhZ2VuJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnRGllIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZWluZXIgTGlzdGUgdm9uIEJlbnV0emVydGVybWluZW4gdmVyZsO8Z2JhciBzaW5kJzsKJGxhbmdbJ215ZXZlbnRzdGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUg4oCeTWVpbmUgVGVybWluZeKAnC1CZXJpY2h0c3ZvcmxhZ2UgaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnTWl0IGRpZXNlciBBa3Rpb24gd2VyZGVuIGFsbGUgVGVybWluZSBlbnRmZXJudCwgZGllIEtvbmZsaWt0ZSBtaXQgVGVybWluZW4gaGVydm9ycnVmZW4sIGRpZSBuaWNodCB2b24gYW5kZXJlbiBUZXJtaW5lbiDDvGJlcmxhcHB0IHdlcmRlbiBkw7xyZmVuLiBXb2xsZW4gU2llIGRhcyB3aXJrbGljaD8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnS29uZmxpa3RiZWhhZnRldGUgVGVybWluZSBmaWx0ZXJuJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ0tvbmZsaWt0YmVoYWZ0ZXRlIFRlcm1pbmUgc3RpbGwgZW50ZmVybmVuJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnRWluZW4gRmVobGVyIGFuemVpZ2VuJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ1dhcyBzb2xsIHBhc3NpZXJlbiwgd2VubiBlaW4gS29uZmxpa3QgYmVpbSBFcnN0ZWxsZW4gb2RlciBCZWFyYmVpdGVuIGVpbmVzIFRlcm1pbnMgZmVzdGdlc3RlbGx0IHdpcmQ/JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnRGllIGbDvHIgZGVuIFRlcm1pbiBlaW5nZWdlYmVuZW4gV2VydGUgw7xiZXJzY2huZWlkZW4gc2ljaCBtaXQgZWluZW0gYmVyZWl0cyBleGlzdGllcmVuZGVuIFRlcm1pbiwgZGVyIG5pY2h0IMO8YmVybGFwcHQgd2VyZGVuIGRhcmYnOwokbGFuZ1snY2FsX2luZm9fb3ZlcmxhcCddID0gJ051ciBhdWYgVGVybWluZSBtaXQgZWluZXIgRW5kemVpdCBvZGVyIGdhbnp0w6RnaWdlbiBUZXJtaW5lbiBhbndlbmRlbic7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ05ldWVuIFRlcm1pbmVuIGVybGF1YmVuLCBzaWNoIG1pdCBkaWVzZW4genUgw7xiZXJzY2huZWlkZW4nOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfcG9saWN5J10gPSAnUmVnZWwgZsO8ciBUZXJtaW7DvGJlcnNjaG5laWR1bmdlbic7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsZSBUZXJtaW5lIGvDtm5uZW4gc2ljaCDDvGJlcnNjaG5laWRlbic7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ0tlaW4gVGVybWluIGRhcmYgc2ljaCDDvGJlcnNjaG5laWRlbic7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ1NvbGwgZsO8ciBqZWRlbiBUZXJtaW4gaW5kaXZpZHVlbGwgZmVzdGdlbGVndCB3ZXJkZW4ga8O2bm5lbic7CiRsYW5nWydsYmxfYmFjayddID0gJ1p1csO8Y2snOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1ZvcmxhZ2VuJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dGJlcmVpY2gnOwokbGFuZ1snZXJyb3JfY2FsZW5kYXJfaW5jb21wYXRpYmxlJ10gPSAnRXMgd3VyZGUgZmVzdGdlc3RlbGx0LCBkYXNzIGRhcyBNb2R1bCDigJ5DYWxlbmRhcuKAnCBlYmVuZmFsbHMgaW5zdGFsbGllcnQgaXN0LiBEaWVzZXMgTW9kdWwgaXN0IE5JQ0hUIGtvbXBhdGliZWwgbWl0IGRpZXNlbSBLYWxlbmRlcm1vZHVsIHVuZCBrYW5uIGF1Y2ggTklDSFQgZ2xlaWNoemVpdGlnIGluc3RhbGxpZXJ0IHNlaW4uIEJpdHRlIGRlaW5zdGFsbGllcmVuIFNpZSBkYXMg4oCeQ2FsZW5kYXLigJwtTW9kdWwuJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0VudHdlZGVyIGlzdCBkaWUgZXZlbnRfaWQgbmljaHQgaW4gZGVyIERhdGVuYmFuayB2b3JoYW5kZW4sIG9kZXIgZXMgZ2lidCBtZWhyZXJlIEVpbnRyw6RnZSBtaXQgZGllc2VyIElEISAoJWQpJzsKJGxhbmdbJ2ZpcnN0X3BhZ2UnXSA9ICfCqyc7CiRsYW5nWydwcmV2X3BhZ2UnXSA9ICfigLknOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAn4oC6JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJ8K7JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdTZWl0ZSAlZCB2b24gJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdLYWxlbmRlci1TdWNoZXJnZWJuaXNzZSc7CiRsYW5nWydzZWFyY2hfd29yZHMnXSA9ICdTdWNoYmVncmlmZmUnOwokbGFuZ1snbm9fcmVzdWx0c19mb3VuZCddID0gJ0VzIHd1cmRlbiBrZWluZSBFcmdlYm5pc3NlIHp1bSBhbmdlZ2ViZW5lbiBTdWNoYmVncmlmZiBnZWZ1bmRlbic7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdXaWVkZXJob2x1bmcnOwokbGFuZ1snc3BlY2lmaWVkX2RhdGUnXSA9ICdFaW4gYmVzdGltbXRlcyBEYXR1bSBiZW51dHplbic7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdFcnN0ZXIgU29ubnRhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0Vyc3RlciBNb250YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnRXJzdGVyIERpZW5zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRXJzdGVyIE1pdHR3b2NoIGRlcyBNb25hdHMnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdFcnN0ZXIgRG9ubmVyc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ0Vyc3RlciBGcmVpdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZmlyc3Rfc2F0dXJkYXknXSA9ICdFcnN0ZXIgU2Ftc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdad2VpdGVyIFNvbm50YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfbW9uZGF5J10gPSAnWndlaXRlciBNb250YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ1p3ZWl0ZXIgRGllbnN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnWndlaXRlciBNaXR0d29jaCBkZXMgTW9uYXRzJzsKJGxhbmdbJ3NlY29uZF90aHVyc2RheSddID0gJ1p3ZWl0ZXIgRG9ubmVyc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdad2VpdGVyIEZyZWl0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdad2VpdGVyIFNhbXN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdEcml0dGVyIFNvbm50YWcgZGVzIE1vbmF0cyc7CiRsYW5nWyd0aGlyZF9tb25kYXknXSA9ICdEcml0dGVyIE1vbnRhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ3RoaXJkX3R1ZXNkYXknXSA9ICdEcml0dGVyIERpZW5zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnRHJpdHRlciBNaXR0d29jaCBkZXMgTW9uYXRzJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnRHJpdHRlciBEb25uZXJzdGFnIGRlcyBNb25hdHMnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnRHJpdHRlciBGcmVpdGFnIGRlcyBNb25hdHMnOwokbGFuZ1sndGhpcmRfc2F0dXJkYXknXSA9ICdEcml0dGVyIFNhbXN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnVmllcnRlciBTb25udGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ1ZpZXJ0ZXIgTW9udGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdWaWVydGVyIERpZW5zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ1ZpZXJ0ZXIgTWl0dHdvY2ggZGVzIE1vbmF0cyc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdWaWVydGVyIERvbm5lcnN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnVmllcnRlciBGcmVpdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX3NhdHVyZGF5J10gPSAnVmllcnRlciBTYW1zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMZXR6dGVyIFNvbm50YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydsYXN0X21vbmRheSddID0gJ0xldHp0ZXIgTW9udGFnIGRlcyBNb25hdHMnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGV0enRlciBEaWVuc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2xhc3Rfd2VkbmVzZGF5J10gPSAnTGV0enRlciBNaXR0d29jaCBkZXMgTW9uYXRzJzsKJGxhbmdbJ2xhc3RfdGh1cnNkYXknXSA9ICdMZXR6dGVyIERvbm5lcnN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydsYXN0X2ZyaWRheSddID0gJ0xldHp0ZXIgRnJlaXRhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdMZXR6dGVyIFNhbXN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX3JlY3VyX21vbnRobHlfZnJlcSddID0gJ1VuZ8O8bHRpZ2UgV2llZGVyaG9sdW5nIOKAkyBlaW4gYmVzdGltbXRlcyBEYXR1bSBrYW5uIG5pY2h0IHp1c2FtbWVuIG1pdCBhbmRlcmVuIFdlcnRlbiBhbmdlZ2ViZW4gd2VyZGVuJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdFaW5lIFN1Y2hlcmdlYm5pc3ZvcmxhZ2UgaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3NlYXJjaHJlc3VsdF90ZW1wbGF0ZV90YWInXSA9ICdFaW5lIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZGVyIFN1Y2hlcmdlYm5pc3NlIHZlcmbDvGdiYXIgc2luZCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNocmVzdWx0X3RlbXBsYXRlJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFZvcmxhZ2UgZsO8ciBTdWNoZXJnZWJuaXMnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnVm9ybGFnZW4gZsO8ciBTdWNoZXJnZWJuaXNzZSc7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdEYXRlbmJhbmthYmZyYWdlIGZlaGxnZXNjaGxhZ2VuJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnVW5nw7xsdGlnZSBTdWNoZGF0ZW4gYW5nZWdlYmVuJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1N1Y2hlJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdWb3JlaW5nZXN0ZWxsdGUgU3VjaGZvcm11bGFydm9ybGFnZSc7CiRsYW5nWydzZWFyY2h0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnRWluIFN1Y2hmb3JtdWxhcnZvcmxhZ2UgaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZSBkZXIgVm9ybGFnZW4sIGRpZSBmw7xyIGRpZSBBbnplaWdlIGRlcyBTdWNoZm9ybXVsYXJzIHZlcmbDvGdiYXIgc2luZCc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnU3VjaGZvcm11bGFydm9ybGFnZW4nOwokbGFuZ1snbWF4J10gPSAnbWF4aW1hbCc7CiRsYW5nWyd0aW1lcyddID0gJ01hbCc7CiRsYW5nWydvbiddID0gJ2FuJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnV29sbGVuIFNpZSBkYXMgd2lya2xpY2ggdHVuPyBJbiBkaWVzZW0gRmFsbCB3ZXJkZW4gYWxsZSBtaXQgZGllc2VtIE1vZHVsIHZlcmJ1bmRlbmVuIERhdGVuIGRhdWVyaGFmdCBnZWzDtnNjaHQuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnRGFzIEthbGVuZGVyLU1vZHVsIHd1cmRlIGRlaW5zdGFsbGllcnQuIFPDpG10bGljaGUsIGluIGRlbSBNb2R1bCB2b3JoYW5kZW5lbiBFcmVpZ25pc3NlIHVuZCBUZW1wbGF0ZXMgd3VyZGVuIGVudGZlcm50Lic7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdGZWxkIGFrdHVhbGlzaWVydCc7CiRsYW5nWydldmVyeSddID0gJ0plZGVuJzsKJGxhbmdbJ29yJ10gPSAnb2Rlcic7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdVbnRlcmdlb3JkbmV0ZSBFcmVpZ25pc3NlIGFrdHVhbGlzaWVyZW4nOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ1NpZSBtw7xzc2VuIG1pbmRlc3RlbnMgZWluZSBLYXRlZ29yaWUgYXVzd8OkaGxlbic7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdFcyB3dXJkZSBuaWNodHMgenVtIEzDtnNjaGVuIGF1c2dld8OkaGx0JzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0RpZSB2b3JnZWdlYmVuZW4gUGFyYW1ldGVyIGbDvHIgZGFzIEVyZWlnbmlzIGhhdCBlaW5lIMOcYmVyc2NobmVpZHVuZyB2b24gRXJlaWduaXNzZW4genVyIEZvbGdlLic7CiRsYW5nWydyZWN1cnMnXSA9ICdXaWVkZXJrZWhyZW5kJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdFaW4gb2RlciBtZWhyZXJlIGRlciBlaW5nZWdlYmVuZW4gRGF0ZW4gc2luZCB1bmfDvGx0aWcnOwokbGFuZ1snc3VuZGF5J10gPSAnU29ubnRhZyc7CiRsYW5nWydtb25kYXknXSA9ICdNb250YWcnOwokbGFuZ1sndHVlc2RheSddID0gJ0RpZW5zdGFnJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ01pdHR3b2NoJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnRG9ubmVyc3RhZyc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmVpdGFnJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU29ubmFiZW5kJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnU28nOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdEaSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ01pJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdEbyc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrJ10gPSAnV29jaGUnOwokbGFuZ1snbW9udGgnXSA9ICdNb25hdCc7CiRsYW5nWydkYXknXSA9ICdUYWcnOwokbGFuZ1sndG9kYXknXSA9ICdIZXV0ZSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dvY2hlbnRhZ2UnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnVGFnZSc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnV29jaGVuJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTW9uYXRlJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdKYWhyZSc7CiRsYW5nWydubyddID0gJ05laW4nOwokbGFuZ1snZGFpbHknXSA9ICdUw6RnbGljaCc7CiRsYW5nWyd3ZWVrbHknXSA9ICdXw7ZjaGVudGxpY2gnOwokbGFuZ1snbW9udGhseSddID0gJ01vbmF0bGljaCc7CiRsYW5nWyd5ZWFybHknXSA9ICdKw6RocmxpY2gnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdXaWVkZXJob2x1bmcnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdEZXRhaWxzIHp1IHdpZWRlcmtlaHJlbmRlbiBUZXJtaW5lbic7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdVbmJlc2NocsOkbmt0JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIHVudGVyZ2VvcmRuZXRlbiBUZXJtaW5lbic7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ03DtmNodGVuIFNpZSBlaW4gYWJ3ZWljaGVuZGVzIEVuZGRhdHVtIGVpbmdlYmVuPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBYmJyZWNoZW4nOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdVbnRlcmdlb3JkbmV0ZSBUZXJtaW5lIGFuemVpZ2VuIDxlbT4oZGFzIEVyZ2VibmlzIGthbm4gZWluZSBzZWhyIGxhbmdlIExpc3RlIHNlaW4pPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAna2VpbmUgQW5nYWJlJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ1dpZWRlcmtlaHJlbmQgYmlzJzsKJGxhbmdbJ3BhcmVudCddID0gJ8OcYmVyZ2VvcmRuZXQnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnSMOkdWZpZ2tlaXQnOwokbGFuZ1snZmlsdGVyJ10gPSAnQW56ZWlnZSBmaWx0ZXJuJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdCZWdpbm4nOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFbmRlJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZGVyIExpc3RlIGbDvHIgenVrw7xuZnRpZ2UgVGVybWluZSB2ZXJmw7xnYmFyIHNpbmQnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUgVm9ybGFnZSBmw7xyIGRpZSBBbnplaWdlIGVpbmVyIExpc3RlIG1pdCB6dWvDvG5mdGlnZW4gVGVybWluZW4gaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU3RhbmRhcmR2b3JsYWdlIGbDvHIgenVrw7xuZnRpZ2UgRXJlaWduaXNzZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnRGllIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZGVyIExpc3RlIGbDvHIgRXJlaWduaXNzZSB2ZXJmw7xnYmFyIHNpbmQnOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdFaW5lIFZvcmxhZ2UgZsO8ciBkaWUgQW56ZWlnZSB2b24gTGlzdGVuIGhpbnp1ZsO8Z2VuL2JlYXJiZWl0ZW4nOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdTdGFuZGFyZC1MaXN0ZW52b3JsYWdlJzsKJGxhbmdbJ2luZm9fZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGUgZGVyIFZvcmxhZ2VuLCBkaWUgZsO8ciBkaWUgQW56ZWlnZSBkZXIgVGVybWluZW4gYmVyZWl0IHN0ZWhlbic7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdFaW5lIFZvcmxhZ2UgZsO8ciBkaWUgQW56ZWlnZSB2b24gVGVybWluZW4gaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTdGFuZGFyZC1FcmVpZ25pc3ZvcmxhZ2UnOwokbGFuZ1snaW5mb19zeXNkZmx0X2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1Byb3RvdHlwIGRlciDigJ5mdWxsQ2FsZW5kYXLigJwtVm9ybGFnZSc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0RpZSBMaXN0ZSBkZXIgVm9ybGFnZW4sIGRpZSBmw7xyIGRpZSBBbnplaWdlIGRlcyBLYWxlbmRlcnMgYmVyZWl0IHN0ZWhlbic7CiRsYW5nWydpbmZvX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdEaWUgTGlzdGUgZGVyIFZvcmxhZ2VuLCBkaWUgZsO8ciBkaWUg4oCeZnVsbENhbGVuZGFy4oCcLUFuc2ljaHQgdmVyZsO8Z2JhciBzaW5kLic7CiRsYW5nWydmdWxsY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnZnVsbENhbGVuZGFyLVZvcmxhZ2UgaGluenVmw7xnZW4gb2RlciBiZWFyYmVpdGVuJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUgVm9ybGFnZSBmw7xyIGRpZSBBbnplaWdlIGVpbmVzIEthbGVuZGVycyBoaW56dWbDvGdlbi9iZWFyYmVpdGVuJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N0YW5kYXJkLUthbGVuZGVydm9ybGFnZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdJbiBkaWVzZW0gRm9ybXVsYXIga8O2bm5lbiBWb3JsYWdlbiBmZXN0Z2VsZWd0IHdlcmRlbiwgZGllIGRhbm4gZWluZ2Vmw7xndCB3ZXJkZW4sIHdlbm4gU2llIGluIGRlciBqZXdlaWxpZ2VuIFJlZ2lzdGVya2FydGUgYXVmIOKAnk5ldWUgVm9ybGFnZeKAnCBrbGlja2VuLiBIaWVyIHZvcmdlbm9tbWVuZSDDhG5kZXJ1bmdlbiBoYWJlbiBrZWluZSBkaXJla3RlIEF1c3dpcmt1bmdlbiBhdWYgZGllIEF1c2dhYmUgZGllc2VzIE1vZHVscy4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdBdXNmw7xocmVuLCBuYWNoZGVtIGVpbiBUZXJtaW4gaGluenVmw7xndCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdBdXNmw7xocmVuLCBuYWNoZGVtIGVpbiBUZXJtaW4gYmVhcmJlaXRldCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQXVzZsO8aHJlbiwgbmFjaGRlbSBlaW4gVGVybWluIGdlbMO2c2NodCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0F1c2bDvGhyZW4sIG5hY2hkZW0gZWluZSBLYXRlZ29yaWUgaGluenVnZWbDvGd0IHd1cmRlJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0F1c2bDvGhyZW4sIG5hY2hkZW0gZWluZSBLYXRlZ29yaWUgYmVhcmJlaXRldCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQXVzZsO8aHJlbiwgbmFjaGRlbSBlaW5lIEthdGVnb3JpZSBnZWzDtnNjaHQgd3VyZGUnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5BdXNmw7xocmVuLCB3ZW5uIGVpbiBUZXJtaW4gaGluenVnZWbDvGd0IHd1cmRlLjwvcD4NCjx0YWJsZT4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD5QYXJhbWV0ZXI8L3RoPg0KCQkJPHRkPkJlc2NocmVpYnVuZzwvdGQ+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQo8dHI+DQo8dGg+ZXZlbnRfdGl0bGU8L3RoPg0KPHRkPk5hbWUgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9zdW1tYXJ5PC90aD4NCjx0ZD5adXNhbW1lbmZhc3N1bmcgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9kZXRhaWxzPC90aD4NCjx0ZD5EZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfZGF0ZV9zdGFydDwvdGg+DQo8dGQ+U3RhcnRkYXR1bS8temVpdCBkZXMgVGVybWluczwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmV2ZW50X2RhdGVfZW5kPC90aD4NCjx0ZD5FbmRkYXR1bS8temVpdCBkZXMgVGVybWluczwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmV2ZW50X2NyZWF0ZWRfYnk8L3RoPg0KPHRkPkJlbnV0emVyLUlEIGRlcyBBdXRvcnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9pZDwvdGg+DQo8dGQ+SUQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5BdXNmw7xocmVuLCB3ZW5uIGVpbiBUZXJtaW4gYmVhcmJlaXRldCB3dXJkZS48L3A+DQo8dGFibGU+DQoJPHRoZWFkPg0KCQk8dHI+DQoJCQk8dGg+UGFyYW1ldGVyPC90aD4NCgkJCTx0ZD5CZXNjaHJlaWJ1bmc8L3RkPg0KCQk8L3RyPg0KCTwvdGhlYWQ+DQoJPHRib2R5Pg0KPHRyPg0KPHRoPmV2ZW50X3RpdGxlPC90aD4NCjx0ZD5OYW1lIGRlcyBUZXJtaW5zPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfc3VtbWFyeTwvdGg+DQo8dGQ+WnVzYW1tZW5mYXNzdW5nIGRlcyBUZXJtaW5zPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfZGV0YWlsczwvdGg+DQo8dGQ+RGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZzwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmV2ZW50X2RhdGVfc3RhcnQ8L3RoPg0KPHRkPlN0YXJ0ZGF0dW0vLXplaXQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9kYXRlX2VuZDwvdGg+DQo8dGQ+RW5kZGF0dW0vLXplaXQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9jcmVhdGVkX2J5PC90aD4NCjx0ZD5CZW51dHplci1JRCBkZXMgQXV0b3JzPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfaWQ8L3RoPg0KPHRkPklEIGRlcyBUZXJtaW5zPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPkF1c2bDvGhyZW4sIHdlbm4gZWluIFRlcm1pbiBnZWzDtnNjaHQgd3VyZGUuPC9wPg0KPHRhYmxlPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPlBhcmFtZXRlcjwvdGg+DQoJCQk8dGQ+QmVzY2hyZWlidW5nPC90ZD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCjx0cj4NCjx0aD5ldmVudF9pZDwvdGg+DQo8dGQ+SUQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPkF1c2bDvGhyZW4sIHdlbm4gZWluZSBLYWxlbmRlci1LYXRlZ29yaWUgaGluenVnZWbDvGd0IHd1cmRlLjwvcD4NCjx0YWJsZT4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD5QYXJhbWV0ZXI8L3RoPg0KCQkJPHRkPkJlc2NocmVpYnVuZzwvdGQ+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQo8dHI+DQo8dGg+Y2F0ZWdvcnlfaWQ8L3RoPg0KPHRkPklEIGRlciBLYXRlZ29yaWU8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5BdXNmw7xocmVuLCB3ZW5uIGVpbmUgS2FsZW5kZXItS2F0ZWdvcmllIGJlYXJiZWl0ZXQgd3VyZGUuPC9wPg0KPHRhYmxlPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPlBhcmFtZXRlcjwvdGg+DQoJCQk8dGQ+QmVzY2hyZWlidW5nPC90ZD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCjx0cj4NCjx0aD5jYXRlZ29yeV9pZDwvdGg+DQo8dGQ+SUQgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X25hbWU8L3RoPg0KPHRkPk5hbWUgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X29yZGVyPC90aD4NCjx0ZD5Tb3J0aWVydW5nIGRlciBLYXRlZ29yaWU8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+QXVzZsO8aHJlbiwgd2VubiBlaW5lIEthbGVuZGVyLUthdGVnb3JpZSBnZWzDtnNjaHQgd3VyZGUuPC9wPg0KPHRhYmxlPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPlBhcmFtZXRlcjwvdGg+DQoJCQk8dGQ+QmVzY2hyZWlidW5nPC90ZD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCjx0cj4NCjx0aD5jYXRlZ29yeV9pZDwvdGg+DQo8dGQ+SUQgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X25hbWU8L3RoPg0KPHRkPk5hbWUgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X29yZGVyPC90aD4NCjx0ZD5Tb3J0aWVydW5nIGRlciBLYXRlZ29yaWU8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRmVobGVyIGJlaW0gSW1wb3J0aWVyZW4gZWluZXMgVGVybWlucyBpbiBkZXIgQ1NWLURhdGVpIGluIFplaWxlICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnRGFzIFBmbGljaHRmZWxkICVzIGtvbm50ZSBpbiBkZXIgS29wZnplaWxlIGRlciBDU1YgbmljaHQgZ2VmdW5kZW4gd2VyZGVuJzsKJGxhbmdbJ2Vycm9yX2NzdmludmFsaWRmaXJzdGxpbmUnXSA9ICdJbiBkZXIgQ1NWLURhdGVpIGtvbm50ZSBrZWluZSBnw7xsdGlnZSBlcnN0ZSBaZWlsZSBnZWZ1bmRlbiB3ZXJkZW4nOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdUZXJtaW4gaGluenVnZWbDvGd0JzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnU2llIG3DvHNzZW4gZWluZW4gTmFtZW4gZsO8ciBkZW4gVGVybWluIGVpbmdlYmVuJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRkVITEVSOiBFcyB3dXJkZSBrZWluZSBob2NoZ2VsYWRlbmUgRGF0ZWkgZ2VmdW5kZW4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRkVITEVSOiBEaWUgaG9jaGdlbGFkZW5lIERhdGVpIGthbm4gbmljaHQgYWt6ZXB0aWVydCB3ZXJkZW4nOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdGRUhMRVI6IEJlaW0gSG9jaGxhZGVuIGRlciBEYXRlaSBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbic7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0ZFSExFUjogQmVpbSBLb3BpZXJlbiBkZXIgRGF0ZWkgYW4gZGVuIFppZWxvcnQgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW4nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZFSExFUjogRWluZSBEYXRlaSBtaXQgZGllc2VtIE5hbWVuIGV4aXN0aWVydCBiZXJlaXRzJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0ZFSExFUjogS29ubnRlIGRpZSBDU1YtRGF0ZWkgbmljaHQgZmluZGVuJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0ZFSExFUjogS29ubnRlIGRpZSBEYXRlaSBuaWNodCDDtmZmbmVuJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRkVITEVSOiBFaW5lIEthdGVnb3JpZSBtaXQgZGVtIE5hbWVuICVzIGV4aXN0aWVydCBiZXJlaXRzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9mdWxsY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdmdWxsQ2FsZW5kYXItVm9ybGFnZW4nOwokbGFuZ1snY2FsX2NhbGVuZGFyJ10gPSAnS2FsZW5kZXIgKOKAnkNHQ2FsZW5kYXLigJwpJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYXJkdm9ybGFnZW4nOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnRWluIGZsZXhpYmxlcyBNb2R1bCwgdW0gSW5mb3JtYXRpb25lbiDDvGJlciBUZXJtaW5lIGluIHZlcnNjaGllZGVuZW4gRm9ybWF0ZW4gYW56dXplaWdlbi4nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnVGVybWluIGhpbnp1ZsO8Z2VuJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnVGVybWluZSBpbXBvcnRpZXJlbic7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAnVGVybWluZSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZW4nOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnS2FsZW5kZXJ2b3JsYWdlJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnTGlzdGVudm9ybGFnZSc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVm9ybGFnZSBmw7xyIGJldm9yc3RlaGVuZGUgVGVybWluZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdUZXJtaW52b3JsYWdlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1snY2FsX3ByZXYnXSA9ICfigLkgenVyw7xjayc7CiRsYW5nWydjYWxfbmV4dCddID0gJ3dlaXRlciDigLonOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0thdGVnb3JpZW4gYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnRWluc3RlbGx1bmdlbiBha3R1YWxpc2llcnQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ1Rlcm1pbiBoaW56dWbDvGdlbic7CiRsYW5nWydjYWxfZWRpdCddID0gJ0JlYXJiZWl0ZW4nOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0zDtnNjaGVuJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnV29sbGVuIFNpZSBkaWVzIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnVm9ybGFnZSBha3R1YWxpc2llcmVuJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdTb25udGFnJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdNb250YWcnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdEaWVuc3RhZyc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnTWl0dHdvY2gnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnRG9ubmVyc3RhZyc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnRnJlaXRhZyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTYW1zdGFnJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdTbyc7CiRsYW5nWydjYWxfbW9uJ10gPSAnTW8nOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICdEaSc7CiRsYW5nWydjYWxfd2VkJ10gPSAnTWknOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnRG8nOwokbGFuZ1snY2FsX2ZyaSddID0gJ0ZyJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYSc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phbnVhcic7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJydWFyJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ03DpHJ6JzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYWknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5pJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVsaSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPa3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0RlemVtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdIaW56dWbDvGdlbic7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnQWt0dWFsaXNpZXJlbic7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdUZXJtaW4nOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1p1c2FtbWVuZmFzc3VuZyc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFpbHMnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtZWhyJzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdadXLDvGNrJzsKJGxhbmdbJ2NhbF90byddID0gJ2Jpcyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdWZXJnYW5nZW5lIFRlcm1pbmUnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0Jldm9yc3RlaGVuZGUgVGVybWluZSc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnSXJnZW5kZWluZXIgS2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTnVyIFRlcm1pbmUgYW56ZWlnZW4gYXVzJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdUaXRlbCBmaWx0ZXJuIG1pdCA8ZW0+KHJlZ2V4KTwvZW0+JzsKJGxhbmdbJ2NhbF9nbyddID0gJ0ZpbHRlcm4nOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0ZWwnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnQW5mYW5nc2RhdHVtJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdFbmRkYXR1bSc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWVuIGFrdHVhbGlzaWVyZW4nOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnU3ByYWNoZSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIGFrdHVhbGlzaWVyZW4nOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0luIGRlbiBMaXN0ZW5tZW7DvGZlbGRlcm4gZGllIDEyLVN0dW5kZW4tQW56ZWlnZSB2ZXJ3ZW5kZW4/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnU3RhbmRhcmRrYXRlZ29yaWUnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdGZWxkZXIgYWt0dWFsaXNpZXJlbic7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0bDvHIgZGVuIFRlcm1pbiBtdXNzIG1pbmRlc3RlbnMgZWluZSBLYXRlZ29yaWUgZmVzdGdlbGVndCB3ZXJkZW4nOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ1dpZXZpZWxlIEphaHJlIGluIGRpZSBWZXJnYW5nZW5oZWl0IHNvbGxlbiBhbmdlemVpZ3Qgd2VyZGVuJzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ1dpZXZpZWxlIEphaHJlIGluIGRpZSBadWt1bmZ0IHNvbGxlbiBhbmdlemVpZ3Qgd2VyZGVuJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnRGllIEFuemVpZ2UgZGVzIFp1c2FtbWVuZmFzc3VuZ3NmZWxkZXMgZGVha3RpdmVyZW4gKG51ciBpbiBkZXIgQWRtaW5pc3RyYXRpb24pJzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnRGllIEFuemVpZ2UgZGVzIERldGFpbGZlbGRlcyBkZWFrdGl2ZXJlbiAobnVyIGluIGRlciBBZG1pbmlzdHJhdGlvbiknOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdCaXR0ZSBsZWdlbiBTaWUgZWluZSBvZGVyIG1laHJlcmUgS2F0ZWdvcmllbiBmw7xyIGRpZXNlbiBUZXJtaW4gZmVzdC4nOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0NTUy1CZWlzcGllbCBmw7xyIGRlbiBLYWxlbmRlcic7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnU2llIGJlbsO2dGlnZW4gZGllIEJlcmVjaHRpZ3VuZyAlcywgdW0gZGllc2UgRnVua3Rpb24gbnV0emVuIHp1IGvDtm5uZW4uJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdTdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgZGllIEJlbnV0emVyLCBkaWUgZGllIFRlcm1pbmUgaW0gS2FsZW5kZXIgdmVyd2FsdGVuLCBkaWUgQmVyZWNodGlndW5nIOKAnk1vZGlmeSBDYWxlbmRhcuKAnCBoYWJlbi4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnTWFya2llcnRlIFRlcm1pbmUgbMO2c2NoZW4nOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ1dvbGxlbiBTaWUgZGllc2UgVGVybWluZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0RpZSBtYXJraWVydGVuIFRlcm1pbmUgd3VyZGVuIGdlbMO2c2NodCc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdWb3JsYWdlbic7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnVm9ybGFnZW5oaWxmZSc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0RhdGVpdm9ybGFnZW4nOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdWb3JsYWdlIGhpbnp1ZsO8Z2VuJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVm9ybGFnZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAnVm9ybGFnZW5uYW1lJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1ZvcmxhZ2UgYmVhcmJlaXRlbic7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1ZvcmxhZ2UgbMO2c2NoZW4nOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOZXVlciBWb3JsYWdlbm5hbWUnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRmVobGVyOiBFaW5lIFZvcmxhZ2UgbWl0IGRpZXNlbSBOYW1lbiBleGlzdGllcnQgYmVyZWl0cy4gQml0dGUgd8OkaGxlbiBTaWUgZWluZW4gYW5kZXJlbiBOYW1lbi4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0RpZSBWb3JsYWdlIHd1cmRlIGVyZm9sZ3JlaWNoIGluIGRpZSBEYXRlbmJhbmsgaW1wb3J0aWVydCB1bmQgc3RlaHQgbnVuIHp1ciB3ZWl0ZXJlbiBWZXJ3ZW5kdW5nIGJlcmVpdC4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdTdGFuZGFyZC1TdHlsZXNoZWV0IGFuemVpZ2VuJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRGF0ZWluYW1lJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnVm9ybGFnZSBpbXBvcnRpZXJlbic7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnRGllIFZvcmxhZ2Ugd3VyZGUgYXVzIGRlciBEYXRlbmJhbmsgZ2Vsw7ZzY2h0Lic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdEaWUgVm9ybGFnZSB3dXJkZSBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0JlaW0gQWt0dWFsaXNpZXJlbiBkZXIgVm9ybGFnZSBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbi4nOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIHd1cmRlbiBlcmZvbGdyZWljaCBnZXNwZWljaGVydC4nOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnS2F0ZWdvcmllIGdlbMO2c2NodCc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdLYXRlZ29yaWUgYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdLYXRlZ29yaWUgaGluenVnZWbDvGd0JzsKJGxhbmdbJ2V2ZW50ZGVsZXRlZCddID0gJ0RlciBUZXJtaW4gd3VyZGUgZ2Vsw7ZzY2h0Lic7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdEZXIgVGVybWluIHd1cmRlIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnRkVITEVSOiBVbSBkYXMgS2FsZW5kZXItTW9kdWwgbWl0IGRlciBGdW5rdGlvbiDigJ5QcmV0dHkgVVJM4oCcIG51dHplbiB6dSBrw7ZubmVuLCBtdXNzIGVpbmUgU3RhbmRhcmRzZWl0ZSBmZXN0Z2VsZWd0IHdlcmRlbi4gR2VoZW4gU2llIGRhZsO8ciBpbiBkaWUgUmVnaXN0ZXJrYXJ0ZSDigJ5FaW5zdGVsbHVuZ2Vu4oCcIHVuZCB3w6RobGVuIGRvcnQgZWluZSBTZWl0ZSBhdXMuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdhbSc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ29yZGVyJ10gPSAnU29ydGllcnVuZyc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnRGFzIEZlbGQgd3VyZGUgZXJmb2xncmVpY2ggaGluenVnZWbDvGd0JzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0RhcyBGZWxkIHd1cmRlIGdlbMO2c2NodCc7CiRsYW5nWydmaWVsZHMnXSA9ICdCZW51dHplcmRlZmluaWVydGUgRmVsZGVyJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1RleHRmZWxkJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnRmVsZCB6dW0gSG9jaGxhZGVuIHZvbiBEYXRlaSc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPk1pdCBkZW0gS2FsZW5kZXItTW9kdWwga8O2bm5lbiBUZXJtaW5lbiBhdWYgSWhyZXIgV2Vic2VpdGUgYW5nZXplaWd0IHdlcmRlbi4gTmFjaCBkZXIgSW5zdGFsbGF0aW9uIGvDtm5uZW4gU2llIGluIGRlciBBZG1pbmlzdHJhdGlvbiDDvGJlciBkYXMgTWVuw7wg4oCeSW5oYWx0ZSA+IEthbGVuZGVy4oCcIElocmUgVGVybWluZS9FcmVpZ25pc3NlIHZlcndhbHRlbi48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdTdGFuZGFyZHNlaXRlLCBhdWYgZGVyIGRhcyBLYWxlbmRlci1Nb2R1bCBhbmdlemVpZ3Qgd2lyZC4gKERpZXNlIFNlaXRlIG11c3MgZGVuIFNtYXJ0eS1UYWcgenVtIEF1ZnJ1ZiBkZXMgS2FsZW5kZXItTW9kdWxzIGVudGhhbHRlbi4gV2VubiBTaWUgZGllIEZ1bmt0aW9uIOKAnlByZXR0eSBVUkzigJwgbnV0emVuIHdvbGxlbiwgaXN0IGRpZXNlIEVpbnN0ZWxsdW5nIHp3aW5nZW5kIGVyZm9yZGVybGljaC4pJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ1ZlcnplaWNobmlzLCBpbiBkZW0gZGllIGhvY2hnZWxhZGVuZW4gRGF0ZWllbiBhYmdlbGVndCB3ZXJkZW4gc29sbGVuJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ0VybGF1YnRlIERhdGVpdHlwZW4nOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnQXVmIGVpbmRldXRpZ2UgRGF0ZWluYW1lbiBhY2h0ZW4nOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1dpZWRlcmhvbGVuJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ1dpZWRlcmhvbGVuIGJpcyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PHN0cm9uZz5OYW1lIGRlcyBBdXRvcnMgYXVzZ2ViZW46PC9zdHJvbmc+PC9wPg0KPGNvZGU+QXV0b3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/el_GR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ86XzrzOtc+Bzr/Ou8+MzrPOuc6/JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ86gz4HOv8+DzrjOrs66zrcsIM6Vz4DOtc6+zrXPgc6zzrHPg86vzrEsIM66zrHOuSDOus6xz4TOrM+BzrPOt8+DzrcgzrTPgc6sz4POtc+Jzr0nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnzqDPgc6/z4POuM6uzrrOtyDOtM+BzqzPg863z4InOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ86Uz4HOrM+DzrXOuc+CJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnzprOsc+EzrfOs86/z4HOr861z4InOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnzqDPgc+Mz4TPhc+Azr8gzrfOvM61z4HOv867zr/Os86vzr/PhSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ86gz4HPjM+Ez4XPgM6/IM66zrHPhM6xzrvPjM6zzr/PhSc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnzqDPgc+Mz4TPhc+Azr8gzrXPgM61z4HPh86/zrzOrc69z4nOvSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICfOoM+Bz4zPhM+Fz4DOvyDOtM+BzqzPg863z4InOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnzqHPhc64zrzOr8+DzrXOuc+CJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnwqsgzqDPgc6/zrfOs86/z43OvM61zr3Ovyc7CiRsYW5nWydjYWxfbmV4dCddID0gJ86Vz4DPjM68zrXOvc6/IMK7JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICfOn865IM66zrHPhM63zrPOv8+Bzq/Otc+CIM61zr3Ot868zrXPgc+OzrjOt866zrHOvSc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ86fzrkgz4HPhc64zrzOr8+DzrXOuc+CIM61zr3Ot868zrXPgc+OzrjOt866zrHOvSc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnzqDPgc6/z4POuM6uzrrOtyDOtM+BzqzPg863z4InOwokbGFuZ1snY2FsX2VkaXQnXSA9ICfOlc+AzrXOvs61z4HOs86xz4POr86xJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICfOlM65zrHOs8+BzrHPhs6uJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnzpXPgM65zrLOtc6yzrHOr8+Jz4POtyDOtM65zrHOs8+BzrHPhs6uz4InOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDPgM+Bzr/PhM+Nz4DOv8+FJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICfOms+Fz4HOuc6xzrrOric7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnzpTOtc+Fz4TOrc+BzrEnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICfOpM+Bzq/PhM63JzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICfOpM61z4TOrM+Bz4TOtyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICfOoM6tzrzPgM+EzrcnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ86gzrHPgc6xz4POus61z4XOric7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICfOo86szrLOss6xz4TOvyc7CiRsYW5nWydjYWxfc3VuJ10gPSAnzprPhc+BzrnOsc66zq4nOwokbGFuZ1snY2FsX21vbiddID0gJ86UzrUnOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICfOpM+BJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICfOpM61JzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ86gzrUnOwokbGFuZ1snY2FsX2ZyaSddID0gJ86gzrEnOwokbGFuZ1snY2FsX3NhdCddID0gJ86jzrEnOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICfOmc6xzr3Ov8+FzqzPgc65zr/Pgic7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICfOps61zrLPgc6/z4XOrM+BzrnOv8+CJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ86czqzPgc+EzrnOv8+CJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ86Rz4DPgc6vzrvOuc6/z4InOwokbGFuZ1snY2FsX21heSddID0gJ86czqzPis6/z4InOwokbGFuZ1snY2FsX2p1bmUnXSA9ICfOmc6/z43Ovc65zr/Pgic7CiRsYW5nWydjYWxfanVseSddID0gJ86Zzr/Pjc67zrnOv8+CJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICfOkc+NzrPOv8+Fz4PPhM6/z4InOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ86jzrXPgM+Ezq3OvM6yz4HOuc6/z4InOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICfOn866z4TPjs6yz4HOuc6/z4InOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnzp3Ov86tzrzOss+BzrnOv8+CJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ86UzrXOus6tzrzOss+BzrnOv8+CJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnzpfOvM61z4HOv868zrfOvc6vzrEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICfOo8+Nzr3Ov8+IzrcnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICfOm861z4DPhM6/zrzOrc+BzrXOuc61z4InOwokbGFuZ1snY2FsX21vcmUnXSA9ICfPgM61z4HOuc+Dz4PPjM+EzrXPgc6xID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICfOlc+AzrnPg8+Ez4HOv8+Gzq4nOwokbGFuZ1snY2FsX3RvJ10gPSAnz4POtSc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnzpXPgM61z4HPh8+MzrzOtc69zrXPgiDOtM+BzqzPg861zrnPgic7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnzp/PgM6/zrnOsc60zq7PgM6/z4TOtSDOus6xz4TOt86zzr/Pgc6vzrEnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfOlc68z4bOrM69zrnPg863IM+Ez4nOvSDOtM+BzqzPg861z4nOvSDOvM+Mzr3Ov869IM+DzrUnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ86czrUgzrXPhs6xz4HOvM6/zrPOriDPhs6vzrvPhM+Bzr/PhSDOus6xz4TOsSc7CiRsYW5nWydjYWxfZ28nXSA9ICfOnM61z4TOsc+Gzr/Pgc6sIM+DzrUnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnzqTOr8+EzrvOv8+CJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ86Rz4DOvyDPhM63zr0gzrfOvM61z4HOv868zrfOvc6vzrEnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ86jz4TOt869IM63zrzOtc+Bzr/OvM63zr3Or86xJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDOus6xz4TOt86zzr/Pgc65z47OvSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICfOk867z47Pg8+DzrEnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnzpXOvc63zrzOrc+Bz4nPg863IM+Bz4XOuM68zq/Pg861z4nOvSc7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/en_GB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyBTaW1wbGUgTGFuZ3VhZ2UgZmlsZSBmb3IgdGhlIENhbGVuZGFyIG1vZHVsZS4KIyBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUm9iIEFsbGVuIDxyb2JAYWtyYWJhdC5jb20+CgojIExhbmd1YWdlOiBlbl9VUwoKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0FkZCwgZWRpdCBhbmQgcmVtb3ZlIGV2ZW50cyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdBZGQgRXZlbnQnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0V2ZW50cyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnQ2FsZW5kYXIgVGVtcGxhdGUnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdMaXN0IFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdVcGNvbWluZyBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdFdmVudCBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CgokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpZXMgVXBkYXRlZCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldHRpbmdzIFVwZGF0ZWQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0FkZCBFdmVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwZGF0ZSBUZW1wbGF0ZSc7CgokbGFuZ1snY2FsX3N1bmRheSddID0gJ1N1bmRheSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTW9uZGF5JzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnVHVlc2RheSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnV2VkbmVzZGF5JzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ1RodXJzZGF5JzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmlkYXknOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2F0dXJkYXknOwokbGFuZ1snY2FsX3N1biddID0gJ1N1bic7CiRsYW5nWydjYWxfbW9uJ10gPSAnTW9uJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVHVlcyc7CiRsYW5nWydjYWxfd2VkJ10gPSAnV2VkJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1RodXJzJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdGcmknOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhdCc7CgokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW51YXJ5JzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJ1YXJ5JzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ01hcmNoJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYXknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5lJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVseSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0RlY2VtYmVyJzsKCiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1tYXJ5JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWlscyc7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV0dXJuJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdVcGNvbWluZyBFdmVudHMnOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heGltbyc7CiRsYW5nWyd0aW1lcyddID0gJ3RpZW1wb3MnOwokbGFuZ1snb24nXSA9ICdhY3Rpdm8nOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdFc3QmYWFjdXRlOyBzZWd1cm8gZGUgcXVlcmVyIGhhY2VyIGVzdG8/IFNpIGNvbnRpbnVhLCBsYSBpbmZvcm1hY2lvbiBhc29jaWFkYSBjb24gZXN0ZSBtb2R1bG8gIHNlIGJvcnJhciZhYWN1dGU7IHBlcm1hbmVudGVtZW50ZS4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdFbCBtb2R1bG8gQ2FsZW5kYXJpbyBoYSBzaWRvIGRlc2luc3RhbGFkbyB5IHRvZGEgbGEgaW5mb3JtYWNpJm9hY3V0ZTtuIGRlIGV2ZW50b3MgYXNvY2lhZGEgYWwgbSZvYWN1dGU7ZHVsbyBmdWUgcmVtb3ZpZGEgdGFtYmllbi4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnQ2FtcG8gYWN0dWFsaXphZG8nOwokbGFuZ1snZXZlcnknXSA9ICdDYWRhJzsKJGxhbmdbJ29yJ10gPSAnJm9hY3V0ZTsnOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnQWN0dWFsaXphciBFdmVudG9zICZxdW90O0hpam8mcXVvdDsnOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ0RlYmUgc2VsZWNjaW9uYXIgcG9yIGxvIG1lbm9zIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5hZGEgcGFyYSBib3JyYXInOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnTG9zIHBhcmFtZXRyb3MgZGUgcmVwZXRpY2kmb2FjdXRlO24gZXNwZWNpZmljYWRvcyByZXN1bHRhcmFuIGVuIGV2ZW50b3MgdHJhc2xhcGFkb3MuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1NlIHJlcGl0ZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnVW5vIG8gbWFzIGRlIGxvcyB2YWxvcmVzIGRlIGZlY2hhIGluZ3Jlc2Fkb3Mgc29uIGludmFsaWRvcyc7CiRsYW5nWydzdW5kYXknXSA9ICdEb21pbmdvJzsKJGxhbmdbJ21vbmRheSddID0gJ0x1bmVzJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdNYXJ0ZXMnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnTWllcmNvbGVzJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnSnVldmVzJzsKJGxhbmdbJ2ZyaWRheSddID0gJ1ZpZXJuZXMnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdTJmFhY3V0ZTtiYWRvJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnRG8nOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdMdSc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdNYSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ01pJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdKdSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ1ZpJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ0RpYXMgZGUgU2VtYW5hJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RpYXMnOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ1NlbWFuYXMnOwokbGFuZ1sncGx1cmFsX21vbnRobHknXSA9ICdNZXNlcyc7CiRsYW5nWydwbHVyYWxfeWVhcmx5J10gPSAnQSZudGlsZGU7b3MnOwokbGFuZ1snbm8nXSA9ICdObyAnOwokbGFuZ1snZGFpbHknXSA9ICdEaWFyaW8nOwokbGFuZ1snd2Vla2x5J10gPSAnU2VtYW5hbCc7CiRsYW5nWydtb250aGx5J10gPSAnTWVuc3VhbCc7CiRsYW5nWyd5ZWFybHknXSA9ICdBbmFsJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnUmVwZXRpciBjYWRhJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRGV0YWxsZXMgZGUgZXZlbnRvIHJlcGV0aXRpdm8nOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnSWxpbWl0YWRvJzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdOdW1lcm8gbWF4aW1vIGRlIGV2ZW50b3MgJnF1b3Q7aGlqbyZxdW90Oyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ0VzcGVjaWZpY2FyIGZlY2hhIGZpbmFsIGRpc3RpbnRhPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWxhcic7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzJzsKJGxhbmdbJ24vYSddID0gJ24vYSAnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVjdXJyaXIgSGFzdGEnOwokbGFuZ1sncGFyZW50J10gPSAnUGFkcmUnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUGVyaW9kbyBSZWN1cnJpcic7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cm8nOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0ZlY2hhIGRlIEluaWNpbyc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0ZlY2hhIEZpbmFsJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhIGRlIHBsYW50aWxsYXMgZGlzcG9uaWJsZXMgcGFyYSBsYSB2aXN0YSAmcXVvdDt1cGNvbWluZ2xpc3QmcXVvdDsnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgdmlzdGEgJnF1b3Q7dXBjb21pbmdsaXN0JnF1b3Q7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgcG9yIG9taXNpJm9hY3V0ZTtuIFVwY29taW5nbGlzdCc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnRWwgbGlzdGFkbyBkZSBwbGFudGlsbGFzIHF1ZSBlc3RhbiBkaXNwb25pYmxlcyBwYXJhIHZpc3RhIGRlIGxpc3Rhcyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgZGVzcGxpZWd1ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3Igb21pc2kmb2FjdXRlO24gZGUgTGlzdGFkbyc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhZG8gZGUgcGxhbnRpbGxhcyBkaXNwb25pYmxlcyBwYXJhIHZpc3RhcyBkZSBldmVudG9zJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgRGVzcGxpZWd1ZSBkZSBFdmVudG9zJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3Igb21pc2kmb2FjdXRlO24gZGUgRXZlbnRvcyc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhZG8gZGUgcGxhbnRpbGxhcyBkaXNwb25pYmxlcyBwYXJhIHZpc3RhcyBkZSBjYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgRGVzcGxpZWd1ZSBkZSBDYWxlbmRhcmlvJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3Igb21pc2kmb2FjdXRlO24gZGUgQ2FsZW5kYXJpbyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdFc3RlIGZvcm11bGFyaW8gZGVmaW5lIGxhIHBsYW50aWxsYSBxdSBzZXJhIHVzYWRhIGN1YW5kbyBoYWdhcyBjbGljayBlbiAmcXVvdDtOdWV2YSBQbGFudGlsbGEmcXVvdDsgZW4gbGEgcGVzdGEmbnRpbGRlO2EgY29ycmVzcG9uZGllbnRlLiBDYW1iaWFyIGVzdGUgdmFsb3Igbm8gdGVuZHImYWFjdXRlOyBlZmVjdG8gaW5tZWRpYXRvIGVuIGVsIGRpc3BsYXkgZGUgZXN0ZSBtJm9hY3V0ZTtkdWxvLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0xsYW1hZG8gbHVlZ28gZGUgYWdyZWdhciB1biBldmVudG8gYWwgY2FsZW5kYXJpbyc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdMbGFtYWRvIGx1ZWdvIGRlIGVkaXRhciB1biBldmVudG8gZXhpc3RlbnRlIGVuIGVsIGNhbGVuZGFyaW8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0xsYW1hZG8gbHVlZ28gZGUgZWxpbWluYXIgdW4gZXZlbnRvJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnTGxhbWFkbyBsdWVnbyBkZSBjcmVhciB1bmEgY2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdMbGFtYWRvIGx1ZWdvIGRlIGVkaXRhciB1bmEgY2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnTGxhbWFkbyBsdWVnbyBkZSBlbGltaW5hciB1bmEgY2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPkVudmlhZG8gY3VhbmRvIHVuIGV2ZW50byBlcyBhZ3JlZ2FkbyBlbiBlbCBjYWxlbmRhcmlvLjwvcD4NCjxoND5QYXImYWFjdXRlO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIFQmaWFjdXRlO3R1bG8gZGVsIEV2ZW50bzwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gVGV4dG8gZGVsIFJlc3VtZW48L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERlc2NyaXBjaSZvYWN1dGU7biBEZXRhbGxhZGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIExhIGZlY2hhL2hvcmEgZGUgY29taWVuem8gZGVsIGV2ZW50bzwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIExhIGZlY2hhL2hvcmEgZGUgZmluIGRlbCBldmVudG88L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIEVsIGlkIGRlIHVzdWFyaW8gZGVsIGF1dG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gRWwgaWQgZGVsIGV2ZW50bzwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPkVudmlhZG8gY3VhbmRvIHVuIGV2ZW50byBlcyBlZGl0YWRvIGVuIGVsIGNhbGVuZGFyaW8uPC9wPg0KPGg0PlBhciZhYWN1dGU7bWV0cm9zPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gVCZpYWN1dGU7dHVsbyBkZWwgRXZlbnRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBUZXh0byBkZWwgUmVzdW1lbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGVzY3JpcGNpJm9hY3V0ZTtuIERldGFsbGFkYTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gTGEgZmVjaGEvaG9yYSBkZSBjb21pZW56byBkZWwgZXZlbnRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gTGEgZmVjaGEvaG9yYSBkZSBmaW4gZGVsIGV2ZW50bzwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gRWwgaWQgZGUgdXN1YXJpbyBkZWwgYXV0b3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBFbCBpZCBkZWwgZXZlbnRvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPkVudmlhZG8gY3VhbmRvIHVuIGV2ZW50byBlcyBlbGltaW5hZG8gZW4gZWwgY2FsZW5kYXJpby48L3A+DQo8aDQ+UGFyJmFhY3V0ZTttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBFbCBpZCBkZWwgZXZlbnRvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5FbnZpYWRvIGN1YW5kbyB1bmEgY2F0ZWdvciZpYWN1dGU7YSBkZWwgY2FsZW5kYXJpbyBlcyBhZ3JlZ2FkYS48L3A+DQo8aDQ+UGFyJmFhY3V0ZTttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZCBkZSBsYSBDYXRlZ29yJmlhY3V0ZTthPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+RW52aWFkbyBjdWFuZG8gdW5hIGNhdGVnb3ImaWFjdXRlO2EgZGVsIGNhbGVuZGFyaW8gZXMgZWRpdGFkYS48L3A+DQo8aDQ+UGFyJmFhY3V0ZTttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZCBkZSBsYSBjYXRlZ29yJmlhY3V0ZTthPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBOb21icmUgZGUgbGEgY2F0ZWdvciZpYWN1dGU7YTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIEZvcm1hIGRlIG9yZGVuYXIgbGEgY2F0ZWdvciZpYWN1dGU7YTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5FbnZpYWRvIGN1YW5kbyB1bmEgY2F0ZWdvciZpYWN1dGU7YSBkZWwgY2FsZW5kYXJpbyBlcyBlbGltaW5hZGEuPC9wPg0KPGg0PlBhciZhYWN1dGU7bWV0cm9zPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gSWQgZGUgbGEgY2F0ZWdvciZpYWN1dGU7YTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gTm9tYnJlIGRlIGxhIGNhdGVnb3ImaWFjdXRlO2E8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBGb3JtYSBkZSBvcmRlbmFyIGxhIGNhdGVnb3ImaWFjdXRlO2E8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW50byBBZ3JlZ2Fkbyc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0VsIG5vbWJyZSBwYXJhIGVzdGUgZXZlbnRvIGVzIHJlcXVlcmlkbyc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0VSUk9SOiBObyBzZSBlbmNvbnRyJm9hY3V0ZTsgYXJjaGl2byBzdWJpZG8nOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRVJST1I6IEVsIGFyY2hpdm8gc3ViaWRvIGVzIGluYWNlcHRhYmxlJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IE9jdXJyaSZvYWN1dGU7IHVuIHByb2JsZW1hIHN1YmllbmRvIGVsIGFyY2hpdm8nOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogT2N1cnJpJm9hY3V0ZTsgdW4gcHJvYmxlbWEgYWwgY29waWFyIGVsIGFyY2hpdm8gZW4gc3UgZGVzdGlubyBmaW5hbCc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJST1I6IFlhIGV4aXN0ZSB1biBhcmNoaXZvIGNvbiBlc2Ugbm9tYnJlJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0VSUk9SOiBObyBzZSBwdWRvIGhhbGxhciBlbCBhcmNoaXZvIENTVic7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUlJPUjogTm9zIHNlIHB1ZWRlIGFicmlyaSBlbCBhcmNoaXZvaSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk9SOiBZYSBoYXkgdW5hIGNhdGVnb3JpYSBjb24gZWwgbm9tYnJlICVzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkICc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdDYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1BsYW50aWxsYXMgcG9yIERlZmVjdG8nOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSZudGlsZGU7YWRpciwgZWRpdGFyIHkgYm9ycmFyIGV2ZW50b3MnOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnQSZudGlsZGU7YWRpciBFdmVudG8nOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnRhciBFdmVudG9zJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVudG9zJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvciZpYWN1dGU7YXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhIGRlbCBDYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhIGRlbCBMaXN0YWRvJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgZGUgQXZhbmNlcyc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgZGUgRXZlbnRvJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0NvbmZpZ3VyYWNpJm9hY3V0ZTtuJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnJmxhcXVvOyBQcmUuJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU2lnLiAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yJmlhY3V0ZTthcyBBY3R1YWxpemFkYXMnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdDb25maWd1cmFjaSZvYWN1dGU7biBBY3R1YWxpemFkYSc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnQSZudGlsZGU7YWRpciBFdmVudG8nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdFZGl0YXInOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0JvcnJhcic7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJyZpcXVlc3Q7U2VndXJvIHF1ZSBxdWllcmVzIGJvcnJhcj8nOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBBY3R1YWxpemFkYSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRG9taW5nbyc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTHVuZXMnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdNYXJ0ZXMnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ01pJmVhY3V0ZTtyY29sZXMnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnSnVldmVzJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdWaWVybmVzJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1MmYWFjdXRlO2JhZG8nOwokbGFuZ1snY2FsX3N1biddID0gJ0RvbSc7CiRsYW5nWydjYWxfbW9uJ10gPSAnTHVuJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnTWFyJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdNaWUnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnSnVlJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdWaWUnOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhYic7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0VuZXJvJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJlcm8nOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFyem8nOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQWJyaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01heW8nOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5pbyc7CiRsYW5nWydjYWxfanVseSddID0gJ0p1bGlvJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdG8nOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NlcHRpZW1icmUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3R1YnJlJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmllbWJyZSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEaWNpZW1icmUnOwokbGFuZ1snY2FsX2FkZCddID0gJ0FncmVnYXInOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0FjdHVhbGl6YXInOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnRXZlbnRvJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRmVjaGEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1hcmlvJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWxsZXMnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtJmFhY3V0ZTtzRSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVm9sdmVyJzsKJGxhbmdbJ2NhbF90byddID0gJ2EnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnRXZlbnRvcyBPY3Vycmlkb3MnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0F2YW5jZSBkZSBFdmVudG9zJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdDdWFscXVpZXIgQ2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ01vc3RyYXIgUyZvYWN1dGU7bG8gRXZlbnRvcyBFbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJhciBwb3InOwokbGFuZ1snY2FsX2dvJ10gPSAnSXInOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVCZpYWN1dGU7dHVsbyc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdEZXNkZSBGZWNoYSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnSGFzdGEgRmVjaGEnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWN0dWFsaXphciBDYXRlZ29yJmlhY3V0ZTthcyc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdJZGlvbWFBJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0FjdHVhbGl6YXIgQ29uZmlndXJhY2kmb2FjdXRlO24nOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJyZpcXVlc3Q7VXNhciBkb2NlIGhvcmFzIGVuIGxvcyBkZXNwbGVnYWJsZXMgZGUgaG9yYT8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yJmlhY3V0ZTthIHBvciBEZWZlY3RvQSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ0FjdHVhbGl6YXIgQ2FtcG9zJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnRm9yemFyIGFsIG1lbm9zIHVuYSBjYXRlZ29yJmlhY3V0ZTthJzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXSA9ICdDdWFudG9zIGEmbnRpbGRlO29zIGVuIGVsIHBhc2FkbyBlcyBwZXJtaXRpZG8nOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnQ3VhbnRvcyBhJm50aWxkZTtvcyBlbiBlbCBmdXR1cm8gZXMgcGVybWl0aWRvJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnRGViZXImaWFjdXRlO2EgZXN0YXIgZWwgY2FtcG8gcmVzdW1lbiBlc2NvbmRpZG8nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdEZWJlciZpYWN1dGU7YSBlc3RhciBlbCBjYW1wbyBjb250ZW5pZG8gZXNjb25kaWRvJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnUG9yIGZhdm9yIGNoZXF1ZWFyIHVuYSBvIG0mYWFjdXRlO3MgY2F0ZWdvciZpYWN1dGU7YXMgcGFyYSBlc3RlIGV2ZW50byc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnRWplbXBsbyBkZSBDU1MgcGFyYSBDYWxlbmRhcmlvJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdVc3RlZCBuZWNlc2l0YSBkZSBsb3MgcGVybWlzb3MgZGUgKCVzKSBhcHJvcGlhZG9zIHBhcmEgYWNjZWRlciBhIGVzdGEgZnVuY2lvbmFsaWRhZCc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnQXNlZ3VyYXJzZSBkZSBxdWUgc2UgaGFuIGNvbmZpZ3VyYWRvIGxvcyBwZXJtaXNvcyBhZGVjdWFkb3MgcGFyYSAmcXVvdDtNb2RpZmljYXIgZWwgQ2FsZW5kYXJpbyZxdW90OyBlbiBsb3MgdXN1YXJpb3MgcXVlIHNlIG9jdXBhciZhYWN1dGU7biBkZSBhZG1pbmlzdHJhciBsb3MgZXZlbnRvcyBkZW50cm8gZGVsIGNhbGVuZGFyaW8uJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ0VsaW1pbmFyIGxvcyBldmVudG9zIGV0aXF1ZXRhZG9zJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICcmaXF1ZXN0O0VzdCZhYWN1dGU7IHNlZ3VybyBxdWUgZWwgZXZlbnRvIGRlYmUgc2VyIGVsaW1pbmFkbz8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0xvcyBldmVudG9zIGV0aXF1ZXRhZG9zIHNlIGhhbiBlbGltaW5hZG8nOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnUGxhbnRpbGxhcyc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnQXl1ZGEgcGFyYSBQbGFudGlsbGFzJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnQXJjaGl2b3MgZGUgUGxhbnRpbGxhcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FncmVnYXIgUGxhbnRpbGxhJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdOb21icmUgZGUgUGxhbnRpbGxhJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRhciBQbGFudGlsbGEnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdFbGltaW5hciBQbGFudGlsbGEnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb21icmUgZGUgTnVldmEgUGxhbnRpbGxhJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Vycm9yOiBVbmEgcGxhbnRpbGxhIGNvbiBlc2Ugbm9tYnJlIHlhIGV4aXN0ZS4gUG9yIGZhdm9yIGVsaWphIG90cm8gbm9tYnJlLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnTGEgcGxhbnRpbGxhIHNlIGltcG9ydG8gY29uICZlYWN1dGU7eGl0byBhIGxhIGJhc2UgZGUgZGF0b3MgeSBlc3QmYWFjdXRlOyBhaG9yYSBpbnN0YWxhZGEgbGlzdGEgcGFyYSBzdSB1c28uJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnVmVyIEhvamEgZGUgRXN0aWxvIHBvciBETm9lZmVjdG8nOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdOb21icmUgZGUgQXJjaGl2byc7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGFyIFBsYW50aWxsYSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnTGEgcGxhbnRpbGxhIGZ1JmVhY3V0ZTsgZWxpbWluYWRhIGNvbiBleGl0byBlbiBsYSBiYXNlIGRlIGRhdG9zLic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdMYSBwbGFudGlsbGEgZnUmZWFjdXRlOyBhY3R1YWxpemFkYSBjb24gJmVhY3V0ZTt4aXRvJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0hhIG9jdXJyaWRvIHVuIGVycm9yIGFsIGFjdHVhbGl6YXIgbGEgcGxhbnRpbGxhJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdTZSBndWFyZG8gY29uICZlYWN1dGU7eGl0byBsYXMgY29uZmlndXJhY2lvbmVzJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3ImaWFjdXRlO2EgZWxpbWluYWRhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3ImaWFjdXRlO2EgYWN0dWFsaXphZGEmaWFjdXRlOyc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvciZpYWN1dGU7YSBhZ3JlZ2FkYSc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdFbCBldmVudG8gc2UgaGEgZWxpbWluYWRvJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0VsIGV2ZW50byBzZSBoYSBhY3R1YWxpemFkbyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcjogVXN0ZWQgZGViZSBlc3RhYmxlY2VyIHVuYSBwJmFhY3V0ZTtnaW5hIHBvciBkZWZlY3RvIHBhcmEgdXRpbGl6YXIgYWwgQ2FsZW5kYXJpbyBjb24gcHJldHR5IFVSTHMgcHJlbmRpZG8uIFBvciBmYXZvciB2YXlhIGEgbGEgc29sYXBhIGRlIENvbmZpZ3VyYWNpJm9hY3V0ZTtuIGRlbCBDYWxlbmRhcmlvIHkgZWxpamEgdW5hLic7CiRsYW5nWyd0aW1lX2F0J10gPSAnZW4nOwokbGFuZ1sndHlwZSddID0gJ1RpcG8nOwokbGFuZ1snbmFtZSddID0gJ05vbWJyZSc7CiRsYW5nWydvcmRlciddID0gJ09yZGVuJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdDYW1wbyBBZ3JlZ2FkbyBjb24gJkVhY3V0ZTt4aXRvJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0NhbXBvIEVsaW1pbmFkbyc7CiRsYW5nWydmaWVsZHMnXSA9ICdDYW1wb3MgYSBNZWRpZGEnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnQ2FtcG8gVGV4dG8nOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdDYW1wbyBkZSBzdWJpZGEgZGUgYXJjaGl2byc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGlzIGEgbW9kdWxlIGZvciBkaXNwbGF5aW5nIGV2ZW50cyBvbiB5b3VyIHBhZ2UuIFdoZW4gdGhlDQoJCW1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgQ2FsZW5kYXIgYWRtaW4gcGFnZSBpcyBhZGRlZCB0byB0aGUgY29udGVudCBtZW51DQoJCXRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gbWFuYWdlIHlvdXIgZXZlbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1AmYWFjdXRlO2dpbmEgcG9yIGRlZmVjdG8gcXVlIGNvbnRpZW5lIGVsIENhbGVuZGFyaW8uIEVzdGEgcCZhYWN1dGU7Z2luYSBkZWJlIGNvbnRlbmVyIHVuIHRhZyBTbWFydHkgcXVlIGxsYW1lIGFsIENhbGVuZGFyaW8uIEVzIHJlcXVlcmlkbyBzaSB1c3RlZCB1c2EgbGFzIHByZXR0eSBVUkxzLic7CiRsYW5nWyd1cGxvYWRkaXJlY3RvcnknXSA9ICdEaXJlY3RvcmlvIGRvbmRlIGxvcyBhcmNoaXZvcyBzdWJpZG9zIGRlYmVuIHViaWNhcnNlJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpcG8gZGUgYXJjaGl2b3MgcGVybWl0aWRvcyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdBc2VndXJhciBub21icmUgJnVhY3V0ZTtuaWNvIGRlIGFyY2hpdm9zJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnTWluaWF0dXJhIChhbmNobyknOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnTWluaWF0dXJhIChhbHR1cmEpJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnSW1hZ2VuIGdyYW5kZSAoYW5jaG8pJzsKJGxhbmdbJ2xhcmdlX2hlaWdodCddID0gJ0ltYWdlbiBncmFuZGUgKGFsdG8pJzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdSZXNlcnZhcic7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZXNlcnZhciBoYXN0YSc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+SW1wcmltaXIgTm9tYnJlIGRlIEF1dG9yOjwvYj48L3A+DQo8Y29kZT5BdXRvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/et_EE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMgU2ltcGxlIExhbmd1YWdlIGZpbGUgZm9yIHRoZSBDYWxlbmRhciBtb2R1bGUuDQojIENvcHlyaWdodCAoYykgMjAwNCBieSBSb2IgQWxsZW4gPHJvYkBha3JhYmF0LmNvbT4NCg0KIyBMYW5ndWFnZTogZXRfRVQNCg0KJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZGVyJzsNCiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdMaXNhLCBtdXVkYSBqYSBrdXN0dXRhICYjMjUyO3JpdHVzaSc7DQokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnTGlzYSAmIzI1MjtyaXR1cyc7DQokbGFuZ1snY2FsX2V2ZW50cyddID0gJyYjMjIwO3JpdHVzZWQnOw0KJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnS2F0ZWdvb3JpYWQnOw0KJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVuZHJpIHZhYXRlIGt1anVuZHVzJzsNCiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ05pbWVraXJqYSB2YWF0ZSBrdWp1bmR1cyc7DQokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ0VlbHNlaXN2YXRlICYjMjUyO3JpdHVzdGUgdmFhdGUga3VqdW5kdXMnOw0KJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJyYjMjIwO3JpdHVzZSB2YWF0ZSBrdWp1bmR1cyc7DQokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnU2VhZGVkJzsNCiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRWVlbG1pbmUnOw0KJGxhbmdbJ2NhbF9uZXh0J10gPSAnSiYjMjI4O3JnbWluZSAmcmFxdW87JzsNCg0KJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29vcmlhZCB1dWVuZGF0dWQnOw0KJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnU2VhZGVkIHV1ZW5kYXR1ZCc7DQokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0xpc2EgJiMyNTI7cml0dXMnOw0KJGxhbmdbJ2NhbF9lZGl0J10gPSAnTXV1ZGEnOw0KJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdLdXN0dXRhJzsNCiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ09sZWQga2luZGVsLCBldCBzb292aWQga3VzdHV0YWRhJzsNCiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnVXVlbmRhIGt1anVuZHVzdCc7DQoNCiRsYW5nWydjYWxfc3VuZGF5J10gPSAnUCYjMjUyO2hhcCYjMjI4O2V2JzsNCiRsYW5nWydjYWxfbW9uZGF5J10gPSAnRXNtYXNwJiMyMjg7ZXYnOw0KJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnVGVpc2lwJiMyMjg7ZXYnOw0KJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdLb2xtYXAmIzIyODtldic7DQokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnTmVsamFwJiMyMjg7ZXYnOw0KJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdSZWVkZSc7DQokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnTGF1cCYjMjI4O2V2JzsNCiRsYW5nWydjYWxfc3VuJ10gPSAnUCYjMjUyO2hhcCc7DQokbGFuZ1snY2FsX21vbiddID0gJ0VzbWFzcCc7DQokbGFuZ1snY2FsX3R1ZXMnXSA9ICdUZWlzaXAnOw0KJGxhbmdbJ2NhbF93ZWQnXSA9ICdLb2xtYXAnOw0KJGxhbmdbJ2NhbF90aHVycyddID0gJ05lbGphcCc7DQokbGFuZ1snY2FsX2ZyaSddID0gJ1JlZWRlJzsNCiRsYW5nWydjYWxfc2F0J10gPSAnTGF1cCc7DQoNCiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phYW51YXInOw0KJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ1ZlZWJydWFyJzsNCiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNJiMyMjg7cnRzJzsNCiRsYW5nWydjYWxfYXByaWwnXSA9ICdBcHJpbGwnOw0KJGxhbmdbJ2NhbF9tYXknXSA9ICdNYWknOw0KJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSnV1bmknOw0KJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnV1bGknOw0KJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBdWd1c3QnOw0KJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOw0KJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2t0b29iZXInOw0KJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsNCiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZXRzZW1iZXInOw0KJGxhbmdbJ2NhbF9kYXRlJ10gPSAnS3V1cCYjMjI4O2V2JzsNCiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ0tpcmplbGR1cyc7DQokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdUJiMyMjg7cHNlbWFsdCc7DQokbGFuZ1snY2FsX21vcmUnXSA9ICd2ZWVsID4+JzsNCiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVGFnYXNpJzsNCiRsYW5nWydjYWxfdG8nXSA9ICcnOw0KJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFZWxzZWlzdmFkICYjMjUyO3JpdHVzZWQnOw0KJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdLJiMyNDU7aWsga2F0ZWdvb3JpYWQnOw0KJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTiYjMjI4O2l0YSAmIzI1MjtyaXR1c2kgYWludWx0JzsNCiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdGVyJzsNCiRsYW5nWydjYWxfZ28nXSA9ICdNaW5lJzsNCiRsYW5nWydjYWxfdGl0bGUnXSA9ICdOaW1ldHVzJzsNCiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdBbGdhYic7DQokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0tlc3RhYiBrdW5pJzsNCiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ0tpcmplbGR1cyc7DQokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnVXVlbmRhIGthdGVnb29yaWFpZCc7DQokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnS2VlbCc7DQokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnVXVlbmRhIHNlYWRlaWQnOw0KPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ0smYXVtbDt5dHQmYXVtbDtqJmF1bWw7IGVpIG9sZSBraXJqYXV0dW51dCAoRkVVKS4gVGFwYWh0dW1pZW4gbGlzJmF1bWw7JmF1bWw7bWluZW4gdGFpIG11b2trYWFtaW5lbiBlaSBvbGUgc2FsbGl0dHVhJzsKJGxhbmdbJ3Byb21wdF9mcmllbmRseW5hbWUnXSA9ICdGcmllbmRseSBOYW1lIGZvciB0aGlzIE1vZHVsZSBpbiBBZG1pbiBOYXZpZ2F0aW9uJzsKJGxhbmdbJ2luZm9fZnJpZW5kbHluYW1lJ10gPSAnTm90ZTogWW91IG1heSBuZWVkIHRvIGNsZWFyIHRoZSBzaXRlIGNhY2hlIGZvciB0aGlzIHByZWZlcmVuY2UgdG8gaGF2ZSBlZmZlY3QuICBJZiBubyB2YWx1ZSBpcyBzdXBwbGllZCBhIGRlZmF1bHQgd2lsbCBiZSB1c2VkLic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ0smYXVtbDt5dCZhdW1sOyBXeXNpd3lnaSZhdW1sOyc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQdXV0dGVlbGxpc2V0IHBhcmFtZXRyaXQnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0ltcG9ydCBmaWxlIGNvbHVtbiBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ1R1b250aSBzdW9yaXRldHR1JzsKJGxhbmdbJ251bV9pbXBvcnRlZCddID0gJ051bWJlciBvZiBldmVudHMgY3JlYXRlZDogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnTnVtYmVyIG9mIGxpbmVzIHByb2Nlc3NlZCBmcm9tIGZpbGU6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0Vycm9yaXQnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5laW52YWxpZGZpZWxkJ10gPSAnRmllbGQ6ICVzIGlzIG5vdCByZWNvZ25pemVkLCBhbmQgaXMgbm90IGEgY3VzdG9tIGZpZWxkJzsKJGxhbmdbJ2luZm9fY3N2X2Zvcm1hdCddID0gJzxoND5DU1YgRmlsZSBGb3JtYXQgSW5mb3JtYXRpb24uPC9oND4NCjx1bD4NCiAgPGxpPkdlbmVyYWwgSW5mb3JtYXRpb246DQogICA8dWw+DQogICAgIDxsaT5UaGUgZmlsZSBtdXN0IGJlIGFuIEFTQ0lJIGZpbGUgd2l0aCB1bml4IChwcmVmZXJyZWQpLCBkb3MsIG9yIG1hYyBsaW5lIGVuZGluZ3MuPC9saT4NCiAgICAgPGxpPkNvbW1lbnRzIHN0YXJ0IHdpdGggLy8gYW55IGNoYXJhY3RlcnMgYWZ0ZXIgdGhpcyBvbiBhIGxpbmUgd2lsbCBiZSBpZ25vcmVkIChpbmNsdWRpbmcgd2l0aGluIHF1b3Rlcy48L2xpPg0KICAgICA8bGk+RW1wdHkgbGluZXMgYXJlIGlnbm9yZWQ8L2xpPg0KICAgICA8bGk+RmllbGQgZGVsaW1pdGVycyBhcmUgdXNlciBjb250cm9sbGFibGUsIGhvd2V2ZXIgYSBkZWxpbWl0ZXIgY2FuIGJlIHVzZWQgYXMgYSB2YWx1ZSB3aXRoaW4gYSBmaWVsZCBpZiB0aGUgZmllbGQgaXMgZGVsaW1pdGVkIGJ5IGRvdWJsZSBxdW90ZXMuPC9saT4NCiAgICAgPGxpPlJvd3MgYXJlIGRlbGltaXRlZCBieSBuZXdsaW5lIGNoYXJzIChhcyBhYm92ZSkuPC9saT4NCiAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5UaGUgRmllbGQgTWFwOg0KICAgPHVsPg0KICAgIDxsaT5UaGUgZmlyc3QgbGluZSBkZWZpbmVzIHRoZSBvcmRlciBvZiB0aGUgZmllbGRzLCBhbmQgd2hhdCAmcXVvdDtjdXN0b20gZmllbGRzJnF1b3Q7IGFyZSBkZWZpbmVkIGluIHRoZSBmaWxlLiBEYXRhIGNhbiBzdGFydCBvbiB0aGUgc2Vjb25kIG5vbi1lbXB0eSBsaW5lLCBvciBhZnRlci48L2xpPg0KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAmcXVvdDtjYXRlZ29yeSZxdW90Oy4gIElmIHNwZWNpZmllZCBpdCBjYW4gY29udGFpbiBhIDsgc2VwYXJhdGVkIGxpc3Qgb2YgY2F0ZWdvcnkgbmFtZXMgdGhhdCB0aGUgZXZlbnQgd2lsbCBiZWxvbmcgdG8uPC9saT4NCiAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5UaGUgRGF0YSBSb3dzOg0KICAgPHVsPg0KICAgIDxsaT5UaGUgc3RhcnQgdGltZSwgdGl0bGUsIGFuZCBkZXNjcmlwdGlvbiBmaWVsZHMgbXVzdCBub3QgYmUgZW1wdHkuPC9saT4NCjxsaT5TdGFydCBhbmQgRW5kIFRpbWVzOjwvbGk+DQogIDx1bD4NCiAgIDxsaT5TdGFydCB0aW1lIHByb2Nlc3NpbmcgaXMgZmxleGlibGUuICBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyICBZWVlZLU1NLUREIEhIOk1NIGZvcm1hdCwgb3IgbWFueSBmb3JtYXRzIGFzIGRlZmluZWQgYnkgdGhlIHN0cnRvdGltZSBmdW5jdGlvbiwgaW5jbHVkaW5nIHJlbGF0aXZlIHRpbWVzLiAgSWYgYSByZWxhdGl2ZSB0aW1lIGlzIHN1cHBsaWVkIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS48L2xpPg0KICAgPGxpPkVuZCB0aW1lIHByb2Nlc3NpbmcgaXMgZmxleGlibGUsIGFuZCBtYXkgYmUgZW1wdHkuICBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyIGFuIGFic29sdXRlIHRpbWUgKGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgc3RhcnQgdGltZSkgb3IgYSByZWxhdGl2ZSB0aW1lLiAgSWYgYSByZWxhdGl2ZSB0aW1lIGlzIHNwZWNpZmllZCwgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgdGltZS4gICBpLmU6ICZxdW90Oys0IGhvdXJzJnF1b3Q7IHdvdWxkIGluZGljYXRlIDQgaG91cnMgZnJvbSB0aGUgc3RhcnQgdGltZSBjb2x1bW4uPC9saT4NCiAgIDxsaT5JZiB0aGUgZW5kIHRpbWUgY29sdW1lIGlzIHRoZSBzdHJpbmcgJnF1b3Q7QWxsIGRheSZxdW90OyA8ZW0+KGNhc2UgaW5zZW5zaXRpdmUpPC9lbT4gaXQgd2lsbCBhc3N1bWUgYW4gYWxsIGRheSBldmVudCBmcm9tIHRoZSBzdGFydCB0aW1lLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkNhdGVnb3JpZXMNCiAgPHVsPg0KICAgPGxpPklmIHNwZWNpZmllZCwgdGhlIGNhdGVnb3J5IGNvbHVtbiBjYW4gY29udGFpbiBhIGxpc3QgKHNlcGFyYXRlZCBieSA7KSBvZiBjYXRlZ29yeSBuYW1lcyBmb3Igd2hpY2ggdGhlIGV2ZW50IHNob3VsZCBiZWxvbmcuPC9saT4NCiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DdXN0b20gRmllbGRzOg0KICA8dWw+DQogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPg0KICAgIDxsaT5DdXN0b20gZmllbGRzIG9mIHR5cGUgJnF1b3Q7ZmlsZSZxdW90OyBjYW5ub3QgYmUgaW1wb3J0ZWQuICBUaGUgZW50aXJlIGltcG9ydCBvcGVyYXRpb24gd2lsbCBmYWlsLjwvbGk+DQogIDwvdWw+DQogIDwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkEgc2FtcGxlIGNzdiBmaWxlIGV4aXN0cyBpbiB0aGUgbW9kdWxlcyBzb3VyY2UgY29kZSBkaXJlY3RvcnkuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1NlbGVjdCBJbXBvcnQgRmlsZSc7CiRsYW5nWydkZWxldGUnXSA9ICdQb2lzdGEnOwokbGFuZ1snY2RfY29tcGFueSddID0gJ1lodGkmb3VtbDsgSGFrZW1pc3RvIFlodGkmb3VtbDsnOwokbGFuZ1snZGZsdF91cmxwcmVmaXgnXSA9ICdVUkwtb3NvaXR0ZWlkZW4gb2xldHVzIGV0dWxpaXRlJzsKJGxhbmdbJ2RmbHRfYWxsZGF5ZXZlbnQnXSA9ICdVdWRldCB0YXBhaHR1bWF0IG92YXQgb2xldHVrc2VuYSAmcXVvdDtLb2tvIHAmYXVtbDtpdiZhdW1sO24mcXVvdDstdGFwYWh0dW1pYSc7CiRsYW5nWydkZmx0X3N0YXJ0dGltZSddID0gJ1V1c2llbiB0YXBhaHR1bWllbiBvbGV0dXMgYWxrYW1pc2Fpa2EnOwokbGFuZ1snaW5mb19kZmx0X3N0YXJ0dGltZSddID0gJzxlbT4ocCZhdW1sO3RlZSBhaW5vYXN0YWFuLCBqb3MgdXVkZXQgdGFwYWh0dW1hdCBlaXYmYXVtbDt0IG9sZSAmYW1wO3F1b3Q7S29rbyBwJmF1bWw7aXYmYXVtbDtuJnF1b3Q7LXRhcGFodHVtaWEpPC9lbT4nOwokbGFuZ1snc2VhcmNoX3R5cGUnXSA9ICdIYWt1dHl5cHBpJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdOJmF1bWw7eXQmYXVtbDsgdHVsb2tzZXQsIGpvdGthIHQmYXVtbDtzbSZhdW1sOyZhdW1sO3YmYXVtbDt0IG1paGluIHRhaGFuc2Egc2FuYWFuJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdOJmF1bWw7eXQmYXVtbDsgdHVsb2tzZXQsIGpvdGthIHQmYXVtbDtzbSZhdW1sOyZhdW1sO3YmYXVtbDt0IGthaWtraWluIHNhbm9paGluJzsKJGxhbmdbJ2luZm9fY3VzdG9tZmllbGRzJ10gPSAnPHNwYW4gc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDs+SHVvbWFhOjwvc3Bhbj4gJnF1b3Q7VGllZG9zdG9ubCZhdW1sO2hldHlzJnF1b3Q7LWtlbnR0JmF1bWw7IGVpIG9sZSBoYWV0dGF2aXNzYS4nOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ0hhZXR0YXZpc3NhJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdLb3NrZWUgYWlub2FzdGFhbiBteWV2ZW50cy10b2ltaW50b2EsIHQmYXVtbDttJmF1bWw7IHBhcmFtZXRyaSBzYWxsaWkgbSZhdW1sOyZhdW1sO3JpdGVsbCZhdW1sOyBvbGV0dWtzZXN0YSBwb2lra2VhdmFuIHNpdnVwb2hqYW4gdGFwYWh0dW1pZW4gbXVva2thYW1pc2Vlbiwga3VuIGsmYXVtbDt5dHQmYXVtbDtqJmF1bWw7IGx1byB0YWkgbXVva2thYSB0YXBhaHR1bWFhLic7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnS29za2VlIGFpbm9hc3RhYW4gbXlldmVudHMtdG9pbWludG9hLCB0JmF1bWw7bSZhdW1sOyBwYXJhbWV0cmkgc2FsbGlpIHRvaXNlbiBzaXZ1biBtJmF1bWw7JmF1bWw7cml0dGVsZW1pc2VuIGxvbWFra2VlbGxlLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdLb3NrZWUgYWlub2FzdGFhbiBteWV2ZW50cy10b2ltaW50b2EsIHQmYXVtbDttJmF1bWw7IHNhbGxpaSBvbGV0dWtzZXN0YSBwb2lra2VhdmFuIHNpdnVwb2hqYW4gbSZhdW1sOyZhdW1sO3JpdHRlbGVtaXNlbi4nOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdNdW9ra2FhIGthbGVudGVyaXRhcGFodHVtYWEnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ1RpZXRva2FudGF2aXJoZSc7CiRsYW5nWydzdWJtaXQnXSA9ICdMJmF1bWw7aGV0JmF1bWw7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdKJmF1bWw7cmplc3RlbG0mYXVtbDtuIG9sZXR1cyAmcXVvdDtNdW9ra2FhIHRhcGFodHVtYWEmcXVvdDstc2l2dXBvaGphJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9teWV2ZW50c190ZW1wbGF0ZSddID0gJ0omYXVtbDtyamVzdGVsbSZhdW1sO24gb2xldHVzICZxdW90O09tYXQgdGFwYWh0dW1hdCZxdW90Oy1zaXZ1cG9oamEnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9ncm91cCddID0gJ1QmYXVtbDttJmF1bWw7biByeWhtJmF1bWw7biBGcm9udEVuZFVzZXJzLW1vZHV1bGluIGomYXVtbDtzZW5ldCB2b2l2YXQgbGlzJmF1bWw7dCZhdW1sOyB0YXBhaHR1bWlhLic7CiRsYW5nWydwcm9tcHRfZmVlZGl0X3BhZ2UnXSA9ICdPbGV0dXNzaXZ1IGp1bGtpc3RlbiBzaXZ1amVuIG11b2trYXVzbG9tYWtrZWVsbGUuJzsKJGxhbmdbJ25vbmUnXSA9ICdFaSBtaXQmYXVtbDsmYXVtbDtuJzsKJGxhbmdbJ293bmVyJ10gPSAnT21pc3RhamEnOwokbGFuZ1snY2FsX2VkaXRldmVudF90ZW1wbGF0ZXMnXSA9ICdUYXBhaHR1bWFuIG11b2trYXVzIC1sb21ha2UnOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2aWVuIHNpdnVwb2hqaWVuIGxpc3RhIHRhcGFodHVtYW4gbXVva2thdXNsb21ha2tlZWxsZS4nOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xpcyZhdW1sOyZhdW1sOy9tdW9ra2FhIHRhcGFodHVtYW4gbXVva2thdXMgLWxvbWFra2VlbiBzaXZ1cG9oamFhJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdPbWF0IHRhcGFodHVtYXQgLWxpc3RhJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2aWVuIHNpdnVwb2hqaWVuIGxpc3RhLCBqb2lsbGEgdm9pIG4mYXVtbDt5dHQmYXVtbDsmYXVtbDsgayZhdW1sO3l0dCZhdW1sO2omYXVtbDtuIHRhcGFodHVtaWVuIGxpc3Rhbic7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsgdGFpIHBvaXN0YSAmcXVvdDtPbWF0IHRhcGFodHVtYXQmcXVvdDsgcmFwb3J0aW4gc2l2dXBvaGphYSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVCZhdW1sO20mYXVtbDsgdG9pbWludGEgcG9pc3RhYSB0YXBhaHR1bWF0LCBqb3RrYSBvdmF0IHJpc3RpcmlpZGFzc2Egc2VsbGFpc3RlbiB0YXBhaHR1bWllbiBrYW5zc2EsIGpvdGthIGVpdiZhdW1sO3Qgdm9pIG9sbGEgcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aW4uIE9sZXRrbyB2YXJtYSwgZXR0JmF1bWw7IGhhbHVhdCB0ZWhkJmF1bWw7IHQmYXVtbDttJmF1bWw7bj8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnU3VvZGF0YSBwJmF1bWw7JmF1bWw7bGxla2smYXVtbDtpbiBtZW5ldiZhdW1sO3QgdGFwYWh0dW1hdCc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdQb2lzdGEgcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aW4gbWVuZXYmYXVtbDt0IHRhcGFodHVtYXQgaGlsamFpc2VzdGknOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdOJmF1bWw7eXQmYXVtbDsgdmlyaGUnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfYWN0aW9uJ10gPSAnTWl0JmF1bWw7IHRhcGFodHV1LCBrdW4gdGFwYWh0dW1hbiBsaXMmYXVtbDt5a3Nlc3MmYXVtbDsgdGFpIG11b2trYXVrc2Vzc2EgaHVvbWF0YWFuIHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2lzeXlzJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnVGFwYWh0dW1hbiBwJmF1bWw7aXYmYXVtbDttJmF1bWw7JmF1bWw7ciZhdW1sO3QgbWVuZXYmYXVtbDt0IHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2luIHNlbGxhaXNlbiB0YXBhaHR1bWFuIGthbnNzYSwgam9ua2EgcCZhdW1sOyZhdW1sO2xsZSBlaSB2b2kgbGFpdHRhYSB0b2lzdGEgdGFwYWh0dW1hYSc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnS29za2VlIGFpbm9hc3RhYW4gdGFwYWh0dW1pYSwgam9pbGxhIG9uIGxvcHB1bWlzYWlrYSAodGFpIGtva28gcCZhdW1sO2l2JmF1bWw7biBrZXN0JmF1bWw7dmkmYXVtbDsgdGFwYWh0dW1pYSknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdTYWxsaSB1dXNpZW4gdGFwYWh0dW1pZW4gbWVubiZhdW1sOyBwJmF1bWw7JmF1bWw7bGxla2smYXVtbDtpbiB0JmF1bWw7bSZhdW1sO24ga2Fuc3NhJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ1RhcGFodHVtYW4gcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aXN5eXMgayZhdW1sO3l0JmF1bWw7bnQmb3VtbDsnOwokbGFuZ1sncG9saWN5X2FsbCddID0gJ0thaWtraSB0YXBhaHR1bWF0IHZvaXZhdCBtZW5uJmF1bWw7IHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2luJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnVGFwYWh0dW1hdCBlaXYmYXVtbDt0IHZvaSBtZW5uJmF1bWw7IHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2luJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnVmFsaXRhYW4gdGFwYWh0dW1ha29odGFpc2VzdGknOwokbGFuZ1snbGJsX2JhY2snXSA9ICdUYWthaXNpbic7CiRsYW5nWydsYmxfdGVtcGxhdGVzJ10gPSAnU2l2dXBvaGphdCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1Rla3N0aWtlbnR0JmF1bWw7JzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ0h1b21hc2ltbWUsIGV0dCZhdW1sOyBteSZvdW1sO3Mga2FsZW50ZXJpbW9kdXVsaSBvbiBhc2VubmV0dHVuYS4gVCZhdW1sO20mYXVtbDsgbW9kdXVsaSBlaSBvbGUgc2VuIGthbnNzYSB5aHRlZW5zb3BpdmEgZWlrJmF1bWw7IG5lIHZvaSBvbGxhIHlodCZhdW1sO2Fpa2FhIGFzZW5uZXR0dW5hLiBPbGUgaHl2JmF1bWw7IGphIHBvaXN0YSBrYWxlbnRlcmltb2R1dWxpIGVuc2luLic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdKb2tvIHRhcGFodHVtYW4gdHVubmlzdGV0dGEgZWkgb2xlIHRpZXRva2FubmFzc2EsIHRhaSB0aWV0b2thbm5hc3NhIG9uIHVzZWFtcGkgdGFwYWh0dW1hIHQmYXVtbDtsbCZhdW1sOyB0dW5uaXN0ZWVsbGEhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnU2l2dSAlZCAvICZhbXA7ZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0thbGVudGVyaW4gaGFrdXR1bG9rc2V0JzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ0hha3VzYW5hdCc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnRWkgdHVsb2tzaWEnOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJla3ZlbnNzaSc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ0smYXVtbDt5dCZhdW1sOyB0aWV0dHkmYXVtbDsgcCZhdW1sO2l2JmF1bWw7bSZhdW1sOyZhdW1sO3ImYXVtbDsmYXVtbDsnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gc3VubnVudGFpJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0t1dWthdWRlbiBlbnNpbW0mYXVtbDtpbmVuIG1hYW5hbnRhaSc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gdGlpc3RhaSc7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdLdXVrYXVkZW4gZW5zaW1tJmF1bWw7aW5lbiBrZXNraXZpaWtrbyc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ0t1dWthdWRlbiBlbnNpbW0mYXVtbDtpbmVuIHRvcnN0YWknOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gcGVyamFudGFpJzsKJGxhbmdbJ2ZpcnN0X3NhdHVyZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gbGF1YW50YWknOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ0t1dWthdWRlbiB0b2luZW4gc3VubnVudGFpJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdLdXVrYXVkZW4gdG9pbmVuIG1hYW5hbnRhaSc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ0t1dWthdWRlbiB0b2luZW4gdGlpc3RhaSc7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnS3V1a2F1ZGVuIHRvaW5lbiBrZXNraXZpaWtrbyc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdLdXVrYXVkZW4gdG9pbmVuIHRvcnN0YWknOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ0t1dWthdWRlbiB0b2luZW4gcGVyamFudGFpJzsKJGxhbmdbJ3NlY29uZF9zYXR1cmRheSddID0gJ0t1dWthdWRlbiB0b2luZW4gbGF1YW50YWknOwokbGFuZ1sndGhpcmRfc3VuZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyBzdW5udW50YWknOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyBtYWFuYW50YWknOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ0t1dWthdWRlbiBrb2xtYXMgdGlpc3RhaSc7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdLdXVrYXVkZW4ga29sbWFzIGtlc2tpdmlpa2tvJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyB0b3JzdGFpJzsKJGxhbmdbJ3RoaXJkX2ZyaWRheSddID0gJ0t1dWthdWRlbiBrb2xtYXMgcGVyamFudGFpJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyBsYXVhbmF0YWknOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyBzdW5udW50YWknOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyBtYWFuYW50YWknOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdLdXVrYXVkZW4gbmVsaiZhdW1sO3MgdGlpc3RhaSc7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnS3V1a2F1ZGVuIG5lbGomYXVtbDtzIGtlc2tpdmlpa2tvJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyB0b3JzdGFpJzsKJGxhbmdbJ2ZvdXJ0aF9mcmlkYXknXSA9ICdLdXVrYXVkZW4gbmVsaiZhdW1sO3MgcGVyamFudGFpJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyBsYXVhbnRhaSc7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ0t1dWthdWRlbiB2aWltZWluZW4gc3VubnVudGFpJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiBtYWFuYW50YWknOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiB0aWlzdGFpJzsKJGxhbmdbJ2xhc3Rfd2VkbmVzZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiBrZXNraXZpaWtrbyc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiB0b3JzdGFpJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiBwZXJqYW50YWknOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0t1dWthdWRlbiB2aWltZWluZW4gbGF1YW50YWknOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdWaXJoZWVsbGluZW4gZnJla3ZlbnNzaS4uLiBldCB2b2kgbSZhdW1sOyZhdW1sO3JpdGVsbCZhdW1sOyBzZWsmYXVtbDsgdGlldHR5JmF1bWw7IHAmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7JmF1bWw7IEpBIG11aXRhIGFydm9qYSc7CiRsYW5nWydzZWFyY2hyZXN1bHR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGlzJmF1bWw7JmF1bWw7L211b2trYWEgaGFrdXR1bG9zdGVuIHNpdnVwb2hqYWEnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2YSBsaXN0YSBoYWt1dHVsb3N0ZW4gc2l2dXBvaGppc3RhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hyZXN1bHRfdGVtcGxhdGUnXSA9ICdKJmF1bWw7cmplc3RlbG0mYXVtbDtuIG9sZXR1c3NpdnVwb2hqYSBoYWt1dHVsb2tzaWxsZSc7CiRsYW5nWydjYWxfc2VhcmNoX3Jlc3VsdF90ZW1wbGF0ZXMnXSA9ICdIYWt1dHVsb2tzZXQnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnVGlldG9rYW5uYXN0YSBoYWt1IGVwJmF1bWw7b25uaXN0dWknOwokbGFuZ1snZXJyb3Jfc2VhcmNoX2ludmFsaWRfZGF0ZXMnXSA9ICdWaXJoZWVsbGlzZXQgcCZhdW1sO2l2JmF1bWw7bSZhdW1sOyZhdW1sO3ImYXVtbDt0JzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdGknOwokbGFuZ1snc2VhcmNoJ10gPSAnSGFrdSc7CiRsYW5nWydjYXRlZ29yeSddID0gJ0thdGVnb3JpYSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEgaGFrdWxvbWFra2VlbGxlJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsvbXVva2thYSBoYWt1bG9tYWtrZWVuIHNpdnVwb2hqYWEnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2YSBsaXN0YSBoYWt1bG9tYWtrZWVuIHNpdnVwb2hqaXN0YSc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnSGFrdWxvbWFrZSc7CiRsYW5nWydtYXgnXSA9ICdtYXguJzsKJGxhbmdbJ3RpbWVzJ10gPSAna2VydGFhJzsKJGxhbmdbJ29uJ10gPSAnb24gJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnT2xldGtvIHZhcm1hLCBldHQmYXVtbDsgaGFsdWF0IHRlaGQmYXVtbDsgdCZhdW1sO20mYXVtbDtuPyBKYXRrYW1pbmVuIHBvaXN0YWEga2Fpa2tpIHQmYXVtbDtoJmF1bWw7biBtb2R1dWxpaW4gbGlpdHR5diZhdW1sO3QgdGllZG90Lic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ0thbGVudGVyaW1vZHV1bGkgb24gcG9pc3RldHR1IG9ubmlzdHVuZWVzdGkgamEgdCZhdW1sO2gmYXVtbDtuIG1vZHV1bGlpbiBsaWl0dHl2JmF1bWw7dCBzaXZ1cG9oamF0IG9uIHBvaXN0ZXR0dS4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnS2VudHQmYXVtbDsgcCZhdW1sO2l2aXRldHR5JzsKJGxhbmdbJ2V2ZXJ5J10gPSAnSm9rYSc7CiRsYW5nWydvciddID0gJ3RhaSc7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyBhbGF0YXBhaHR1bWF0JzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdTaW51biB0JmF1bWw7eXR5eSB2YWxpdGEgYWluYWtpbiB5a3NpIGthdGVnb3JpYSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdFaSB2YWxpdHR1IG1pdCZhdW1sOyZhdW1sO24gcG9pc3RldHRhdmFrc2knOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnQW50YW1hc2kgcGFyYW1ldHJpdCB0b2lzdHV2YWxsZSB0YXBhaHR1bWFsbGEgYWloZXV0dGFpc2kgcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aXNlbiB0YXBhaHR1bWFuLic7CiRsYW5nWydyZWN1cnMnXSA9ICdUb2lzdHV1JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdZa3NpIHRhaSB1c2VhbXBpIGFubmV0dHUgYXJ2byBvbGkgdmlyaGVlbGxpbmVuJzsKJGxhbmdbJ3N1bmRheSddID0gJ3N1bm51bnRhaSc7CiRsYW5nWydtb25kYXknXSA9ICdtYWFuYW50YWknOwokbGFuZ1sndHVlc2RheSddID0gJ3RpaXN0YWknOwokbGFuZ1snd2VkbmVzZGF5J10gPSAna2Vza2l2aWlra28nOwokbGFuZ1sndGh1cnNkYXknXSA9ICd0b3JzdGFpJzsKJGxhbmdbJ2ZyaWRheSddID0gJ3BlcmphbnRhaSc7CiRsYW5nWydzYXR1cmRheSddID0gJ2xhdWFudGFpJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnc3UnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdtYSc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICd0aSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ2tlJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICd0byc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ3BlJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdsYSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1ZpaWtvbnAmYXVtbDtpdiZhdW1sO3QnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnUCZhdW1sO2l2JmF1bWw7JmF1bWw7JzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdWaWlra29hJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnS3V1a2F1dHRhJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdWdW90dGEnOwokbGFuZ1snbm8nXSA9ICdFaSc7CiRsYW5nWydkYWlseSddID0gJ1AmYXVtbDtpdml0dCZhdW1sO2luJzsKJGxhbmdbJ3dlZWtseSddID0gJ1ZpaWtvdHRhaW4nOwokbGFuZ1snbW9udGhseSddID0gJ0t1dWthdXNpdHRhaW4nOwokbGFuZ1sneWVhcmx5J10gPSAnVnVvc2l0dGFpbic7CiRsYW5nWydpbnRlcnZhbCddID0gJ1RvaXN0YSBqb2thJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnVG9pc3R1dmFuIHRhcGFodHVtYW4gdGllZG90JzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ1Jham9pdHRhbWF0b24nOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ0FsYXRhcGFodHVtaWVuIG1ha3NpbWltJmF1bWw7JmF1bWw7ciZhdW1sOyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ00mYXVtbDsmYXVtbDtyaXR0ZWxlIHRvaW5lbiBsb3BwdW1pc3AmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7Pyc7CiRsYW5nWydjYW5jZWwnXSA9ICdQZXJ1dXRhJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnTiZhdW1sO3l0JmF1bWw7IGFsYXRhcGFodHVtYXQgPGVtPih2b2kgYWloZXV0dGFhIGVyaXR0JmF1bWw7aW4gcGl0ayZhdW1sO24gbGlzdGFuKTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ2VpIG1pdCZhdW1sOyZhdW1sO24nOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnVG9pc3RhIGt1bm5lcyc7CiRsYW5nWydwYXJlbnQnXSA9ICdQJmF1bWw7JmF1bWw7dGFwYWh0dW1hJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1RvaXN0dW1pc2Fpa2EnOwokbGFuZ1snZmlsdGVyJ10gPSAnU3VvZGF0YSc7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnQWxrYW1pc3AmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7JzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnTG9wcHVtaXNwJmF1bWw7aXYmYXVtbDttJmF1bWw7JmF1bWw7ciZhdW1sOyc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdTYWF0YXZpbGxhIG9sZXZhIGxpc3RhIHNpdnVwb2hqaXN0YSB0dWxldmlsbGUgdGFwYWh0dW1pbGxlJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsvbXVva2thYSB0dWxldmllbiB0YXBhaHR1bWllbiBuJmF1bWw7eXR0JmF1bWw7bWlzZW4gc2l2dXBvaGppYSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEgdHVsZXZpZW4gdGFwYWh0dW1pZW4gbiZhdW1sO3l0dCZhdW1sO21pc2Vrc2knOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ1NhYXRhdmlsbGEgb2xldmEgbGlzdGEgc2l2dXBvaGppc3RhIHRhcGFodHVtaWVuIGxpc3RhbiBuJmF1bWw7eXR0JmF1bWw7bWlzZWtzaSc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xpcyZhdW1sOyZhdW1sOy9tdW9ra2FhIHNpdnVwb2hqYWEgdGFwYWh0dW1hbGlzdGFuIG4mYXVtbDt5dHQmYXVtbDttaXNla3NpJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEgdGFwYWh0dW1hbGlzdGFsbGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdTYWF0YXZpbGxhIG9sZXZpZW4gc2l2dXBvaGppZW4gbGlzdGEgdGFwYWh0dW1pZW4gbiZhdW1sO3l0dCZhdW1sO21pc2Vrc2knOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGlzJmF1bWw7JmF1bWw7L211b2trYWEgc2l2dXBvaGphYSB0YXBhaHR1bWFuIG4mYXVtbDt5dHQmYXVtbDttaXNla3NpJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ0omYXVtbDtyamVzdGVsbSZhdW1sO24gb2xldHVzIHNpdnVwb2hqYSB0YXBhaHR1bWFuIG4mYXVtbDt5dHQmYXVtbDttaXNla3NpJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2YSBsaXN0YSBzaXZ1cG9oamlzdGEga2FsZW50ZXJpbiBuJmF1bWw7eXR0JmF1bWw7bWlzZWtzaSc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsvbXVva2thYSBzaXZ1cG9oamlhIGthbGVudGVyaW4gbiZhdW1sO3l0dCZhdW1sO21pc2Vrc2knOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEga2FsZW50ZXJpbiBuJmF1bWw7eXR0JmF1bWw7bWlzZWtzaSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdUJmF1bWw7bSZhdW1sOyBsb21ha2UgbSZhdW1sOyZhdW1sO3JpdHRlbGVlIHNpdnVwb2hqYW4sIGpvdGEgayZhdW1sO3l0ZXQmYXVtbDsmYXVtbDtuLCBrdW4ga2xpa2thYXQgJnF1b3Q7VXVzaSBzaXZ1cG9oamEmcXVvdDstcGFpbmlrZXR0YSB2JmF1bWw7bGlsZWhkZXNzJmF1bWw7LiBUJmF1bWw7bSZhdW1sO24gYXJ2b24gbXV1dHRhbWlzZWxsZSBlaSBvbGUgdmFpa3V0dXN0YSBoZXRpIHQmYXVtbDttJmF1bWw7biBtb2R1dWxpbiBsdW9taWxsZSBzaXZ1aWxsZS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdLdXRzdXRhYW4ga2FsZW50ZXJpdGFwYWh0dW1hbiBsaXMmYXVtbDsmYXVtbDttaXNlbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnS3V0c3V0YWFuIGthbGVudGVyaXRhcGFodHVtYW4gbXV1dG9rc2VuIGomYXVtbDtsa2Vlbic7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnS3V0c3V0YWFuIHRhcGFodHVtYW4gcG9pc3RvbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdLdXRzdXRhYW4ga2F0ZWdvcmlhbiBsaXMmYXVtbDsmYXVtbDttaXNlbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnS3V0c3V0YWFuIGthdGVnb3JpYW4gbXV1dG9rc2VuIGomYXVtbDtsa2Vlbic7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnS3V0c3V0YWFuIGthdGVnb3JpYW4gcG9pc3RvbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXJyb3JfY3N2X2luc2VydCddID0gJ0Vycm9yIGltcG9ydGluZyBldmVudCBmcm9tIGNzdiBhdCBsaW5lICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnQSByZXF1aXJlZCBmaWVsZDogJXMsIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgY3N2IGZpbGUgaGVhZGVyIGxpbmUnOwokbGFuZ1snZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZSddID0gJ0NvdWxkIG5vdCBmaW5kIGEgdmFsaWQgZmlyc3QgbGluZSBvZiB0aGUgQ1NWIGZpbGUnOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdUYXBhaHR1bWEgbGlzJmF1bWw7dHR5JzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnVGFwYWh0dW1hbGxhIHQmYXVtbDt5dHl5IG9sbGEgbmltaSc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ1ZpcmhlOiBQYWx2ZWxpbWVsbGUgc2lpcnJldHR5JmF1bWw7IHRpZWRvc3RvYSBlaSBsJm91bWw7eXR5bnl0JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ1ZpcmhlOiBUaWVkb3N0b24gc2lpcnRvYSBlaSB2b2lkYSBoeXYmYXVtbDtrc3kmYXVtbDsnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdWaXJoZTogVGllZG9zdG9uIHNpaXJyb3NzYSB0YXBhaHR1aSB2aXJoZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ1ZpcmhlOiBUaWVkb3N0b24ga29waW9pbm5pc3NhIGxvcHVsbGlzZWVuIHNpamFpbnRpaW5zYSB0YXBhaHR1aSB2aXJoZSc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnVmlyaGU6IFNhbWFubmltaW5lbiB0aWVkb3N0byBvbiBqbyBvbGVtYXNzYSc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdWaXJoZTogIENTVi10aWVkb3N0b2EgZWkgdm9pdHUgbCZvdW1sO3l0JmF1bWw7JmF1bWw7JzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ1ZpcmhlOiBUaWVkb3N0b2EgZWkgdm9pZGEgYXZhdGEnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdWaXJoZTogS2F0ZWdvcmlhIG5pbWVsbCZhdW1sOyAlcyBvbiBqbyBvbGVtYXNzYSc7CiRsYW5nWydjYWxfaWQnXSA9ICdJRCc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdLYWxlbnRlcmknOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnT2xldHVrc2V0JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ01vbmlwdW9saW5lbiBtb2R1dWxpLCBqb25rYSBhdnVsbGEgdm9pdCBuJmF1bWw7eXR0JmF1bWw7JmF1bWw7IHRhcGFodHVtaWEgdXNlaXNzYSBlcmkgbXVvZG9pc3NhLic7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdMaXMmYXVtbDsmYXVtbDsgdGFwYWh0dW1hJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnVHVvIHRhcGFodHVtaWEnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1RhcGFodHVtYXQnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWF0JzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVudGVyaSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ1RhcGFodHVtYWxpc3RhJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdUdWxldmF0IHRhcGFodHVtYXQnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnVGFwYWh0dW1hJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0FzZXR1a3NldCc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRWRlbGxpbmVuJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU2V1cmFhdmEgJnJhcXVvOyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnS2F0ZWdvcmlhdCBwJmF1bWw7aXZpdGV0dHknOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdBc2V0dWtzZXQgcCZhdW1sO2l2aXRldHR5JzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdMaXMmYXVtbDsmYXVtbDsgdGFwYWh0dW1hJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnTXVva2thYSc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnUG9pc3RhJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnT2xldGtvIHZhcm1hPyc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnUCZhdW1sO2l2aXQmYXVtbDsgcG9oamEnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ3N1bm51bnRhaSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnbWFhbmFudGFpJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAndGlpc3RhaSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAna2Vza2l2aWlra28nOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAndG9yc3RhaSc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAncGVyamFudGFpJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ2xhdWFudGFpJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdzdSc7CiRsYW5nWydjYWxfbW9uJ10gPSAnbWEnOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICd0aSc7CiRsYW5nWydjYWxfd2VkJ10gPSAna2UnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAndG8nOwokbGFuZ1snY2FsX2ZyaSddID0gJ3BlJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdsYSc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ3RhbW1pa3V1JzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2hlbG1pa3V1JzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ21hYWxpc2t1dSc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdodWh0aWt1dSc7CiRsYW5nWydjYWxfbWF5J10gPSAndG91a29rdXUnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdrZXMmYXVtbDtrdXUnOwokbGFuZ1snY2FsX2p1bHknXSA9ICdoZWluJmF1bWw7a3V1JzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdlbG9rdXUnOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ3N5eXNrdXUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdsb2tha3V1JzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ21hcnJhc2t1dSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdqb3VsdWt1dSc7CiRsYW5nWydjYWxfYWRkJ10gPSAnTGlzJmF1bWw7JmF1bWw7JzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdUYXBhaHR1bWEnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdQJmF1bWw7aXYmYXVtbDsnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdUaWl2aXN0ZWxtJmF1bWw7JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnTGlzJmF1bWw7dGllZG90JzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnTGlzJmF1bWw7JmF1bWw7ICZyYXF1bzsnOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1BhbGFhJzsKJGxhbmdbJ2NhbF90byddID0gJyAtICc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdNZW5uZWV0IHRhcGFodHVtYXQnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ1R1bGV2YXQgdGFwYWh0dW1hdCc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnS2Fpa2tpIGthdGVnb3JpYXQnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdOJmF1bWw7eXQmYXVtbDsgdmFpbiAnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ1N1b2RhdGEgb3RzaWtrbyc7CiRsYW5nWydjYWxfZ28nXSA9ICdNZW5lJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ090c2lra28nOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnTWlzdCZhdW1sOyc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnTWloaW4nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnUCZhdW1sO2l2aXQmYXVtbDsga2F0ZWdvcmlhdCc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdLaWVsaSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyBhc2V0dWtzZXQnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0smYXVtbDt5dGV0JmF1bWw7JmF1bWw7bmsmb3VtbDsgcHVkb3R1c3ZhbGlrb2lzc2EgMTItdHVubmluIGtlbGxvYT8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdPbGV0dXNrYXRlZ29yaWEnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyBrZW50JmF1bWw7dCc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ1Bha290YSB2JmF1bWw7aGludCZhdW1sOyZhdW1sO24geWtzaSBrYXRlZ29yaWEnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0t1aW5rYSBtb250YSB2dW90dGEgbWVubmVpc3l5dGVlbiBvbiBzYWxsaXR0dWEnOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnS3VpbmthIG1vbnRhIHZ1b3R0YSB0dWxldmFpc3V1dGVlbiBvbiBzYWxsaXR0dWEnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdQaWlsb3RldGFhbmtvIHlodGVlbnZldG9rZW50dCZhdW1sOyc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ1BpaWxvdGV0YWFua28gc2lzJmF1bWw7bHQmb3VtbDtrZW50dCZhdW1sOyc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ1ZhbGl0c2UgdGFwYWh0dW1hbGxlIHlrc2kgdGFpIHVzZWFtcGlhIGthdGVnb3JpYSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ1NTLWVzaW1lcmtraSBrYWxlbnRlcmlsbGUnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1RhcnZpdHNldCBhc2lhYW5rdWx1dmF0IG9pa2V1ZGV0ICglcykgdCZhdW1sO2gmYXVtbDtuIHRvaW1pbm5hbGxpc3V1dGVlbic7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnVmFybWlzdGEsIGV0dCZhdW1sOyBsaXMmYXVtbDsmYXVtbDt0IG9pa2V1ZGVuICZxdW90O011b2thdGEga2FsZW50ZXJpYSZxdW90OyBuaWlsbGUgayZhdW1sO3l0dCZhdW1sO2ppbGxlLCBqb3RrYSB5bGwmYXVtbDtwaXQmYXVtbDt2JmF1bWw7dCBrYWxlbnRlcml0YXBhaHR1bWlhLic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdQb2lzdGEgdmFsaXR1dCB0YXBhaHR1bWF0JzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIG4mYXVtbDttJmF1bWw7IHRhcGFodHVtYXQ/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdWYWxpdHV0IHRhcGFodHVtYXQgcG9pc3RldHR1JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1NpdnVwb2hqYXQnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1NpdnVwb2hqaWVuIG9oamUnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdUaWVkb3N0b3BvaGphdCc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0xpcyZhdW1sOyZhdW1sOyBzaXZ1cG9oamEnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdTaXZ1cG9oamEnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ1NpdnVwb2hqYW4gbmltaSc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdNdW9ra2FhIHNpdnVwb2hqYWEnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdQb2lzdGEgc2l2dXBvaGphJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnVXVkZW4gc2l2dXBvaGphbiBuaW1pJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ1ZpcmhlOiBTYW1hbm5pbWluZW4gc2l2dXBvaGphIG9uIGpvIG9sZW1hc3NhLiBWYWxpdHNlIHRvaW5lbiBuaW1pJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdQb2hqYSB0dW90aWluIG9ubmlzdHVuZWVzdGkgdGlldG9rYW50YWFuIGphIG9uIG55dCBhc2VubmV0dHUgayZhdW1sO3l0ZXR0JmF1bWw7diZhdW1sO2tzaS4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdOJmF1bWw7eXQmYXVtbDsgb2xldHVzdHl5bGlzaXZ1IChDU1MpJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnVGllZG9zdG9uaW1pJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnVHVvIHNpdnVwb2hqYSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnU2l2dXBvaGphIHBvaXN0ZXR0dSBvbm5pc3R1bmVlc3RpIHRpZXRva2FubmFzdGEnOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnU2l2dXBvaGphIHAmYXVtbDtpdml0ZXR0eSBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ1NpdnVwb2hqYW4gcCZhdW1sO2l2aXR5a3Nlc3MmYXVtbDsgdGFwYWh0dWkgdmlyaGUnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0FzZXR1a3NldCB0YWxsZW5uZXR0dSBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpYSBwb2lzdGV0dHUnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnS2F0ZWdvcmlhIHAmYXVtbDtpdml0ZXR0eSc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmlhIGxpcyZhdW1sO3R0eSc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdUYXBhaHR1bWEgcG9pc3RldHR1JzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ1RhcGFodHVtYSBwJmF1bWw7aXZpdGV0dHknOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnVmlyaGU6IFNpbnVuIHQmYXVtbDt5dHl5IGFzZXR0YWEgb2xldHVzc2l2dSwgam90dGEgdm9pdCBrJmF1bWw7eXR0JmF1bWw7JmF1bWw7IGthbGVudGVyaWEgc2lldmllbiBVUkwtb3NvaXR0ZWlkZW4gb2xsZXNzYSBwJmF1bWw7JmF1bWw7bGwmYXVtbDsuIE1lbmUga2FsZW50ZXJpbiBhc2V0dWtzaWluIGphIHZhbGl0c2Ugb2xldHVzc2l2dS4nOwokbGFuZ1sndGltZV9hdCddID0gJ2tsbyc7CiRsYW5nWyd0eXBlJ10gPSAnVHl5cHBpJzsKJGxhbmdbJ25hbWUnXSA9ICdOaW1pJzsKJGxhbmdbJ29yZGVyJ10gPSAnSiZhdW1sO3JqZXN0eXMnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0tlbnR0JmF1bWw7IGxpcyZhdW1sO3R0eSBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0tlbnR0JmF1bWw7IHBvaXN0ZXR0dSc7CiRsYW5nWydmaWVsZHMnXSA9ICdNdWthdXRldHV0IGtlbnQmYXVtbDt0JzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1Rla3N0aWtlbnR0JmF1bWw7JzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnVGllZG9zdG9ubGF0YXVza2VudHQmYXVtbDsnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBldmVudHMgb24geW91ciBwYWdlLiBXaGVuIHRoZQ0KCQltb2R1bGUgaXMgaW5zdGFsbGVkLCBhIENhbGVuZGFyIGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIGNvbnRlbnQgbWVudQ0KCQl0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdLYWxlbnRlcmluIHNpcyZhdW1sO2x0JmF1bWw7diZhdW1sOyBvbGV0dXNzaXZ1LiBUJmF1bWw7bSZhdW1sO24gc2l2dW4gdHVsZWUgc2lzJmF1bWw7bHQmYXVtbDsmYXVtbDsgU21hcnR5LXRhZ2ksIGpva2Ega3V0c3V1IGthbGVudGVyaWEuIFQmYXVtbDtsbGFpbmVuIHZhYWRpdGFhbiwgam9zIGsmYXVtbDt5dCZhdW1sO3Qga2F1bmlzdGV0dHVqYSBVUkxlamEuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0hha2VtaXN0byBwYWx2ZWxpbWVsbGUgc2lpcnJldHlpbGxlIHRpZWRvc3RvaWxsZSc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdTYWxsaXR1dCB0aWVkb3N0b3R5eXBpdCc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdWYXJtaXN0YSB1bmlpa2l0IHRpZWRvc3RvbmltZXQnOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICdQaWVub2lza3V2YW4gbGV2ZXlzJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1BpZW5vaXNrdXZhbiBrb3JrZXVzJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnVCZhdW1sO3lzaWtva29pc2VuIGt1dmFuIGxldmV5cyc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdUJmF1bWw7eXNpa29rb2lzZW4ga3V2YW4ga29ya2V1cyc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnVG9pc3R1dSc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdUb2lzdHV1IGt1bm5lcyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE0NzQ3Nzc4MzkuMTM2MjA3OTQ2Ni4xMzYyMDc5NDY2LjEzNjIwNzk0NjYuMSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM2MjA3OTQ2Ni4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hvbGlkYXlfY29sb3JzJ10gPSAnQ291bGV1cnMgZGUgc3VybGlnbmFnZSBwb3VyIGxlcyB2YWNhbmNlcyc7CiRsYW5nWydwcm9tcHRfaWNhbF9ob2xpZGF5cyddID0gJ0ZsdXggaUNhbCBwb3VyIGxlcyB2YWNhbmNlcyc7CiRsYW5nWydpbmZvX2ljYWxfaG9saWRheXMnXSA9ICdDZWNpIGVzdCB1dGlsaXPDqSBzdXIgbGVzIHZ1ZXMgZHUgY2FsZW5kcmllciBmdWxsQ2FsZW5kYXIgcG91ciBzdXJsaWduZXIgbFwnYWZmaWNoYWdlIHB1YmxpYyBkZXMgdmFjYW5jZXMuIElsIG5cJ3kgYSBwYXMgZFwnYXV0cmUgaW50ZXJhY3Rpb24gYXZlYyBjZXMgw6l2w6luZW1lbnRzIGRhbnMgY2UgZmx1eCBpQ2FsLic7CiRsYW5nWydhbGxkYXknXSA9ICdKb3VyIGVudGllcic7CiRsYW5nWydkYXl2aWV3J10gPSAnVnVlIGpvdXInOwokbGFuZ1snZWRpdCddID0gJ0VkaXRlcic7CiRsYW5nWydlcnJvcl9mZXRjaGluZ19ldmVudHMnXSA9ICdBw69lLi4uIHF1ZWxxdWUgY2hvc2UgZXN0IGFycml2w6kgcGVuZGFudCBsXCfDqWNoYW5nZSBhdmVjIGxlIHNlcnZldXIsIHZldWlsbGV6IHLDqWVzc2F5ZXInOwokbGFuZ1snbm9yZXN1bHRzJ10gPSAnRMOpc29sw6ksIGF1Y3VuIMOpdsOpbmVtZW50IG5lIGNvcnJlc3BvbmQgw6Agdm9zIGNyaXTDqHJlcyc7CiRsYW5nWydoZWxwX2ZpbmRfd2hlbiddID0gJ0xlcyDDqXbDqW5lbWVudHMgcGFzc8OpcyBldCBmdXR1cnMgc29udCB0b3Vqb3VycyByZWxhdGlmcyDDoCBsYSBkYXRlIGFjdHVlbGxlJzsKJGxhbmdbJ3Jlb3JkZXInXSA9ICdSw6lvcmRvbm5lcic7CiRsYW5nWydkZmx0X2NvbG9ycyddID0gJ0NvdWxldXJzIHBhciBkw6lmYXV0JzsKJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdFZGl0ZXIgbGEgY2F0w6lnb3JpZSc7CiRsYW5nWydmZ2NvbG9yJ10gPSAnQ291bGV1ciBkZSBwcmVtaWVyIHBsYW4nOwokbGFuZ1snYmdjb2xvciddID0gJ0NvdWxldXIgZGUgZm9uZCc7CiRsYW5nWydoZWxwX2ZpbmRfc2hvd2NoaWxkcmVuJ10gPSAnSW5kaXF1ZSBzaSBkZXMgw6l2w6luZW1lbnRzIGVuZmFudHMgZG9pdmVudCDDqnRyZSBpbmNsdXMgZGFucyBsZXMgcsOpc3VsdGF0cyBkZSByZWNoZXJjaGUnOwokbGFuZ1snaGVscF9maW5kX2V2ZW50X2tleXdvcmQnXSA9ICdFbnRyZXogdW4gb3UgcGx1c2lldXJzIG1vdHMtY2zDqXMgw6AgcmVjaGVyY2hlci4gTGEgcmVjaGVyY2hlIHN1ciBsZXMgbW90cyBjb3JyZXNwb25kYW50IHNlcmEgZWZmZWN0dcOpZSBkYW5zIGxlcyBjaGFtcHMgdGl0cmUsIHNvbW1haXJlIGV0IGTDqXRhaWwgZGUgbFwnw6l2w6luZW1lbnQnOwokbGFuZ1snaW5mb19maW5kX3Jlc3VsdHMnXSA9ICdMZXMgMTAgcHJlbWnDqHJlcyBvY2N1cmVuY2VzIGRlIHZvdHJlIHJlcXXDqnRlIHNvbnQgYWZmaWNow6lzIGNpLWRlc3NvdXMuPGJyLz5DbGlxdWVyIHN1ciBsZSB0aXRyZSBkZSBsXCfDqXbDqW5lbWVudCB2b3VzIHBlcm1ldCBkZSBsXCfDqWRpdGVyLjxici8+Q2xpcXVlciBzdXIgbFwnaWPDtG5lIHZ1ZSBwb3VyIGTDqXBsYWNlciBsZSBjYWxlbmRyaWVyIHN1ciBsYSBkYXRlIGFwcHJveGltYXRpdmUgZGUgbFwnw6l2w6luZW1lbnQgPGVtPihkw6lwZW5kIGRlIGxhIHZ1ZSB1dGlsaXPDqWUpPC9lbT4nOwokbGFuZ1snZ290b19kYXRlJ10gPSAnQWxsZXIgw6AgY2V0dGUgZGF0ZSc7CiRsYW5nWydpbmZvX2ZpbmRfZXZlbnRzJ10gPSAnUmVjaGVyY2hlciBsZXMgw6l2w6luZW1lbnRzIGNvcnJlc3BvbmRhbnRzLiBKdXNxdVwnw6AgMTAgb2NjdXJlbmNlcyBwZXV2ZW50IMOqdHJlIGFmZmljaMOpZXMuJzsKJGxhbmdbJ3Jlc3VsdHMnXSA9ICdSw6lzdWx0YXRzJzsKJGxhbmdbJ2tleXdvcmRzJ10gPSAnTW90cy1jbMOpcyc7CiRsYW5nWydmaW5kX3Nob3djaGlsZHJlbiddID0gJ01vbnRyZXIgbGVzIGVuZmFudHMnOwokbGFuZ1snYW55J10gPSAnVG91cyc7CiRsYW5nWydwYXN0J10gPSAnUGFzc8Opcyc7CiRsYW5nWydmdXR1cmUnXSA9ICdGdXR1cnMnOwokbGFuZ1snZmluZF93aGVuJ10gPSAnUXVhbmQgPyc7CiRsYW5nWydmaW5kX3BhcmVudHNvbmx5J10gPSAnVW5pcXVlbWVudCBsZXMgcGFyZW50cyc7CiRsYW5nWydmaW5kJ10gPSAnVHJvdXZlci4uLic7CiRsYW5nWydlZGl0cGFyZW50J10gPSAnRWRpdGVyIGxlIHBhcmVudCc7CiRsYW5nWydoZWxwX2V2ZW50c3RhYiddID0gJzxwPkxcJ29uZ2xldCBkZXMgw6l2w6luZW1lbnRzIGZvdXJuaXQgdW4gbW95ZW4gc2ltcGxlIGRlIHBhcmNvdXJpciBsZXMgw6l2w6luZW1lbnRzIHBhciBkYXRlLiBMYSBkYXRlIHPDqWxlY3Rpb25uw6llIGVzdCBzYXV2w6llIDxlbT4oZGFucyB1biBjb29raWUpPC9lbT4gcGVuZGFudCBkZXV4IGpvdXJzLiBDZXR0ZSB2dWUgcGVybWV0IMOpZ2FsZW1lbnQgbFwnw6lkaXRpb24gZXQgbGEgc3VwcHJlc3Npb24uPC9wPjxici8+PHA+R2xpc3Nlci1kw6lwb3NlciB1biDDqXbDqW5lbWVudCBkYW5zIGxhIHZ1ZSBtZW5zdWVsbGUgdmEgbW9kaWZpZXIgbGEgZGF0ZSBkZSBkw6lwYXJ0IDxlbT4obWFpcyBwYXMgbGEgZHVyw6llKTwvZW0+LiBSZWRpbWVuc2lvbm5lciBsXCfDqXbDqW5lbWVudCB2YSBtb2RpZmllciBzYSBkYXRlIGRlIGZpbi48L3A+PGJyLz48cD5EYW5zIGxlcyB2dWVzIGhlYmRvbWFkYWlyZSBldCBqb3VybmFsacOocmUsIGxhIGRhdGUgZGUgZMOpcGFydC9kdXLDqWUgZFwndW4gw6l2w6luZW1lbnQgcGV1dC3DqnRyZSBtb2RpZmnDqWUgYXZlYyB1biBnbGlzc2VyLWTDqXBvc2VyLiBMYSBkYXRlIGRlIGZpbi9kdXLDqWUgZGUgbFwnw6l2w6luZW1lbnQgcGV1dC3DqnRyZSBtb2RpZmnDqWUgZW4gbGUgcmVkaW1lbnNpb25uYW50LiBEZSBwbHVzLCBjZXMgdnVlcyBzdXBwb3J0ZW50IGxhIGNhcGFjaXTDqSBkZSBtb2RpZmllciByYXBpZGVtZW50IHVuIMOpdsOpbmVtZW50IGVuIHVuIMOpdsOpbmVtZW50IGRcJ3VuZSBqb3VybsOpZSBjb21wbMOodGUgYXZlYyB1biBnbGlzc2VyLWTDqXBvc2VyIGRhbnMgbGEgem9uZSAiSm91ciBlbnRpZXIiIHNpdHXDqWUgZW4gaGF1dC48L3A+PGJyLz48cD5BdWN1bmUgdsOpcmlmaWNhdGlvbiBkZSBjb25mbGl0IG5cJ2VzdCBlZmZlY3R1w6llIGxvcnMgZGVzIGdsaXNzZXItZMOpcG9zZXIgZFwnw6l2w6luZW1lbnQuPC9wPic7CiRsYW5nWydwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCddID0gJ1N1cHByaW1lciBjZXQgw6l2w6luZW1lbnQgZGUgc29uIHBhcmVudCc7CiRsYW5nWydpbmZvX3JlbW92ZWZyb21wYXJlbnQnXSA9ICdTaSBzZWxlY3Rpb25uw6ksIGNldCDDqXbDqW5lbWVudCBuZSBzZXJhIHBhcyBhZmZlY3TDqSBwYXIgbGVzIGNoYW5nZW1lbnRzIGRlIHNvbiBwYXJlbnQuJzsKJGxhbmdbJ2luZm9fZWRpdF9wYXJlbnRldmVudCddID0gJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQ2V0IMOpdsOpbmVtZW50IGVzdCByw6ljdXJyZW50LiBDb2NoZXIgbGEgY2FzZSA8ZW0+TWV0dHJlIMOgIGpvdXIgbGVzIHNvdXMtw6l2w6luZW1lbnRzIGFzc29jacOpczwvZW0+IHLDqXBlcmN1dGVyYSBsZXMgbW9kaWZpY2F0aW9ucyBzdXIgdG91dGVzIGxlcyBvY2N1cmVuY2VzLic7CiRsYW5nWydpbmZvX2VkaXRfY2hpbGRldmVudCddID0gJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQ2V0IMOpdsOpbmVtZW50IGVzdCB1bmUgb2NjdXJlbmNlIGRcJ3VuIGF1dHJlLiBMZXMgY2hhbmdlbWVudHMgb3DDqXLDqXMgaWNpIG5cJ2FmZmVjdGVyb250IHF1ZSBsdWkuIFBvdXIgbWV0dHJlIMOgIGpvdXIgdG91dGVzIGxlcyBvY2N1cnJlbmNlcywgdm91cyBkZXZyZXogbW9kaWZpZXIgbFwnw6l2w6luZW1lbnQgcGFyZW50Lic7CiRsYW5nWydhbGxkYXlfZXZlbnQnXSA9ICdDXCdlc3QgdW4gw6l2w6luZW1lbnQgc3VyIGxhIGpvdXJuw6llJzsKJGxhbmdbJ25vdGUnXSA9ICdOb3RlJzsKJGxhbmdbJ3RpdGxlX3BhcmVudF9ldmVudCddID0gJ0NldCDDqXbDqW5lbWVudCBlc3QgcsOpY3VycmVudCBldCBjb250aWVudCBkZXMgw6l2w6luZW1lbnRzIGVuZmFudHMnOwokbGFuZ1snc3RhcnQnXSA9ICdEw6lidXQnOwokbGFuZ1snZW5kJ10gPSAnRmluJzsKJGxhbmdbJ2V2ZW50X2FjdGlvbiddID0gJ0FjdGlvbic7CiRsYW5nWydpbmZvX2V2ZW50X2FjdGlvbiddID0gJ0Nob2lzaXNzZXogdW5lIGFjdGlvbiDDoCBmYWlyZSBzdXIgY2V0IMOpdsOpbmVtZW50Ljxici8+TW9kaWZpZXIgY2V0IMOpdsOpbmVtZW50IHJlZGlyaWdlcmEgdmVycyB1bmUgbm91dmVsbGUgcGFnZS4nOwokbGFuZ1snZXJyb3JfZGVsZXRlcGFyZW50ZXZlbnQnXSA9ICdEw6lzb2zDqSwgbWFpcyB2b3VzIG5lIHBvdXZleiBwYXMgc3VwcHJpbWVyIHVuIMOpdsOpbmVtZW50IHBhcmVudC4nOwokbGFuZ1snY2hpbGQnXSA9ICdFbmZhbnQnOwokbGFuZ1sncmVwZWF0cyddID0gJ3LDqWN1cnJlbmNlcyc7CiRsYW5nWydlcnJvcl9ldmVudG5vdGZvdW5kJ10gPSAnRXbDqW5lbWVudCBub24gdHJvdXbDqSc7CiRsYW5nWydlcnJvcl91bmtub3duJ10gPSAnRXJyZXVyIGluY29ubnVlJzsKJGxhbmdbJ2luZm9fY2FsX2ZpbHRlcl9ieSddID0gJ1NpIG9uIHJlY2hlcmNoZSA8ZW0+KGZpbHRyZSk8L2VtPiBwYXIgbW90cyBkYW5zIGxlIHRpdHJlLCBsZSBkw6lmaWxlbWVudCBkZSBsYSBkYXRlIG5cJ2VzdCBwYXMgZGlzcG9uaWJsZSc7CiRsYW5nWydtc2dfbm9kYXRlcyddID0gJ1JlY2hlcmNoZSBkdSB0aXRyZSBhcHBsaXF1w6llJzsKJGxhbmdbJ3RpdGxlX3JlY3VycmluZ19ldmVudCddID0gJ0NcJ2VzdCB1biDDqXbDqW5lbWVudCByw6ljdXJyZW50IGF2ZWMgZW5mYW50cyc7CiRsYW5nWyd0aXRsZV9jaGlsZF9ldmVudCddID0gJ0NcJ2VzdCB1biBlbmZhbnQgZFwndW4gw6l2w6luZW1lbnQgcGFyZW50IHLDqWN1cnJlbnQnOwokbGFuZ1snZXJyb3Jfc29tZWRlbGV0ZWQnXSA9ICdDZXJ0YWlucyDDqXbDqW5lbWVudHMgb250IMOpdMOpIHN1cHByaW3DqXMuIENlcGVuZGFudCwgZFwnYXV0cmVzIG5lIGxcJ29udCBwYXMgw6l0w6ksIMOgIGNhdXNlIGRlIHBlcm1pc3Npb25zJzsKJGxhbmdbJ2Vycm9yX25vbmVkZWxldGVkJ10gPSAnw4AgY2F1c2UgZGUgcGVybWlzc2lvbnMgb3UgZFwnYXV0cmVzIGVycmV1cnMsIGF1Y3VuIGRlcyDDqXbDqW5lbWVudHMgc8OpbGVjdGlvbm7DqXMgblwnb250IMOpdMOpIHN1cHByaW3DqXMnOwokbGFuZ1snZXJyb3JfZGVsZXRlZmFpbGVkJ10gPSAnTGEgc3VwcHJlc3Npb24gZFwnw6l2w6luZW1lbnQgYSDDqWNob3XDqSc7CiRsYW5nWydmaWxlYXR0YWNobWVudCddID0gJ0ZpY2hpZXIgam9pbnQnOwokbGFuZ1sncHJvbXB0X2dlbmVyYWxfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyBnbG9iYXV4JzsKJGxhbmdbJ3Byb21wdF9lZGl0aW5nX3NldHRpbmdzJ10gPSAnUGFyYW3DqHRyZXMgZFwnw6lkaXRpb24gZFwnw6l2w6luZW1lbnRzJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyBkXCfDqWRpdGlvbiBkZSBsYSBwYXJ0aWUgcHVibGlxdWUgZHUgc2l0ZSAoZnJvbnRlbmQpJzsKJGxhbmdbJ3ByZXZfbW9udGgnXSA9ICdBbGxlciBhdSBtb2lzIHByw6ljw6lkZW50JzsKJGxhbmdbJ25leHRfbW9udGgnXSA9ICdBbGxlciBhdSBtb2lzIHN1aXZhbnQnOwokbGFuZ1snaW5mb19jdXN0b21maWVsZHNfdGFiJ10gPSAnTGVzIGNoYW1wcyBwZXJzb25uYWxpc8OpcyBwZXV2ZW50IMOqdHJlIHLDqW9yZG9ubsOpcyBlbiBnbGlzc2FudCAvIGTDqXBvc2FudCBsZXMgbGlnbmVzLiBMYSByZWNoZXJjaGUgblwnZXN0IHBvc3NpYmxlIHF1ZSBkYW5zIGxlcyBjaGFtcHMgdGV4dGUsIGV0IHNldWxlcyBsZXMgem9uZXMgZGUgdGV4dGUgcGV1dmVudCBhdm9pciBkZXMgY2hhbXBzIFdZU0lXWUcgbGnDqXMuIDxzdHJvbmcgc3R5bGU9ImNvbG9yOiByZWQ7Ij5Ob3RlIDo8L3N0cm9uZz4gTGVzIGNoYW1wcyBXWVNJV1lHIG5lIHNlcm9udCBwYXMgYWZmaWNow6lzIHBvdXIgbGVzIHpvbmVzIGRlIHRleHRlIHN1ciBsYSBwYXJ0aWUgcHVibGlxdWUgZHUgc2l0ZSAoZnJvbnRlbmQpLic7CiRsYW5nWydtc2dfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0w6lnb3JpZXMgbWlzZXMgw6Agam91cic7CiRsYW5nWydtc2dfZmllbGRzdXBkYXRlZCddID0gJ0TDqWZpbml0aW9ucyBkZSBjaGFtcCBtaXNlcyDDoCBqb3VyJzsKJGxhbmdbJ3d5c2l3eWcnXSA9ICdXWVNJV1lHwqAnOwokbGFuZ1snaW5mb19yZW9yZGVyX2NhdGVnb3JpZXMnXSA9ICdMXCdvcmRyZSBkZXMgY2F0w6lnb3JpZXMgcGV1dC3DqnRyZSBkw6lmaW5pIGVuIGdsaXNzYW50IC8gZMOpcG9zYW50IGxlcyBsaWduZXMnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnluYW1lcm93J10gPSAnTGUgbm9tIGEgw6l0w6kgZWZmYWPDqSBwb3VyIHVuZSBjYXTDqWdvcmllIHZhbGlkZSDDoCBsYSBsaWduZSZuYnNwOzonOwokbGFuZ1snY29uZmlybV9ub2NhdGVnb3JpZXMnXSA9ICdOb3VzIG5cJ2F2b25zIGTDqXRlY3TDqSBhdWN1bmUgY2F0w6lnb3JpZSB2YWxpZGUuIMOKdGVzLXZvdXMgc8O7ciBxdWUgY1wnZXN0IGJpZW4gY2UgcXVlIHZvdXMgdm91bGV6IGZhaXJlID8nOwokbGFuZ1snYWRkX2ZpZWxkJ10gPSAnQWpvdXRlciB1biBjaGFtcCc7CiRsYW5nWydhZGRfY2F0ZWdvcnknXSA9ICdBam91dGVyIHVuZSBjYXTDqWdvcmllJzsKJGxhbmdbJ3Byb21wdF9maXJzdGRheW9md2VlayddID0gJ1ByZW1pZXIgam91ciBkZSBsYSBzZW1haW5lJzsKJGxhbmdbJ2VkaXRfZXZlbnQnXSA9ICfDiWRpdGVyIGxcJ8OpdsOpbmVtZW50JzsKJGxhbmdbJ2VkaXRfcGFyZW50X2V2ZW50J10gPSAnw4lkaXRlciBsXCfDqXbDqW5lbWVudCBwYXJlbnQnOwokbGFuZ1snc2VsZWN0X3BlcmlvZCddID0gJ1DDqXJpb2RlJzsKJGxhbmdbJ3Nob3dfZmlsdGVyJ10gPSAnTW9udHJlciBsZSBmaWx0cmUnOwokbGFuZ1snc2hvd19maWx0ZXJfYXBwbGllZCddID0gJ01vbnRyZXIgbGUgZmlsdHJlIDxlbT4oYXBwbGlxdcOpKTwvZW0+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnUmVtZXR0cmUgw6AgesOpcm8nOwokbGFuZ1snY2FsX2N1cnJlbnQnXSA9ICdDZXR0ZSBww6lyaW9kZSc7CiRsYW5nWydjYWxfZnJvbSddID0gJ0RlJzsKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ0NldCB1dGlsaXNhdGV1ciBuXCdlc3QgcGFzIGNvbm5lY3TDqSDDoCBGRVUuIEFqb3V0ZXIgb3UgbW9kaWZpZXIgbGVzIMOpdsOpbmVtZW50cyBuXCdlc3QgcGFzIHBlcm1pcy4nOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ05vbSAiY29udml2aWFsIiBwb3VyIGNlIG1vZHVsZSBkYW5zIGxhIG5hdmlnYXRpb24gZGUgbFwnYWRtaW5pc3RyYXRpb24nOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdOb3RlIDogSWwgc2UgcGV1dCBxdWUgdm91cyBheWV6IMOgIHZpZGVyIGxlIGNhY2hlIGR1IHNpdGUgcG91ciBxdWUgY2V0dGUgcHLDqWbDqXJlbmNlIHByZW5uZSBlZmZldC4gU2kgYXVjdW5lIHZhbGV1ciBuXCdlc3QgZm91cm5pZSwgdW5lIHZhbGV1ciBwYXIgZMOpZmF1dCBzZXJhIHV0aWxpc8OpZS4nOwokbGFuZ1sndXNlX3d5c2l3eWcnXSA9ICdVdGlsaXNlIGxlIFd5c2l3eWcnOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnUGFyYW3DqHRyZXMgaW5zdWZmaXNhbnRzIG91IG5vbiB2YWxpZGVzLic7CiRsYW5nWydjb2x1bW5fZGVsaW1pdGVyJ10gPSAnU8OpcGFyYXRldXIgZGUgY29sb25uZXMgZGFucyBsZSBmaWNoaWVyIGltcG9ydMOpJzsKJGxhbmdbJ2ltcG9ydF9jb21wbGV0ZWQnXSA9ICdJbXBvcnRhdGlvbiB0ZXJtaW7DqWUnOwokbGFuZ1snbnVtX2ltcG9ydGVkJ10gPSAnTm9tYnJlIGRcJ8OpdsOobmVtZW50cyBjcsOpw6lzIDogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnTm9tYnJlIGRlIGxpZ25lcyBkdSBmaWNoaWVyIHRyYWl0w6llcyA6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0VycmV1cnMnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5laW52YWxpZGZpZWxkJ10gPSAnQ2hhbXAgOiAlcyBub24gcmVjb25udSwgZXQgblwnZXN0IHBhcyB1biBjaGFtcCBwZXJzb25uYWxpc8OpLic7CiRsYW5nWydpbmZvX2Nzdl9mb3JtYXQnXSA9ICc8aDQ+SW5mb3JtYXRpb24gc3VyIGxlIGZvcm1hdCBkZSBmaWNoaWVyIENTVi48L2g0Pg0KPHVsPg0KICA8bGk+SW5mb3JtYXRpb24gZ8OpbsOpcmFsZSA6DQogICA8dWw+DQogICAgIDxsaT5MZSBmaWNoaWVyIGRvaXQgw6p0cmUgZGUgdHlwZSBBU0NJSSBhdmVjIGRlcyBmaW5zIGRlIGxpZ25lcyBlbiB1bml4IChkZSBwcsOpZsOpcmVuY2UpLCBkb3MsIG91IG1hYy48L2xpPg0KICAgICA8bGk+TGVzIGNvbW1lbnRhaXJlcyBjb21tZW5jZW50IGF2ZWMgLy8gdG91dCBjYXJhY3TDqHJlIHN1ciB1bmUgbGlnbmUgYXByw6hzIGNlY2kgc2Vyb250IGlnbm9yw6lzICh5IGNvbXByaXMgZGFucyBsZXMgZ3VpbGxlbWV0cykuPC9saT4NCiAgICAgPGxpPkxlcyBsaWduZXMgdmlkZXMgc29udCBpZ25vcsOpZXMuPC9saT4NCiAgICAgPGxpPkxlcyBzw6lwYXJhdGV1cnMgZGUgY2hhbXAgc29udCBkw6lmaW5pc3NhYmxlcyBwYXIgbFwndXRpbGlzYXRldXIsIGNlcGVuZGFudCB1biBzw6lwYXJhdGV1ciBwZXV0IMOqdHJlIHV0aWxpc8OpIGRhbnMgdW4gY2hhbXAgc2kgY2UgZGVybmllciBlc3QgZMOpbGltaXTDqSBwYXIgZGVzIGRvdWJsZXMgZ3VpbGxlbWV0cy48L2xpPg0KICAgICA8bGk+TGVzIGxpZ25lcyBzb250IHPDqXBhcsOpcyBwYXIgZGVzIGNhcmFjdMOocmVzIHN1ciB1bmUgbm91dmVsbGUgbGlnbmUgKGNvbW1lIGNpLWRlc3N1cykuPC9saT4NCiAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5UaGUgRmllbGQgTWFwOg0KICAgPHVsPg0KICAgIDxsaT5UaGUgZmlyc3QgbGluZSBkZWZpbmVzIHRoZSBvcmRlciBvZiB0aGUgZmllbGRzLCBhbmQgd2hhdCAiY3VzdG9tIGZpZWxkcyIgYXJlIGRlZmluZWQgaW4gdGhlIGZpbGUuIERhdGEgY2FuIHN0YXJ0IG9uIHRoZSBzZWNvbmQgbm9uLWVtcHR5IGxpbmUsIG9yIGFmdGVyLjwvbGk+DQogICAgPGxpPlRoZXJlcyBhcmUgdGhlIHJlcXVpcmVkIGZpZWxkczogc3RhcnQgdGltZSwgZW5kIHRpbWUsIHRpdGxlLCBzdW1tYXJ5LCBhbmQgZGVzY3JpcHRpb24uICBXaXRob3V0IGRlZmluaW5nIHRoZXNlIGZpZWxkcyBpbiB0aGUgaGVhZGVyIHRoZSBpbXBvcnQgd2lsbCBub3QgcHJvY2VlZC4gIFJlcXVpcmVkIGZpZWxkIG5hbWVzIGFyZSBub3QgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgICA8bGk+VGhlcmUgaXMgb25lIG9wdGlvbmFsIGNvbHVtbjo6ICJjYXRlZ29yeSIuICBJZiBzcGVjaWZpZWQgaXQgY2FuIGNvbnRhaW4gYSA7IHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzIHRoYXQgdGhlIGV2ZW50IHdpbGwgYmVsb25nIHRvLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIERhdGEgUm93czoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIHN0YXJ0IHRpbWUsIHRpdGxlLCBhbmQgZGVzY3JpcHRpb24gZmllbGRzIG11c3Qgbm90IGJlIGVtcHR5LjwvbGk+DQo8bGk+U3RhcnQgYW5kIEVuZCBUaW1lczo8L2xpPg0KICA8dWw+DQogICA8bGk+U3RhcnQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciAgWVlZWS1NTS1ERCBISDpNTSBmb3JtYXQsIG9yIG1hbnkgZm9ybWF0cyBhcyBkZWZpbmVkIGJ5IHRoZSBzdHJ0b3RpbWUgZnVuY3Rpb24sIGluY2x1ZGluZyByZWxhdGl2ZSB0aW1lcy4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzdXBwbGllZCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRpbWUuPC9saT4NCiAgIDxsaT5FbmQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLCBhbmQgbWF5IGJlIGVtcHR5LiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciBhbiBhYnNvbHV0ZSB0aW1lIChpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIHN0YXJ0IHRpbWUpIG9yIGEgcmVsYXRpdmUgdGltZS4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzcGVjaWZpZWQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHRpbWUuICAgaS5lOiAiKzQgaG91cnMiIHdvdWxkIGluZGljYXRlIDQgaG91cnMgZnJvbSB0aGUgc3RhcnQgdGltZSBjb2x1bW4uPC9saT4NCiAgIDxsaT5JZiB0aGUgZW5kIHRpbWUgY29sdW1lIGlzIHRoZSBzdHJpbmcgIkFsbCBkYXkiIDxlbT4oY2FzZSBpbnNlbnNpdGl2ZSk8L2VtPiBpdCB3aWxsIGFzc3VtZSBhbiBhbGwgZGF5IGV2ZW50IGZyb20gdGhlIHN0YXJ0IHRpbWUuPC9saT4NCiAgIDxsaT5JZiB0aGUgZW5kIHRpbWUgY29sdW1uIGlzIGVtcHR5LCB0aGVuIG5vIGVuZCB0aW1lIHZhbHVlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+Q2F0ZWdvcmllcw0KICA8dWw+DQogICA8bGk+SWYgc3BlY2lmaWVkLCB0aGUgY2F0ZWdvcnkgY29sdW1uIGNhbiBjb250YWluIGEgbGlzdCAoc2VwYXJhdGVkIGJ5IDspIG9mIGNhdGVnb3J5IG5hbWVzIGZvciB3aGljaCB0aGUgZXZlbnQgc2hvdWxkIGJlbG9uZy48L2xpPg0KICAgPGxpPkNhdGVnb3J5IG5hbWVzIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgPGxpPkNhdGVnb3JpZXMgYXJlIG5vdCBjcmVhdGVkIGlmIHRoZXkgZG8gbm90IGV4aXN0LjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkN1c3RvbSBGaWVsZHM6DQogIDx1bD4NCiAgICA8bGk+Q3VzdG9tIGZpZWxkIG5hbWVzIChldmVuIGluIHRoZSBmaXJzdCBsaW5lIHRoYXQgZGV0ZXJtaW5lcyB0aGUgZmllbGQgbWFwcGluZykgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPkN1dG9tIGZpZWxkcyBhcmUgbm90IGNyZWF0ZWQgaWYgc3BlY2lmaWVkIGluIHRoZSBDU1YgZmlsZS4gIFVua25vd24gY3VzdG9tIGZpZWxkIGNvbHVtbnMgd2lsbCBiZSBpZ25vcmVkLjwvbGk+DQogICAgPGxpPkN1c3RvbSBmaWVsZHMgb2YgdHlwZSAiZmlsZSIgY2Fubm90IGJlIGltcG9ydGVkLiAgVGhlIGVudGlyZSBpbXBvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbC48L2xpPg0KICA8L3VsPg0KICA8L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5BIHNhbXBsZSBjc3YgZmlsZSBleGlzdHMgaW4gdGhlIG1vZHVsZXMgc291cmNlIGNvZGUgZGlyZWN0b3J5LjwvbGk+DQo8L3VsPic7CiRsYW5nWydwcm9tcHRfY3N2X2ZpbGUnXSA9ICdTw6lsZWN0aW9ubmVyIGxlIGZpY2hpZXIgZFwnaW1wb3J0YXRpb24nOwokbGFuZ1snZGVsZXRlJ10gPSAnRWZmYWNlcic7CiRsYW5nWydjZF9jb21wYW55J10gPSAnRW50cmVwcmlzZSBkZSBsXCdhbm51YWlyZSBkXCdlbnRyZXByaXNlcyc7CiRsYW5nWydkZmx0X3VybHByZWZpeCddID0gJ1Byw6lmaXhlIGRcJ1VSTCBwYXIgZMOpZmF1dCBwb3VyICJwcmV0dHkgVVJMUyInOwokbGFuZ1snZGZsdF9hbGxkYXlldmVudCddID0gJ0xlcyBub3V2ZWF1eCDDqXbDqW5lbWVudHMgc29udCBkZXMgw6l2w6luZW1lbnRzICJqb3VyIGVudGllciAoYWxsIGRheSkiIHBhciBkw6lmYXV0JzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnSGV1cmUgZGUgZMOpYnV0IHBhciBkw6lmYXV0IHBvdXIgbGVzIG5vdXZlYXV4IMOpdsOpbmVtZW50cyc7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPihTXCdhcHBsaXF1ZSB1bmlxdWVtZW50IHNpIGxlcyBub3V2ZWF1eCDDqXbDqW5lbWVudHMgbmUgc29udCBwYXMgZGVzIMOpdsOpbmVtZW50cyAiam91ciBlbnRpZXIgLyBBbGwgRGF5Ii4pPC9lbT4nOwokbGFuZ1snc2VhcmNoX3R5cGUnXSA9ICdUeXBlIGRlIHJlY2hlcmNoZSc7CiRsYW5nWydzZWFyY2hfYW55J10gPSAnUmVudm9pZSBsZSByw6lzdWx0YXQgc3VyIG5cJ2ltcG9ydGUgbGVxdWVsIGRlcyBtb3RzIHJlY2hlcmNow6lzJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdSZW52b2llIGxlIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgc3VyIHRvdXMgbGVzIG1vdHMgcmVjaGVyY2jDqXMnOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1V0aWxpc2FibGUgY29tbWUgY3JpdMOocmUgZGUgcmVjaGVyY2hlJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIHVuaXF1ZW1lbnQgcG91ciBsXCdhY3Rpb24gTWVzIMOJdsOpbmVtZW50cywgY2UgcGFyYW3DqHRyZSBwZXJtZXQgZGUgc3DDqWNpZmllciB1biBhdXRyZSBnYWJhcml0IGRcJ8OpZGl0aW9uIGRcJ8OpdsOpbmVtZW50IChpbnZvcXXDqSBsb3JzcXVlIGxcJ3V0aWxpc2F0ZXVyIGNyw6llIG91IMOpZGl0ZSB1biDDqXbDqW5lbWVudCkgcXVlIGNlbHVpIHV0aWxpc8OpIHBhciBkw6lmYXV0Lic7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnQXBwbGljYWJsZSB1bmlxdWVtZW50IHBvdXIgbFwnYWN0aW9uIE1lcyDDiXbDqW5lbWVudHMsIGNlIHBhcmFtw6h0cmUgcGVybWV0IGRlIHNww6ljaWZpZXIgdW5lIGF1dHJlIHBhZ2UgcG91ciBsZSBmb3JtdWxhaXJlIGRcJ8OpZGl0aW9uLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIHVuaXF1ZW1lbnQgcG91ciBsXCdhY3Rpb24gTWVzIMOJdsOpbmVtZW50cywgY2UgcGFyYW3DqHRyZSBwZXJtZXQgZGUgc3DDqWNpZmllciB1biBhdXRyZSBnYWJhcml0IHF1ZSBjZWx1aSB1dGlsaXPDqSBwYXIgZMOpZmF1dC4nOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdFZGl0ZXIgdW4gw6l2w6luZW1lbnQgZHUgY2FsZW5kcmllcic7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRXJyZXVyIGRlIGJhc2UgZGUgZG9ubsOpZXMnOwokbGFuZ1snc3VibWl0J10gPSAnU291bWV0dHJlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdHYWJhcml0IHN5c3TDqG1lIHBvdXIgIkVkaXRlciB1biDDqXbDqW5lbWVudCInOwokbGFuZ1snaW5mb19zeXNkZmx0X215ZXZlbnRzX3RlbXBsYXRlJ10gPSAnR2FiYXJpdCBzeXN0w6htZSBwb3VyICJNZXMgw4l2w6luZW1lbnRzIic7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTGVzIG1lbWJyZXMgZGUgY2UgZ3JvdXBlIEZFVSBwZXV2ZW50IGFqb3V0ZXIgZGVzIMOpdsOpbmVtZW50cyc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X3BhZ2UnXSA9ICdQYWdlIHBhciBkw6lmYXV0IHBvdXIgbGUgZm9ybXVsYWlyZSBkXCfDqWRpdGlvbiBlbiBmcm9udGVuZC4nOwokbGFuZ1snbm9uZSddID0gJ0F1Y3VuJzsKJGxhbmdbJ293bmVyJ10gPSAnUHJvcHJpw6l0YWlyZSc7CiRsYW5nWydjYWxfZWRpdGV2ZW50X3RlbXBsYXRlcyddID0gJ0dhYmFyaXRzIGRlIGZvcm11bGFpcmUgZFwnw6lkaXRpb24gZFwnw6l2w6luZW1lbnQnOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGUgZGVzIGdhYmFyaXRzIGRpc3BvbmlibGVzIHBvdXIgbGUgZm9ybXVsYWlyZSBkXCfDqWRpdGlvbiBkXCfDqXbDqW5lbWVudCc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWpvdXRlci9FZGl0ZXIgdW4gZ2FiYXJpdCBkZSBmb3JtdWxhaXJlIGRcJ8OpZGl0aW9uIGRcJ8OpdsOpbmVtZW50JzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdHYWJhcml0cyBkZSBsaXN0ZSBcJ01lcyDDiXbDqW5lbWVudHNcJyc7CiRsYW5nWydpbmZvX215ZXZlbnRzX3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RlIGRlcyBnYWJhcml0cyBkaXNwb25pYmxlcyBwb3VyIGFmZmljaGVyIHVuZSBsaXN0ZSBkXCfDqXbDqW5lbWVudHMgZFwndXRpbGlzYXRldXInOwokbGFuZ1snbXlldmVudHN0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWpvdXRlci9FZGl0ZXIgdW4gZ2FiYXJpdCBkZSByYXBwb3J0IGRlICJNZXMgRXbDqW5lbWVudHMiJzsKJGxhbmdbJ2FyZXlvdXN1cmVfcmVtb3ZlY29uZmxpY3RpbmcnXSA9ICdDZXR0ZSBhY3Rpb24gdmEgc3VwcHJpbWVyIHRvdXMgbGVzIMOpdsOpbmVtZW50cyBlbiBjb25mbGl0IGF2ZWMgZGVzIMOpdsOpbmVtZW50cyBxdWkgbmUgcGV1dmVudCBzZSBjaGV2YXVjaGVyLiDDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBmYWlyZSDDp2EgPyc7CiRsYW5nWydmaWx0ZXJfY29uZmxpY3RpbmcnXSA9ICdGaWx0cmUgZGVzIMOpdsOpbmVtZW50cyBlbiBjb25mbGl0JzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ0VmZmFjZXIgc2lsZW5jaWV1c2VtZW50IGRlcyDDqXbDqW5lbWVudHMgZW4gY29uZmxpdCc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9lcnJvciddID0gJ0FmZmljaGUgdW5lIGVycmV1cic7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdDZSBxdVwnaWwgZGV2cmFpdCBzZSBwYXNzZXIgcXVhbmQgdW4gY29uZmxpdCBlc3QgZMOpdGVjdMOpIMOgIGxcJ8OpZGl0aW9uIG91IMOgIGxcJ2Fqb3V0IGRcJ3VuIMOpdsOpbmVtZW50JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnTGVzIHZhbGV1cnMgc3DDqWNpZmnDqWVzIGRlIGxcJ8OpdsOpbmVtZW50IGNoZXZhdWNoZW50IHVuIMOpdsOpbmVtZW50IGV4aXN0YW50IHF1aSBuXCdhdXRvcmlzZSBwYXMgbGUgY29uZmxpdC4nOwokbGFuZ1snY2FsX2luZm9fb3ZlcmxhcCddID0gJ1NcJ2FwcGxpcXVlIHNldWxlbWVudCBhdXggw6l2w6luZW1lbnRzIGNvbXBvcnRhbnQgdW5lIGhldXJlIGRlIGZpbiAob3UgbGVzIMOpdsOpbmVtZW50cyBkZSB0b3VzIGxlcyBqb3VycyknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdBdXRvcmlzZSBsZXMgbm91dmVhdXggw6l2w6luZW1lbnRzIMOgIGNoZXZhdWNoZXIgY2VsdWktbMOgJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ1BvbGl0aXF1ZSBkZSBjaGV2YXVjaGVtZW50IGRcJ8OpdsOpbmVtZW50JzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdUb3VzIGxlcyDDqXbDqW5lbWVudHMgcGV1dmVudCBzZSBjaGV2YXVjaGVyJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnQXVjdW4gw6l2w6luZW1lbnQgbmUgcGV1dCBzZSBjaGV2YXVjaGVyJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnQ2hvaXggcG91ciBjaGFxdWUgw6l2w6luZW1lbnQnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdSZXRvdXInOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ0dhYmFyaXRzJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnWm9uZSBkZSBUZXh0ZSAoVGV4dGFyZWEpJzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ05vdXMgYXZvbnMgZMOpdGVjdMOpIHF1ZSBsZSBtb2R1bGUgQ2FsZW5kYXIgZXN0IGTDqWrDoCBpbnN0YWxsw6kuIENlIG1vZHVsZSBuXCdlc3QgcGFzIGNvbXBhdGlibGUgYXZlYyBsZSBtb2R1bGUgQ2FsZW5kYXIgZXQgbmUgcGV1dCBwYXMgY29leGlzdGVyIGF2ZWMgbHVpIHN1ciBsYSBtw6ptZSBpbnN0YWxsYXRpb24uIFZldWlsbGV6IGTDqXNpbnN0YWxsZXIgbGUgbW9kdWxlIENhbGVuZGFyJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ1NvaXQgbFwnZXZlbnRfaWQgblwnZXN0IHBhcyBwcsOpc2VudCBlbiBiYXNlIGRlIGRvbm7DqWVzLCBzb2l0IGlsIHkgYSBwbHVzIGRcJ3VuIMOpdsOpbmVtZW50IHBvc3PDqWRhbnQgY2V0IGlkICEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdlICVkIHN1ciAlZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ1LDqXN1bHRhdHMgZGUgbGEgUmVjaGVyY2hlIGR1IENhbGVuZHJpZXInOwokbGFuZ1snc2VhcmNoX3dvcmRzJ10gPSAnTW90cyBSZWNoZXJjaMOpcyc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnQXVjdW4gcsOpc3VsdGF0IHRyb3V2w6kgY29ycmVzcG9uZGFudCDDoCBsYSBkZW1hbmRlJzsKJGxhbmdbJ2ZyZXF1ZW5jeSddID0gJ0Zyw6lxdWVuY2UnOwokbGFuZ1snc3BlY2lmaWVkX2RhdGUnXSA9ICdVdGlsaXNlciBsYSBkYXRlIHNww6ljaWZpw6llJzsKJGxhbmdbJ2ZpcnN0X3N1bmRheSddID0gJ1ByZW1pZXIgZGltYW5jaGUgZHUgbW9pcyc7CiRsYW5nWydmaXJzdF9tb25kYXknXSA9ICdQcmVtaWVyIGx1bmRpIGR1IG1vaXMnOwokbGFuZ1snZmlyc3RfdHVlc2RheSddID0gJ1ByZW1pZXIgbWFyZGkgZHUgbW9pcyc7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdQcmVtaWVyIG1lcmNyZWRpIGR1IG1vaXMnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdQcmVtaWVyIGpldWRpIGR1IG1vaXMnOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnUHJlbWllciB2ZW5kcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ2ZpcnN0X3NhdHVyZGF5J10gPSAnUHJlbWllciBzYW1lZGkgZHUgbW9pcyc7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnRGV1eGnDqG1lIGRpbWFuY2hlIGR1IG1vaXMnOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ0RldXhpw6htZSBsdW5kaSBkdSBtb2lzJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnRGV1eGnDqG1lIG1hcmRpIGR1IG1vaXMnOwokbGFuZ1snc2Vjb25kX3dlZG5lc2RheSddID0gJ0RldXhpw6htZSBtZXJjcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ3NlY29uZF90aHVyc2RheSddID0gJ0RldXhpw6htZSBqZXVkaSBkdSBtb2lzJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdEZXV4acOobWUgdmVuZHJlZGkgZHUgbW9pcyc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdEZXV4acOobWUgc2FtZWRpIGR1IG1vaXMnOwokbGFuZ1sndGhpcmRfc3VuZGF5J10gPSAnVHJvaXNpw6htZSBkaW1hbmNoZSBkdSBtb2lzJzsKJGxhbmdbJ3RoaXJkX21vbmRheSddID0gJ1Ryb2lzacOobWUgbHVuZGkgZHUgbW9pcyc7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVHJvaXNpw6htZSBtYXJkaSBkdSBtb2lzJzsKJGxhbmdbJ3RoaXJkX3dlZG5lc2RheSddID0gJ1Ryb2lzacOobWUgbWVyY3JlZGkgZHUgbW9pcyc7CiRsYW5nWyd0aGlyZF90aHVyc2RheSddID0gJ1Ryb2lzacOobWUgamV1ZGkgZHUgbW9pcyc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdUcm9pc2nDqG1lIHZlbmRyZWRpIGR1IG1vaXMnOwokbGFuZ1sndGhpcmRfc2F0dXJkYXknXSA9ICdUcm9pc2nDqG1lIHNhbWVkaSBkdSBtb2lzJzsKJGxhbmdbJ2ZvdXJ0aF9zdW5kYXknXSA9ICdRdWF0cmnDqG1lIGRpbWFuY2hlIGR1IG1vaXMnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ1F1YXRyacOobWUgbHVuZGkgZHUgbW9pcyc7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ1F1YXRyacOobWUgbWFyZGkgZHUgbW9pcyc7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnUXVhdHJpw6htZSBtZXJjcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ1F1YXRyacOobWUgamV1ZGkgZHUgbW9pcyc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnUXVhdHJpw6htZSB2ZW5kcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ1F1YXRyacOobWUgc2FtZWRpIGR1IG1vaXMnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdEZXJuaWVyIGRpbWFuY2hlIGR1IG1vaXMnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdEZXJuaWVyIGx1bmRpIGR1IG1vaXMnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnRGVybmllciBtYXJkaSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3Rfd2VkbmVzZGF5J10gPSAnRGVybmllciBtZXJjcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3RfdGh1cnNkYXknXSA9ICdEZXJuaWVyIGpldWRpIGR1IG1vaXMnOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdEZXJuaWVyIHZlbmRyZWRpIGR1IG1vaXMnOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0Rlcm5pZXIgc2FtZWRpIGR1IG1vaXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdGcsOpcXVlbmNlIGludmFsaWRlLi4uIHZvdXMgbmUgcG91dmV6IHNww6ljaWZpZXIgRVQgbGEgZGF0ZSBFVCBkXCdhdXRyZXMgdmFsZXVycyc7CiRsYW5nWydzZWFyY2hyZXN1bHR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWpvdXRlci9Nb2RpZmllciB1biBnYWJhcml0IHBvdXIgbGVzIHLDqXN1bHRhdHMgZGUgcmVjaGVyY2hlJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RlIGRlcyBnYWJhcml0cyBxdWkgc29udCBkaXNwb25pYmxlcyBwb3VyIGxcJ2FmZmljaGFnZSBkZXMgcsOpc3VsdGF0cyBkZSBsYSByZWNoZXJjaGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ0dhYmFyaXQgZGUgZm9ybXVsYWlyZSBkZSByw6lzdWx0YXQgcGFyIGTDqWZhdXQnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnR2FiYXJpdCBwb3VyIGxlcyByw6lzdWx0YXRzIGRlIHJlY2hlcmNoZSc7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdSw6pxdWV0ZSBlbiBiYXNlIMOpY2hvdcOpZSc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ0xlcyBkYXRlcyBpbmRpcXXDqWVzIHBvdXIgbGEgcmVjaGVyY2hlIHNvbnQgaW52YWxpZGVzJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0ZSc7CiRsYW5nWydzZWFyY2gnXSA9ICdSZWNoZXJjaGUnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXTDqWdvcmllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdHYWJhcml0IGRlIGZvcm11bGFpcmUgZGUgcmVjaGVyY2hlIHBhciBkw6lmYXV0JzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBam91dGVyL01vZGlmaWVyIHVuIGdhYmFyaXQgZGUgZm9ybXVsYWlyZSBkZSByZWNoZXJjaGUnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGUgZGVzIGdhYmFyaXRzIHF1aSBzb250IGRpc3BvbmlibGVzIHBvdXIgbGUgZm9ybXVsYWlyZSBkZSByZWNoZXJjaGUnOwokbGFuZ1snY2FsX3NlYXJjaF9mb3JtX3RlbXBsYXRlcyddID0gJ0dhYmFyaXRzIGRlIGZvcm11bGFpcmUgZGUgcmVjaGVyY2hlJzsKJGxhbmdbJ21heCddID0gJ21heC4nOwokbGFuZ1sndGltZXMnXSA9ICdmb2lzJzsKJGxhbmdbJ29uJ10gPSAnc3VyJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgZmFpcmUgY2VjaSA/IFNpIHZvdXMgcG91cnN1aXZleiwgdm91cyBhbGxlciBlZmZhY2VyIGRlIG1hbmnDqHJlIGTDqWZpbml0aXZlIHRvdXRlcyBsZXMgZG9ubsOpZXMgYXNzb2Npw6llcyDDoCBjZSBtb2R1bGUuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnTGUgbW9kdWxlIENhbGVuZHJpZXIgKENHKSBhIMOpdMOpIGTDqXNpbnN0YWxsw6kgZXQgdG91cyBsZXMgw6l2w6luZW1lbnRzIGV0IGxlcyBpbmZvcm1hdGlvbnMgZGUgZ2FiYXJpdCBhc3NvY2nDqXMgw6AgY2UgbW9kdWxlIG9udCDDqXTDqSBzdXBwcmltw6lzLic7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdDaGFtcCBtaXMgw6Agam91ci4nOwokbGFuZ1snZXZlcnknXSA9ICdUb3VzIGxlcyc7CiRsYW5nWydvciddID0gJ291JzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ01ldHRyZSDDoCBqb3VyIGxlcyBzb3VzLcOpdsOpbmVtZW50cyBhc3NvY2nDqXMnOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ1ZvdXMgZGV2ZXogc8OpbGVjdGlvbm5lciBhdSBtb2lucyB1bmUgY2F0w6lnb3JpZS4nOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnUmllbiBuXCdhIMOpdMOpIHPDqWxlY3Rpb25uw6kgcG91ciBsXCdlZmZhY2VtZW50Lic7CiRsYW5nWydlcnJvcl9ldmVudG92ZXJsYXAnXSA9ICdWb3MgcGFyYW3DqHRyZXMgZGUgcsOpcMOpdGl0aW9uIGRcJ8OpdsOpbmVtZW50IGVuZ2VuZHJlbnQgdW4gY2hldmF1Y2hlbWVudCBkXCfDqXbDqW5lbWVudHMuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1LDqXDDqXRpdGlvbnMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ1VuZSBvdSBwbHVzaWV1cnMgdmFsZXVycyBlbnRyw6llcyBwb3VyIGxhIGRhdGUgc29udCBpbmNvcnJlY3Rlcyc7CiRsYW5nWydzdW5kYXknXSA9ICdEaW1hbmNoZSc7CiRsYW5nWydtb25kYXknXSA9ICdMdW5kaSc7CiRsYW5nWyd0dWVzZGF5J10gPSAnTWFyZGknOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnTWVyY3JlZGknOwokbGFuZ1sndGh1cnNkYXknXSA9ICdKZXVkaSc7CiRsYW5nWydmcmlkYXknXSA9ICdWZW5kcmVkaSc7CiRsYW5nWydzYXR1cmRheSddID0gJ1NhbWVkaSc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ0RpJzsKJGxhbmdbJ2FiYnJfbW9uZGF5J10gPSAnTHUnOwokbGFuZ1snYWJicl90dWVzZGF5J10gPSAnTWEnOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdNZSc7CiRsYW5nWydhYmJyX3RodXJzZGF5J10gPSAnSmUnOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdWZSc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnU2EnOwokbGFuZ1snd2VlayddID0gJ1NlbWFpbmUnOwokbGFuZ1snbW9udGgnXSA9ICdNb2lzJzsKJGxhbmdbJ2RheSddID0gJ0pvdXInOwokbGFuZ1sndG9kYXknXSA9ICdBdWpvdXJkXCdodWknOwokbGFuZ1snd2Vla2RheXMnXSA9ICdKb3VycyBkZSBsYSBzZW1haW5lJzsKJGxhbmdbJ3BsdXJhbF9ub25lJ10gPSAnUmllbic7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdKb3Vycyc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnU2VtYWluZXMnOwokbGFuZ1sncGx1cmFsX21vbnRobHknXSA9ICdNb2lzJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbm7DqWVzJzsKJGxhbmdbJ25vJ10gPSAnTm9uJzsKJGxhbmdbJ2RhaWx5J10gPSAnQ2hhcXVlIGpvdXInOwokbGFuZ1snd2Vla2x5J10gPSAnQ2hhcXVlIHNlbWFpbmUnOwokbGFuZ1snbW9udGhseSddID0gJ0NoYXF1ZSBtb2lzJzsKJGxhbmdbJ3llYXJseSddID0gJ0NoYXF1ZSBhbm7DqWUnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdSw6lww6l0ZXIgY2hhcXVlJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRMOpdGFpbHMgZGVzIMOpdsOpbmVtZW50cyByw6lww6l0aXRpZnMnOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnSWxsaW1pdMOpJzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdOb21icmUgbWF4aW11bSBkZSBzb3VzLcOpdsOpbmVtZW50cyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ1Nww6ljaWZpZXIgdW5lIGRhdGUgZGUgZmluIGRpZmbDqXJlbnRlID8nOwokbGFuZ1snY2FuY2VsJ10gPSAnQW5udWxlcic7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ0FmZmljaGVyIGxlcyBzb3VzLcOpdsOpbmVtZW50cyA8ZW0+KHBldXQgY2F1c2VyIHVuIGFmZmljaGFnZSB0csOocyBsb25nKTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdSw6lww6l0aXRpb24ganVzcXVcJ8OgJzsKJGxhbmdbJ3BhcmVudCddID0gJ1BhcmVudCc7CiRsYW5nWydyZWN1cl9wZXJpb2QnXSA9ICdQw6lyaW9kZSBkZSByw6lww6l0aXRpb24nOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdHJlJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdEYXRlIGRlIGTDqWJ1dCc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0RhdGUgZGUgZmluJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RlIGRlcyBnYWJhcml0cyBkaXNwb25pYmxlcyBwb3VyIGFmZmljaGVyIGxlcyDDqXbDqW5lbWVudHMgw6AgdmVuaXInOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0Fqb3V0ZXIvbW9kaWZpZXIgdW4gZ2FiYXJpdCBkXCdhZmZpY2hhZ2UgZGVzIMOpdsOpbmVtZW50cyDDoCB2ZW5pcic7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnR2FiYXJpdC1zeXN0w6htZSBwYXIgZMOpZmF1dCBwb3VyIGFmZmljaGVyIGxlcyDDqXbDqW5lbWVudHMgw6AgdmVuaXInOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RlIGRlcyBnYWJhcml0cyBkaXNwb25pYmxlcyBwb3VyIGFmZmljaGVyIGxhIGxpc3RlIGRlcyDDqXbDqW5lbWVudHMnOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBam91dGVyL21vZGlmaWVyIHVuIGdhYmFyaXQgcG91ciBhZmZpY2hlciBsYSBsaXN0ZSBkZXMgw6l2w6luZW1lbnRzJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnR2FiYXJpdC1zeXN0w6htZSBwYXIgZMOpZmF1dCBwb3VyIGFmZmljaGVyIGxhIGxpc3RlIGRlcyDDqXbDqW5lbWVudHMnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMYSBsaXN0ZSBkZXMgZ2FiYXJpdHMgZGlzcG9uaWJsZXMgcG91ciBhZmZpY2hlciB1biDDqXbDqW5lbWVudCBlbiBkw6l0YWlsJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0Fqb3V0ZXIvbW9kaWZpZXIgdW4gZ2FiYXJpdCBkXCdhZmZpY2hhZ2UgZFwndW4gw6l2w6luZW1lbnQgZW4gZMOpdGFpbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdHYWJhcml0LXN5c3TDqG1lIHBhciBkw6lmYXV0IHBvdXIgYWZmaWNoZXIgdW4gw6l2w6luZW1lbnQgZW4gZMOpdGFpbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZnVsbGNhbGVuZGFyX3RlbXBsYXRlJ10gPSAnR2FiYXJpdC1zeXN0w6htZSBwYXIgZMOpZmF1dCBwb3VyIGxlIGNhbGVuZHJpZXIgZnVsbENhbGVuZGFyJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGUgZGVzIGdhYmFyaXRzIGRpc3BvbmlibGVzIHBvdXIgYWZmaWNoZXIgdW4gY2FsZW5kcmllcic7CiRsYW5nWydpbmZvX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdMYSBsaXN0ZSBkZXMgZ2FiYXJpdHMgZGlzcG9uaWJsZXMgcG91ciBhZmZpY2hlciB1biBjYWxlbmRyaWVyIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydmdWxsY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWpvdXRlci9tb2RpZmllciB1biBnYWJhcml0IGRcJ2FmZmljaGFnZSBkXCd1biBjYWxlbmRyaWVyIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBam91dGVyL21vZGlmaWVyIHVuIGdhYmFyaXQgZFwnYWZmaWNoYWdlIGRcJ3VuIGNhbGVuZHJpZXInOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnR2FiYXJpdC1zeXN0w6htZSBwYXIgZMOpZmF1dCBwb3VyIGFmZmljaGVyIHVuIGNhbGVuZHJpZXInOwokbGFuZ1snaW5mb19zeXNkZmx0X3RlbXBsYXRlJ10gPSAnQ2UgZm9ybXVsYWlyZSBkw6lmaW5pdCBsZSBnYWJhcml0IHF1aSBzZXJhIHV0aWxpc8OpIGxvcnNxdWUgdm91cyBjbGlxdWVyZXogc3VyICJOb3V2ZWF1IGdhYmFyaXQiIGRhbnMgbFwnb25nbGV0IGFwcHJvcHJpw6kuIE1vZGlmaWVyIHNvbiBjb250ZW51IG5cJ2EgcGFzIGRcJ2VmZmV0IGltbcOpZGlhdCBzdXIgbGVzIGFmZmljaGFnZXMgaW52b3F1YW50IGRlcyBnYWJhcml0cyBleGlzdGFudHMsIG1haXMgc1wnYXBwbGlxdWVyYSBhdXggcHJvY2hhaW5zIGdhYmFyaXRzIGNyw6nDqXMuJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnQXBwZWzDqSBhcHLDqHMgbFwnYWpvdXQgZFwndW4gw6l2w6luZW1lbnQgZGUgY2FsZW5kcmllcic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdBcHBlbMOpIGFwcsOocyBsXCfDqWRpdGlvbiBkXCd1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyIGV4aXN0YW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdBcHBlbMOpIGFwcsOocyBxdVwndW4gw6l2w6luZW1lbnQgYWl0IMOpdMOpIHN1cHByaW3DqSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0FwcGVsw6kgYXByw6hzIGxhIGNyw6lhdGlvbiBkXCd1bmUgY2F0w6lnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdBcHBlbMOpIGFwcsOocyBsXCfDqWRpdGlvbiBkXCd1bmUgY2F0w6lnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQXBwZWzDqSBhcHLDqHMgcXVcJ3VuZSBjYXTDqWdvcmllIGFpZSDDqXTDqSBzdXBwcmltw6llJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+RW52b3nDqSBxdWFuZCB1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyIGVzdCBham91dMOpLjwvcD4NCjxoND5QYXJhbcOodHJlczwvaDQ+DQo8dWw+DQo8bGk+XCJldmVudF90aXRsZVwiIC0gVGl0cmUgZGUgbFwnw6l2w6luZW1lbnQ8L2xpPg0KPGxpPlwiZXZlbnRfc3VtbWFyeVwiIC0gVGV4dGUgZHUgc29tbWFpcmU8L2xpPg0KPGxpPlwiZXZlbnRfZGV0YWlsc1wiIC0gRGVzY3JpcHRpb24gZMOpdGFpbGzDqWU8L2xpPg0KPGxpPlwiZXZlbnRfZGF0ZV9zdGFydFwiIC0gRGF0ZSBldCBoZXVyZSBkdSBkw6lidXQgZGUgbFwnw6l2w6luZW1lbnQ8L2xpPg0KPGxpPlwiZXZlbnRfZGF0ZV9lbmRcIiAtIERhdGUgZXQgaGV1cmUgZGUgbGEgZmluIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIExlIHVzZXJpZCBkZSBsXCdhdXRldXI8L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIExcJ2lkIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPkVudm95w6kgcXVhbmQgdW4gw6l2w6luZW1lbnQgZGUgY2FsZW5kcmllciBlc3Qgw6lkaXTDqS48L3A+DQo8aDQ+UGFyYW3DqHRyZXM8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIFRpdHJlIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cImV2ZW50X3N1bW1hcnlcIiAtIFRleHRlIGR1IHNvbW1haXJlPC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERlc2NyaXB0aW9uIGTDqXRhaWxsw6llPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfc3RhcnRcIiAtIERhdGUgZXQgaGV1cmUgZHUgZMOpYnV0IGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBEYXRlIGV0IGhldXJlIGRlIGxhIGZpbiBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8bGk+XCJldmVudF9jcmVhdGVkX2J5XCIgLSBMZSB1c2VyaWQgZGUgbFwnYXV0ZXVyPC9saT4NCjxsaT5cImV2ZW50X2lkXCIgLSBMXCdpZCBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+RW52b3nDqSBxdWFuZCB1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyIGVzdCBzdXBwcmltw6kuPC9wPg0KPGg0PlBhcmFtw6h0cmVzPC9oND4NCjx1bD4NCjxsaT5cImV2ZW50X2lkXCIgLSBMXCdpZCBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPkVudm95w6kgcXVhbmQgdW5lIGNhdMOpZ29yaWUgZGUgY2FsZW5kcmllciBlc3QgYWpvdXTDqWUuPC9wPg0KPGg0PlBhcmFtw6h0cmVzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBMXCdpZCBkZSBsYSBjYXTDqWdvcmllPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPkVudm95w6kgcXVhbmQgdW5lIGNhdMOpZ29yaWUgZGUgY2FsZW5kcmllciBlc3Qgw6lkaXTDqWUuPC9wPg0KPGg0PlBhcmFtw6h0cmVzPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBMXCdpZCBkZSBsYSBjYXTDqWdvcmllPC9saT4NCjxsaT5cImNhdGVnb3J5X25hbWVcIiAtIExlIG5vbSBkZSBsYSBjYXTDqWdvcmllPC9saT4NCjxsaT5cImNhdGVnb3J5X29yZGVyXCIgLSBMXCdvcmRyZSBkZSB0cmkgZGUgbGEgY2F0w6lnb3JpZTwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+RW52b3nDqSBxdWFuZCB1bmUgY2F0w6lnb3JpZSBkZSBjYWxlbmRyaWVyIGVzdCBzdXBwcmltw6llLjwvcD4NCjxoND5QYXJhbcOodHJlczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gTFwnaWQgZGUgbGEgY2F0w6lnb3JpZTwvbGk+DQo8bGk+XCJjYXRlZ29yeV9uYW1lXCIgLSBMZSBub20gZGUgbGEgY2F0w6lnb3JpZTwvbGk+DQo8bGk+XCJjYXRlZ29yeV9vcmRlclwiIC0gTFwnb3JkcmUgZGUgdHJpIGRlIGxhIGNhdMOpZ29yaWU8L2xpPg0KPC91bD4nOwokbGFuZ1snZXJyb3JfY3N2X2luc2VydCddID0gJ0VycmV1ciBkdXJhbnQgbFwnaW1wb3J0YXRpb24gZGVzIMOpdsOobmVtZW50cyBkZXB1aXMgbGUgY3NzIMOgIGxhIGxpZ25lICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnVW4gY2hhbXBzIG9ibGlnYXRvaXJlOiAlcywgblwnYSBwdSDDqnRyZSB0cm91dsOpIGRhbnMgbGEgbGlnbmUgZFwnZW50w6p0ZSBkdSBmaWNoaWVyIGNzdic7CiRsYW5nWydlcnJvcl9jc3ZpbnZhbGlkZmlyc3RsaW5lJ10gPSAnTmUgcGV1dCB0cm91dmVyIHVuZSBsaWduZSBkXCdlbnTDqnRlIHZhbGlkZSBkYW5zIGxlIGZpY2hpZXIgQ1NWJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAnw4l2w6luZW1lbnQgYWpvdXTDqSc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ1VuIG5vbSBwb3VyIGxcJ8OpdsOpbmVtZW50IGRvaXQgw6p0cmUgZMOpZmluaXQnOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJFVVImbmJzcDs6IEF1Y3VuIGZpY2hpZXIgdXBsb2Fkw6kgdHJvdXbDqSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJFVVImbmJzcDs6IExlIGZpY2hpZXIgdXBsb2Fkw6kgbmUgcGV1dCBwYXMgw6p0cmUgYWNjZXB0w6knOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUlJFVVImbmJzcDs6IElsIHkgYSBldSB1biBwcm9ibMOobWUgbG9ycyBkZSBsXCd1cGxvYWQgZHUgZmljaGllcic7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VSUkVVUiZuYnNwOzogSWwgeSBhIGV1IHVuIHByb2Jsw6htZSBsb3JzIGRlIGxhIGNvcGllIGR1IGZpY2hpZXIgw6Agc29uIGVtcGxhY2VtZW50IGZpbmFsJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJFVVImbmJzcDs6IFVuIGZpY2hpZXIgYXZlYyBsZSBtw6ptZSBub20gZXhpc3RlIGTDqWrDoCc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdFUlJFVVImbmJzcDs6IEltcG9zc2libGUgZGUgdHJvdXZlciBsZSBmaWNoaWVyIENTVic7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUlJFVVImbmJzcDs6IEltcG9zc2libGUgZFwnb3V2cmlyIGxlIGZpY2hpZXInOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJFVVImbmJzcDs6IFVuZSBjYXTDqWdvcmllIGF2ZWMgbGUgbm9tICVzIGV4aXN0ZSBkw6lqw6AnOwokbGFuZ1snY2FsX2lkJ10gPSAnSUQnOwokbGFuZ1snY2FsX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0dhYmFyaXRzIGRlIGNhbGVuZHJpZXIgY29tcGxldCAoZnVsbENhbGVuZGFyKSc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdDYWxlbmRyaWVyIChDRyknOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnR2FiYXJpdHMgcGFyIGTDqWZhdXQnOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQWpvdXQsIMOpZGl0aW9uIGV0IHN1cHByZXNzaW9uIGRcJ8OpdsOpbmVtZW50cyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdBam91dGVyIHVuIMOpdsOpbmVtZW50JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0ZXIgZGVzIMOpdsOpbmVtZW50cyc7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAnw4l2w6luZW1lbnRzJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0w6lnb3JpZXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnR2FiYXJpdHMgZGUgY2FsZW5kcmllcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ0dhYmFyaXRzIGRlIGxpc3RlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdHYWJhcml0cyBkXCfDqXbDqW5lbWVudCDDoCB2ZW5pcic7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdHYWJhcml0cyBkXCfDqXbDqW5lbWVudCBkw6l0YWlsbMOpcyc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyc7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrIFByw6ljw6lkZW50JzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU3VpdmFudCDCuyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0w6lnb3JpZXMgbWlzZXMgw6Agam91cic7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1BhcmFtw6h0cmVzIG1pcyDDoCBqb3VyJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdBam91dGVyIHVuIMOpdsOpbmVtZW50JzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRWRpdGVyJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTdXBwcmltZXInOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgPyc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnTWV0dHJlIMOgIGpvdXIgbGUgZ2FiYXJpdCc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRGltYW5jaGUnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0x1bmRpJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnTWFyZGknOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ01lcmNyZWRpJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ0pldWRpJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdWZW5kcmVkaSc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTYW1lZGknOwokbGFuZ1snY2FsX3N1biddID0gJ0RpbSc7CiRsYW5nWydjYWxfbW9uJ10gPSAnTHVuJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnTWFyJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdNZXInOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnSmV1JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdWZW4nOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhbSc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phbnZpZXInOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnRsOpdnJpZXInOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFycyc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdBdnJpbCc7CiRsYW5nWydjYWxfbWF5J10gPSAnTWFpJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSnVpbic7CiRsYW5nWydjYWxfanVseSddID0gJ0p1aWxsZXQnOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ0Fvw7t0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1icmUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3RvYnJlJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYnJlJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0TDqWNlbWJyZSc7CiRsYW5nWydjYWxfYWRkJ10gPSAnQWpvdXQnOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ01pc2Ugw6Agam91cic7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICfDiXbDqW5lbWVudCc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTb21tYWlyZSc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0TDqXRhaWxzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAncGx1cyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV0b3VyJzsKJGxhbmdbJ2NhbF90byddID0gJ2F1JzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ8OJdsOpbmVtZW50cyBwYXNzw6lzJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFdsOpbmVtZW50cyDDoCB2ZW5pcic7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnTlwnaW1wb3J0ZSBxdWVsbGUgY2F0w6lnb3JpZSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ0FmZmljaGVyIHNldWxlbWVudCBsZXMgw6l2w6luZW1lbnRzIGRlIGxhIGNhdMOpZ29yaWUnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRyZSBwYXIgPGVtPihleHByZXNzaW9uIHLDqWd1bGnDqHJlKTwvZW0+JzsKJGxhbmdbJ2NhbF9nbyddID0gJ0FsbGVyJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1RpdHJlJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhdGUgZGUgZMOpYnV0JzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdEYXRlIGRlIGZpbic7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdNaXNlIMOgIGpvdXIgZGVzIGNhdMOpZ29yaWVzJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ0xhbmd1ZSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdNaXNlIMOgIGpvdXIgZGVzIHBhcmFtw6h0cmVzJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdVdGlsaXNlciBsZSBmb3JtYXQgMTIgaGV1cmVzIGRhbnMgbGVzIG1lbnVzIGTDqXJvdWxhbnRzIGRcJ2hldXJlcyA/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnQ2F0w6lnb3JpZSBwYXIgZMOpZmF1dCc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ01ldHRyZSDDoCBqb3VyIGxlcyBjaGFtcHMnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdGb3JjZXIgYXUgbW9pbnMgdW5lIGNhdMOpZ29yaWUnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ05vbWJyZSBkXCdhbm7DqWVzIGF1dG9yaXPDqWVzIGRhbnMgbGUgcGFzc8OpJzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ05vbWJyZSBkXCdhbm7DqWVzIGF1dG9yaXPDqWVzIGRhbnMgbGUgZnV0dXInOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdMZSBjaGFtcCBzb21tYWlyZSBkb2l0LWlsIMOqdHJlIGNhY2jDqSA/JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnTGUgY2hhbXAgY29udGVudSBkb2l0LWlsIMOqdHJlIGNhY2jDqSA/JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnVmV1aWxsZXogc8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNhdMOpZ29yaWUocykgcG91ciBjZXQgw6l2w6luZW1lbnQnOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0NhbGVuZHJpZXIgKENHKSA6IGV4ZW1wbGUgZGUgQ1NTJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdWb3VzIGF2ZXogYmVzb2luIGRlIGxhIHBlcm1pc3Npb24gYXBwcm9wcmnDqWUgKCVzKSBwb3VyIGFjY8OpZGVyIMOgIGNldHRlIGZvbmN0aW9ubmFsaXTDqSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnQXNzdXJlei12b3VzIGRlIGTDqWZpbmlyIGxhIHBlcm1pc3Npb24gIk1vZGlmeSBDYWxlbmRhciIgcG91ciBsZXMgdXRpbGlzYXRldXJzIHF1aSBhZG1pbmlzdHJlcm9udCBsZXMgw6l2w6luZW1lbnRzIGRlIGNhbGVuZHJpZXInOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnU3VwcHJpbWVyIGxlcyDDqXbDqW5lbWVudHMgc8OpbGVjdGlvbm7DqXMnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ8OKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZXMgw6l2w6luZW1lbnRzID8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0xlcyDDqXbDqW5lbWVudHMgc8OpbGVjdGlvbm7DqXMgb250IMOpdMOpIHN1cHByaW3DqXMnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnR2FiYXJpdHMnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ0FpZGUgcG91ciBsZXMgZ2FiYXJpdHMnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdHYWJhcml0cyBzb3VzIGZvcm1lIGRlIGZpY2hpZXJzJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnQWpvdXRlciB1biBnYWJhcml0JzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnR2FiYXJpdCc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAnTm9tIGR1IGdhYmFyaXQnOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnw4lkaXRlciBsZSBnYWJhcml0JzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnU3VwcHJpbWVyIGxlIGdhYmFyaXQnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb20gZHUgbm91dmVhdSBnYWJhcml0JzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0VycmV1ciZuYnNwOzogVW4gZ2FiYXJpdCBleGlzdGUgZMOpasOgIGF2ZWMgY2Ugbm9tLiBWZXVpbGxleiBjaG9pc2lyIHVuIGF1dHJlIG5vbS4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0xlIGdhYmFyaXQgYSDDqXTDqSBpbXBvcnTDqSBhdmVjIHN1Y2PDqHMgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzIGV0IGVzdCBtYWludGVuYW50IGluc3RhbGzDqSBldCBwcsOqdCDDoCDDqnRyZSB1dGlsaXPDqS4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWb2lyIGxhIGZldWlsbGUgZGUgc3R5bGUgcGFyIGTDqWZhdXQnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdOb20gZGUgZmljaGllcic7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGVyIHVuIGdhYmFyaXQnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ0xlIGdhYmFyaXQgYSDDqXTDqSBzdXBwcmltw6kgZGUgbGEgYmFzZSBkZSBkb25uw6llcyBhdmVjIHN1Y2PDqHMnOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnTGUgZ2FiYXJpdCBhIMOpdMOpIG1pcyDDoCBqb3VyIGF2ZWMgc3VjY8Oocyc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSBwZW5kYW50IGxhIG1pc2Ugw6Agam91ciBkdSBnYWJhcml0JzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdMZXMgcGFyYW3DqHRyZXMgb250IMOpdMOpIHNhdXZlZ2FyZMOpcyBhdmVjIHN1Y2PDqHMnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnTGEgY2F0w6lnb3JpZSBhIMOpdMOpIHN1cHByaW3DqWUnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnTGEgY2F0w6lnb3JpZSBhIMOpdMOpIG1pc2Ugw6Agam91cic7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnTGEgY2F0w6lnb3JpZSBhIMOpdMOpIGFqb3V0w6llJzsKJGxhbmdbJ2V2ZW50ZGVsZXRlZCddID0gJ0xcJ8OpdsOpbmVtZW50IGEgw6l0w6kgc3VwcHJpbcOpJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0xcJ8OpdsOpbmVtZW50IGEgw6l0w6kgbWlzIMOgIGpvdXInOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnRXJyZXVyJm5ic3A7OiBWb3VzIGRldmV6IGTDqWZpbmlyIHVuZSBwYWdlIHBhciBkw6lmYXV0IHBvdXIgdXRpbGlzZXIgbGUgY2FsZW5kcmllciBsb3JzcXVlICJwcmV0dHkgVVJMcyIgZXN0IGFjdGl2w6kuIFZldWlsbGV6IGFsbGVyIMOgIGxcJ29uZ2xldCBkZXMgcGFyYW3DqHRyZXMgZHUgY2FsZW5kcmllciBldCBkw6lmaW5pciB1bmUgcGFnZSBwYXIgZMOpZmF1dC4nOwokbGFuZ1sndGltZV9hdCddID0gJ8OgJzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ25hbWUnXSA9ICdOb20nOwokbGFuZ1snb3JkZXInXSA9ICdPcmRyZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnQ2hhbXAgYWpvdXTDqSBhdmVjIHN1Y2PDqHMnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnQ2hhbXAgc3VwcHJpbcOpJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0NoYW1wcyBwYXIgZMOpZmF1dCc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdDaGFtcCB0ZXh0ZSc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0NoYW1wIGRcJ3VwbG9hZCBkZSBmaWNoaWVyJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+TGUgbW9kdWxlIENhbGVuZHJpZXIgKENHKSBhZmZpY2hlIGRlcyDDqXbDqW5lbWVudHMgc3VyIHZvdHJlIHBhZ2UuIFF1YW5kIGxlIG1vZHVsZSBlc3QgaW5zdGFsbMOpLCB1bmUgcGFnZSBkXCdhZG1pbmlzdHJhdGlvbiBkZSBjYWxlbmRyaWVyIGVzdCBham91dMOpZSBhdSBtZW51IENvbnRlbnUsIGV0IHZvdXMgcGVybWV0IGRlIGfDqXJlciB2b3Mgw6l2w6luZW1lbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1BhZ2UgcGFyIGTDqWZhdXQgcXVpIGNvbnRpZW50IGxlIGNhbGVuZHJpZXIuIENldHRlIHBhZ2UgZG9pdCBjb250ZW5pciBsYSBiYWxpc2Ugc21hcnR5IHF1aSBhcHBlbGxlIGxlIGNhbGVuZHJpZXIuIE7DqWNlc3NhaXJlIHNpIHZvdXMgdXRpbGlzZXogbGVzICJwcmV0dHkgVVJMcyIuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0Rvc3NpZXIgb8O5IGxlcyBmaWNoaWVycyB1cGxvYWTDqXMgZG9pdmVudCDDqnRyZSBzdG9ja8Opcyc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdUeXBlcyBkZSBmaWNoaWVycyBhdXRvcmlzw6lzJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ1NcJ2Fzc3VyZXIgcXVlIGxlcyBub21zIGRlIGZpY2hpZXJzIHNvaWVudCB1bmlxdWVzJzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdSw6lww6l0aXRpb24nOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnUsOpcMOodGUganVzcXVcJ8OgJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5BZmZpY2hlIGxlIG5vbSBkZSBsXCdhdXRldXIgOjwvYj48L3A+DQo8Y29kZT5BdXRldXIgOiB7JGV2ZW50LmF1dGhvcm5hbWV9PC9jb2RlPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/hu_HU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnTmFwdCZhYWN1dGU7ciBlc2VtJmVhY3V0ZTtueSBmZWx2JmVhY3V0ZTt0ZWxlIHV0JmFhY3V0ZTtuIGgmaWFjdXRlO3Ymb2FjdXRlO2Rpayc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdOYXB0JmFhY3V0ZTtyIGVzZW0mZWFjdXRlO255IHN6ZWtyZXN6dCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdOYXB0JmFhY3V0ZTtyIGVzZW0mZWFjdXRlO255IHQmb3VtbDtybCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBsJmVhY3V0ZTt0cmVob3omYWFjdXRlO3NhIHV0JmFhY3V0ZTtuIGgmaWFjdXRlO3Ymb2FjdXRlO2Rpayc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdLYXRlZyZvYWN1dGU7cmlhIHN6ZXJrZXN6dCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdLYXRlZyZvYWN1dGU7cmlhIHQmb3VtbDtybCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAnQXogZXNlbSZlYWN1dGU7bnl0IGhvenomYWFjdXRlO2FkdHVrLic7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0hJQkE6IE5pbmNzIGZlbHQmb3VtbDtsdHZlIGYmYWFjdXRlO2psLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdISUJBOiBBIGZlbHQmb3VtbDtsdCZvdW1sO3R0IGYmYWFjdXRlO2psIG5lbSBlbGZvZ2FkaGF0Jm9hY3V0ZTsnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdISUJBOiBBIGYmYWFjdXRlO2psIGZlbHQmb3VtbDtsdCZlYWN1dGU7c2UgayZvdW1sO3piZW4gaGliYSB0Jm91bWw7cnQmZWFjdXRlO250JzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnSElCQTogSGliYSB0Jm91bWw7cnQmZWFjdXRlO250IG1payZvdW1sO3piZW4gYSB2JmVhY3V0ZTtnbGVnZXMgaGVseSZlYWN1dGU7cmUgbSZhYWN1dGU7c29sdHVrIGEgZiZhYWN1dGU7amx0JzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdISUJBOiBJbHllbiBuZXbFsSBmJmFhY3V0ZTtqbCBtJmFhY3V0ZTtyIGwmZWFjdXRlO3RlemlrJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0hJQkE6IE5lbSB0YWwmYWFjdXRlO2xvbSBhIENTViBmJmFhY3V0ZTtqbHQnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnSElCQTogTmVtIHR1ZG9tIG1lZ255aXRuaSBhIGYmYWFjdXRlO2psdCc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdOYXB0JmFhY3V0ZTtyJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0xlJmlhY3V0ZTtyJmFhY3V0ZTtzJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0VzZW0mZWFjdXRlO255IGZlbHYmZWFjdXRlO3RlbGUnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdFc2VtJmVhY3V0ZTtueWVrIGltcG9ydCZhYWN1dGU7bCZhYWN1dGU7c2EnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0VzZW0mZWFjdXRlO255ZWsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdLYXRlZyZvYWN1dGU7cmkmYWFjdXRlO2snOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTmFwdCZhYWN1dGU7ciBzYWJsb24nOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdMaXN0YSBzYWJsb24nOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ0smdXVtbDtzeiZvdW1sO2Imb3VtbDtuICZhYWN1dGU7bGwmb2FjdXRlOyBlc2VtJmVhY3V0ZTtueWVrIHNhYmxvbmphJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ0VzZW0mZWFjdXRlO255IHNhYmxvbic7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdCZSZhYWN1dGU7bGwmaWFjdXRlO3QmYWFjdXRlO3Nvayc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRWzFkXrFkSc7CiRsYW5nWydjYWxfbmV4dCddID0gJ0smb3VtbDt2ZXRrZXrFkSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdBIGthdGVnJm9hY3V0ZTtyaSZhYWN1dGU7a2F0IGZyaXNzJmlhY3V0ZTt0ZXR0JnV1bWw7ayc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ0EgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2thdCBmcnNzJmlhY3V0ZTt0ZXR0JnV1bWw7ayc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnRXNlbSZlYWN1dGU7bnkgZmVsdiZlYWN1dGU7dGVsZSc7CiRsYW5nWydjYWxfZWRpdCddID0gJ1N6ZXJrZXN6dCZlYWN1dGU7cyc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnVCZvdW1sO3JsJmVhY3V0ZTtzJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnQml6dG9zYW4gdCZvdW1sO3Imb3VtbDtsbmkgYWthcm9kJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdTYWJsb24gZnJpc3MmaWFjdXRlO3QmZWFjdXRlO3NlJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdWYXMmYWFjdXRlO3JuYXAnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0gmZWFjdXRlO3RmxZEnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdLZWRkJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdTemVyZGEnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnQ3MmdXVtbDt0Jm91bWw7cnQmb3VtbDtrJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdQJmVhY3V0ZTtudGVrJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1N6b21iYXQnOwokbGFuZ1snY2FsX3N1biddID0gJ1Zhcyc7CiRsYW5nWydjYWxfbW9uJ10gPSAnSCZlYWN1dGU7dCc7CiRsYW5nWydjYWxfdHVlcyddID0gJ0tlZCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnU3plJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0NzJnV1bWw7JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdQJmVhY3V0ZTtuJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTem8nOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdqYW51JmFhY3V0ZTtyJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2ZlYnJ1JmFhY3V0ZTtyJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ20mYWFjdXRlO3JjaXVzJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJyZhYWN1dGU7cHJpbGlzJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdtJmFhY3V0ZTtqdXMnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdqJnVhY3V0ZTtuaXVzJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnaiZ1YWN1dGU7bGl1cyc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnYXVndXN6dHVzJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdzemVwdGVtYmVyJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnb2t0Jm9hY3V0ZTtiZXInOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnbm92ZW1iZXInOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnZGVjZW1iZXInOwokbGFuZ1snY2FsX2FkZCddID0gJ0hvenomYWFjdXRlO2FkJmFhY3V0ZTtzJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdGcmlzcyZpYWN1dGU7dCZlYWN1dGU7cyc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdFc2VtJmVhY3V0ZTtueSc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0QmYWFjdXRlO3R1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJyZPdW1sO3NzemVmb2dsYWwmb2FjdXRlOyc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ1ImZWFjdXRlO3N6bGV0ZWsnOwokbGFuZ1snY2FsX21vcmUnXSA9ICd0b3YmYWFjdXRlO2JiID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdWaXNzemEnOwokbGFuZ1snY2FsX3RvJ10gPSAnaWcnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnTSZ1YWN1dGU7bHRiZWxpIGVzZW0mZWFjdXRlO255ZWsnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0smdXVtbDtzeiZvdW1sO2Imb3VtbDtuICZhYWN1dGU7bGwmb2FjdXRlOyBlc2VtJmVhY3V0ZTtueWVrJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdUZXRzesWRbGVnZXMga2F0ZWcmb2FjdXRlO3JpYSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ0NzYWsgYXogZXplbiBpZMWRc3pha3JhIGVzxZEgZXNlbSZlYWN1dGU7bnllayBtdXRhdCZhYWN1dGU7c2E6JzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdTesWxciZlYWN1dGU7c2kgZmVsdCZlYWN1dGU7dGVsJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0hhZGQgbWVuamVuJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ0MmaWFjdXRlO20nOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnS2V6ZMWRZCZhYWN1dGU7dHVtJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdCZWZlamV6xZEgZCZhYWN1dGU7dHVtJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ0thdGVnJm9hY3V0ZTtyaSZhYWN1dGU7ayBmcmlzcyZpYWN1dGU7dCZlYWN1dGU7c2UnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnTnllbHYnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2sgZnJpc3MmaWFjdXRlO3QmZWFjdXRlO3NlJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICcxMiAmb2FjdXRlO3ImYWFjdXRlO3MgJm9hY3V0ZTtyJmFhY3V0ZTt0IGhhc3puJmFhY3V0ZTtsanVuayBhIGxlZyZvdW1sO3JkJnV1bWw7bMWRIGxpc3QmYWFjdXRlO2tiYW4/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnQWxhcCZlYWN1dGU7cnRlbG1lemV0dCBrYXRlZyZvYWN1dGU7cmlhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnTWV6xZFrIGZyaXNzJmlhY3V0ZTt0JmVhY3V0ZTtzZSc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0xlZ2FsJmFhY3V0ZTtiYiBlZ3kga2F0ZWcmb2FjdXRlO3JpYSBtZWdhZCZhYWN1dGU7cyZhYWN1dGU7bmFrIGsmb3VtbDt0ZWxlesWRdiZlYWN1dGU7IHQmZWFjdXRlO3RlbGUnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0gmYWFjdXRlO255IG0mdWFjdXRlO2x0YmVsaSAmZWFjdXRlO3YgbWVnZW5nZWRldHQ/JzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ0gmYWFjdXRlO255IGomb3VtbDt2xZFiZWxpICZlYWN1dGU7diBtZWdlbmdlZGV0dD8nOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdFbHJlanRzJnV1bWw7ayBheiAmb3VtbDtzc3plZm9nbGFsJm9hY3V0ZTsgbWV6xZF0Pyc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0VscmVqdHMmdXVtbDtrIGEgdGFydGFsb20gbWV6xZF0Pyc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ0smZWFjdXRlO3JsZWssIGVsbGVuxZFyaXpkIGEga2F0ZWcmb2FjdXRlO3JpJmFhY3V0ZTtrYXQgZWhoZXogYXogZXNlbSZlYWN1dGU7bnloZXonOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ1AmZWFjdXRlO2xkYSBuYXB0JmFhY3V0ZTtyIENTUy1yZSc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnTWVnZmVsZWzFkSBqb2dvc3VsdHMmYWFjdXRlO2dyYSAoJXMpIHZhbiBzeiZ1dW1sO2tzJmVhY3V0ZTtnIGV6ZW4gZnVua2Npb25hbGl0JmFhY3V0ZTtzIGVsJmVhY3V0ZTtyJmVhY3V0ZTtzJmVhY3V0ZTtoZXonOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ0d5xZF6xZFkaiBtZWcgciZvYWN1dGU7bGEsIGhvZ3kgbWVnYWR0YWQgYSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgam9nb3N1bHRzJmFhY3V0ZTtnb3QgYXpva25hayBhIGZlbGhhc3puJmFhY3V0ZTtsJm9hY3V0ZTtrbmFrLCBha2lrIGEgbmFwdCZhYWN1dGU7cmF0IGZvZ2omYWFjdXRlO2sga2FyYmFudGFydGFuaSc7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdNZWdqZWwmb3VtbDtsdCBlc2VtJmVhY3V0ZTtueWVrIHQmb3VtbDtybCZlYWN1dGU7c2UnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0JpenRvc2FuIHQmb3VtbDtybCZvdW1sO2QgZXpla2V0IGF6IGVzZW0mZWFjdXRlO255ZWtldD8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0EgbWVnamVsJm91bWw7bHQgZXNlbSZlYWN1dGU7bnlla2V0IHQmb3VtbDtyJm91bWw7bHQmdXVtbDtrJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1NhYmxvbm9rJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdTYWJsb24gcyZ1YWN1dGU7ZyZvYWN1dGU7JzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnRiZhYWN1dGU7amwgc2FibG9ub2snOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdTYWJsb24gaG96eiZhYWN1dGU7YWQmYWFjdXRlO3NhJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2FibG9uJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdTYWJsb24gbmV2ZSc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdTYWJsb24gc3plcmtlc3p0JmVhY3V0ZTtzZSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1NhYmxvbiB0Jm91bWw7cmwmZWFjdXRlO3NlJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnJlVhY3V0ZTtqIHNhYmxvbiBuZXZlJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0hpYmE6IGlseWVuIG5ldsWxIHNhYmxvbiBtJmFhY3V0ZTtyIHZhbi4gSyZlYWN1dGU7cmxlaywgdiZhYWN1dGU7bGFzc3ogbSZhYWN1dGU7cyBuZXZldC4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0Egc2FibG9udCBzaWtlcmVzZW4gaW1wb3J0JmFhY3V0ZTtsdHVrIGF6IGFkYXRiJmFhY3V0ZTt6aXNiYSwgbW9zdCBtJmFhY3V0ZTtyIGhhc3puJmFhY3V0ZTtsaGF0Jm9hY3V0ZTsuJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnQWxhcCZlYWN1dGU7cnRlbG1lemV0dCBzdCZpYWN1dGU7bHVzbGFwIG1lZ3Rla2ludCZlYWN1dGU7c2UnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdGJmFhY3V0ZTtqbG4mZWFjdXRlO3YnOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdTYWJsb24gaW1wb3J0JmFhY3V0ZTtsJmFhY3V0ZTtzYSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnQSBzYWJsb250IHNpa2VyZXNlbiB0Jm91bWw7ciZvdW1sO2x0JnV1bWw7ayBheiBhZGF0YiZhYWN1dGU7emlzYiZvYWN1dGU7bCc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdBIHNhYmxvbnQgc2lrZXJlc2VuIGZyaXNzJmlhY3V0ZTt0ZXR0JnV1bWw7ayc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdIaWJhIHQmb3VtbDtydCZlYWN1dGU7bnQgYSBzYWJsb24gZnJpc3MmaWFjdXRlO3QmZWFjdXRlO3NlIGsmb3VtbDt6YmVuJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdBIGJlJmFhY3V0ZTtsbCZpYWN1dGU7dCZhYWN1dGU7c29rYXQgbWVudGV0dCZ1dW1sO2suJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0Ega2F0ZWcmb2FjdXRlO3JpJmFhY3V0ZTt0IHNpa2VyZXNlbiB0Jm91bWw7ciZvdW1sO2x0JnV1bWw7ay4nOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQSBrYXRlZyZvYWN1dGU7cmkmYWFjdXRlO3Qgc2lrZXJlc2VuIGZyaXNzJmlhY3V0ZTt0ZXR0JnV1bWw7ay4nOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0Ega2F0ZWcmb2FjdXRlO3JpJmFhY3V0ZTt0IHNpa2VyZXNlbiBob3p6JmFhY3V0ZTthZHR1ay4nOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnQXogZXNlbSZlYWN1dGU7bnl0IHQmb3VtbDtyJm91bWw7bHQmdXVtbDtrLic7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdBeiBlc2VtJmVhY3V0ZTt5dCBmcmlzcyZpYWN1dGU7dGV0dCZ1dW1sO2suJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0hpYmE6IEsmb3VtbDt0ZWxlesWRIGFsYXAmZWFjdXRlO3J0ZWxtZXpldHQgb2xkYWx0IGJlJmFhY3V0ZTtsbCZpYWN1dGU7dGFuaSwgaGEgYSBuYXB0JmFhY3V0ZTtydCBwcmV0dHkgdXJsLWVra2VsIGVneSZ1dW1sO3R0IGFrYXJvZCBoYXN6biZhYWN1dGU7bG5pLiBLJmVhY3V0ZTtybGVrLCBrYXR0aW50cyBhIG5hcHQmYWFjdXRlO3IgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2sgZiZ1dW1sO2xyZSwgJmVhY3V0ZTtzIHYmYWFjdXRlO2xhc3N6IGtpIGVneWV0Lic7CiRsYW5nWyd0aW1lX2F0J10gPSAnLWtvcic7CiRsYW5nWyd0eXBlJ10gPSAnVCZpYWN1dGU7cHVzJzsKJGxhbmdbJ25hbWUnXSA9ICdOJmVhY3V0ZTt2JzsKJGxhbmdbJ29yZGVyJ10gPSAnU29ycmVuZCc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnQSBtZXrFkXQgc2lrZXJlc2VuIGhvenomYWFjdXRlO2FkdHVrLic7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdBIG1lesWRdCBzaWtlcmVzZW4gdCZvdW1sO3Imb3VtbDtsdCZ1dW1sO2suJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ1NhaiZhYWN1dGU7dCBtZXrFkWsnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnU3omb3VtbDt2ZWdlcyBtZXrFkSc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0YmYWFjdXRlO2psIGZlbHQmb3VtbDtsdMWRIG1lesWRJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+Q2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUNCgkJbW9kdWxlIGlzIGluc3RhbGxlZCwgYSBDYWxlbmRhciBhZG1pbiBwYWdlIGlzIGFkZGVkIHRvIHRoZSBjb250ZW50IG1lbnUNCgkJdGhhdCB3aWxsIGFsbG93IHlvdSB0byBtYW5hZ2UgeW91ciBldmVudHMuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnQXogYWxhcCZlYWN1dGU7cnRlbG1lemV0dCBvbGRhbCwgYW1pIGEgTmFwdCZhYWN1dGU7cmF0IHRhcnRhbG1henphLiBFeiBrZWxsLCBob2d5IHRhcnRhbG1henpvbiBvbHlhbiBTbWFydHkgdGFnLWV0LCBhbWkgYSBOYXB0JmFhY3V0ZTtycmEgaGl2YXRrb3ppay4gSyZvdW1sO3RlbGV6xZEgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0YW5pLCBoYSBwcmV0dHkgdXJsLWVrZXQgaGFzem4mYWFjdXRlO2xzei4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnQXogYSBrJm91bWw7bnl2dCZhYWN1dGU7ciwgYWhvdmEgYSBmZWx0Jm91bWw7bHQmb3VtbDt0dCBmJmFhY3V0ZTtqbG9rIGtlciZ1dW1sO2xuZWsuJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ01lZ2VuZ2VkZXR0IGYmYWFjdXRlO2psdCZpYWN1dGU7cHVzb2snOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnRWd5ZWRpIGYmYWFjdXRlO2psbmV2ZWsgYml6dG9zJmlhY3V0ZTt0JmFhY3V0ZTtzYSc7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ01pbmlhdMWxciBzeiZlYWN1dGU7bGVzcyZlYWN1dGU7Zyc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdNaW5pYXTFsXIgbWFnYXNzJmFhY3V0ZTtnJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnTm9ybSZhYWN1dGU7bCBrJmVhY3V0ZTtwIHN6JmVhY3V0ZTtsZXNzJmVhY3V0ZTtnJzsKJGxhbmdbJ2xhcmdlX2hlaWdodCddID0gJ05vcm0mYWFjdXRlO2wgayZlYWN1dGU7cCBtYWdhc3MmYWFjdXRlO2cnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1Zpc3N6YWhpdmF0a296JmFhY3V0ZTtzb2snOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnVmlzc3phaGl2YXRrb3omYWFjdXRlO3NvayBlZGRpZzonOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+DQo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hvbGlkYXlfY29sb3JzJ10gPSAnQ29sb3JlIGZlc3Rpdml0w6AnOwokbGFuZ1sncHJvbXB0X2ljYWxfaG9saWRheXMnXSA9ICdGZWVkIGlDYWwgcGVyIGxlIGZlc3Rpdml0w6AnOwokbGFuZ1snaW5mb19pY2FsX2hvbGlkYXlzJ10gPSAnRVwnIHVzYXRvIG5lbGxhIHZpc3RhICJmdWxsY2FsZW5kYXIiIHBlciBldmlkZW56aWFyZSBsZSBmZXN0aWJpdMOgLiBOb24gY2kgc29ubyBhbHRyZSBpbnRlcmF6aW9uaSBjb24gZ2xpIGV2ZW50aSBkaSBxdWVzdG8gZmVlZC4nOwokbGFuZ1snYWxsZGF5J10gPSAnVHV0dG8gaWwgZ2lvcm5vJzsKJGxhbmdbJ2RheXZpZXcnXSA9ICdWaXRhIGdpb3Jubyc7CiRsYW5nWydlZGl0J10gPSAnTW9kaWZpY2EnOwokbGFuZ1snZXJyb3JfZmV0Y2hpbmdfZXZlbnRzJ10gPSAnT29wcy4uLiBxdWFsY29zYSBkaSBzdHJhbm8gw6ggc3VjY2Vzc28gbWVudHJlIGNvbXVuaWNhdmFtbyBjb24gaWwgc2VydmVyLCBwcm92YSBkaSBudW92byc7CiRsYW5nWydub3Jlc3VsdHMnXSA9ICdNaSBkaXNwaWFjZSwgbm9uIGNpIHNvbm8gZXZlbnRpIGNoZSBjb3JyaXNwb25kb25vIGFsIGNyaXRlcmlvIGltcG9zdGF0byc7CiRsYW5nWydoZWxwX2ZpbmRfd2hlbiddID0gJ0V2ZW50aSBwYXNzYXRpIGUgZnV0dXJpIHNvbyBzZW1wcmUgcmVhbHRpdmkgYWxsYSBkYXRhIGF0dHVhbGUnOwokbGFuZ1sncmVvcmRlciddID0gJ1Jpb3JkaW5hJzsKJGxhbmdbJ2RmbHRfY29sb3JzJ10gPSAnQ29sb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdNb2RpZmljYSBjYXRlZ29yaWEnOwokbGFuZ1snZmdjb2xvciddID0gJ0NvbG9yZSB0ZXN0byc7CiRsYW5nWydiZ2NvbG9yJ10gPSAnQ29sb3JlIHNmb25kbyc7CiRsYW5nWydoZWxwX2ZpbmRfc2hvd2NoaWxkcmVuJ10gPSAnSW5kaWNhIHNlIGdsaSBldmVudGkgZmlnbGlvIGRlYmJhbm8gZXNzZXJlIGluY2x1c2kgbmVpIHJpc3VsdGF0aSBkaSByaWNlcmNhJzsKJGxhbmdbJ2hlbHBfZmluZF9ldmVudF9rZXl3b3JkJ10gPSAnSW5zZXJpc2NpIHVuYSBvIHBpw7kgcGFyb2xlIGNoaWF2ZSBwZXIgbGEgcmljZXJjYS4gSWwgdGl0b2xvIGRlbGxcJ2V2ZW50bywgc29tbWFyaW8sIGUgY2FtcGkgZGkgZGV0dGFnbGlvIHZlcnJhbm5vIHJpY2VyY2F0aSBwZXIgbGUgcGFyb2xlIGNvcnJpc3BvbmRlbnRpLic7CiRsYW5nWydpbmZvX2ZpbmRfcmVzdWx0cyddID0gJ0xlIHByaW1lIDEwIGNvcnJpc3BvbmRlbnplIGRlbGxhIHF1ZXJ5IHZlbmdvbm8gdmlzdWFsaXp6YXRlIGluIGJhc3NvLiA8YnIvPiBDbGljY2FuZG8gc3VsIHRpdG9sbyBkZWxsXCdldmVudG8gY29uc2VudGlyw6AgZGkgbW9kaWZpY2FyZSBsXCdldmVudG8uIDxici8+IENsaWNjYSBzdWxsXCdpY29uYSB2aXN0YSBwZXIgbmF2aWdhcmUgaWwgY2FsZW5kYXJpbyBhbGxhIGxhIGRhdGEgYXBwcm9zc2ltYXRpdmEgZGVsbFwnZXZlbnRvIDxlbT4gKGluIGJhc2UgYWxsYSB2aXN0YSkgPC8gZW0+JzsKJGxhbmdbJ2dvdG9fZGF0ZSddID0gJ1ZhaSBhIHF1ZXN0YSBkYXRhJzsKJGxhbmdbJ2luZm9fZmluZF9ldmVudHMnXSA9ICdDZXJjYSBldmVudGkgY29ycmlzcG9uZGVudGkuIFNhcmFubm8gcmVzdGl0dWl0aSBmaW5vIGEgMTAgZXZlbnRpIGNvcnJpc3BvbmRlbnRpLic7CiRsYW5nWydyZXN1bHRzJ10gPSAnUmlzdWx0YXRpJzsKJGxhbmdbJ2tleXdvcmRzJ10gPSAnUGFyb2xlIGNoaWF2ZSc7CiRsYW5nWydmaW5kX3Nob3djaGlsZHJlbiddID0gJ01vc3RyYSBGaWdsaSc7CiRsYW5nWydhbnknXSA9ICdRdWFsc2lhaSc7CiRsYW5nWydwYXN0J10gPSAnUGFzc2F0byc7CiRsYW5nWydmdXR1cmUnXSA9ICdGdXR1cm8nOwokbGFuZ1snZmluZF93aGVuJ10gPSAnUXVhbmRvJzsKJGxhbmdbJ2ZpbmRfcGFyZW50c29ubHknXSA9ICdTb2x0YW50byBpIGdlbml0b3JpJzsKJGxhbmdbJ2ZpbmQnXSA9ICdDZXJjYS4uLic7CiRsYW5nWydlZGl0cGFyZW50J10gPSAnTW9kaWZpY2EgZ2VuaXRvcmUnOwokbGFuZ1snaGVscF9ldmVudHN0YWInXSA9ICc8cD5MYSBzY2hlZGEgZXZlbnRpIGZvcm5pc2NlIHVuIG1vZG8gc2VtcGxpY2UgcGVyIGVzcGxvcmFyZSBnbGkgZXZlbnRpIGluIGJhc2UgYWxsYSBkYXRhLiBMYSBkYXRhIHNlbGV6aW9uYXRhIHZpZW5lIHNhbHZhdGEgPGVtPiAoaW4gdW4gY29va2llKSA8L2VtPiBwZXIgZHVlIGdpb3JuaS4gUXVlc3RhIHZpc3RhIGZvcm5pc2NlIGFuY2hlIHNlbXBsaWNpIGZ1bnppb25hbGl0w6AgZGkgZWRpdGluZyBlIGNhbmNlbGxhemlvbmUuIDwvIHA+PGJyLz48cD4gTmVsbGEgdmlzdGEgbWVzZSwgdHJhc2NpbmFuZG8gdW4gZXZlbnRvIGNhbWJpZXLDoCBpbCBnaW9ybm8gZGkgaW5pemlvIDxlbT4obWEgbm9uIGlsIHRlbXBvKS48L2VtPi4gUmlkaW1lbnNpb25hcmUgbFwnZXZlbnRvIGNhbWJpZXLDoCBsYSBkYXRhIGRpIGZpbmUgZXZlbnRvLiA8L3A+PGJyLz48cD5OZWxsYSB2aXN0YSBzZXR0aW1hbmEsIGUgZ2lvcm5vIHZlZGUgbGEgZGF0YSBkaSBpbml6aW8vb3JhIGRlbGxcJ2V2ZW50byBwdcOyIGVzc2VyZSBjYW1iaWF0YSB0cmFzY2luYW5kbyBsXCdldmVudG8uIExhIGRhdGEgZGkgZmluZS9vcmEgZGVsbFwnZXZlbnRvIHB1w7IgZXNzZXJlIGNhbWJpYXRhIHJpZGltZW5zaW9uYW5kb2xvLiBJbm9sdHJlLCBxdWVzdGUgdmlzdGEgc3VwcG9ydGFubyBsYSBjYXBhY2l0w6AgZGkgY2FtYmlhcmUgcmFwaWRhbWVudGUgdW4gZXZlbnRvIGEgdW4gZXZlbnRvIHR1dHRvIGlsIGdpb3JubyB0cmFzY2luYW5kb2xhIG5lbGxhIHpvbmEgaW4gYWx0byAiIFR1dHRvIGlsIGdpb3JubyAiLjwvIHA+PGJyLz48cD5OZXNzdW4gY29udHJvbGxvIHBlciBpIGNvbmZsaXR0aSB2ZW5nb25vIGVzZWd1aXRpIGR1cmFudGUgaWwgdHJhc2NpbmFtZW50byBldmVudGkuPC9wPic7CiRsYW5nWydwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCddID0gJ1JpbXVvdmVyZSBxdWVzdG8gZXZlbnRvIGRhbGxcJ2V2ZW50byBnZW5pdG9yZSc7CiRsYW5nWydpbmZvX3JlbW92ZWZyb21wYXJlbnQnXSA9ICdTZSBzZWxlemlvbmF0bywgcXVlc3RvIHBhcnRpY29sYXJlIGV2ZW50byBub24gc2Fyw6AgaW5mbHVlbnphdG8gZGEgZXZlbnR1YWxpIG1vZGlmaWNoZSBuZWxsXCdldmVudG8gZ2VuaXRvcmUuJzsKJGxhbmdbJ2luZm9fZWRpdF9wYXJlbnRldmVudCddID0gJzxzdHJvbmc+Tm90YTo8L3N0cm9uZz4gUXVlc3RvIGV2ZW50byBzaSB2ZXJpZmljYSBzdSB1bmEgbyBwacO5IGRhdGUgZGlmZmVyZW50aS4gU2VsZXppb25hcmUgbFwnb3B6aW9uZSBpbiBiYXNzbyBhZ2dpb3JuYSBldmVudGkgZmlnbGkgY29uIGkgZGV0dGFnbGkgZGkgcXVlc3RvIGV2ZW50by4nOwokbGFuZ1snaW5mb19lZGl0X2NoaWxkZXZlbnQnXSA9ICc8c3Ryb25nPk5vdGE6PC9zdHJvbmc+IFF1ZXN0byBldmVudG8gw6ggaWwgZmlnbGlvIGRpIHVuIGFsdHJvIGV2ZW50by4gTGUgbW9kaWZpY2hlIGFwcG9ydGF0ZSBxdWkgYXZyYW5ubyBlZmZldHRvIHNvbG8gaW4gcXVlc3RvIHBhcnRpY29sYXJlIGZpZ2xpby4gUGVyIGluZmx1ZW56YXJlIHR1dHRlIGxlIG9jY29ycmVuemUgw6ggbmVjZXNzYXJpbyBhZ2dpb3JuYXJlIGxcJ2V2ZW50byBwcmluY2lwYWxlLic7CiRsYW5nWydhbGxkYXlfZXZlbnQnXSA9ICdRdWVzdG8gw6ggdW4gZXZlbnRvIGRpIHR1dHRvIGlsIGdpb3Jubyc7CiRsYW5nWydub3RlJ10gPSAnTm90YSc7CiRsYW5nWyd0aXRsZV9wYXJlbnRfZXZlbnQnXSA9ICdRdWVzdG8gZXZlbnRvIHNpIHJpcGV0ZSwgZSBjb250aWVuZSBldmVudGkgZmlnbGlvJzsKJGxhbmdbJ3N0YXJ0J10gPSAnSW5pemlvJzsKJGxhbmdbJ2VuZCddID0gJ0ZpbmUnOwokbGFuZ1snZXZlbnRfYWN0aW9uJ10gPSAnQXppb25lIEV2ZW50byc7CiRsYW5nWydpbmZvX2V2ZW50X2FjdGlvbiddID0gJ1NlbGV6aW9uYXJlIGxcJ2F6aW9uZSBkYSBlc2VndWlyZSBzdSBxdWVzdG8gZXZlbnRvLiA8YnIvPiBMYSBtb2RpZmljYSBkZWxsXCdldmVudG8gc2kgcmVpbmRpcml6emVyw6Agc3UgdW5hIG51b3ZhIHBhZ2luYS4nOwokbGFuZ1snZXJyb3JfZGVsZXRlcGFyZW50ZXZlbnQnXSA9ICdDaSBkaXNwaWFjZSwgbWEgbm9uIMOoIHBvc3NpYmlsZSBlbGltaW5hcmUgdW4gZXZlbnRvIGdlbml0b3JlJzsKJGxhbmdbJ2NoaWxkJ10gPSAnRmlnbGlvJzsKJGxhbmdbJ3JlcGVhdHMnXSA9ICdyaXBldGl6aW9uaSc7CiRsYW5nWydlcnJvcl9ldmVudG5vdGZvdW5kJ10gPSAnRXZlbnRvIG5vbiB0cm92YXRvJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdFcnJvcmUgc2Nvbm9zY2l1dG8nOwokbGFuZ1snaW5mb19jYWxfZmlsdGVyX2J5J10gPSAnUXVhbmRvIHNpIHJpY2VyY2EgPGVtPihmaWx0cm8pPC9lbT4gdHJhbWl0ZSBwYXJvbGUgbmVsIHRpdG9sbywgbG8gc2NvcnJpbWVudG8gZGVsbGUgZGF0ZSBub24gw6ggZGlzcG9uaWJpbGUnOwokbGFuZ1snbXNnX25vZGF0ZXMnXSA9ICdSaWNlcmNhIHBlciB0aXRvbG8gYXR0aXZhdGEnOwokbGFuZ1sndGl0bGVfcmVjdXJyaW5nX2V2ZW50J10gPSAnUXVlc3RvIMOoIHVuIGV2ZW50byByaXBldGl0aXZvIGNvbiBkZXJpdmF0aSc7CiRsYW5nWyd0aXRsZV9jaGlsZF9ldmVudCddID0gJ1F1ZXN0byDDqCB1biBkZXJpdmF0byBkaSB1biBlbGVtZW50byByaXBldGl0aXZvIHN1cGVyaW9yZSc7CiRsYW5nWydlcnJvcl9zb21lZGVsZXRlZCddID0gJ1BhcnRlIGRlZ2xpIGV2ZW50aSBzb25vIHN0YXRpIGVsaW1pbmF0aS4gVHV0dGF2aWEgYWxjdW5pIG5vbiBzb25vIHN0YXRpIGNhbmNlbGxhdGkgYSBjYXVzYSBkZWkgcGVybWVzc2knOwokbGFuZ1snZXJyb3Jfbm9uZWRlbGV0ZWQnXSA9ICdBIGNhdXNhIGRlaSBwZXJtZXNzaSBvIGFsdHJpIGVycm9yaSwgbmVzc3VubyBkZWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aSDDqCBzdGF0byBlbGltaW5hdG8nOwokbGFuZ1snZXJyb3JfZGVsZXRlZmFpbGVkJ10gPSAnRWxpbWluYXppb25lIGRlZ2xpIGVsZW1lbnRpIGZhbGxpdGEnOwokbGFuZ1snZmlsZWF0dGFjaG1lbnQnXSA9ICdBbGxlZ2EgZmlsZSc7CiRsYW5nWydwcm9tcHRfZ2VuZXJhbF9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBHZW5lcmFsaSc7CiRsYW5nWydwcm9tcHRfZWRpdGluZ19zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBNb2RpZmljYSBFdmVudG8nOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBNb2RpZmljYSBMYXRvIFV0ZW50ZSc7CiRsYW5nWydwcmV2X21vbnRoJ10gPSAnVmFpIGFsIG1lc2UgcHJlY2VkZW50ZSc7CiRsYW5nWyduZXh0X21vbnRoJ10gPSAnVmFpIGFsIG1lc2Ugc3VjY2Vzc2l2byc7CiRsYW5nWydpbmZvX2N1c3RvbWZpZWxkc190YWInXSA9ICdJIGNhbXBpIHBlcnNvbmFsaXp6YXRpIHBvc3Nvbm8gZXNzZXJlIHJpb3JkaW5hdGkgdHJhc2NpbmFuZG8gbGUgcmlnaGUuIFNvbG8gaSBjYW1waSBkaSB0ZXN0byBzb25vIHJpY2VyY2FiaWxpIGUgc29sbyBsZSB0ZXh0IGFyZWEgcG9zc29ubyBhdmVyZSBjYW1waSBXWVNJV1lHIGFsbGVnYXRpLiA8c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+Tm90YTo8L3N0cm9uZz4gSSBjYW1waSBXWVNJV1lHIG5vbiB2ZXJyYW5ubyB2aXN1YWxpenphdGkgcGVyIGkgY2FtcGkgdGV4dCBhcmVhIGxhdG8gdXRlbnRlLic7CiRsYW5nWydtc2dfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllIGFnZ2lvcm5hdGUnOwokbGFuZ1snbXNnX2ZpZWxkc3VwZGF0ZWQnXSA9ICdEZWZpbml6aW9uaSBkZWwgY2FtcG8gYWdnaW9ybmF0ZSc7CiRsYW5nWyd3eXNpd3lnJ10gPSAnV1lTSVdZRyc7CiRsYW5nWydpbmZvX3Jlb3JkZXJfY2F0ZWdvcmllcyddID0gJ0xcJ29yZGluZSBkZWxsZSBjYXRlZ29yaWUgcHXDsiBlc3NlcmUgZGVmaW5pdG8gdHJhc2NpbmFuZG8gbGUgcmlnaGUnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnluYW1lcm93J10gPSAnSWwgbm9tZSDDqCBzdGF0byBjYW5jZWxsYXRvIHBlciB1bmEgY2F0ZWdvcmlhIHZhbGlkYSBhbGxhIHJpZ2E6JzsKJGxhbmdbJ2NvbmZpcm1fbm9jYXRlZ29yaWVzJ10gPSAnTm9uIGFiYmlhbW8gaW5kaXZpZHVhdG8gY2F0ZWdvcmllIHZhbGlkZS4gU2lldGUgY2VydGkgZGkgdm9sZXJlIGVzZWd1aXJlIGxcJ29wZXJhemlvbmU/JzsKJGxhbmdbJ2FkZF9maWVsZCddID0gJ0FnZ2l1bmdpIENhbXBvJzsKJGxhbmdbJ2FkZF9jYXRlZ29yeSddID0gJ0FnZ2l1bmdpIENhdGVnb3JpYSc7CiRsYW5nWydwcm9tcHRfZmlyc3RkYXlvZndlZWsnXSA9ICdQcmltbyBnaW9ybm8gZGVsbGEgc2V0dGltYW5hJzsKJGxhbmdbJ2VkaXRfZXZlbnQnXSA9ICdNb2RpZmljYSBFdmVudG8nOwokbGFuZ1snZWRpdF9wYXJlbnRfZXZlbnQnXSA9ICdNb2RpZmljYSBsXCdldmVudG8gZ2VuaXRvcmUnOwokbGFuZ1snc2VsZWN0X3BlcmlvZCddID0gJ1BlcmlvZG8nOwokbGFuZ1snc2hvd19maWx0ZXInXSA9ICdNb3N0cmEgRmlsdHJvJzsKJGxhbmdbJ3Nob3dfZmlsdGVyX2FwcGxpZWQnXSA9ICdNb3N0cmEgRmlsdHJvIDxlbT4oZXNlZ3VpdG8pPC9lbT4nOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldCc7CiRsYW5nWydjYWxfY3VycmVudCddID0gJ1F1ZXN0byBQZXJpb2RvJzsKJGxhbmdbJ2NhbF9mcm9tJ10gPSAnRGEnOwokbGFuZ1snZXJyb3JfZmV1X2xvZ2dlZGluJ10gPSAnTFwndXRlbnRlIG5vbiBoYSBlZmZldHR1YXRvIGlsIGxvZ2luIGluIEZFVS4gIE5vbiDDqCBwZXJtZXNzbyBhZ2dpdW5nZXJlIG8gbW9kaWZpY2FyZSBldmVudGknOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ05vbWUgc2VtcGxpY2UgcGVyIHF1ZXN0byBtb2R1bG8gbmVsbGEgbmF2aWdhemlvbmUgbGF0byBhbW1pbmlzdHJhdG9yZSc7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ05vdGEgYmVuZTogRVwnIHBvc3NpYmlsZSBjaGUgc2lhIG5lY2Vzc2FyaW8gY2FuY2VsbGFyZSBsYSBjYWNoZSBwZXJjaMOoIHF1ZXN0XCdvcHppb25lIGFiYmlhIGVmZmV0dG8uIFNlIG5vbiB2aWVuZSBpbnNlcml0byBhbGN1biB2YWxvcmUgbmUgdmVycsOgIHV0aWxpenphdG8gdW5vIHByZWRlZmluaXRvLic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ1VzYSBlZGl0b3IgV3lzaXd5Zyc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbWVudHJpIEluc3VmZmljaWVudGknOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0RlbGltaXRhdG9yZSBkaSBjb2xvbm5hIGRlbCBmaWxlIGltcG9ydGF0byc7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0YXppb25lIENvbXBsZXRhdGEnOwokbGFuZ1snbnVtX2ltcG9ydGVkJ10gPSAnTnVtZXJvIGRpIGV2ZW50aSBjcmVhdGk6ICVkJzsKJGxhbmdbJ2ltcG9ydF9saW5lcyddID0gJ051bWVybyBkaSBsaW5lZSBlbGFib3JhdGUgZGFsIGZpbGU6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0Vycm9yaSc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnXSA9ICdDYW1wbzogJXMgbm9uIMOoIHN0YXRvIHJpY29ub3NjaXV0byBlIG5vbiDDqCB1biBjYW1wbyBwZXJzb25hbGl6emF0byc7CiRsYW5nWydpbmZvX2Nzdl9mb3JtYXQnXSA9ICc8aDQ+SW5mb3JtYXppb25pIHN1bCBmb3JtYXRvIENTVi48L2g0Pg0KPHVsPg0KICA8bGk+SW5mb3JtYXppb25pIEdlbmVyYWxpOg0KICAgPHVsPg0KICAgICA8bGk+SWwgZmlsZSBkZXZcJ2Vzc2VyZSBkaSB0aXBvIEFTQ0lJIGNvbiBmaW5lIGxpbmVhIGRpIHRpcG8gdW5peCwgZG9zLCBvIG1hYy48L2xpPg0KICAgICA8bGk+SSBjb21tZW50aSBpbml6aWFubyBjb24gLy8gPGJyIC8+T2duaSBjYXJhdHRlcmUgZG9wbyBxdWVzdGkgc3UgdW5hIHJpZ2EgdmVycmFubm8gaWdub3JhdGkgKGNvbXByZXNpIHF1ZWxsaSB0cmEgdmlyZ29sZXR0ZSBlIGFwaWNpKS48L2xpPg0KICAgICA8bGk+TGUgbGluZWUgdnVvdGUgdmVuZ29ubyBpZ25vcmF0ZS48L2xpPg0KICAgICA8bGk+SSBjYW1waSBzb25vIGRlbGltaXRhdGkgZGEgIiwiLCB0dXR0YXZpYSB1bmEgIiwiIHB1w7IgZXNzZXJlIHV0aWxpenphdGEgY29tZSB2YWxvcmUgYWxsXCdpbnRlcm5vIGRpIHVuIGNhbXBvIHNlIGlsIGNhbXBvIMOoIGRlbGltaXRhdG8gZGEgdmlyZ29sZXR0ZS48L2xpPg0KICAgICA8bGk+TGUgUmlnaGUgc29ubyBkZWxpbWl0YXRlIGRhIGNhcmF0dGVyaSBkaSBpbnRlcnJ1emlvbmUgZGkgbGluZWEgKGNvbWUgc29wcmEpLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIEZpZWxkIE1hcDoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgImN1c3RvbSBmaWVsZHMiIGFyZSBkZWZpbmVkIGluIHRoZSBmaWxlLiBEYXRhIGNhbiBzdGFydCBvbiB0aGUgc2Vjb25kIG5vbi1lbXB0eSBsaW5lLCBvciBhZnRlci48L2xpPg0KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAiY2F0ZWdvcnkiLiAgSWYgc3BlY2lmaWVkIGl0IGNhbiBjb250YWluIGEgOyBzZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBuYW1lcyB0aGF0IHRoZSBldmVudCB3aWxsIGJlbG9uZyB0by48L2xpPg0KICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPlRoZSBEYXRhIFJvd3M6DQogICA8dWw+DQogICAgPGxpPlRoZSBzdGFydCB0aW1lLCB0aXRsZSwgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyBtdXN0IG5vdCBiZSBlbXB0eS48L2xpPg0KPGxpPlN0YXJ0IGFuZCBFbmQgVGltZXM6PC9saT4NCiAgPHVsPg0KICAgPGxpPlN0YXJ0IHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgIFlZWVktTU0tREQgSEg6TU0gZm9ybWF0LCBvciBtYW55IGZvcm1hdHMgYXMgZGVmaW5lZCBieSB0aGUgc3RydG90aW1lIGZ1bmN0aW9uLCBpbmNsdWRpbmcgcmVsYXRpdmUgdGltZXMuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3VwcGxpZWQgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lLjwvbGk+DQogICA8bGk+RW5kIHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZSwgYW5kIG1heSBiZSBlbXB0eS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYW4gYWJzb2x1dGUgdGltZSAoaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBzdGFydCB0aW1lKSBvciBhIHJlbGF0aXZlIHRpbWUuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3BlY2lmaWVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCB0aW1lLiAgIGkuZTogIis0IGhvdXJzIiB3b3VsZCBpbmRpY2F0ZSA0IGhvdXJzIGZyb20gdGhlIHN0YXJ0IHRpbWUgY29sdW1uLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICJBbGwgZGF5IiA8ZW0+KGNhc2UgaW5zZW5zaXRpdmUpPC9lbT4gaXQgd2lsbCBhc3N1bWUgYW4gYWxsIGRheSBldmVudCBmcm9tIHRoZSBzdGFydCB0aW1lLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkNhdGVnb3JpZXMNCiAgPHVsPg0KICAgPGxpPklmIHNwZWNpZmllZCwgdGhlIGNhdGVnb3J5IGNvbHVtbiBjYW4gY29udGFpbiBhIGxpc3QgKHNlcGFyYXRlZCBieSA7KSBvZiBjYXRlZ29yeSBuYW1lcyBmb3Igd2hpY2ggdGhlIGV2ZW50IHNob3VsZCBiZWxvbmcuPC9saT4NCiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DdXN0b20gRmllbGRzOg0KICA8dWw+DQogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPg0KICAgIDxsaT5DdXN0b20gZmllbGRzIG9mIHR5cGUgImZpbGUiIGNhbm5vdCBiZSBpbXBvcnRlZC4gIFRoZSBlbnRpcmUgaW1wb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwuPC9saT4NCiAgPC91bD4NCiAgPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+QSBzYW1wbGUgY3N2IGZpbGUgZXhpc3RzIGluIHRoZSBtb2R1bGVzIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS48L2xpPg0KPC91bD4nOwokbGFuZ1sncHJvbXB0X2Nzdl9maWxlJ10gPSAnU2VsZXppb25hcmUgRmlsZSBkYSBJbXBvcnRhcmUnOwokbGFuZ1snZGVsZXRlJ10gPSAnRWxpbWluYSc7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQXppZW5kYSBEaXJlY3RvcnkgQ29tcGFueSc7CiRsYW5nWydkZmx0X3VybHByZWZpeCddID0gJ1ByZWZpc3NvIFVSTCBwcmVkZWZpbml0byBwZXIgUHJldHR5IFVSTCc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnSSBudW92aSBldmVudGkgc29ubyAiVHV0dG8gaWwgZ2lvcm5vIiBkaSBkZWZhdWx0JzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnT3JhIGRpIGluaXppbyBwcmVkZWZpbml0YSBwZXIgaSBudW92aSBldmVudGknOwokbGFuZ1snaW5mb19kZmx0X3N0YXJ0dGltZSddID0gJzxlbT4oc2kgYXBwbGljYSBzb2xvIHNlIGkgbnVvdmkgZXZlbnRpIG5vbiBzb25vICJUdXR0byBpbCBnaW9ybm8iLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ0NlcmNhIFRpcG8nOwokbGFuZ1snc2VhcmNoX2FueSddID0gJ0NvcnJpc3BvbmRlbnphIGRpIHF1YWxzaWFzaSB0ZXJtaW5lJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdDb3JyaXNwb25kZW56YSBkaSB0dXR0aSBpIHRlcm1pbmknOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1JpY2VyY2FiaWxlJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBcHBsaWNhYmlsZSBzb2xvIGFsbFwnYXppb25lICJteWV2ZW50cyIsIHF1ZXN0byBwYXJhbWV0cm8gcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgdW4gbW9kZWxsbyBkaSBtb2RpZmljYSBldmVudG8gbm9uIHByZWRlZmluaXRvIHF1YW5kbyB1biB1dGVudGUgY3JlYSBvIG1vZGlmaWNhIHVuIGV2ZW50byc7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnQXBwbGljYWJpbGUgc29sbyBhbGxcJ2F6aW9uZSAibXlldmVudCIsIHF1ZXN0byBwYXJhbWV0cm8gcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgdW5hIHBhZ2luYSBkaWZmZXJlbnRlIHBlciBpbCBtb2R1bG8gZGkgbW9kaWZpY2EuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0FwcGxpY2FiaWxlIHNvbG8gYWxsXCdhemlvbmUgIm15ZXZlbnQiLCBxdWVzdG8gcGFyYW1ldHJvIHBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGxcJ3VzbyBkaSB1biBtb2RlbGxvIG5vbiBwcmVkZWZpbml0byc7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ01vZGlmaWNhIEV2ZW50byBDYWxlbmRhcmlvJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdFcnJvcmUgZGVsIERhdGFiYXNlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0ludmlhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgIk1vZGlmaWNhIEV2ZW50byInOwokbGFuZ1snaW5mb19zeXNkZmx0X215ZXZlbnRzX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBQcmVkZWZpbml0byBkaSBTaXN0ZW1hICJNaWVpIEV2ZW50aSInOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9ncm91cCddID0gJ0kgbWVtYnJpIGRpIHF1ZXN0byBncnVwcG8gRkVVIHBvc3Nvbm8gYWdnaXVuZ2VyZSBldmVudGknOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnUGFnaW5hIHByZWRlZmluaXRhIGxhdG8gdXRlbnRlIHBlciBpbCBtb2R1bG8gZGkgbW9kaWZpY2EuJzsKJGxhbmdbJ25vbmUnXSA9ICdOZXNzdW5vJzsKJGxhbmdbJ293bmVyJ10gPSAnUHJvcHJpZXRhcmlvJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnTW9kZWxsaSBkZWwgTW9kdWxvIGRpIE1vZGlmaWNhIEV2ZW50byc7CiRsYW5nWydpbmZvX2VkaXRldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMYSBsaXN0YSBkZWkgbW9kZWxsaSBkaXNwb25pYmlsaSBwZXIgaWwgbW9kdWxvIGRpIG1vZGlmaWNhIGV2ZW50byc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWdnaXVuZ2kvbW9kaWZpY2EgdW4gTW9kZWxsbyBNb2R1bG8gZGkgTW9kaWZpY2EgRXZlbnRvJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdNb2RlbGxpIGRpIExpc3RhIE1pZWkgRXZlbnRpJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGEgZGVpIG1vZGVsbGkgZGlzcG9uaWJpbGkgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBkaSB1bmEgbGlzdGEgZGkgZXZlbnRpIGRlbGxcJ3V0ZW50ZSc7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBtb2RlbGxvIGRpIHJlcG9ydCAiTWllaSBFdmVudGkiJzsKJGxhbmdbJ2FyZXlvdXN1cmVfcmVtb3ZlY29uZmxpY3RpbmcnXSA9ICdRdWVzdGEgYXppb25lIHJpbXVvdmVyw6Agb2duaSBldmVudG8gaW4gY29uZmxpdHRvIGNvbiBldmVudGkgbm9uIHNvdnJhcHBvbmliaWxpLiBTaWV0ZSBjZXJ0aSBkaSB2b2xlcmUgcHJvY2VkZXJlPyc7CiRsYW5nWydmaWx0ZXJfY29uZmxpY3RpbmcnXSA9ICdGaWx0cmEgRXZlbnRpIGluIENvbmZsaXR0byc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdSaW11b3ZpIGV2ZW50aSBpbiBjb25mbGl0dG8gc2lsZW56aW9zYW1lbnRlJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnVmlzdWFsaXp6YSB1biBlcnJvcmUnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfYWN0aW9uJ10gPSAnQ29zYSBkb3ZyZWJiZSBhY2NhZGVyZSBxdWFuZG8gdmllbmUgdHJvdmF0byB1biBjb25mbGl0dG8gZHVyYW50ZSBsXCdhZ2dpdW50YSBvIGxhIG1vZGlmaWNhIGRpIHVuIGV2ZW50byc7CiRsYW5nWydlcnJvcl9ldmVudF9jb25mbGljdCddID0gJ0kgdmFsb3JpIGRlbGxcJ2V2ZW50byBzcGVjaWZpY2F0byBzaSBzb3ZyYXBwb25nb25vIGNvbiB1biBldmVudG8gZXNpc3RlbnRlIGNoZSBub24gcGVybWV0dGUgY29uZmxpdHRpJzsKJGxhbmdbJ2NhbF9pbmZvX292ZXJsYXAnXSA9ICdTaSBhcHBsaWNhIHNvbG8gYWdsaSBldmVudGkgY29uIHVuYSBkYXRhIGRpIGZpbmUgKG8gZXZlbnRpIGdpb3JuYWxpZXJpKSc7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ1Blcm1ldHRlIGxhIHNvdnJhcHBvc2l6aW9uZSBkaSBudW92aSBldmVudGkgY29uIGlsIGNvcnJlbnRlJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0dlc3Rpb25lIFNvdnJhcHBvc2l6aW9uZSBFdmVudGknOwokbGFuZ1sncG9saWN5X2FsbCddID0gJ1R1dHRpIGdsaSBldmVudGkgc2kgcG9zc29ubyBzb3ZyYXBwb3JyZSc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ05lc3N1biBldmVudG8gc2kgcHXDsiBzb3ZyYXBwb3JyZSc7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ0RlZmluaXRvIGV2ZW50byBwZXIgZXZlbnRvJzsKJGxhbmdbJ2xibF9iYWNrJ10gPSAnSW5kaWV0cm8nOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ01vZGVsbGknOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdBcmVhIGRpIFRlc3RvJzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ0FiYmlhbW8gdmVyaWZpY2F0byBsYSBwcmVzZW56YSBhbmNoZSBkZWwgbW9kdWxvIENhbGVuZGFyLiBRdWVzdG8gbW9kdWxvIG5vbiDDqCBjb21wYXRpYmlsZSBjb24gaWwgbW9kdWxvIENhbGVuZGFyIGUgaSBkdWUgbm9uIHBvc3Nvbm8gY29lc2lzdGVyZSBuZWxsYSBzdGVzc2EgaW5zdGFsbGF6aW9uZS4gVmkgY2hpZWRpYW1vIGRpIGRpc2luc3RhbGxhcmUgaWwgbW9kdWxvIENhbGVuZGFyLic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFdmVudF9pZCBub24gcHJlc2VudGUgbmVsIGRhdGFiYXNlLCBvcHB1cmUgY1wnw6ggcGnDuSBkaSB1biBldmVudG8gY29uIHF1ZXN0byBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdpbmEgJWQgZGkgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdSaXN1bHRhdGkgUmljZXJjYSBDYWxlbmRhcmlvJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ0NlcmNhIFBhcm9sZSc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnTmVzc3VuIHJpc3VsdGF0byBpbiBiYXNlIGFpIGNyaXRlcmkgc3BlY2lmaWNhdGknOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbnphJzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNhIGxhIGRhdGEgc3BlY2lmaWNhdGEnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnUHJpbWEgRG9tZW5pY2EgZGVsIE1lc2UnOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnUHJpbW8gTHVuZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnUHJpbW8gTWFydGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnUHJpbW8gTWVyY29sZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ1ByaW1vIEdpb3ZlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ1ByaW1vIFZlbmVyZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZpcnN0X3NhdHVyZGF5J10gPSAnUHJpbW8gU2FiYXRvIGRlbCBNZXNlJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdTZWNvbmRhIERvbWVuaWNhIGRlbCBNZXNlJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdTZWNvbmRvIEx1bmVkw6wgZGVsIE1lc2UnOwokbGFuZ1snc2Vjb25kX3R1ZXNkYXknXSA9ICdTZWNvbmRvIE1hcnRlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmRvIE1lcmNvbGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snc2Vjb25kX3RodXJzZGF5J10gPSAnU2Vjb25kbyBHaW92ZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydzZWNvbmRfZnJpZGF5J10gPSAnU2Vjb25kbyBWZW5lcmTDrCBkZWwgTWVzZSc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmRvIFNhYmF0byBkZWwgTWVzZSc7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUZXJ6YSBEb21lbmljYSBkZWwgTWVzZSc7CiRsYW5nWyd0aGlyZF9tb25kYXknXSA9ICdUZXJ6byBMdW5lZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ3RoaXJkX3R1ZXNkYXknXSA9ICdUZXJ6byBNYXJ0ZWTDrCBkZWwgTWVzZSc7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUZXJ6byBNZXJjb2xlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnVGVyem8gR2lvdmVkw6wgZGVsIE1lc2UnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVGVyem8gVmVuZXJkw6wgZGVsIE1lc2UnOwokbGFuZ1sndGhpcmRfc2F0dXJkYXknXSA9ICdUZXJ6byBTYWJhdG8gZGVsIE1lc2UnOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ1F1YXJ0YSBEb21lbmljYSBkZWwgTWVzZSc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnUXVhcnRvIEx1bmVkw6wgZGVsIE1lc2UnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdRdWFydG8gTWFydGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ1F1YXJ0byBNZXJjb2xlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ1F1YXJ0byBHaW92ZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnUXVhcnRvIFZlbmVyZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ1F1YXJ0byBTYWJhdG8gZGVsIE1lc2UnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdVbHRpbWEgRG9tZW5pY2EgZGVsIE1lc2UnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdVbHRpbW8gTHVuZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydsYXN0X3R1ZXNkYXknXSA9ICdVbHRpbW8gTWFydGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snbGFzdF93ZWRuZXNkYXknXSA9ICdVbHRpbW8gTWVyY29sZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnVWx0aW1vIEdpb3ZlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnVWx0aW1vIFZlbmVyZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdVbHRpbW8gU2FiYXRvIGRlbCBNZXNlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnRnJlcXVlbnphIG5vbiB2YWxpZGEuLi4gbm9uIHBvdGV0ZSB1dGlsaXp6YXJlIHNpYSBsYSBkYXRhIHNwZWNpZmljYSBjaGUgYWx0cmkgdmFsb3JpJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBNb2RlbGxvIGRpIFJpc3VsdGF0byBSaWNlcmNhJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSBNb2RlbGxpIGNoZSBzb25vIGRpc3BvbmliaWxpIHBlciBsYSB2aXN1YWxpenphemlvbmUgZGVpIHJpc3VsdGF0aSBkaSByaWNlcmNhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hyZXN1bHRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIFJpc3VsdGF0byBSaWNlcmNhIFByZWRlZmluaXRvIGRpIFNpc3RlbWEnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnTW9kZWxsaSBkaSBSaXN1bHRhdG8gUmljZXJjYSc7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdJbnRlcnJvZ2F6aW9uZSBEYXRhYmFzZSBGYWxsaXRhJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnRGF0ZSBkaSByaWNlcmNhIHNwZWNpZmljYXRlIG5vbiB2YWxpZGUnOwokbGFuZ1sndGV4dCddID0gJ1Rlc3RvJzsKJGxhbmdbJ3NlYXJjaCddID0gJ0NlcmNhJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcmlhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIE1vZHVsbyBkaSBSaWNlcmNhIFByZWRlZmluaXRvIGRpIFNpc3RlbWEnOwokbGFuZ1snc2VhcmNodGVtcGxhdGVfYWRkZWRpdCddID0gJ0FnZ2l1bmdpL01vZGlmaWNhIE1vZGVsbG8gTW9kdWxvIGRpIFJpY2VyY2EnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGEgZGVpIG1vZGVsbGkgY2hlIHNvbm8gZGlzcG9uaWJpbGkgcGVyIGlsIG1vZHVsbyBkaSByaWNlcmNhJzsKJGxhbmdbJ2NhbF9zZWFyY2hfZm9ybV90ZW1wbGF0ZXMnXSA9ICdNb2RlbGxpIE1vZHVsbyBSaWNlcmNhJzsKJGxhbmdbJ21heCddID0gJ21hc3NpbW8nOwokbGFuZ1sndGltZXMnXSA9ICd2b2x0ZSc7CiRsYW5nWydvbiddID0gJ2EnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdTaWV0ZSBzaWN1cmkgZGkgdm9sZXJlIHByb2NlZGVyZT8gQ29udGludWFuZG8gY2FuY2VsbGVyZXRlIHBlcm1hbmVudGVtZW50ZSB0dXR0aSBpIGRhdGkgYXNzb2NpYXRpIGEgcXVlc3RvIG1vZHVsby4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdJbCBtb2R1bG8gQ2FsZW5kYXIgw6ggc3RhdG8gZGlzaW5zdGFsbGF0byBlIHNvbm8gc3RhdGkgcmltb3NzaSB0dXR0aSBnbGkgZXZlbnRpIGVkIGkgdGVtcGxhdGUgYXNzb2NpYXRpIGNvbiBxdWVzdG8gbW9kdWxvJzsKJGxhbmdbJ2ZpZWxkdXBkYXRlZCddID0gJ0NhbXBvIGFnZ2lvcm5hdG8nOwokbGFuZ1snZXZlcnknXSA9ICdPZ25pJzsKJGxhbmdbJ29yJ10gPSAnbyc7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdBZ2dpb3JuYSBnbGkgRXZlbnRpIGZpZ2xpJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdEb3ZldGUgc2VsZXppb25hcmUgYWxtZW5vIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTm9uIMOoIHN0YXRvIHNlbGV6aW9uYXRvIG51bGxhIHBlciBsYSBjYW5jZWxsYXppb25lJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0kgcGFyYW1ldHJpIGRpIHJpcGV0aXppb25lIGRlZ2xpIGV2ZW50aSBjaGUgYXZldGUgc3BlY2lmaWNhdG8gcG90cmViYmVybyByaXN1bHRhcmUgaW4gdW5hIHNvdnJhcHBvc2l6aW9uZSBkaSBldmVudGkuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JpY29ycmUnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ1VubyBvIHBpw7kgdmFsb3JpIGRpIGRhdGEgaW5zZXJpdGkgZXJhbm8gaW52YWxpZGknOwokbGFuZ1snc3VuZGF5J10gPSAnRG9tZW5pY2EnOwokbGFuZ1snbW9uZGF5J10gPSAnTHVuZWTDrCc7CiRsYW5nWyd0dWVzZGF5J10gPSAnTWFydGVkw6wnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnTWVyY29sZWTDrCc7CiRsYW5nWyd0aHVyc2RheSddID0gJ0dpb3ZlZMOsJzsKJGxhbmdbJ2ZyaWRheSddID0gJ1ZlbmVyZMOsJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU2FiYXRvJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnRG8nOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdMdSc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdNYSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ01lJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdHaSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ1ZlJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrJ10gPSAnU2V0dGltYW5hJzsKJGxhbmdbJ21vbnRoJ10gPSAnTWVzZSc7CiRsYW5nWydkYXknXSA9ICdHaW9ybm8nOwokbGFuZ1sndG9kYXknXSA9ICdPZ2dpJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnR2lvcm5pIHNldHRpbWFuYSc7CiRsYW5nWydwbHVyYWxfbm9uZSddID0gJ05lc3N1bm8nOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnR2lvcm5pJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdTZXR0aW1hbmUnOwokbGFuZ1sncGx1cmFsX21vbnRobHknXSA9ICdNZXNpJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbm5pJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snZGFpbHknXSA9ICdHaW9ybmFsbWVudGUnOwokbGFuZ1snd2Vla2x5J10gPSAnU2V0dGltYW5hbG1lbnRlJzsKJGxhbmdbJ21vbnRobHknXSA9ICdNZW5zaWxtZW50ZSc7CiRsYW5nWyd5ZWFybHknXSA9ICdBbm51YWxtZW50ZSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1JpcGV0aSBvZ25pJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRGV0dGFnbGlvIGV2ZW50byByaWNvcnJlbnRlJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ05vbiBsaW1pdGF0byc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWFzc2ltbyBudW1lcm8gZGkgZXZlbnRpIGZpZ2xpJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnU3BlY2lmaWNhcmUgZGF0YSBkaSBmaW5lIGRpdmVyc2E/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbGxhJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnTW9zdHJhIEV2ZW50aSBmaWdsaSA8ZW0+KHBvdHJlYmJlIHJlc3RpdHVpcmUgdW5hIHNjaGVybWF0YSBtb2x0byBsdW5nYSk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2QnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmlwZXRpIGZpbm8nOwokbGFuZ1sncGFyZW50J10gPSAnR2VuaXRvcmUnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUGVyaW9kbyBkaSByaWNvcnNpb25lJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRybyc7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnRGF0YSBwYXJ0ZW56YSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0RhdGEgYXJyaXZvJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSB0ZW1wbGF0ZSBjaGUgc29ubyB1dGlsaXp6YWJpbGkgcGVyIGdsaSBldmVudGkgaW1taW5lbnRpJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBNb2RlbGxvIHBlciBsYSB2aXN1YWxpenphemlvbmUgVXBjb21pbmdsaXN0IChwcm9zc2ltaSBldmVudGkpJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBVcGNvbWluZ2xpc3QgKHByb3NzaW1pIGV2ZW50aSknOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSBtb2RlbGxpIGNoZSBzb25vIGRpc3BvbmliaWxpIHBlciBsYSB2aXN0YSBkaSBsaXN0ZSc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FnZ2l1bmdpL01vZGlmaWNhIHVuIE1vZGVsbG8gcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBMaXN0IChsaXN0YSknOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBMaXN0IChsaXN0YSknOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMYSBsaXN0YSBkZWkgbW9kZWxsaSBjaGUgc29ubyBkaXNwb25pYmlsaSBwZXIgbGEgdmlzdGEgZGkgZXZlbnRpJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FnZ2l1bmdpL01vZGlmaWNhIHVuIE1vZGVsbG8gcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBFdmVudCAoZXZlbnRvKSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBFdmVudCAoZXZlbnRvKSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZnVsbGNhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBwcmVkZWZpbml0byBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSBtb2RlbGxpIGNoZSBzb25vIGRpc3BvbmliaWxpIHBlciBsYSB2aXN0YSBkaSBjYWxlbmRhcmknOwokbGFuZ1snaW5mb19mdWxsY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGEgZGVpIG1vZGVsbGkgY2hlIHNvbm8gZGlzcG9uaWJpbGkgcGVyIGxhIHZpc3RhIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydmdWxsY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWdnaXVuZ2kvTW9kaWZpY2EgdW4gTW9kZWxsbyBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBNb2RlbGxvIHBlciBsYSB2aXN1YWxpenphemlvbmUgQ2FsZW5kYXIgKGNhbGVuZGFyaW8pJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ01vZGVsbG8gUHJlZGVmaW5pdG8gZGkgU2lzdGVtYSBwZXIgbGEgdmlzdWFsaXp6YXppb25lIENhbGVuZGFyIChjYWxlbmRhcmlvKSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdRdWVzdG8gbW9kdWxvIGRlZmluaXNjZSBpbCBtb2RlbGxvIGNoZSBzYXLDoCB1dGlsaXp6YXRvIHF1YW5kbyBjbGljY2F0ZSBzdSAiTnVvdm8gTW9kZWxsbyIgbmVsbGEgc2NoZWRhIGFwcHJvcHJpYXRhLiAgTW9kaWZpY2FyZSBxdWVzdG8gdmFsb3JlIG5vbiBhdnLDoCBlZmZldHRpIGltbWVkaWF0aSBzdWxsZSB2aXN1YWxpenphemlvbmkgZ2VuZXJhdGUgZGEgcXVlc3RvIG1vZHVsby4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdDaGlhbWF0byBkb3BvIGF2ZXIgYWdnaXVudG8gdW4gZXZlbnRvIGFsIGNhbGVuZGFyaW8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQ2hpYW1hdG8gZG9wbyBhdmVyIG1vZGlmaWNhdG8gdW4gZXZlbnRvIGVzaXN0ZW50ZSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQ2hpYW1hdG8gZG9wbyBhdmVyIGVsaW1pbmF0byB1biBldmVudG8nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDaGlhbWF0byBkb3BvIGxhIGNyZWF6aW9uZSBkaSB1bmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0NoaWFtYXRvIGRvcG8gYXZlciBtb2RpZmljYXRvIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ0NoaWFtYXRvIGRvcG8gYXZlciBlbGltaW5hdG8gdW5hIGNhdGVnb3JpYSc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIGFnZ2l1bnRvIHVuIGV2ZW50byBhbCBjYWxlbmRhcmlvLjwvcD4NCjxoND5QYXJhbWV0ZXJpPC9oND4NCjx1bD4NCjxsaT5cImV2ZW50X3RpdGxlXCIgLSBUaXRvbG8gZXZlbnRvPC9saT4NCjxsaT5cImV2ZW50X3N1bW1hcnlcIiAtIFNvbW1hcmlvPC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldHRhZ2xpbzwvbGk+DQo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBEYXRhIGUgb3JhIGRlbGxcJ2luaXppbyBkZWxsXCdldmVudG88L2xpPg0KPGxpPlwiZXZlbnRfZGF0ZV9lbmRcIiAtIERhdGEgZSBvcmEgZGVsbGEgZmluZSBkZWxsXCdldmVudG88L2xpPg0KPGxpPlwiZXZlbnRfY3JlYXRlZF9ieVwiIC0gTGEgdXNlcmlkIGRlbGxcJ2F1dG9yZTwvbGk+DQo8bGk+XCJldmVudF9pZFwiIC0gaWQgZGVsbFwnZXZlbnRvPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIG1vZGlmaWNhdG8gdW4gZXZlbnRvIGVzaXN0ZW50ZS48L3A+DQo8aDQ+UGFyYW1ldGVyaTwvaDQ+DQo8dWw+DQo8bGk+XCJldmVudF90aXRsZVwiIC0gVGl0b2xvIGV2ZW50bzwvbGk+DQo8bGk+XCJldmVudF9zdW1tYXJ5XCIgLSBTb21tYXJpbzwvbGk+DQo8bGk+XCJldmVudF9kZXRhaWxzXCIgLSBEZXR0YWdsaW88L2xpPg0KPGxpPlwiZXZlbnRfZGF0ZV9zdGFydFwiIC0gRGF0YSBlIG9yYSBkZWxsXCdpbml6aW8gZGVsbFwnZXZlbnRvPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBEYXRhIGUgb3JhIGRlbGxhIGZpbmUgZGVsbFwnZXZlbnRvPC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIExhIHVzZXJpZCBkZWxsXCdhdXRvcmU8L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIGlkIGRlbGxcJ2V2ZW50bzwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+SW52aWF0byBxdWFuZG8gdmllbmUgZWxpbWluYXRvIHVuIGV2ZW50by48L3A+DQo8aDQ+UGFyYW1ldGVyaTwvaDQ+DQo8dWw+DQo8bGk+XCJldmVudF9pZFwiIC0gaWQgZGVsbFwnZXZlbnRvPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+SW52aWF0byBxdWFuZG8gdmllbmUgYWdnaXVudGEgdW5hIGNhdGVnb3JpYS48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gaWQgZGVsbGEgY2F0ZWdvcmlhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIG1vZGlmaWNhdGEgdW5hIGNhdGVnb3JpYS48L3A+DQo8aDQ+UGFyYW1ldGVyaTwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gaWQgZGVsbGEgY2F0ZWdvcmlhPC9saQ0KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gTm9tZSBkZWxsYSBjYXRlZ29yaWE8L2xpPg0KPGxpPlwiY2F0ZWdvcnlfb3JkZXJcIiAtIFBvc2l6aW9uZSBkZWxsYSBjYXRlZ29yaWEgbmVsbFwnb3JkaW5hbWVudG88L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIGVsaW1pbmF0YSB1bmEgY2F0ZWdvcmlhLjwvcD4NCjxoND5QYXJhbWV0ZXJpPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBpZCBkZWxsYSBjYXRlZ29yaWE8L2xpDQo8bGk+XCJjYXRlZ29yeV9uYW1lXCIgLSBOb21lIGRlbGxhIGNhdGVnb3JpYTwvbGk+DQo8bGk+XCJjYXRlZ29yeV9vcmRlclwiIC0gUG9zaXppb25lIGRlbGxhIGNhdGVnb3JpYSBuZWxsXCdvcmRpbmFtZW50bzwvbGk+DQo8L3VsPic7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRXJyb3JlIGR1cmFudGUgbFwnaW1wb3J0YXppb25lIGRpIGV2ZW50aSBkYSBjc3YgYWxsYSBsaW5lYSAlZCc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVmbGRub3Rmb3VuZCddID0gJ1VuIGNhbXBvIHJpY2hpZXN0byAoICVzICkgbm9uIMOoIHN0YXRvIHRyb3ZhdG8gbmVsbGEgcmlnYSBkaSBpbnRlc3RhemlvbmUgZGVsIGZpbGUgY3N2JzsKJGxhbmdbJ2Vycm9yX2NzdmludmFsaWRmaXJzdGxpbmUnXSA9ICdOb24gw6ggcG9zc2liaWxlIGluZGl2aWR1YXJlIHVuYSBwcmltYSByaWdhIHZhbGlkYSBuZWwgZmlsZSBDU1YnOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdFdmVudG8gYWdnaXVudG8nOwokbGFuZ1snZXJyb3Jfbm9ldmVudG5hbWUnXSA9ICdVbiBub21lIHBlciBsXCdldmVudG8gw6ggcmljaGllc3RvJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJST1JFOiBOb24gw6ggc3RhdG8gdHJvdmF0byBhbGN1biBmaWxlIGNhcmljYXRvJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VSUk9SRTogSWwgZmlsZSBjYXJpY2F0byBub24gcHXDsiBlc3NlcmUgYWNjZXR0YXRvJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1JFOiBFXCcgYXZ2ZW51dG8gdW4gcHJvYmxlbWEgZHVyYW50ZSBpbCBjYXJpY2FtZW50byBkZWwgZmlsZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VSUk9SRTogRVwnIGF2dmVudXRvIHVuIHByb2JsZW1hIG1lbnRyZSBpbCBmaWxlIHZlbml2YSBjb3BpYXRvIG5lbGxhIHN1YSBkZXN0aW5hemlvbmUgZmluYWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUkU6IEVzaXN0ZSBnacOgIHVuIGZpbGUgY29uIHF1ZWwgbm9tZSc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdFUlJPUkU6IE5vbiBwb3NzbyB0cm92YXJlIGlsIGZpbGUgQ1NWJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk9SRTogTm9uIHBvc3NvIGFwcmlyZSBpbCBmaWxlJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRVJST1JFOiBVbmEgY2F0ZWdvcmlhIGNvbiBpbCBub21lICVzIGdpw6AgZXNpc3RlJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9mdWxsY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdNb2RlbGxpIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdDYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlIHByZWRlZmluaXRpJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0FnZ2l1bmdlLCBtb2RpZmljYSBlIHJpbXVvdmUgZXZlbnRpJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0FnZ2l1bmdpIEV2ZW50aSc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ0ltcG9ydGEgRXZlbnRpJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVudGknOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdDYXRlZ29yaWUnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBkZWwgY2FsZW5kYXJpbyc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGVsbGEgbGlzdGEnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGkgZXZlbnRvIGltbWluZW50ZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRlZ2xpIGV2ZW50aSc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdDb25maWd1cmF6aW9uaSc7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrIFByZWNlZGVudGUnOwokbGFuZ1snY2FsX25leHQnXSA9ICdQcm9zc2ltbyDCuyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllIGFnZ2lvcm5hdGUnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdDb25maWd1cmF6aW9uaSBhZ2dpb3JuYXRlJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdBZ2dpdW5naSBldmVudG8nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdNb2RpZmljYSc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnQ2FuY2VsbGEnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdTZWkgc2ljdXJvIGRpIHZvbGVyIGNhbmNlbGxhcmUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ0FnZ2lvcm5hbWVudG8gTW9kZWxsbyc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRG9tZW5pY2EnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0x1bmVkw6wnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdNYXJ0ZWTDrCc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnTWVyY29sZWTDrCc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdHaW92ZWTDrCc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnVmVuZXJkw6wnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2FiYXRvJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdEb20nOwokbGFuZ1snY2FsX21vbiddID0gJ0x1bic7CiRsYW5nWydjYWxfdHVlcyddID0gJ01hcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnTWVyJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0dpbyc7CiRsYW5nWydjYWxfZnJpJ10gPSAnVmVuJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYWInOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdHZW5uYWlvJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYmJyYWlvJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ01hcnpvJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsZSc7CiRsYW5nWydjYWxfbWF5J10gPSAnTWFnZ2lvJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnR2l1Z25vJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnTHVnbGlvJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdG8nOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NldHRlbWJyZSc7CiRsYW5nWydjYWxfb2N0b2JlciddID0gJ090dG9icmUnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTm92ZW1icmUnOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnRGljZW1icmUnOwokbGFuZ1snY2FsX2FkZCddID0gJ0FnZ2lvcm5hJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBZ2dpdW5naSc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdFdmVudG8nOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU29tbWFyaW8nOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXR0YWdsaW8nOwokbGFuZ1snY2FsX21vcmUnXSA9ICdhbHRybyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUml0b3Jubyc7CiRsYW5nWydjYWxfdG8nXSA9ICdhJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0V2ZW50aSBwYXNzYXRpJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFdmVudGkgZnV0dXJpJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdRdWFsc2lhc2kgY2F0ZWdvcmlhJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTW9zdHJhIHNvbG8gZ2xpIGV2ZW50aSBpbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJhIFRpdG9sbyBwZXIgPGVtPihyZWdleCk8L2VtPic7CiRsYW5nWydjYWxfZ28nXSA9ICdWYWknOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0b2xvJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhbGxhIGRhdGEnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0FsbGEgZGF0YSc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdBZ2dpb25hIGNhdGVnb3JpZSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdMaW5ndWEnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQWdnaW9ybmEgY29uZmlndXJhemlvbmUnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzYXJlIGlsIGxcJ29yb2xvZ2lvIGEgMTIgb3JlIG5lbCBtZW51IGEgdGVuZGluYSBkZWxsZSBvcmU/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnQ2F0ZWdvcmlhIFByZWRlZmluaXRhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnQWdnaW9ybmEgQ2FtcGknOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdGb3J6YSBhbG1lbm8gdW5hIGNhdGVnb3JpYSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnTnVtZXJvIGRpIGFubmkgcGFzc2F0aSBwZXJtZXNzaSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdOdW1lcm8gZGkgYW5uaSBmdXR1cmkgcGVybWVzc2knOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdEZXZlIGVzc2VyZSBuYXNjb3N0byBpbCBjYW1wbyBTb21tYXJpbyc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0RldmUgZXNzZXJlIG5hc2Nvc3RvIGlsIGNhbXBvIENvbnRlbnV0byc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ1NlbGV6aW9uYXRlIHVuYSBvIHBpw7kgY2F0ZWdvcmllIHBlciBxdXN0byBldmVudG8nOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0VzZW1waW8gZGkgRm9nbGlvIGRpIFN0aWxlIHBlciBpbCBDYWxlbmRhcmlvJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdBdmV0ZSBiaXNvZ25vIGRpIHBlcm1lc3NpIGFwcHJvcHJpYXRpICglcykgcGVyIGFjY2VkZXJlIGEgcXVlc3RhIGZ1bnppb25hbGl0w6AnOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ0Vzc2VyZSBzaWN1cmkgZGkgY29uZmlndXJhcmUgaWwgcGVybWVzc28gIk1vZGlmeSBDYWxlbmRhciIgcGVyIGdsaSB1dGVudGkgY2hlIGRvdnJhbm5vIGFtbWluaXN0cmFyZSBnbGkgZXZlbnRpIGRlbCBjYWxlbmRhcmlvLic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdDYW5jZWxsYSBldmVudGkgc2VsZXppb25hdGknOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ1NpZXRlIHNpY3VyaSBjaGUgcXVlc3RpIGV2ZW50aSBkZWJiYW5vIGVzc2VyZSBjYW5jZWxsYXRpPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAnR2xpIGV2ZW50aSBzZWxlemlvbmF0aSBzb25vIHN0YXRpIGNhbmNlbGxhdGknOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnTW9kZWxsaSAodGVtcGxhdGVzKSc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnQWl1dG8gcGVyIGkgTW9kZWxsaSc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ01vZGVsbGkgZGkgRmlsZSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FnZ2l1bmdpIE1vZGVsbG8nOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNb2RlbGxvJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdOb21lIE1vZGVsbG8nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnTW9kaWZpY2EgTW9kZWxsbyc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ0NhbmNlbGxhIE1vZGVsbG8nOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb21lIGRlbCBOdW92byBNb2RlbGxvJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Vycm9yZTogw6ggZ2nDoCBwcmVzZW50ZSB1biBtb2RlbGxvIGNvbiBsbyBzdGVzc28gbm9tZS4gU2NlZ2xpZXRlbmUgdW5vIGRpdmVyc28nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0lsIG1vZGVsbG8gw6ggc3RhdG8gaW1wb3J0YXRvIG5lbCBkYXRhYmFzZSBjb24gc3VjY2Vzc28gZSBvcmEgw6ggaW5zdGFsbGF0byBwZXIgbFwndXNvLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1Zpc3VhbGl6emEgRm9nbGlvIGRpIFN0aWxlIHByZWRlZmluaXRvJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnTm9tZSBmaWxlJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0YSBNb2RlbGxvJzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICdJbCBNb2RlbGxvIMOoIHN0YXRvIGNhbmNlbGxhdG8gZGFsIGRhdGFiYXNlIGNvbiBzdWNjZXNzby4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnSWwgbW9kZWxsbyDDqCBzdGF0byBhZ2dpb3JuYXRvIGNvbiBzdWNjZXNzbyc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdTaSDDqCB2ZXJpZmljYXRvIHVuIGVycm9yZSBhZ2dpb3JuYW5kbyBpbCBtb2RlbGxvJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdMZSBpbXBvc3Rhemlvbmkgc29ubyBzdGF0ZSBzYWx2YXRlIGNvbiBzdWNjZXNzbyc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdDYXRlZ29yaWEgY2FuY2VsbGF0YSc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdDYXRlZ29yaWEgYWdnaW9ybmF0YSc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvcmlhIGFnZ2l1bnRhJzsKJGxhbmdbJ2V2ZW50ZGVsZXRlZCddID0gJ0xcJ2V2ZW50byDDqCBzdGF0byBjYW5jZWxsYXRvJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ1F1ZXN0byBldmVudG8gw6ggc3RhdG8gYWdnaW9ybmF0byc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcmU6IGRvdmV0ZSBpbXBvc3RhcmUgdW5hIHBhZ2luYSBwcmVkZWZpbml0YSBwZXIgcG90ZXJlIHV0aWxpenphcmUgaWwgbW9kdWxvIENhbGVuZGFyIGNvbiBpIHByZXR0eSBVUkwgYXR0aXZhdGkuIEFuZGF0ZSBuZWwgbWVudSBkZWxsZSBpbXBvc3RhemlvbmkgZGkgQ2FsZW5kYXIgZSBzY2VnbGlldGVuZSB1bmEuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdhbGxlJzsKJGxhbmdbJ3R5cGUnXSA9ICdUaXBvJzsKJGxhbmdbJ25hbWUnXSA9ICdOb21lJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JkaW5lJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdDYW1wbyBhZ2dpdW50byBjb24gc3VjY2Vzc28nOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnQ2FtcG8gY2FuY2VsbGF0byc7CiRsYW5nWydmaWVsZHMnXSA9ICdDYW1waSBwZXJzb25hbGl6emF0aSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdDYW1wbyB0ZXN0byc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0NhbXBvIGRpIGNhcmljYW1lbnRvIGZpbGUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciDDqCB1biBtb2R1bG8gcGVyIHZpc3VhbGl6emFyZSBldmVudGkgc3VsbGUgY29zdHJlIHBhZ2luZS4gUXVhbmRvIGlsIG1vZHVsbyDDqCBpbnN0YWxsYXRvIHZpZW5lIGFnZ2l1bnRhIHVuYSBQYWdpbmEgZGkgQW1taW5pc3RyYXppb25lIENhbGVuZGFyIG5lbCBtZW51IGRpIGNvbnRlbnV0bywgY2hlIHBlcm1ldHRlIGRpIGdlc3RpcmUgaSB2b3N0cmkgZXZlbnRpLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1BhZ2luYSBwcmVkZWZpbml0YSBjaGUgY29udGllbmUgQ2FsZW5kYXIuIERldmUgY29udGVuZXJlIHVubyBTbWFydHkgdGFnIGNoZSByaWNoaWFtYSBDYWxlbmRhci4gT2JibGlnYXRvcmlvIHNlIHVzYXRlIGxcJ29wemlvbmUgcHJldHR5IFVSTC4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnQ2FydGVsbGEgaW4gcG9zaXppb25hcmUgaSBmaWxlIGNhcmljYXRpJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpcGkgZGkgZmlsZSBwZXJtZXNzaSc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdWZXJpZmljYSBub21pIGRpIGZpbGUgdW5pY2knOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JpcGV0aXppb25lIEV2ZW50byc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdTaSByaXBldGUgZmlubyBhbCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+U3RhbXBhIE5vbWUgQXV0b3JlOjwvYj48L3A+DQo8Y29kZT5BdXRvcmU6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/lt_LT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnUHJhbmUmc2Nhcm9uO3RpIHBvIMSvdnlraW8gxK9kxJdqaW1vJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ1ByYW5lJnNjYXJvbjt0aSBwbyBlc2FuxI1pbyDEr3Z5a2lvIHJlZGFnYXZpbW8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ1ByYW5lJnNjYXJvbjt0aSBwbyDEr3Z5a2lvIGkmc2Nhcm9uO3RyaW5pbW8nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdQcmFuZSZzY2Fyb247dGkgcG8ga2F0ZWdvcmlqb3Mgc3VrxatyaW1vJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1ByYW5lJnNjYXJvbjt0aSBwbyBrYXRlZ29yaWpvcyByZWRhZ2F2aW1vJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdQcmFuZXMmc2Nhcm9uO3RpIHBvIGthdGVnb3Jpam9zIGkmc2Nhcm9uO3RyeW5pbW8nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICfErnZ5a2lzIHByaWTEl3Rhcyc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0VSUk9SOiBObyB1cGxvYWRlZCBmaWxlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VSUk9SOiBUaGUgZmlsZSB1cGxvYWRlZCBjYW5ub3QgYmUgYWNjZXB0ZWQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUlJPUjogQSBwcm9ibGVtIG9jY3VycmVkIHRyeWluZyB0byB1cGxvYWQgdGhlIGZpbGUnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogQSBQcm9ibGVtIG9jY3VycmVkIHdoZW4gY29weWluZyB0aGUgZmlsZSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0VSUk9SOiBBIGZpbGUgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0tsYWlkYTogTmXEr21hbm8gcmFzdGkgQ1NWIGJ5bGEnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnS2xhaWRhOiBOZcSvbWFub21hIGF0aWRhcnl0aSBieWxvcyc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdLYWxlbmRvcml1cyc7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdTdWt1cnRpLCByZWRhZ3VvdGkgaXIgcGEmc2Nhcm9uO2FsaW50aSDEr3Z5a2l1cyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdTdWt1cnRpIMSvdnlrxK8nOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnR1b3RpIMSvdnlraXVzJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICfErnZ5a2lhaSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3Jpam9zJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVuZG9yaWF1cyAmc2Nhcm9uO2FibG9uYXMnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdTxIVyYSZzY2Fyb247byAmc2Nhcm9uO2FibG9uYXMnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ0LFq3NpbcWzIMSvdnlracWzICZzY2Fyb247YWJsb25hcyc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICfErnZ5a2lvICZzY2Fyb247YWJsb25hcyc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdOdXN0YXR5bWFpJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnJmxhcXVvOyBBbmtzdGVzbmlzJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnVsSXbGVzbmlzICZyYXF1bzsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0thdGVnb3Jpam9zIGF0bmF1amludG9zJzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnTnVzdGF0eW1haSBhdG5hdWppbnRpJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdTdWt1cnRpIMSvdnlrxK8nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdSZWRhZ3VvdGknOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0kmc2Nhcm9uO3RyaW50aSc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ0FyIHRpa3JhaSBub3JpdGUgaSZzY2Fyb247dHJpbnRpJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdBdG5hdWppbnRpICZzY2Fyb247YWJsb27EhSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnU2VrbWFkaWVuaXMnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ1Bpcm1hZGllbmlzJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnQW50cmFkaWVuaXMnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1RyZcSNaWFkaWVuaXMnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnS2V0dmlydGFkaWVuaXMnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ1Blbmt0YWRpZW5pcyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICcmU2Nhcm9uO2Umc2Nhcm9uO3RhZGllbmlzJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdTZWsnOwokbGFuZ1snY2FsX21vbiddID0gJ1Bpcic7CiRsYW5nWydjYWxfdHVlcyddID0gJ0FudCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnVHJlJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0tldCc7CiRsYW5nWydjYWxfZnJpJ10gPSAnUGVuJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICcmU2Nhcm9uO2Umc2Nhcm9uOyc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ1NhdXNpbyc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdWYXNhcmlvJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ0tvdm8nOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQmFsYW5kxb5pbyc7CiRsYW5nWydjYWxfbWF5J10gPSAnR2VndcW+xJdzJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnQmlyxb5lbGlvJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnTGllcG9zJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdSdWdwasWrxI1pbyc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnUnVnc8SXam8nOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdTcGFsaW8nOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTGFwa3JpxI1pbyc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdHcnVvZMW+aW8nOwokbGFuZ1snY2FsX2FkZCddID0gJ1ByaWTEl3RpJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBdG5hdWppbnRpJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ8SudnlraXMnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU2FudHJhdWthJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWzEl3MnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdwbGHEjWlhdSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnR3LEr8W+dGknOwokbGFuZ1snY2FsX3RvJ10gPSAnaWtpJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ1ByYcSXasSZIMSvdnlraWFpJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdBcnTEl2phbnR5cyDEr3Z5a2lhaSc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnVmlzb3Mga2F0ZWdvcmlqb3MnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfErnZ5a2l1cyByb2R5dGkgdGlrJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cnVvdGkgcGFnYWwnOwokbGFuZ1snY2FsX2dvJ10gPSAnUGlybXluJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1BhdmFkaW5pbWFzJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ051byBkYXRvcyc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnSWtpIGRhdG9zJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ0F0bmF1amludGkga2F0ZWdvcmlqYXMnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnS2FsYmEnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQXRuYXVqaW50aSBudXN0YXR5bXVzJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICduYXVkb3RpIDEyIHZhbGFuxbMgZm9ybWF0xIU/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnxK5wcmFzdGEga2F0ZWdvcmlqYSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ1VwZGF0ZSBGaWVsZHMnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdCxat0aW5haSBiZW50IHZpZW5hIGthdGVnb3JpamEgcGFzaXJpbmt0aSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnS2llayBtZXTFsyDEryBwcmFlaXRpIGxlaXN0aSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdLaWVrIG1ldMWzIMSvIGF0ZWl0xK8gbGVpc3RpJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnQXIgc2FudHJhdWtvcyBsYXVrZWxpcyB0dXLEl3TFsyBixat0IHBhc2zEl3B0YXMnOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdBciB0dXJpbmlvbGF1a2VsaXMgdHVyxJd0xbMgYsWrdCBwYXNsxJdwdGFzJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnUHJhJnNjYXJvbjtvbWUgcGFzaXJpbmt0aSB2aWVuYSBhciBrZWxpYXMga2F0ZWdvcmlqYXMnOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0thbGVuZG9yaWF1cyBDU1MgcGF2eXpkeXMnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1R1cml0ZSB0dXLEl3RpIGF0aXRpbmthbcSFICglcykgbGVpZG3EhSAmc2Nhcm9uO2lhaSBmdW5rY2lqYWknOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ8Suc2l0aW5raXRlLCBrYWQgJnF1b3Q7bW9kaWZ5IGNhbGVuZGFyJnF1b3Q7IGxlaWRpbWFpIG51c3RhdHl0aSB0aW5rYW1haSB2YXJ0b3RvamFtcyBrdXJpZSBuYXVkb3NpIGthbGVuZG9yaWF1cyBmdW5rY2lqYSc7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdUcmludGkgcGHFvnltxJd0dXMgxK92eWtpdXMnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0FyIHRpa3JhaSBub3JpdCBpJnNjYXJvbjt0cmludGk/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdQYXNpcmlua3RpIMSvdnlraWFpIGkmc2Nhcm9uO3RyaW50aSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICcmU2Nhcm9uO2FibG9uYWknOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJyZTY2Fyb247YWJsb25vIHBhZ2FsYmEnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdCeWzFsyAmc2Nhcm9uO2FibG9uYWknOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdQcmlkxJd0aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYXMnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJyZTY2Fyb247YWJsb25vIHBhdmFkaW5pbWFzJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1JlZGFndW90aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdJJnNjYXJvbjt0cmludGkgJnNjYXJvbjthYmxvbsSFJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnTmF1am8gJnNjYXJvbjthYmxvbm8gcGF2YWRpbmltYXMnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRXJyb3I6IEEgdGVtcGxhdGUgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMuIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byB0aGUgZGF0YWJhc2UgYW5kIGlzIG5vdyBpbnN0YWxsZWQgZm9yIHVzZS4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaWV3IERlZmF1bHQgU3R5bGVzaGVldCc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0J5bG9zIHBhdmFkaW5pbWFzJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0dW90aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJyZTY2Fyb247YWJsb25hcyBidXZvIHPEl2ttaW5nYWkgaSZzY2Fyb247IGR1b21lbsWzIGJhesSXcyBpJnNjYXJvbjt0cmludGFzJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJyZTY2Fyb247YWJsb25hcyBhdG5hdWppbnRhcyBzxJdrbWluZ2FpJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0tsYWlkYSBhdG5hdWppbmFudCAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ051c3RhdHltYWkgc8SXa21pbmdhaSBpJnNjYXJvbjtzYXVnb3RpJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpamEgcGEmc2Nhcm9uO2FsaW50YSc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdLYXRlZ29yaWphIGF0bmF1amludGEnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0thdGVnb3JpamEgcHJpZMSXdGEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnxK52eWtpcyBwYSZzY2Fyb247YWxpbnRhcyc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICfErnZ5a2lzIGF0bmF1amludGFzJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vycm9yOiBZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IHBhZ2UgaW4gb3JkZXIgdG8gdXNlIENhbGVuZGFyIHdpdGggcHJldHR5IFVSTHMgdHVybmVkIG9uLiBQbGVhc2UgZ28gdG8gdGhlIENhbGVuZGFyIHNldHRpbmdzIHRhYiBhbmQgY2hvb3NlIG9uZS4nOwokbGFuZ1sndGltZV9hdCddID0gJ2lraSc7CiRsYW5nWyd0eXBlJ10gPSAnVGlwYXMnOwokbGFuZ1snbmFtZSddID0gJ1BhdmFkaW5pbWFzJzsKJGxhbmdbJ29yZGVyJ10gPSAnVHZhcmthJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdMYXVrYXMgc8SXa21pbmdhaSBwcmlkxJd0YXMnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnTGF1a2FzIGkmc2Nhcm9uO3RyaW50YXMnOwokbGFuZ1snZmllbGRzJ10gPSAnQ3VzdG9tIEZpZWxkcyc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0IEZpZWxkJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnRmlsZSB1cGxvYWQgZmllbGQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBldmVudHMgb24geW91ciBwYWdlLiBXaGVuIHRoZQ0KCQltb2R1bGUgaXMgaW5zdGFsbGVkLCBhIENhbGVuZGFyIGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIGNvbnRlbnQgbWVudQ0KCQl0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdEZWZhdWx0IHBhZ2UgdGhhdCBjb250YWlucyBDYWxlbmRhci4gVGhpcyBwYWdlIG11c3QgY29udGFpbiBhIFNtYXJ0eSB0YWcgdGhhdCBjYWxscyBDYWxlbmRhci4gUmVxdWlyZWQgaWYgeW91IHVzZSB0aGUgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZXIgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnTGVpZMW+aWFtaSBieWzFsyB0aXBhaSc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdFbnN1cmUgdW5pcXVlIGZpbGVzbmFtZXMnOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICdUaHVtYm5haWwgV2lkdGgnOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnVGh1bWJuYWlsIEhlaWdodCc7CiRsYW5nWydsYXJnZV93aWR0aCddID0gJ0xhcmdlIEltYWdlIFdpZHRoJzsKJGxhbmdbJ2xhcmdlX2hlaWdodCddID0gJ0xhcmdlIEltYWdlIEhlaWdodCc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnUmVjdXJzJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ1JlY3VycyBVbnRpbCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ0JydWtlcmVuIGVyIGlra2UgbG9nZ2V0IGlubiBpIEZFVS4gTGVnZ2UgdGlsIGVsbGVyIHJlZGlnZXJlIGhlbmRlbHNlciBlciBpa2tlIHRpbGxhdHQnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ1Zlbm5saWcgbmF2biBmb3IgZGVubmUgbW9kdWxlbiBpIGFkbWluIG1lbnllbic7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ01lcms6IER1IHZpbCBrYW5za2plIHRyZW5nZSDDpSB0w7htbWUgbmV0dHN0ZWRldHMgbWVsbG9tbGFnZXIgZm9yIGF0IGRlbm5lIGlubnN0aWxsaW5nZW4gc2thbCBmw6UgZWZmZWt0LiBPbSBpbmdlbiB2ZXJkaSBlciBvcHBnaXR0IHPDpSB2aWwgZW4gc3RhbmRhcmQgYmVueXR0ZXMuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnQmVueXR0IFd5c2l3eWcnOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnVXRpbHN0cmVra2VsaWdlIHBhcmFtZXRlcmUnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ1NraWxsZXRlZ24gZm9yIGltcG9ydGZpbGVucyBrb2xvbm5lcic7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0IGZ1bGxmw7hydCc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdBbnRhbGwgYmVnaXZlbmhldGVyIG9wcHJldHRldDogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnQW50YWxsIGxpbmplciBiZWhhbmRsZXQgZnJhIGZpbGVuOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdGZWlsJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWludmFsaWRmaWVsZCddID0gJ0ZlbHQ6ICVzIGVyIGlra2UgZ2plbmtqZW50LCBvZyBlciBpa2tlIGV0IGVnZW5kZWZpbmVydCBmZWx0JzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1ZlbGcgZmlsIMOlIGltcG9ydGVyZSc7CiRsYW5nWydkZWxldGUnXSA9ICdTbGV0dCc7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQ29tcGFueSBEaXJlY3RvcnkgZmlybWEnOwokbGFuZ1snZGZsdF91cmxwcmVmaXgnXSA9ICdTdGFuZGFyZCBVUkwtcHJlZmlrcyBmb3IgYnJ1a2VydmVubmxpZ2UgVVJMZXInOwokbGFuZ1snZGZsdF9hbGxkYXlldmVudCddID0gJ055ZSBiZWdpdmVuaGV0ZXIgZXIgIkhlbGUgZGFnZW4iIGJlZ2l2ZW5oZXRlciBzb20gc3RhbmRhcmQnOwokbGFuZ1snZGZsdF9zdGFydHRpbWUnXSA9ICdTdGFuZGFyZCBzdGFydHRpZCBmb3IgbnllIGJlZ2l2ZW5oZXRlcic7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPihrdW4gZ3lsZGlnIG9tIG55ZSBiZWdpdmVuaGV0ZXIgaWtrZSBlciAiSGVsZSBkYWdlbiIgYmVnaXZlbmhldGVyLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ1PDuGtldHlwZSc7CiRsYW5nWydzZWFyY2hfYW55J10gPSAnVmlzIHJlc3VsdGF0ZXIgc29tIHBhc3NlciBodmlsa2V0IHNvbSBoZWxzdCBvcmQnOwokbGFuZ1snc2VhcmNoX2FsbCddID0gJ1ZpcyByZXN1bHRhdGVyIHNvbSBwYXNzZXIgYWxsZSBvcmRlbmUnOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1PDuGtiYXInOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0dqZWxkZXIga3VuIHRpbCBteWV2ZW50cyBoYW5kbGluZ2VuLCBkZW5uZSBwYXJhbWV0ZXJlbiBrYW4gYW5naSBlbiBpa2tlIHN0YW5kYXJkICJyZWRpZ2VyIGJlZ2l2ZW5oZXQiIG1hbCBzb20gc2thbCBicnVrZXMgbsOlciBlbiBicnVrZXIgb3BwcmV0dGVyIGVsbGVyIHJlZGlnZXJlciBlbiBiZWdpdmVuaGV0JzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdHamVsZGVyIGt1biB0aWwgbXlldmVudHMgaGFuZGxpbmdlbiwgZGVubmUgcGFyYW1ldGVyZW4ga2FuIGFuZ2kgZW4gYW5uZW4gc2lkZSBmb3IgcmVkaWdlcmluZ3Mgc2tqZW1hZXQuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0dqZWxkZXIga3VuIHRpbCBteWV2ZW50cyBoYW5kbGluZ2VuLCBkZW5uZSBwYXJhbWV0ZXJlbiBrYW4gYW5naSBlbiBpa2tlIHN0YW5kYXJkIG1hbCDDpSBiZW55dHRlJzsKJGxhbmdbJ2NhbF9lZGl0X2V2ZW50J10gPSAnUmVkaWdlciBLYWxlbmRlcmJlZ2l2ZW5oZXQnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFzZWZlaWwnOwokbGFuZ1snc3VibWl0J10gPSAnTGFncmUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2VkaXRldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbXN0YW5kYXJkICJSZWRpZ2VyIGJlZ2l2ZW5oZXQiIG1hbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbXlldmVudHNfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCAiTWluZSBiZWdpdmVuaGV0ZXIiIG1hbCc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTWVkbGVtbWVyIGF2IGRlbm5lIEZFVS1ncnVwcGUga2FuIGxlZ2dlIHRpbCBiZWdpdmVuaGV0ZXInOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnU3RhbmRhcmQgc2lkZSBmb3IgZnJvbnRlbmQgcmVkaWdlcmluZ3NramVtYSc7CiRsYW5nWydub25lJ10gPSAnSW5nZW4nOwokbGFuZ1snb3duZXInXSA9ICdFaWVyJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnUmVkaWdlciBCZWdpdmVoZXRza2plbWEgbWFsZXInOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3IgIlJlZGlnZXIgaGFuZGVsc2UiIHNramVtYSc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGVnZyB0aWwvcmVkaWdlciBlbiAiUmVkaWdlciBiZWdpdmVuaGV0IiBza2plbWFtYWwnOwokbGFuZ1snY2FsX215ZXZlbnRzX3RlbXBsYXRlcyddID0gJyJNaW5lIEJlZ2l2ZW5oZXRlciIgbGlzdGVtYWxlcic7CiRsYW5nWydpbmZvX215ZXZlbnRzX3RlbXBsYXRlX3RhYiddID0gJ0xpc3RlbiBtZWQgbWFsZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgZm9yIMOlIHZpc2UgZW4gbGlzdGUgbWVkIGJydWtlcmJlZ2l2ZW5oZXRlcic7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdMZWdnIHRpbC9yZWRpZ2VyIGVuICJNaW5lIGJlZ2l2ZW5oZXRlciIgcmFwcG9ydG1hbCc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnRGVubmUgaGFuZGxpbmdlbiB2aWwgZmplcm5lIGV2ZW50dWVsbGUgYmVnaXZlbmhldGVyIHNvbSBlciBpIGtvbmZsaWt0IG1lZCBiZWdpdmVuaGV0ZXIgc29tIGlra2Ugc2thbCB2w6ZyZSBvdmVybGFwcGVuZGUuIEVyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIGdqw7hyZSBkZXR0ZT8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdHJlciBtb3RzdHJpZGVuZGUgYmVnaXZlbmhldGVyJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ0ZqZXJuIG1vdHN0cmlkZW5kZSBiZWdpdmVuaGV0ZXIgc3RpbGxlJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnVmlzIGVuIGZlaWxtZWxkaW5nJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ0h2YSBiw7hyIHNramUgbsOlciBlbiBrb25mbGlrdCBvcHBkYWdlcyB1bmRlciByZWRpZ2VyaW5nIGVsbGVyIHVuZGVyIG9wcHJldHRlbHNlIGF2IGVuIGJlZ2l2ZW5oZXQnOwokbGFuZ1snZXJyb3JfZXZlbnRfY29uZmxpY3QnXSA9ICdCZWdpdmVuaGV0c3ZlcmRpZW5lIGFuZ2l0dCBvdmVybGFwcGVyIG1lZCBlbiBla3Npc3RlcmVuZGUgYmVnaXZlbmhldCBzb20gaWtrZSB0aWxsYXRlciBrb25mbGlrdGVyJzsKJGxhbmdbJ2NhbF9pbmZvX292ZXJsYXAnXSA9ICdHamVsZGVyIGJhcmUgZm9yIGJlZ2l2ZW5oZXRlciBtZWQgZW4gc2x1dHRpZCAoZWxsZXIgaGVsZSBkYWdlbiBiZWdpdmVuaGV0ZXIpJzsKJGxhbmdbJ2NhbF9vdmVybGFwJ10gPSAnVGlsbGF0IG55ZSBhcnJhbmdlbWVudGVyIGZvciDDpSBvdmVybGFwcGUgbWVkIGRlbm5lJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0JlZ2l2ZW5oZXQgb3ZlcmxhcHBpbmdzcmVnbGVyJzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdBbGxlIGJlZ2l2ZW5oZXRlciBrYW4gb3ZlcmxhcHBlJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnSW5nZW4gYmVnaXZlbmhldGVyIGthbiBvdmVybGFwcGUnOwokbGFuZ1sncG9saWN5X2luZGl2aWR1YWwnXSA9ICdCZXN0ZW10IHZlZCBodmVyIGJlZ2l2ZW5oZXQnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdUaWxiYWtlJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdNYWxlcic7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1Rla3N0b21yw6VkZSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdWaSBoYXIgb3BwZGFnZXQgYXQgY2FsZW5kYXIgbW9kdWxlbiBlciBpbnN0YWxsZXJ0IG9nc8OlLi4uIERlbm5lIG1vZHVsZW4gZXIgaWtrZSBrb21wYXRpYmVsIG1lZCBjYWxlbmRhciBtb2R1bGVuIG9nIGthbiBpa2tlIHbDpnJlIGluc3RhbGxlcnQgcMOlIHNhbW1lIG5ldHRzdGVkLiBWZW5ubGlnc3QgYXZpbnN0YWxsZXIgQ2FsZW5kYXIgbW9kdWxlbic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFbnRlbiBlciBpa2tlIGV2ZW50X2lkIGkgZGF0YWJhc2VuLCBlbGxlciBzw6UgZXIgZGV0IG1lciBlbm4gZW4gYmVnaXZlbmhldCBtZWQgZGVubmUgaWQhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnU2lkZSAlZCBhdiAlZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0thbGVuZGVyIHPDuGtlcmVzdWx0YXRlcic7CiRsYW5nWydzZWFyY2hfd29yZHMnXSA9ICdTw7hrZW9yZCc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnSW5nZW4gZnVubiBmb3Igc3DDuHJyaW5nZW4gZHUgYW5nYSc7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdIeXBwaWdoZXQnOwokbGFuZ1snc3BlY2lmaWVkX2RhdGUnXSA9ICdCcnVrIGRlbiBzcGVzaWZpc2VydGUgZGF0byc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGw7hyc3RlIHPDuG5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmaXJzdF9tb25kYXknXSA9ICdmw7hyc3RlIG1hbmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdGw7hyc3RlIHRpcnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdmw7hyc3RlIG9uc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnRsO4cnN0ZSB0b3JzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRsO4cnN0ZSBmcmVkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ2bDuHJzdGUgbMO4cmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdBbmRyZSBzw7huZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ0FuZHJlIG1hbmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnQW5kcmUgdGlyc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdBbmRyZSBvbnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdBbmRyZSB0b3JzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ0FuZHJlIGZyZWRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF9zYXR1cmRheSddID0gJ0FuZHJlIGzDuHJkYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUcmVkamUgc8O4bmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3RoaXJkX21vbmRheSddID0gJ1RyZWRqZSBtYW5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVHJlZGplIHRpcnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUcmVkamUgb25zZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1sndGhpcmRfdGh1cnNkYXknXSA9ICdUcmVkamUgdG9yc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3RoaXJkX2ZyaWRheSddID0gJ1RyZWRqZSBmcmVkYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ3RyZWRqZSBsw7hyZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ0ZqZXJkZSBzw7huZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0ZqZXJkZSBtYW5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ0ZqZXJkZSB0aXJzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZqZXJkZSBvbnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdGamVyZGUgdG9yc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2ZvdXJ0aF9mcmlkYXknXSA9ICdGamVyZGUgZnJlZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX3NhdHVyZGF5J10gPSAnRmplcmRlIGzDuHJkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ1Npc3RlIHPDuG5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X21vbmRheSddID0gJ1Npc3RlIG1hbmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ1Npc3RlIHRpcnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ1Npc3RlIG9uc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2xhc3RfdGh1cnNkYXknXSA9ICdTaXN0ZSB0b3JzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdTaXN0ZSBmcmVkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnU2lzdGUgbMO4cmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnVWd5bGRpZyBoeXBwaWdoZXQuLi4uIGR1IGthbiBpa2tlIHNwZXNpZmlzZXJlIGLDpWRlIGVuIHNwZXNpZmlrayBkYXRvIE9HIGFuZHJlIHZhbGcnOwokbGFuZ1snc2VhcmNocmVzdWx0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xlZ2cgdGlsL3JlZGlnZXIgZW4gc8O4a2VyZXN1bHRhdCBtYWwnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnIGZvciBzw7hrZXJlc3VsdGF0IHZpc25pbmdlbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNocmVzdWx0X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgc8O4a2VyZXN1bHRhdCBtYWwnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnU8O4a2VyZXN1bHRhdCBtYWxlcic7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdEYXRhYmFzZXNww7hycmluZyBmZWlsZXQnOwokbGFuZ1snZXJyb3Jfc2VhcmNoX2ludmFsaWRfZGF0ZXMnXSA9ICcqVWd5bGRpZ2Ugc8O4a2VkYXRvZXIgc3Blc2lmaXNlcnQnOwokbGFuZ1sndGV4dCddID0gJ1Rla3N0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1PDuGsnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdLYXRlZ29yaSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgc8O4a2Vza2plbWEgbWFsJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMZWdnIHRpbC9yZWRpZ2VyIHPDuGtlc2tqZW1hIG1hbCc7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZW4gbWVkIG1hbGVyIHNvbSBlciB0aWxnamVuZ2VsaWcgZm9yIHPDuGtlc2tqZW1hZXQnOwokbGFuZ1snY2FsX3NlYXJjaF9mb3JtX3RlbXBsYXRlcyddID0gJ1PDuGtlc2tqZW1hIG1hbGVyJzsKJGxhbmdbJ21heCddID0gJ21ha3MnOwokbGFuZ1sndGltZXMnXSA9ICdnYW5nZXInOwokbGFuZ1snb24nXSA9ICdww6UnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdFciBkdSBzaWtrZXIgcMOlIGF0IGR1IHZpbCBnasO4cmUgZGV0dGU/IMOFIGZvcnRzZXR0ZSB2aWwgcGVybWFuZW50IHNsZXR0ZSBhbGwgZGF0YSBhc3Nvc2llcnQgbWVkIGRlbm5lIG1vZHVsZW4uJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnQ2FsZW5kYXIgbW9kdWxlbiBoYXIgYmxpdHQgYXZpbnN0YWxsZXJ0IG9nIGFsbCBiZWdpdmVuaGV0LSBvZyBtYWxpbmZvcm1hc2pvbiBhc3Nvc2llcnQgbWVkIGRlbm5lIG1vZHVsZW4gaGFyIGJsaXR0IGZqZXJuZXQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmVsdCBvcHBkYXRlcnQnOwokbGFuZ1snZXZlcnknXSA9ICdIdmVyJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnT3BwZGF0ZXIgdW5kZXJsaWdnZW5kZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ0R1IG3DpSB2ZWxnZSBtaW5zdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdJbmdlbnRpbmcgZXIgdmFsZ3QgZm9yIHNsZXR0aW5nJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0dqZW50YXR0IGJlZ2l2ZW5oZXQgcGFyYW1ldGVybmUgZHUgaGFyIG9wcGdpdHQgdmlsIHJlc3VsdGVyZSBpIG92ZXJsYXBwZW5kZSBiZWdpdmVuaGV0ZXIuJzsKJGxhbmdbJ3JlY3VycyddID0gJ0dqZW50YXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ0VuIGVsbGVyIGZsZXJlIGF2IGRhdG92ZXJkaWVuZSBzb20gZWVyIG9wcGdpdHQgdmFyIGlra2UgZ3lsZGlnJzsKJGxhbmdbJ3N1bmRheSddID0gJ1PDuG5kYWcnOwokbGFuZ1snbW9uZGF5J10gPSAnTWFuZGFnJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdUaXJzZGFnJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ09uc2RhZyc7CiRsYW5nWyd0aHVyc2RheSddID0gJ1RvcnNkYWcnOwokbGFuZ1snZnJpZGF5J10gPSAnRnJlZGFnJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnTMO4cmRhZyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ1PDuCc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ01hJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ1RpJzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnT24nOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1RvJzsKJGxhbmdbJ2FiYnJfZnJpZGF5J10gPSAnRnInOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ0zDuCc7CiRsYW5nWyd3ZWVrJ10gPSAnVWtlJzsKJGxhbmdbJ21vbnRoJ10gPSAnTcOlbmVkJzsKJGxhbmdbJ2RheSddID0gJ0RhZyc7CiRsYW5nWyd0b2RheSddID0gJ0kgZGFnJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnVWtlZGFnZXInOwokbGFuZ1sncGx1cmFsX25vbmUnXSA9ICdJbmdlbic7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEYWdlcic7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVWtlcic7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ03DpW5lZGVyJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICfDhXInOwokbGFuZ1snbm8nXSA9ICdOZWknOwokbGFuZ1snZGFpbHknXSA9ICdEYWdsaWcnOwokbGFuZ1snd2Vla2x5J10gPSAnVWtlbnRsaWcnOwokbGFuZ1snbW9udGhseSddID0gJ03DpW5lZGxpZyc7CiRsYW5nWyd5ZWFybHknXSA9ICfDhXJsaWcnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdHamVudGEgaHZlcic7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ0dqZW50YWtlbmRlIGJlZ2l2ZW5oZXRzZGV0YWxqZXInOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnVWJlZ3JlbnNldCc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWFrc2ltYWx0IGFudGFsbCB1bmRlcmxpZ2dlbmRlIGJlZ2l2ZW5oZXRlcic7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ1NwZXNpZmlzZXIgZW4gYW5uZW4gc2x1dHRkYXRvPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBdmJyeXQnOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdWaXMgdW5kZXItYmVnaXZlbmhldCc7CiRsYW5nWyduL2EnXSA9ICdpL3QnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnR2plbnRhIGlubnRpbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdPdmVyb3JkbmV0JzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ0dqZW50YWtlbHNlc3BlcmlvZGUnOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdHJlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnRkYXRvJzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnU3V0dGRhdG8nOwokbGFuZ1snaW5mb191cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3IgdXBjb21pbmdsaXN0KGtvbW1lbmRlIGJlZ2l2ZW5oZXRlcnNsaXN0ZSkgdmlzbmluZyc7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGVnZyB0aWwvcmVkaWdlciBVcGNvbWluZ2xpc3Qoa29tbWVuZGUgYmVnaXZlbmhldGVyc2xpc3RlKSB2aXNuaW5nc21hbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgVXBjb21pbmdsaXN0KGtvbW1lbmRlIGJlZ2l2ZW5oZXRlcnNsaXN0ZSkgbWFsJzsKJGxhbmdbJ2luZm9fbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZW4gbWVkIG1hbGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIGZvciBsaXN0ZXZpc25pbmdlcic7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xlZ2cgdGlsL3JlZGlnZXIgZW4gTGlzdGV2aXNuaW5nc21hbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbXN0YW5kYXJkIExpc3RldmlzbmluZ3NtYWwnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZW4gbWVkIG1hbGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIGZvciBCZWdpdmVuaGV0c3Zpc25pbmdlcic7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMZWdnIHRpbC9yZWRpZ2VyIGVuIEJlZ2l2ZW5oZXRzdmlzbmluZ3NtYWwnOwokbGFuZ1snaW5mb19zeXNkZmx0X2V2ZW50X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgIEJlZ2l2ZW5oZXRzbWFsJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3Iga2FsZW5kZXJ2aXNuaW5nZXInOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGVnZyB0aWwvcmVkaWdlciBlbiBLYWxlbmRlcnZpc25pbmdzbWFsJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbXN0YW5kYXJkIEthbGVuZGVybWFsJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ0RldHRlIHNramVtYSBkZWZpbmVyZXIgbWFsZW4gc29tIHZpbCBibGkgYmVueXR0ZXQgbsOlciBkdSBrbGlra2VyICJOeSBtYWwiIGkgZGVuIGFrdHVlbGxlIGZhbmVuLiDDhSBlbmRyZSBub2UgaGVyIHZpbCBpa2tlIGhhIG5vZW4gdW1pZGRlbGJhciBlZmZla3QgcMOlIHZpc25pbmdlciBnZW5lcmVydCBmcmEgZGVubmUgbW9kdWxlbi4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdLYWxsdCBldHRlciBlbiBrYWxlbmRlcmJlZ2l2ZW5oZXQgbGVnZ2VzIHRpbCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdLYWxsdCBldHRlciBlbiBrYWxsZW5kZXJiZWdpdmVuaGV0IGVyIHJlZGlnZXJ0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdLYWxsdCBldHRlciBlbiBiZWdpdmVuaGV0IGhhciBibGl0dCBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnS2FsbHQgZXR0ZXIgZW4ga2F0ZWdvcmkgZXIgb3BwcmV0dGV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0thbGx0IGV0dGVyIGVuIGthdGVnb3JpIGVyIHJlZGlnZXJ0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdLYWxsdCBldHRlciBlbiBrYXRlZ29yaSBlciBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+U2VuZHQgbsOlciBlbiBrYWxlbmRlcmJlZ2l2ZW5oZXQgZXIgbGFndCB0aWwuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEJlZ2l2ZW5oZXRzIFRpdHRlbDwvbGk+DQo8bGk+XCJldmVudF9zdW1tYXJ5XCIgLSBTYW1tZW5kcmFnIHRla3N0PC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldGFsamVydCBiZXNrcml2ZWxzZTwvbGk+DQo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBCZWdpdmVuaGV0ZW5zIHN0YXJ0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBCZWdpdmVuaGV0ZW5zIHNsdXR0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIEJydWtlcklEZW4gZm9yIG9wcGhhdnNtYW5uZW48L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIEJlZ2l2ZW5oZXRlbnMgSUQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VuZHQgbsOlciBlbiBrYWxlbmRlcmJlZ2l2ZW5oZXQgZXIgcmVkaWdlcnQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEJlZ2l2ZW5oZXRzIHRpdHRlbDwvbGk+DQo8bGk+XCJldmVudF9zdW1tYXJ5XCIgLSBTYW1tZW5kcmFnIHRla3N0PC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldGFsamVydCBiZXNrcml2ZWxzZTwvbGk+DQo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBCZWdpdmVuaGV0ZW5zIHN0YXJ0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBCZWdpdmVuaGV0ZW5zIHNsdXR0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIEJydWtlcklEZW4gZm9yIG9wcGhhdnNtYW5uZW48L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIEJlZ2l2ZW5oZXRlbnMgSUQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbmR0IG7DpXIgZW4ga2FsZW5kZXJiZWdpdmVuaGV0IGVyIHNsZXR0ZXQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfaWRcIiAtIEJlZ2l2ZW5oZXRlbnMgSUQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW5kdCBuw6VyIGVuIGthbGVuZGVyIGthdGVnb3JpIGVyIGxhZ3QgdGlsLjwvcD4NCjxoND5QYXJhbWV0ZXJlPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBLYXRlZ29yaSBJRGVuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbmR0IG7DpXIgZW4ga2FsZW5kZXIga2F0ZWdvcmkgZXIgcmVkaWdlcnQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIEthdGVnb3JpIElEZW48L2xpPg0KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gS2F0ZWdvcmkgbmF2bmV0PC9saT4NCjxsaT5cImNhdGVnb3J5X29yZGVyXCIgLSBLYXRlZ29yaSBzb3J0ZXJpbmdzcmVra2Vmw7hsZ2VuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW5kdCBuw6VyIGVuIGthbGVuZGVyIGthdGVnb3JpIGVyIHNsZXR0ZXQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIEthdGVnb3JpIElEZW48L2xpPg0KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gS2F0ZWdvcmkgbmF2bmV0PC9saT4NCjxsaT5cImNhdGVnb3J5X29yZGVyXCIgLSBLYXRlZ29yaSBzb3J0ZXJpbmdzcmVra2Vmw7hsZ2VuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2Vycm9yX2Nzdl9pbnNlcnQnXSA9ICdGZWlsIHZlZCBpbXBvcnQgYXYgYmVnaXZlbmhldCBmcmEgY3N2IHDDpSBsaW5qZSAlZCc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVmbGRub3Rmb3VuZCddID0gJ0V0IHDDpWtyZXZkIGZlbHQ6ICVzLCBibGUgaWtrZSBmdW5uZXQgaSBkZW5uZSBDU1YtZmlsZW5zIG92ZXJza3JpZnRzbGluamUnOwokbGFuZ1snZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZSddID0gJ0tsYXJ0ZSBpa2tlIMOlIGZpbm5lIGVuIGd5bGRpZyBmw7hyc3RlIGxpbmplIGkgQ1NWLWZpbGVuJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAnQmVnaXZlbmhldCBsYWd0IHRpbCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0V0IG5hdm4gcMOlIGJlZ2l2ZW5oZXRlbiBlciBww6VrcmV2ZCc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0ZFSUw6IEluZ2VuIG9wcGxhc3RldCBmaWwgZnVubmV0JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0ZFSUw6IERlbiBvcHBsYXN0ZWRlIGZpbGVuIGthbiBpa2tlIGFrc2VwdGVyZXMnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdGRUlMOiBFdCBwcm9ibGVtIG9wcHN0b2QgdW5kZXIgZm9yc8O4ayBww6Ugw6UgbGFzdGUgb3BwIGZpbGVuJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRkVJTDogRXQgcHJvYmxlbSBvcHBzdG9kIHVuZGVyIGtvcGllcmluZyBhdiBmaWxhIHRpbCBzaW4gbcOlbHBsYXNzZXJpbmcnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZFSUw6IEVuIGZpbCBtZWQgZGV0dGUgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRkVJTDogS3VubmUgaWtrZSBmaW5uZSBDU1YgRmlsZW4nOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnRkVJTDogS2FuIGlra2Ugw6VwbmUgZmlsZW4nOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJPUjogRW4ga2F0ZWdvcmkgbWVkIG5hdm5ldCAlcyBla3Npc3RlcmVyIGFsbGVyZWRlJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGd1eXMgS2FsZW5kZXInOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnU3RhbmRhcmQgbWFsZXInOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnRW4gZmxla3NpYmVsIG1vZHVsIG1lZCBtYW5nZSBlZ2Vuc2thcGVyIHNvbSB0aWxsYXRlciB2aXNuaW5nIGF2IGluZm9ybWFzam9uIG9tIGJlZ2l2ZW5oZXRlciBww6UgbWFuZ2UgZm9yc2tqZWxsaWdlIG3DpXRlci4nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnTGVnZyB0aWwgYmVnaXZlbmhldCc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ0ltcG9ydCBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0JlZ2l2ZW5oZXRlcic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZXInOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTWFsIGZvciBrYWxlbmRlcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ01hbCBmb3IgbGlzdGV2aXNuaW5nJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdNYWwgZm9yIGZvcmVzdMOlZW5kZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnTWFsIGZvciBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnS29uZmlndXJhc2pvbic7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrIEZvcnJpZ2UnOwokbGFuZ1snY2FsX25leHQnXSA9ICdOZXN0ZSDCuyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnS2F0ZWdvcmllciBlciBvcHBkYXRlcnQnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdLb25maWd1cmFzam9uIGVyIG9wcGRhdGVydCc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnTGVnZyB0aWwgYmVnaXZlbmhldCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VuZHJlJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTbGV0dCc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ8OYbnNrZXIgZHUgdmlya2VsaWcgw6Ugc2xldHRlJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdPcHBkYXRlciBtYWwnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1PDuG5kYWcnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ01hbmRhZyc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1RpcnNkYWcnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ09uc2RhZyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdUb3JzZGFnJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnTMO4cmRhZyc7CiRsYW5nWydjYWxfc3VuJ10gPSAnU8O4bic7CiRsYW5nWydjYWxfbW9uJ10gPSAnTWFuJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVGlyJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdPbnMnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnVG9yJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdGcmUnOwokbGFuZ1snY2FsX3NhdCddID0gJ0zDuHInOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW51YXInOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnRmVicnVhcic7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNYXJzJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYWknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5pJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVsaSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPa3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0Rlc2VtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdMZWdnIHRpbCc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnTGFncmUgb2cgbHVrayc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdCZWdpdmVuaGV0JzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0byc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1NhbW1lbmRyYWcnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhbGplcic7CiRsYW5nWydjYWxfbW9yZSddID0gJ21lciA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVGlsYmFrZSc7CiRsYW5nWydjYWxfdG8nXSA9ICd0aWwnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnR2FtbGUgYmVnaXZlbmhldGVyJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdLb21tZW5kZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0FsbGUga2F0ZWdvcmllcic7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ1ZpcyBiYXJlIGJlZ2l2ZW5oZXRlciBpJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cmVyIG1lZCc7CiRsYW5nWydjYWxfZ28nXSA9ICdPSyc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdUaXR0ZWwnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnRnJhIGRhdG8nOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RpbCBkYXRvJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ09wcGRhdGVyIGthdGVnb3JpZXInOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnU3Byw6VrJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ09wcGRhdGVyIGlubnN0aWxsaW5nZXInOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0JydWsgdG9sdi10aW1lcnMga2xva2tlIGZvciB0aW1lIG5lZHRyZWtrPyc7CiRsYW5nWydjYWxfZGVmYXVsdF9jYXRlZ29yeSddID0gJ1N0YW5kYXJkIEthdGVnb3JpJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnT3BwZGF0ZXIgZmVsdGVyJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnS3JldiBtaW5zdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSHZvciBtYW5nZSBoaXN0b3Jpc2tlIMOlciBlciB0aWxsYXR0JzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ0h2b3IgbWFuZ2UgZnJlbXRpZGlnZSDDpXIgZXIgdGlsbGF0dCc7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ1NrYWwgc2FtbWVuZHJhZy1mZWx0ZXQgdsOmcmUgc2tqdWx0JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnU2thbCBpbm5ob2xkLWZlbHRldCB2w6ZyZSBza2p1bHQnOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdWZW5ubGlnc3QgdmVsZyBlbiBlbGxlciBmbGVyZSBrYXRlZ29yaWVyIGZvciBkZW5uZSBiZWdpdmVuaGV0JzsKJGxhbmdbJ21vZHVsZV9leGFtcGxlX3N0eWxlc2hlZXQnXSA9ICdLYWxlbmRlciBDU1MgZWtzZW1wZWwnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ0R1IHRyZW5nZXIgbsO4ZHZlbmRpZyB0aWxsYXRlbHNlICglcykgZm9yIMOlIGbDpSB0aWxnYW5nIHRpbCBkZW5uZSBmdW5rc2pvbmVuJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdIdXNrIMOlIHNldHRlICJNb2RpZnkgQ2FsZW5kYXIiIHRpbGxhdGVsc2UgZm9yIGJydWtlcmUgc29tIHNrYWwgYWRtaW5pc3RyZXJlIEthbGVuZGVyIGJlZ2l2ZW5oZXRlci4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnU2xldHQgbWVya2VkZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0VyIGR1IHNpa2tlciBww6UgYXQgZGlzc2UgYmVnaXZlbmhldGVyIHNrYWwgc2xldHRlcz8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ01lcmtlZGUgYmVnaXZlbmhldGVyIGJsZSBzbGV0dGV0JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ01hbGVyJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdNYWwgSGplbHAnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdGaWwgTWFsZXInOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdMZWdnIHRpbCBtYWwnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNYWwnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ01hbG5hdm4nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnUmVkaWdlciBtYWwnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdTbGV0dCBtYWwnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOeXR0IG1hbG5hdm4nOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRmVpbDogRW4gbWFsIG1lZCBkZXQgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUuIFZlbm5saWdzdCB2ZWxnIGV0IGFubmV0IG5hdm4uJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdFbiBtYWwgYmxlIHZlbGx5a2tldCBpbXBvcnRlcnQgdGlsIGRhdGFiYXNlbiBvZyBlciBuw6UgaW5zdGFsbGVydCBmb3IgYnJ1ay4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaXMgU3RhbmRhcmQgc3RpbGFyayc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0ZpbG5hdm4nOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnRlciBtYWwnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ01hbGVuIGJsZSBzbGV0dGV0IGZyYSBkYXRhYmFzZW4uJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ01hbGVuIGJsZSB2ZWxseWtrZXQgb3BwZGF0ZXJ0JzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0VuIGZlaWwgb3Bwc3RvZCB1bmRlciBvcHBkYXRlcmluZyBhdiBtYWxlbic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSW5uc3RpbGxpbmdlbmUgYmxlIGxhZ3JldCc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdLYXRlZ29yaSBzbGV0dGV0JzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0thdGVnb3JpIG9wcGRhdGVydCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmkgbGFndCB0aWwnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnQmVnaXZlbmhldGVuIGJsZSBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0JlZ2l2ZW5oZXRlbiBibGUgb3BwZGF0ZXJ0JzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0ZlaWw6IER1IG3DpSBzZXR0ZSBlbiBzdGFuZGFyZCBzaWRlIGZvciDDpSBrdW5uZSBiZW55dHRlIEthbGVuZGVyIG1lZCB2YWtyZSBVUkxlciBha3RpdmVydC4gVmVubmxpZ3N0IGfDpSB0aWwgS2FsZW5kZXIgaW5uc3RpbGxpbmdlciBvZyB2ZWxnIGVuIHNpZGUuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdww6UnOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1snbmFtZSddID0gJ05hdm4nOwokbGFuZ1snb3JkZXInXSA9ICdTb3J0ZXInOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZlbHRldCBibGUgbGFndCB0aWwnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnRmVsdCBzbGV0dGV0JzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0Vrc3RyYWZlbHRlcihDdXN0b20gZmllbGRzKSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZWtzdGZlbHQnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdGaWxvcHBsYXN0aW5nc2ZlbHQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5LYWxlbmRlcihDR0NhbGVuZGFyKSBlciBlbiBtb2R1bCBmb3IgdmlzbmluZyBhdiBiZWdpdmVuaGV0ZXIgcMOlIGRpbiBuZXR0c2lkZS4gTsOlciBtb2R1bGVuIGVyIGluc3RhbGxlcnQgYmxpciBlbiBhZG1pbmlzdHJhc2pvbnNpZGUgZm9yIEthbGVuZGVyIGxhZ3QgdGlsIGlubmhvbGRzbWVueWVuIHNvbSB2aWwgdGlsbGF0ZSBkZWcgw6UgYWRtaW5pc3RyZXJlIGRpbmUgYmVnaXZlbmhldGVyLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1N0YW5kYXJkIHNpZGUgc29tIGlubmVob2xkZXIgS2FsZW5kZXIuIERlbm5lIHNpZGVuIG3DpSBpbm5laG9sZGUgZW4gU21hcnR5IHRhZ2cgc29tIGthbGxlciBvcHAgS2FsZW5kZXIuIERldHRlIGVyIGtyZXZkIG9tIGR1IGJlbnl0dGVyIHZha3JlIFVSTGVyLic7CiRsYW5nWyd1cGxvYWRkaXJlY3RvcnknXSA9ICdLYXRhbG9nIGh2b3IgZmlsb3BwbGFzdGluZ2VyIHNrYWwgcGxhc3NlcmVzJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpbGxhdHRlIGZpbHR5cGVyJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ1NqZWtrIGZvciB1bmlrZSBmaWxuYXZuJzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdnamVudGFzJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ0dqZW50YXMgaW5udGlsJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5Ta3JpdiBPcHBoYXZzbWFubiBuYXZuOjwvYj48L3A+DQo8Y29kZT5PcHBoYXZzbWFubjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4nOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2RmbHRfY29sb3JzJ10gPSAnU3RhbmRhYXJkIGtsZXVyZW4nOwokbGFuZ1snZWRpdF9jYXRlZ29yeSddID0gJ1dpanppZyBjYXRlZ29yaWUnOwokbGFuZ1snZmdjb2xvciddID0gJ1Zvb3Jncm9uZCBrbGV1cic7CiRsYW5nWydiZ2NvbG9yJ10gPSAnQWNodGVyZ3JvbmQga2xldXInOwokbGFuZ1snZ290b19kYXRlJ10gPSAnR2EgbmFhciBkZXplIGRhdHVtJzsKJGxhbmdbJ3Jlc3VsdHMnXSA9ICdSZXN1bHRhYXQnOwokbGFuZ1sncGFzdCddID0gJ1ZlcmxlZGVuJzsKJGxhbmdbJ2Z1dHVyZSddID0gJ1RvZWtvbXN0JzsKJGxhbmdbJ2ZpbmRfd2hlbiddID0gJ1dhbm5lZXInOwokbGFuZ1snZmluZCddID0gJ1pvZWsuLi4nOwokbGFuZ1snbm90ZSddID0gJ09wbWVya2luZyc7CiRsYW5nWydzdGFydCddID0gJ1N0YXJ0JzsKJGxhbmdbJ2VuZCddID0gJ0VpbmRlJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdPbmJla2VuZGUgZm91dCc7CiRsYW5nWydmaWxlYXR0YWNobWVudCddID0gJ0dla29wcGVsZCBiZXN0YW5kJzsKJGxhbmdbJ3Byb21wdF9nZW5lcmFsX3NldHRpbmdzJ10gPSAnQWxnZW1lbmUgSW5zdGVsbGluZ2VuJzsKJGxhbmdbJ3ByZXZfbW9udGgnXSA9ICdHYSBuYWFyIGRlIHZvcmlnZSBtYWFuZCc7CiRsYW5nWyduZXh0X21vbnRoJ10gPSAnR2EgbmFhciBkZSB2b2xnZW5kZSBtYWFuZCc7CiRsYW5nWydtc2dfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllw6tuIHppam4gYmlqZ2V3ZXJrdCc7CiRsYW5nWydtc2dfZmllbGRzdXBkYXRlZCddID0gJ1ZlbGRlbiB6aWpuIGJpamdld2Vya3QnOwokbGFuZ1snd3lzaXd5ZyddID0gJ3d5c2l3eWcnOwokbGFuZ1snaW5mb19yZW9yZGVyX2NhdGVnb3JpZXMnXSA9ICdEZSBjYXRlZ29yaWUgdm9sZ29yZGUga2FuIHdvcmRlbiBnZXdpanppZ2QgZG9vciBkZSByZWdlbHMgdGUgc2xlcGVuJzsKJGxhbmdbJ2FkZF9maWVsZCddID0gJ1ZlbGQgdG9ldm9lZ2VuJzsKJGxhbmdbJ2FkZF9jYXRlZ29yeSddID0gJ0NhdGVnb3JpZSB0b2V2b2VnZW4nOwokbGFuZ1sncHJvbXB0X2ZpcnN0ZGF5b2Z3ZWVrJ10gPSAnRWVyc3RlIGRhZyB2YW4gZGUgd2Vlayc7CiRsYW5nWydlZGl0X2V2ZW50J10gPSAnR2ViZXVydGVuaXMgd2lqemlnZW4nOwokbGFuZ1snZWRpdF9wYXJlbnRfZXZlbnQnXSA9ICdCb3ZlbmxpZ2dlbmRlIGdlYmV1cnRlbmlzIHdpanppZ2VuJzsKJGxhbmdbJ3NlbGVjdF9wZXJpb2QnXSA9ICdQZXJpb2RlJzsKJGxhbmdbJ3Nob3dfZmlsdGVyJ10gPSAnVG9vbiBmaWx0ZXInOwokbGFuZ1snc2hvd19maWx0ZXJfYXBwbGllZCddID0gJ1Rvb24gZmlsdGVyIDxlbT4oYWN0aWVmKTwvZW0+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnSGVyc3RlbGxlbic7CiRsYW5nWydjYWxfY3VycmVudCddID0gJ0RlemUgcGVyaW9kZSc7CiRsYW5nWydjYWxfZnJvbSddID0gJ3Zhbic7CiRsYW5nWydlcnJvcl9mZXVfbG9nZ2VkaW4nXSA9ICdEZSBnZWJydWlrZXIgaXMgbmlldCBhYW5nZW1lbGQgaW4gZGUgRkVVIG1vZHVsZS4gIEhldCB0b2V2b2VnZW4gb2Ygd2lqemlnZW4gdmFuIGdlYmV1cnRlbmlzc2VuIGlzIG5pZXQgbW9nZWxpamsnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ0dlYnJ1aWtzdnJpZW5kZWxpamtlIG5hYW0gdm9vciBkZXplIG1vZHVsZSBiaW5uZW4gaGV0IGJlaGVlcnBhbmVlbCc7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ09wbWVya2luZzogVSBkaWVudCBtb2dlbGlqayBkZSBjYWNoZSB0ZSBsZWdlbiBvbSBkZXplIGluc3RlbGxpbmcgdGUgbGF0ZW4gd2Vya2VuLiBXYW5uZWVyIGdlZW4gd2FhcmRlIGlzIG9wZ2VnZXZlbiB6YWwgZWVuIHN0YW5kYWFyZHdhYXJkZSB3b3JkZW4gZ2VicnVpa3QuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnR2VicnVpayBXWVNJV1lHJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ1ZlcmtlZXJkZSBQYXJhbWV0ZXJzJzsKJGxhbmdbJ2NvbHVtbl9kZWxpbWl0ZXInXSA9ICdJbXBvcnQgYmVzdGFuZHNrb2xvbSBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ0ltcG9ydGVyZW4gdm9sdG9vaWQnOwokbGFuZ1snbnVtX2ltcG9ydGVkJ10gPSAnQWFudGFsIGFhbmdlbWFha3RlIGV2ZW50czogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnQWFudGFsIHJlZ2VscyB2ZXJ3ZXJrdCB1aXQgaGV0IGJlc3RhbmQ6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0ZvdXRlbic7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnXSA9ICdWZWxkOiAlcyBpcyBuaWV0IGhlcmVrZW5kIGVuIGhldCBpcyBnZWVuIHNwZWNpZmllayB2ZWxkJzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1NlbGVjdGVlciBpbXBvcnRiZXN0YW5kJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ1ZlcndpamRlcic7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQ29tcGFueSBEaXJlY3RvcnkgQmVkcmlqZic7CiRsYW5nWydkZmx0X3VybHByZWZpeCddID0gJ1RlIGdlYnJ1aWtlbiBwcmVmaXggdm9vciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmlldXdlIGV2ZW5lbWVudGVuIGJlc2xhYW4gc3RhbmRhYXJkIGRlIGdlaGVsZSBkYWcnOwokbGFuZ1snZGZsdF9zdGFydHRpbWUnXSA9ICdTdGFuZGFhcmQgc3RhcnR0aWpkIHZvb3IgbmlldXdlIGV2ZW5lbWVudGVuJzsKJGxhbmdbJ2luZm9fZGZsdF9zdGFydHRpbWUnXSA9ICc8ZW0+KGFsbGVlbiB2YW4gdG9lcGFzc2luZyBhbHMgbmlldXdlIGV2ZW5lbWVudGVuIG5pZXQgZGUgZ2VoZWxlIGRhZyBiZXNsYWFuKTwvZW0+JzsKJGxhbmdbJ3NlYXJjaF90eXBlJ10gPSAnWm9layBUeXBlJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdFw6luIG9mIG1lZXIgem9la3Rlcm1lbiBtb2V0ZW4gb3ZlcmVlbmtvbWVuJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdBbGxlIHpvZWt0ZXJtZW4gbW9ldGVuIG92ZXJlZW5rb21lbic7CiRsYW5nWydzZWFyY2hhYmxlJ10gPSAnRG9vcnpvZWtiYWFyJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBbGxlZW4gdG9lcGFzYmFhciBpbiBkZSBteWV2ZW50cy1iZXdlcmtpbmcsIGRlemUgcGFyYW1ldGVyIHNwZWNpZmljZWVydCBlZW4gbmlldC1zdGFuZGFhcmQgZXZlbmVtZW50c2phYmxvb24gb20gdGUgZ2VicnVpa2VuIHdhbm5lZXIgZWVuIGdlYnJ1aWtlciBlZW4gZXZlbmVtZW50IGFhbm1hYWt0IG9mIHdpanppZ3QuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdFbmtlbCB0b2VwYXNiYWFyIG9wIGRlIG15ZXZlbnRzLWJld2Vya2luZywgZGV6ZSBwYXJhbWV0ZXIgc3BlY2lmaWNlZXJ0IGVlbiBhbmRlcmUgcGFnaW5hIHZvb3IgZGUgZWRpdC1mb3JtJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0Vua2VsIHRvZXBhc2JhYXIgb3AgZGUgbXlldmVudHMtYmV3ZXJraW5nLCBkZXplIHBhcmFtZXRlciBzcGVjaWZpY2VlcnQgZWVuIG5pZXQtc3RhbmRhYXJkIHNqYWJsb29uIHZvb3IgZ2VicnVpayc7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ1dpanppZyBLYWxlbmRlciBFdmVuZW1lbnQnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFiYXNlIEZvdXQnOwokbGFuZ1snc3VibWl0J10gPSAnVG9ldm9lZ2VuJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdTdGFuZGFhcmQgIldpanppZyBNaWpuIEV2ZW5lbWVudGVuIiBTamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfbXlldmVudHNfdGVtcGxhdGUnXSA9ICdTdGFuZGFhcmQgIldpanppZyBNaWpuIEV2ZW5lbWVudGVuIiBTamFibG9vbic7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTGlkIHZhbiBkZXplIEZFVSBncm9lcCBrYW4gZXZlbmVtZW50ZW4gdG9ldm9lZ2VuJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfcGFnZSddID0gJ1N0YW5kYWFyZCBwYWdpbmEgdm9vciBkZSBmcm9udGVuZCB3aWp6aWcgZm9ybXVsaWVyLic7CiRsYW5nWydub25lJ10gPSAnR2Vlbic7CiRsYW5nWydvd25lciddID0gJ0VpZ2VuYWFyJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnV2lqemlnIEV2ZW5lbWVudCBGb3JtdWxpZXIgU2phYmxvbmVuJzsKJGxhbmdbJ2luZm9fZWRpdGV2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0VlbiBvdmVyemljaHQgdmFuIHNqYWJsb25lbiBkaWUgYmVzY2hpa2JhYXIgemlqbiB2b29yIGVlbiB3aWp6aWctZXZlbmVtZW50IGZvcm11bGllcic7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIHZhbiBlZW4gV2lqemlnIEV2ZW5lbWVudCBGb3JtdWxpZXIgU2phYmxvb24nOwokbGFuZ1snY2FsX215ZXZlbnRzX3RlbXBsYXRlcyddID0gJ01pam4gRXZlbmVtZW50ZW4gTGlqc3QgU2phYmxvbmVuJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnRGUgbGlqc3QgbWV0IHNqYWJsb25lbiBkaWUgYnJ1aWtiYWFyIHppam4gdm9vciBoZXQgdG9uZW4gdmFuIGVlbiBsaWpzdCBtZXQgZ2VicnVpa2VycyBldmVuZW1lbnRlbic7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gdmFuIGVlbiAiTWlqbiBFdmVuZW1lbnRlbiIgc2phYmxvb24nOwokbGFuZ1snYXJleW91c3VyZV9yZW1vdmVjb25mbGljdGluZyddID0gJ0RlemUgYmV3ZXJraW5nIHphbCBpZWRlciBldmVuZW1lbnQgdmVyd2lqZGVyZW4gZGllIGNvbmZsaWN0ZWVydCBtZXQgbmlldC1vdmVybGFwYmFyZSBldmVuZW1lbnRlbi4gV2VldCBqZSB6ZWtlciBkYXQgamUgZG9vciB3aWwgZ2Fhbj8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdGVyIENvbmZsaWN0ZW4gYmlqIEV2ZW5lbWVudGVuJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ1ZlcndpamRlciBzdGlsendpamdlbmQgY29uZmxpY3RlbiBiaWogRXZlbmVtZW50ZW4nOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdMYXRlbiB6aWVuIGJpaiBlZW4gZm91dCc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdCZXdlcmtpbmcgZGllIHVpdGdldm9lcmQgbW9ldCB3b3JkZW4gYmlqIGVlbiBjb25mbGljdCBiaWogdG9ldm9lZ2VuL3dpanppZ2VuIHZhbiBlZW4gZXZlbmVtZW50JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnRGl0IGV2ZW5lbWVudCBzcGVjaWZpY2VlcnQgb3ZlcmxhcCBtZXQgZWVuIGJlc3RhYW5kIGV2ZW5lbWVudCB3YXQgZ2VlbiBjb25mbGljdCB0b2VzdGFhdCc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnQWxsZWVuIHRvZXBhc3NlbiB2b29yIGV2ZW5lbWVudGVuIG1ldCBlZW4gZWluZHRpamQgKG9mICJnZWhlbGUgZGFnIiBldmVuZW1lbnRlbiknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdTdGEgdG9lIGRhdCBuaWV1d2UgZXZlbmVtZW50ZW4gb3ZlcmxhcCBtZXQgZGV6ZSc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9wb2xpY3knXSA9ICdFdmVuZW1lbnRlbiBvdmVybGFwIGluc3RlbGxpbmdlbic7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsZSBFdmVuZW1lbnRlbiBrdW5uZW4gb3ZlcmxhcHBlbic7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ0V2ZW5lbWVudGVuIGt1bm5lbiBuaWV0IG92ZXJsYXBwZW4nOwokbGFuZ1sncG9saWN5X2luZGl2aWR1YWwnXSA9ICdCZXNsaXNzZW4gcGVyIGV2ZW5lbWVudCc7CiRsYW5nWydsYmxfYmFjayddID0gJ1RlcnVnJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdTamFibG9uZW4nOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZWtzdHJ1aW10ZSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdMZXQgb3AhIERlIG1vZHVsZSBDYWxlbmRhciBpcyBvb2sgb3AgZGV6ZSB3ZWJzaXRlIGdlw69uc3RhbGxlZXJkLiBEZXplIHZlcm91ZGVyZGUgbW9kdWxlIGthbiBuaWV0IHNhbWVuIG1ldCBDR0NhbGVuZGFyIGZ1bmN0aW9uZXJlbi4gVmVyd2lqZGVyIGRlIG91ZGUgQ2FsZW5kYXIgbW9kdWxlIGVlcnN0ISc7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdPZiBcJ2V2ZW50X2lkXCcgc3RhYXQgbmlldCBpbiBkZSBkYXRhYmFzZSwgb2YgZXIgaXMgbWVlciBkYW4gw6nDqW4gZ2ViZXVydGVuaXMgbWV0IGRpdCBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdpbmEgJWQgdmFuICVkJzsKJGxhbmdbJ3NlYXJjaF9yZXN1bHRzJ10gPSAnS2FsZW5kZXIgWm9layBSZXN1bHRhdGVuJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1pvZWt3b29yZGVuJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdHZWVuIHJlc3VsdGF0ZW4gZ2V2b25kZW4nOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbnRpZSc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ0dlYnJ1aWsgZGUgZ2Vub2VtZGUgZGF0dW0nOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnRWVyc3RlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnRWVyc3RlIG1hYW5kYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdFZXJzdGUgZGluc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRWVyc3RlIHdvZW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ0VlcnN0ZSBkb25kZXJkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ0VlcnN0ZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0VlcnN0ZSB6YXRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ1R3ZWVkZSB6b25kYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdUd2VlZGUgbWFhbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3R1ZXNkYXknXSA9ICdUd2VlZGUgZGluc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3dlZG5lc2RheSddID0gJ1R3ZWVkZSB3b2Vuc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3RodXJzZGF5J10gPSAnVHdlZWRlIGRvbmRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ1R3ZWVkZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdUd2VlZGUgemF0ZXJkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ0RlcmRlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnRGVyZGUgbWFhbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ0RlcmRlIGRpbnNkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3RoaXJkX3dlZG5lc2RheSddID0gJ0RlcmRlIHdvZXNkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnRGVyZGUgZG9uZGVyZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdEZXJkZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ0RlcmRlIHphdGVyZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnVmllcmRlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ1ZpZXJkZSBtYWFuZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ1ZpZXJkZSBkaW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnVmllcmRlIHdvZW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdWaWVyZGUgZG9uZGVyZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnVmllcmRlIHZyaWpkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ1ZpZXJkZSB6YXRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYWF0c3RlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYWF0c3RlIG1hYW5kYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ0xhYXRzdGUgZGluc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snbGFzdF93ZWRuZXNkYXknXSA9ICdMYWF0c3RlIHdvZW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFhdHN0ZSBkb25kZXJkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnTGFhdHN0ZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnTGFhdHN0ZSB6YXRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdWZXJrZWVyZGUgZnJlcXVlbnRpZS4uLiBVIGt1bnQgbmlldCB0ZWdlbGlqa2VydGlqZCBlZW4gZGF0dW0gZW4gZWVuIGFuZGVyZSB3YWFyZGUgc3BlY2lmaWNlcmVuJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gWm9la3Jlc3VsdGFhdCBTamFibG9vbic7CiRsYW5nWydpbmZvX3NlYXJjaHJlc3VsdF90ZW1wbGF0ZV90YWInXSA9ICdEZSBsaWpzdCB2YW4gYmVzY2hpa2JhcmUgc2phYmxvbmVuIHZvb3IgaGV0IHpvZWtyZXN1bHRhYXRzY2hlcm0nOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1N5c3RlZW0gU3RhbmRhYXJkIFpvZWtyZXN1bHRhYXQgU2phYmxvb24nOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnWm9la3Jlc3VsdGFhdCBzamFibG9uZW4nOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnRGF0YWJhc2UgUXVlcnkgTWlzbHVrdCc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ1ZlcmtlZXJkZSB6b2VrZ2VnZXZlbnMgaW5nZXZvZXJkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydzZWFyY2gnXSA9ICdab2VrJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcmllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdTeXN0ZWVtIFN0YW5kYWFyZCBab2VrIEZvcm11bGllciBTamFibG9vbic7CiRsYW5nWydzZWFyY2h0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIFpvZWsgRm9ybXVsaWVyIFNqYWJsb29uJzsKJGxhbmdbJ2luZm9fc2VhcmNoX3RlbXBsYXRlX3RhYiddID0gJ0RlIGxpanN0IHZhbiBiZXNjaGlrYmFyZSBzamFibG9uZW4gdm9vciBoZXQgem9la2Zvcm11bGllcic7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnWm9layBGb3JtdWxpZXIgU2phYmxvbmVuJzsKJGxhbmdbJ21heCddID0gJ21heGltYWFsJzsKJGxhbmdbJ3RpbWVzJ10gPSAna2Vlcic7CiRsYW5nWydvbiddID0gJ2Fhbic7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkaXQgd2lsdCBkb2VuPyBBbHMgdSBkb29yZ2FhdCB3b3JkIGFsbGUgZGF0YSBkZWZpbml0aWVmIHZlcndpamRlcmQuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnRGUgQ2FsZW5kYXIgbW9kdWxlIGlzIGdlZGXDr25zdGFsbGVlcmQgZW4gYWxsZSBnZWJldXJ0ZW5pc3NlbiBlbiB0ZW1wbGF0ZXMgemlqbiB2ZXJ3aWpkZXJkLic7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdWZWxkIGdlw7xwZGF0ZSc7CiRsYW5nWydldmVyeSddID0gJ0llZGVyZSc7CiRsYW5nWydvciddID0gJ29mJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ1VwZGF0ZSBvbmRlcmxpZ2dlbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdVIG1vZXQgaW4gaWVkZXIgZ2V2YWwgw6nDqW4gY2F0ZWdvcmllIHNlbGVjdGVyZW4nOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnRXIgaXMgbmlldHMgZ2VzZWxlY3RlZXJkIG9tIHZlcndpamRlcmQgdGUgd29yZGVuJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0RlIHBhcmFtZXRlcnMgdC5iLnYuIGRlIGhlcmhhbGVuZGUgZ2ViZXVydGVuaXNzZW4gem91ZGVuIGxlaWRlbiB0b3Qgb3ZlcmxhcHBlbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ3JlY3VycyddID0gJ0hlcmhhbGluZyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnRcOpbiBvZiBtZWVyZGVyZSBpbmdldm9lcmRlIGRhdHVtcyB6aWpuIG9uZ2VsZGlnJzsKJGxhbmdbJ3N1bmRheSddID0gJ1pvbmRhZyc7CiRsYW5nWydtb25kYXknXSA9ICdNYWFuZGFnJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdEaW5zZGFnJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1dvZW5zZGFnJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnRG9uZGVyZGFnJzsKJGxhbmdbJ2ZyaWRheSddID0gJ1ZyaWpkYWcnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdaYXRlcmRhZyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ1pvJzsKJGxhbmdbJ2FiYnJfbW9uZGF5J10gPSAnTWEnOwokbGFuZ1snYWJicl90dWVzZGF5J10gPSAnRGknOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdXbyc7CiRsYW5nWydhYmJyX3RodXJzZGF5J10gPSAnRG8nOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdWcic7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnWmEnOwokbGFuZ1snd2VlayddID0gJ1dlZWsnOwokbGFuZ1snbW9udGgnXSA9ICdNYWFuZCc7CiRsYW5nWydkYXknXSA9ICdEYWcnOwokbGFuZ1sndG9kYXknXSA9ICdWYW5kYWFnJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnV2Vla2RhZ2VuJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RhZ2VuJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdXZWtlbic7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01hYW5kZW4nOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ0phcmVuJzsKJGxhbmdbJ25vJ10gPSAnTmVlJzsKJGxhbmdbJ2RhaWx5J10gPSAnRGFnZWxpamtzJzsKJGxhbmdbJ3dlZWtseSddID0gJ1dla2VsaWprcyc7CiRsYW5nWydtb250aGx5J10gPSAnTWFhbmRlbGlqa3MnOwokbGFuZ1sneWVhcmx5J10gPSAnSmFhcmxpamtzJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnSGVyaGFhbCBpZWRlcmUnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdHZWdldmVucyBoZXJoYWxlbmRlIGdlYmV1cnRlbmlzJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ09uZ2VsaW1pdGVlcmQnOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ01heGltdW0gYWFudGFsIHZhbiBvbmRlcmxpZ2dlbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnRWVuIGFuZGVyZSBlaW5kZGF0dW0gaW52b2VyZW4/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZWVyJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnVG9vbiBvbmRlcmxpZ2dlbmRlIGFjdGl2aXRlaXRlbiA8ZW0+KGthbiBsZWlkZW4gdG90IGVlbiBlcmcgbGFuZ2UgbGlqc3QpPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAnbi52LnQuJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ0hlcmhhbGVuIHRvdCc7CiRsYW5nWydwYXJlbnQnXSA9ICdIb29mZGdlYmV1cnRlbmlzJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ0hlcmhhYWwgcGVyaW9kZSc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1N0YXJ0ZGF0dW0nOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFaW5kZGF0dW0nOwokbGFuZ1snaW5mb191cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnRWVuIG92ZXJ6aWNodCB2YW4gYmVzY2hpa2JhcmUgc2phYmxvbmVuIHZvb3IgYWFua29tZW5kZSBnZWJldXJ0ZW5pc3Nlbic7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIHZhbiAiVXBjb21pbmdsaXN0IiBTamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU3lzdGVlbSBTdGFuZGFhcmQgIlVwY29taW5nbGlzdCIgU2phYmxvb24nOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ0VlbiBvdmVyemljaHQgdmFuIGJlc2NoaWtiYXJlIHNqYWJsb25lbiB2b29yIGxpanN0d2VlcmdhdmVzJzsKJGxhbmdbJ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIHZhbiBlZW4gTGlqc3R3ZWVyZ2F2ZSBTamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlZW0gU3RhbmRhYXJkIExpanN0d2VlcmdhdmUgU2phYmxvb24nOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdFZW4gb3ZlcnppY2h0IHZhbiBiZXNjaGlrYmFyZSBzamFibG9uZW4gdm9vciBnZWJldXJ0ZW5pcyBvdmVyemljaHRlbic7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gZ2ViZXVydGVuaXN3ZWVyZ2F2ZSBzamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTdGFuZGFhcmQgZ2ViZXVydGVuaXN3ZWVyZ2F2ZSBzamFibG9vbic7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0VlbiBvdmVyemljaHQgdmFuIGJlc2NoaWtiYXJlIHNqYWJsb25lbiB2b29yIEthbGVuZGVyIHdlZXJnYXZlcyc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gZWVuIEthbGVuZGVyd2VlcmdhdmUgc2phYmxvb24nOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnU3RhbmRhYXJkIGthbGVuZGVyd2VlcmdhdmUgc2phYmxvb24nOwokbGFuZ1snaW5mb19zeXNkZmx0X3RlbXBsYXRlJ10gPSAnRGV6ZSBzamFibG9uZW4gemlqbiBkZSBzdGFuZGFhcmQgd2FhcmRlbiBkaWUgd29yZGVuIGdldG9vbmQgYWxzIHUgb3AgZGUgTmlldXcgU2phYmxvb24iIHRvZXRzIGtsaWt0IGluIGRlIGdld2Vuc3RlIHRhYi4gIEhldCB3aWp6aWdlbiB2YW4gZGV6ZSBzamFibG9uZW4gemFsIGRhYXJvbSBvb2sgZ2VlbiBkaXJlY3QgZ2V2b2xnIGhlYmJlbiB2b29yIHV3IHdlYnNpdGUuJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnRWVuIHRhZyBkaWUgd29yZHQgYWFuZ2Vyb2VwZW4gbmEgdG9ldm9lZ2luZyB2YW4gZWVuIGthbGVuZGVyZ2ViZXVydGVuaXMnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnRWVuIHRhZyBkaWUgd29yZHQgYWFuZ2Vyb2VwZW4gbmEgYmV3ZXJraW5nIHZhbiBlZW4gYmVzdGFhbmRlIGthbGVuZGVyZ2ViZXVydGVuaXMnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0VlbiB0YWcgZGllIHdvcmR0IGFhbmdlcm9lcGVuIG5hIHZlcndpamRlcmluZyB2YW4gZWVuIGthbGVuZGVyZ2ViZXVydGVuaXMnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdFZW4gdGFnIGRpZSB3b3JkdCBhYW5nZXJvZXBlbiBuYSBhYW5tYWtlbiB2YW4gZWVuIGNhdGVnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdFZW4gdGFnIGRpZSB3b3JkdCBhYW5nZXJvZXBlbiBuYSBiZXdlcmtpbmcgdmFuIGVlbiBjYXRlZ29yaWUnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ0VlbiB0YWcgZGllIHdvcmR0IGFhbmdlcm9lcGVuIG5hIHZlcndpamRlcmluZyB2YW4gZWVuIGNhdGVnb3JpZSc7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRm91dCBiaWogaGV0IGltcG9ydGVyZW4gdmFuIGhldCBldmVudCB1aXQgZGUgY3N2IG9wIHJlZ2VsICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnRWVuIHZlcmVpc3QgdmVsZDogJXMsIGtvbiBuaWV0IHdvcmRlbiBnZXZvbmRlbiBpbiBkZSBlZXJzdGUgcmVnZWwgdmFuIGhldCBjc3YtYmVzdGFuZCc7CiRsYW5nWydlcnJvcl9jc3ZpbnZhbGlkZmlyc3RsaW5lJ10gPSAnS2FuIGdlZW4gZ2VsZGlnZSBlZXJzdGUgcmVnZWwgdmluZGVuIHZhbiBoZXQgQ1NWLWJlc3RhbmQnOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdHZWJldXJ0ZW5pcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnRWVuIG5hYW0gdm9vciBlZW4gZ2ViZXVydGVuaXMgaXMgdmVycGxpY2h0JzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRm91dDogZ2VlbiBnZcO8cGxvYWQgYmVzdGFuZCBnZXZvbmRlbic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdGb3V0OiBoZXQgZ2XDvHBsb2FkZSBiZXN0YW5kIHdvcmR0IG5pZXQgZ2VhY2NlcHRlZXJkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRm91dDogZWVuIHByb2JsZWVtIHRyYWQgb3AgdGlqZGVucyBoZXQgdXBsb2FkZW4gdmFuIGhldCBiZXN0YW5kJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRm91dDogZWVuIHByb2JsZWVtIHRyYWQgb3AgdGlqZGVucyBoZXQga29wacOrcmVuIHZhbiBoZXQgYmVzdGFuZCBuYWFyIGRlIHVpdGVpbmRlbGlqa2UgYmVzdGVtbWluZyc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRm91dDogZWVuIGJlc3RhbmQgbWV0IGRlemUgbmFhbSBiZXN0YWF0IGFsJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0ZvdXQ6IGthbiBoZXQgQ1NWLWJlc3RhbmQgbmlldCB2aW5kZW4nOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnRm91dDoga2FuIGhldCBiZXN0YW5kIG5pZXQgb3BlbmVuJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRm91dDogRWVuIGNhdGVnb3JpZSBtZXQgZGUgbmFhbSAlcyBiZXN0YWF0IGFsJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NHIEthbGVuZGVyJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYWFyZCBzamFibG9uZW4nOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnVG9ldm9lZ2VuLCB3aWp6aWdlbiBlbiB2ZXJ3aWpkZXJlbiB2YW4gZ2ViZXVydGVuaXNzZW4gaW4gZGUgd2Vic2l0ZSBrYWxlbmRlci4nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnR2ViZXVydGVuaXMgdG9ldm9lZ2VuJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0ZWVyIEdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdHZWJldXJ0ZW5pc3Nlbic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZcOrbic7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdLYWxlbmRlcnNqYWJsb29uJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnT3ZlcnppY2h0c3NqYWJsb29uJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdUb2Vrb21zdGlnZSBnZWJldXJ0ZW5pc3NlbnNqYWJsb29uJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ0dlYmV1cnRlbmlzc2phYmxvb24nOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnSW5zdGVsbGluZ2VuJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnPCBWb3JpZ2UnOwokbGFuZ1snY2FsX25leHQnXSA9ICdWb2xnZW5kZSA+JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yaWXDq24gYmlqZ2V3ZXJrdCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ0luc3RlbGxpbmdlbiBiaWpnZXdlcmt0JzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdHZWJldXJ0ZW5pcyB0b2V2b2VnZW4nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdCZXdlcmsnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ1ZlcndpamRlcic7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSB3aWx0IHZlcndpamRlcmVuJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdTamFibG9vbiBCaWp3ZXJrZW4nOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1pvbmRhZyc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTWFhbmRhZyc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ0RpbnNkYWcnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1dvZW5zZGFnJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ0RvbmRlcmRhZyc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnVnJpamRhZyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdaYXRlcmRhZyc7CiRsYW5nWydjYWxfc3VuJ10gPSAnWm9uJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICdNYSc7CiRsYW5nWydjYWxfdHVlcyddID0gJ0RpJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdXbyc7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdEbyc7CiRsYW5nWydjYWxfZnJpJ10gPSAnVnInOwokbGFuZ1snY2FsX3NhdCddID0gJ1phJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnamFudWFyaSc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdmZWJydWFyaSc7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdtYWFydCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdhcHJpbCc7CiRsYW5nWydjYWxfbWF5J10gPSAnbWVpJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnanVuaSc7CiRsYW5nWydjYWxfanVseSddID0gJ2p1bGknOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ2F1Z3VzdHVzJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdzZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdva3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ25vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ2RlY2VtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdUb2V2b2VnZW4nOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0Jpandlcmtlbic7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdHZWJldXJ0ZW5pcyc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdHVtJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU2FtZW52YXR0aW5nJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWlscyc7CiRsYW5nWydjYWxfbW9yZSddID0gJ21lZXIgPj4nOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1RlcnVnJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvdCc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdPdWRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdLb21lbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdJZWRlcmUgY2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnVG9vbiBlbmtlbCBnZWJldXJ0ZW5pc3NlbiBpbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdGVyIHRpdGVsIG9wIDxlbT4ocmVnZXgpPC9lbT4nOwokbGFuZ1snY2FsX2dvJ10gPSAnR2EnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0ZWwnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnVmFuYWYgZGF0dW0nOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RvdCBkYXR1bSc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdDYXRlZ29yaWXDq24gYmlqd2Vya2VuJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ1RhYWwnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnSW5zdGVsbGluZ2VuIG9wc2xhYW4nOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0dlYnJ1aWsgbWFrZW4gdmFuIHR3YWFsZiB1dXJzIGtsb2sgYmlqIGRlIHVyZW4tdWl0dm91d21lbnVcJ3M/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnU3RhbmRhYXJkIGNhdGVnb3JpZSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ1ZlbGRlbiBvcHNsYWFuJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnRWlzIG1pbnN0ZW5zIGVlbiBjYXRlZ29yaWUnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0hvZXZlZWwgamFyZW4gaW4gaGV0IHZlcmxlZGVuIHppam4gdG9lZ2VzdGFhbj8nOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnSG9ldmVlbCBqYXJlbiBpbiBkZSB0b2Vrb21zdCB6aWpuIHRvZWdlc3RhYW4/JzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnTW9ldCBoZXQgc2FtZW52YXR0aW5nc3ZlbGQgdmVyYm9yZ2VuIHppam4/JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnTW9ldCBoZXQgaW5ob3Vkc3ZlbGQgdmVyYm9yZ2VuIHppam4/JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyZGVyZSBjYXRlZ29yaWXDq24gdm9vciBkZXplIGdlYmV1cnRlbmlzJzsKJGxhbmdbJ21vZHVsZV9leGFtcGxlX3N0eWxlc2hlZXQnXSA9ICdDRyBLYWxlbmRlciBDU1Mgdm9vcmJlZWxkJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdVIG1vZXQgZGUgZ2VzY2hpa3RlIHJlY2h0ZW4gKCVzKSBoZWJiZW4gb20gZGV6ZSBmdW5jdGlvbmFsaXRlaXQgdGUgZ2VicnVpa2VuJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdWZXJnZWV0IG5pZXQgb20gZGUgIk1vZGlmeSBDYWxlbmRhciItcmVjaHRlbiB2b29yIGdlYnJ1aWtlcnMgZGllIGRlIGthbGVuZGVyZ2ViZXVydGVuaXNzZW4gbW9ldGVuIGJlaGVyZW4gaW4gdGUgc3RlbGxlbic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdWZXJ3aWpkZXIgZGUgZ2VzZWxlY3RlZXJkZSBnZWJldXJ0ZW5pc3Nlbic7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnV2VldCB1IHpla2VyIGRhdCBkZXplIGdlYmV1cnRlbmlzc2VuIHZlcndpamRlcmQgbW9ldGVuIHdvcmRlbj8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0dlc2VsZWN0ZWVyZGUgZ2ViZXVydGVuaXNzZW4gemlqbiB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1NqYWJsb25lbic7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnU2phYmxvb25odWxwJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnQmVzdGFuZHNzamFibG9vbic7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ1ZvZWcgZWVuIHNqYWJsb29uIHRvZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1NqYWJsb29uJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdTamFibG9vbm5hYW0nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnQmV3ZXJrIHNqYWJsb29uJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnVmVyd2lqZGVyIHNqYWJsb29uJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnTmFhbSBuaWV1dyBzamFibG9vbic7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdGb3V0OiBFZW4gc2phYmxvb24gbWV0IGRpZSBuYWFtIGJlc3RhYXQgYWwuIEtpZXMgZWVuIGFuZGVyZSBuYWFtLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnSGV0IHNqYWJsb29uIGlzIGdlw69tcG9ydGVlcmQgaW4gZGUgZGF0YWJhc2UgZW4ga2FuIGdlYnJ1aWt0IHdvcmRlbi4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdCZWtpamsgc3RhbmRhYXJkIHN0eWxlc2hlZXQnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdCZXN0YW5kc25hYW0nOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnRlZXIgc2phYmxvb24nOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ0RlIHNqYWJsb29uIGlzIHZlcndpamRlcmQgdWl0IGRlIGRhdGFiYXNlLic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdEZSBzamFibG9vbiBpcyBiaWpnZXdlcmt0JzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0VlbiBmb3V0IGlzIHRpamRlbnMgaGV0IGJpandlcmtlbiB2YW4gaGV0IHNqYWJsb29uIG9udHN0YWFuJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbnN0ZWxsaW5nZW4gemlqbiBvcGdlc2xhZ2VuJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3JpZSB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3JpZSBiaWpnZXdlcmt0JzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yaWUgdG9lZ2V2b2VnZCc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdEZSBnZWJldXJ0ZW5pcyBpcyB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0RlIGdlYmV1cnRlbmlzIGlzIGJpamdld2Vya3QnOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnRm91dDogTWV0IGRlIHRvZXBhc3NpbmcgdmFuIFByZXR0eSBVUkxzIG1vZXQgZWVuIGVlbiBzdGFuZGFhcmQgcGFnaW5hIG9wZ2V2ZW4gd29yZGVuLCBvbSBkZSBrYWxlbmRlciB0ZSBrdW5uZW4gZ2VicnVpa2VuLic7CiRsYW5nWyd0aW1lX2F0J10gPSAnb20nOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1snbmFtZSddID0gJ05hYW0nOwokbGFuZ1snb3JkZXInXSA9ICdWb2xnb3JkZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnVmVsZCB0b2VnZXZvZWdkJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ1ZlbGQgdmVyd2lqZGVyZCc7CiRsYW5nWydmaWVsZHMnXSA9ICdJbnN0ZWxiYXJlIHZlbGRlbic7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZWtzdHZlbGQnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdCZXN0YW5kIHVwbG9hZCB2ZWxkJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+Q0cgS2FsZW5kZXIgaXMgZWVuIG1vZHVsZSBvbSBnZWJldXJ0ZW5pc3NlbiBvcCBlZW4gcGFnaW5hIHRlIHRvbmVuLiBBbHMgZGUgbW9kdWxlIGdlw69uc3RhbGxlZXJkIGlzLCB3b3JkdCBlciBlZW4gS2FsZW5kZXIgYmVoZWVyIHBhZ2luYSBhYW4gaGV0IEluaG91ZC1tZW51IHRvZWdldm9lZ2QgZGllIGhldCBiZWhlZXIgdmFuIGRlIGdlYmV1cnRlbmlzc2VuIG1vZ2VsaWprIG1hYWt0LjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1N0YW5kYWFyZCBwYWdpbmEgZGllIGRlIGthbGVuZGVyIGJldmF0LiBEZXplIHBhZ2luYSBtb2V0IGVlbiBTbWFydHktdGFnIGJldmF0dGVuIGRpZSBkZSBrYWxlbmRlciBhYW5yb2VwdC4gVmVycGxpY2h0IGFscyB1IGRlIHByZXR0eSBVUkxcJ3MgZ2VicnVpa3QuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ01hcCB3YWFyIGRlIGdlw7xwbG9hZGUgYmVzdGFuZGVuIG1vZXRlbiB3b3JkZW4gZ2VwbGFhdHN0JzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RvZWdlc3RhbmUgYmVzdGFuZHN0eXBlbic7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdHYXJhbmRlZXIgdW5pZWtlIGJlc3RhbmRzbmFtZW4nOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1RlcnVna2VyZW5kJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ1RlcnVna2VyZW5kIHRvdCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+VG9vbiBhdXRldXJzbmFhbTo8L2I+PC9wPg0KPGNvZGU+QXV0ZXVyOiB7JGV2ZW50LmF1dGhvcm5hbWV9PC9jb2RlPic7CiRsYW5nWydnYSddID0gJ0dBMS4yLjc2Nzk2NTAyMC4xNDAwNjEyMzY0JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pl_PL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGFkZGluZyBhIGNhbGVuZGFyIGV2ZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0NhbGxlZCBhZnRlciBlZGl0aW5nIGFuIGV4aXN0aW5nIGNhbGVuZGFyIGV2ZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYW4gZXZlbnQgaGFzIGJlZW4gZGVsZXRlZCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0NhbGxlZCBhZnRlciBhIGNhdGVnb3J5IGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGEgY2F0ZWdvcnkgaXMgZWRpdGVkJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYSBjYXRlZ29yeSBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ1pkYXJ6ZW5pZSBkb2RhbmUnOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPUjogTm8gdXBsb2FkZWQgZmlsZSBmb3VuZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPUjogVGhlIGZpbGUgdXBsb2FkZWQgY2Fubm90IGJlIGFjY2VwdGVkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IEEgcHJvYmxlbSBvY2N1cnJlZCB0cnlpbmcgdG8gdXBsb2FkIHRoZSBmaWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJST1I6IEEgUHJvYmxlbSBvY2N1cnJlZCB3aGVuIGNvcHlpbmcgdGhlIGZpbGUgdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUjogQSBmaWxlIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdCxYHEhEQ6IG5pZSBvZG5hbGV6aW9ubyBwbGlrdSBDU1YnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnQsWBxIREOiBuaWUgbW/FvG5hIG90d29yennEhyBwbGlrdSc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdLYWxlbmRhcnonOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnT3Bpcyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdEb2RhaiB6ZGFyemVuaWUnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnR1aiB6ZGFyemVuaWEnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1pkYXJ6ZW5pYSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZSc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdTemFibG9uIGthbGVuZGFyemEnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdTemFibG9uIGxpc3R5JzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTemFibG9uIG5hZGNob2R6xIVjeWNoIHpkYXJ6ZcWEJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ1N6YWJsb24gemRhcnplbmlhJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ1VzdGF3aWVuaWEnOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IFBvcHJ6ZWRuaSc7CiRsYW5nWydjYWxfbmV4dCddID0gJ05hc3TEmXBueSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWUgYWt0dWFsaXpvd2Fubyc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1VzdGF3aWVuaWEgYWt0dWFsaXpvd2Fubyc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnRG9kYWogemRhcnplbmllJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRWR5dHVqJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTa2FzdWonOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdDenkgamVzdGXFmyBwZXduaWVuLCDFvGUgY2hjZXN6IHVzdW7EhcSHJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdBa3R1YWxpenVqIHN6YWJsb24nOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ05pZWR6aWVsYSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnUG9uaWVkemlhxYJlayc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1d0b3Jlayc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnxZpyb2RhJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ0N6d2FydGVrJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdQacSFdGVrJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1NvYm90YSc7CiRsYW5nWydjYWxfc3VuJ10gPSAnTic7CiRsYW5nWydjYWxfbW9uJ10gPSAnUG4nOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICdXJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICfFmic7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdDeic7CiRsYW5nWydjYWxfZnJpJ10gPSAnUCc7CiRsYW5nWydjYWxfc2F0J10gPSAnUyc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ3N0eWN6ZcWEJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2x1dHknOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnbWFyemVjJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ2t3aWVjaWXFhCc7CiRsYW5nWydjYWxfbWF5J10gPSAnbWFqJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnY3plcndpZWMnOwokbGFuZ1snY2FsX2p1bHknXSA9ICdsaXBpZWMnOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ3NpZXJwaWXFhCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnd3J6ZXNpZcWEJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAncGHFumR6aWVybmlrJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ2xpc3RvcGFkJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ2dydWR6aWXFhCc7CiRsYW5nWydjYWxfYWRkJ10gPSAnRG9kYWonOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0FrdHVhbGl6dWonOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnWmRhcnplbmllJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0YSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ09waXMnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdTemN6ZWcmb2FjdXRlO8WCeSc7CiRsYW5nWydjYWxfbW9yZSddID0gJ3dpxJljZWogPj4nOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1dyJm9hY3V0ZTvEhyc7CiRsYW5nWydjYWxfdG8nXSA9ICdkbyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdaZGFyemVuaWEgcHJ6ZXN6xYJlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdaZGFyemVuaWEgbmFkY2hvZHrEhWNlJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdXc3p5c3RraWUga2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnUG9rYcW8IHR5bGtvIHpkYXJ6ZW5pYSB6JzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cnVqIHBvJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0lkxbonOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVHl0dcWCJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhdGEgb2QnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0RhdGEgZG8nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWt0dWFsaXp1aiBrYXRlZ29yaWUnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnSsSZenlrJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0FrdHVhbGl6dWogdXN0YXdpZW5pYSc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnVcW8eXdhaiB6ZWdhcmEgMTIgZ29kemlubmVnbyB3IGxpc3RhY2ggcm96d2lqYW55Y2g/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnRG9tecWbbG5hIGthdGVnb3JpYSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ0FrdHVhbGl6dWogcG9sYSc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ1d5bXXFmyBjbyBuYWptbmllaiBqZWRuxIUga2F0ZWdvcmnEmSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSmFrIGR1xbxvIGxhdCBwcnplc3rFgnljaCBqZXN0IGRvendvbG9uZSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdKYWsgZHXFvG8gbGF0IHByenlzesWCeWNoIGplc3QgZG96d29sb25lJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnUG9sZSBvcGlzdSBwb3dpbm5vIGJ5xIcgdWtyeXRlJzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnUG9sZSB0cmXFm2NpIHBvd2lubm8gYnnEhyB1a3J5dGUnOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdaYXpuYWN6IGplZG7EhSBsdWIgd2nEmWNlaiBrYXRlZ29yaWkgZGxhIHRlZ28gd3lkYXJ6ZW5pYSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnUHJ6eWvFgmFkIENTUy1hIGRsYSBrYWxlbmRhcnphJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdXeW1hZ2FuZSBqZXN0IG9kcG93aWVkbmllIHVwcmF3bmllbmllICglcykgYnkgbWllxIcgZG9zdMSZcCBkbyB0ZWogZnVua2NqaSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnVXBld25paiBzacSZLCDFvGUgdXN0YXdpb25lIGplc3QgdXByYXduaWVuaWUgJnF1b3Q7TW9keWZpa3VqIGthbGVuZGFyeiZxdW90OyBkbGEgZ3J1cCB1xbx5dGtvd25payZvYWN1dGU7dywga3Qmb2FjdXRlO3J6eSBixJlkxIUgemFyesSFZHphxIcga2FsZW5kYXJ6ZW0nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnVXN1xYQgemF6bmFjem9uZSB3eWRhcnplbmlhJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdKZXN0ZcWbIHBld2llbiwgxbxlIHRlIHd5ZGFyemVuaWEgcG93aW5ueSBiecSHIHVzdW5pxJl0ZT8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ1phem5hY3pvbmUgd3lkYXJ6ZW5pYSB6b3N0YcWCeSB1c3VuacSZdGUnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnU3phYmxvbnknOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1N6YWJsb24gcG9tb2N5JzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnU3phYmxvbnkgdyBwbGlrYWNoJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnRG9kYWogc3phYmxvbic7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1N6YWJsb24nOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ05hendhIHN6YWJsb251JzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkeXR1aiBzemFibG9uJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnVXN1xYQgc3phYmxvbic7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ05hendhIG5vd2VnbyBzemFibG9udSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdCxYHEhEQ6IFN6YWJsb24geiB0xIUgbmF6d8SFIGp1xbwgaXN0bmllamUuIFdwcm93YWTFuiBpbm7EhSBuYXp3xJkuJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdTemFibG9uIHpvc3RhxYIgcG9tecWbbG5pZSB6YWltcG9ydG93YW55IGRvIGJhenkgZGFueWNoIGkgamVzdCBqdcW8IGdvdG93eSBkbyB1xbx5Y2lhLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1pvYmFjeiBkb215xZtsbmUgYXJrdXN6ZSBzdHnFgiZvYWN1dGU7dyc7CiRsYW5nWydmaWxlbmFtZSddID0gJ05hendhIHBsaWt1JzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0dWogc3phYmxvbic7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnU3phYmxvbiB6b3N0YcWCIHNrYXNvd2FueSB6IGJhenkgZGFueWNoJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ1N6YWJsb24gYWt0dWFsaXpvd2FubyBwb215xZtsbmllJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ1BvZGN6YXMgYWt0dWFsaXphY2ppIHN6YWJsb251IHd5c3TEhXBpxYIgYsWCxIVkJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdVc3Rhd2llbmlhIHpvc3RhxYJ5IHphcGlzYW5lIHBvbXnFm2xuaWUnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnS2F0ZWdvcmlhIHpvc3RhxYJhIHVzdW5pxJl0YSc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdLYXRlZ29yaWEgem9zdGHFgmEgemFrdHVhbGl6b3dhbmEnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0thdGVnb3JpYSB6b3N0YcWCYSBkb2RhbmEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnV3lkYXJ6ZW5pZSB6b3N0YcWCbyB1c3VuacSZdGUnOwokbGFuZ1snZXZlbnR1cGRhdGVkJ10gPSAnV3lkYXJ6ZW5pZSB6b3N0YcWCdSB6YWt0dWFsaXpvd2FuZSc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdCxYHEhEQ6IE11c2lzeiB1c3Rhd2nEhyBkb215xZtsbsSFIHN0cm9uxJkgYnkgdcW8eXdhxIcgbW9kdcWCIEthbGVuZGFyeiB6IG9wY2rEhSAmIzAzOTtwcmV0dHkgVVJMcyYjMDM5Oy4gV2VqZMW6IHcgemFrxYJhZGvEmSB1c2F0d2llxYQgbW9kdcWCdSBpIHd5YmllcnogamFrxIXFmyBkb215xZtsbsSFIHN0cm9uxJkuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdvJzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXAnOwokbGFuZ1snbmFtZSddID0gJ05hendhJzsKJGxhbmdbJ29yZGVyJ10gPSAnS29sZWpub8WbxIcnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ1BvbGUgZG9kYW5lJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ1BvbGUgc2thc293YW5lJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ1BvbGEgdcW8eXRrb3duaWthJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1BvbGUgdGVrc3Rvd2UnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdQb2xlIHdncnl3YW5pYSBwbGlrJm9hY3V0ZTt3JzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+TW9kdcWCIEthbGVuZGFyeiBzxYJ1xbx5IHd5xZt3aWV0bGFuaXUgemRhcnplxYQgbmEgVHdvamVqIHN0cm9uaWUuIFBvIHphaW5zdGFsb3dhbml1IG1vZHXFgnUgdyBtZW51IHBvamF3aSBzacSZIHBvenljamEgJnF1b3Q7emFyesSFZHphaiBrYWxlbmRhcnplbSZxdW90OyAtIHRhbSB1c3Rhd2lzeiB3c3p5c3RraWUgemRhcnplbmlhLg0KPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnRG9tecWbbG5hIHN0cm9uYSB3ecWbd2lldGxhasSFY2Ega2FsZW5kYXJ6LiBOYSB0ZWogc3Ryb25pZSBtdXNpIHBvamF3acSHIHNpxJkgem5hY3puaWsgc21hcnR5ICh3xIVzYXR5IG5hd2lhcykgeiB3eXdvxYJhbmllbSBtb2R1xYJ1IEthbGVuZGFyei4gVXN0YXdpZW5pZSB0ZWogb3BjamkgamVzdCBrb25pZWN6bmUgcHJ6eSB1xbx5Y2l1IG9wY2ppICYjMDM5O3ByZXR0eSBVUkxzJiMwMzk7IC0gc2tyJm9hY3V0ZTtjb255Y2ggYWRyZXMmb2FjdXRlO3cgc3Ryb24uJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0thdGFsb2csIGRvIGt0Jm9hY3V0ZTtyZWdvIHRyYWZpxIUgd2dyeXdhbmUgcGxpa2knOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnRG96d29sb25lIHR5cHkgcGxpayZvYWN1dGU7dyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdVcGV3bmlqIHNpxJksIMW8ZSBuYXp3eSBwbGlrJm9hY3V0ZTt3IHPEhSB1bmlrYWxuZSc7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ1RodW1ibmFpbCBXaWR0aCc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdUaHVtYm5haWwgSGVpZ2h0JzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnTGFyZ2UgSW1hZ2UgV2lkdGgnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnTGFyZ2UgSW1hZ2UgSGVpZ2h0JzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdQb3d0YXJ6YWxub8WbxIcnOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnUG93dGFyemFqIGRvJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5XeWRydWsgbmF6d3kgYXV0b3JhOjwvYj48L3A+DQo8Y29kZT5BdXRvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heCAnOwokbGFuZ1sndGltZXMnXSA9ICd2ZXplcyc7CiRsYW5nWydvbiddID0gJ2VtJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnVGVtIGEgY2VydGV6YSBxdWUgcXVlciBmYXplciBpc3NvPyBDb250aW51YW5kbyB2YWkgYXBhZ2FyIHRvZG9zIG9zIGRhZG9zIGFzc29jaWFkb3MgYSBlc3RlIG0mb2FjdXRlO2R1bG8uJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnTyBtJm9hY3V0ZTtkdWxvIENhbGVuZCZhYWN1dGU7cmlvIGZvaSBkZXNpbnN0YWxhZG8gZSB0b2RvcyBvcyBldmVudG9zIGRlIHRlbXBsYXRlcyBlIGFzIGluZm9ybWEmY2NlZGlsOyZvdGlsZGU7ZXMgYXNzb2NpYWRhcyBhIGVzdGUgbSZvYWN1dGU7ZHVsbyBmb3JhbSByZW1vdmlkb3MnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnQ2FtcG8gIEFjdHVhbGl6YWRvJzsKJGxhbmdbJ2V2ZXJ5J10gPSAnQ2FkYSB1bSc7CiRsYW5nWydvciddID0gJ291JzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ0FjdHVhbGl6YSZjY2VkaWw7JmF0aWxkZTtvIFN1Yi1FdmVudG9zJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdEZXZlIHNlbGVjaW9uYXIgcGVsbyBtZW5vcyB1bWEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ05hZGEgZm9pIHNlbGVjaW9uYWRvIHBhcmEgYXBhZ2FyJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ09zIGV2ZW50b3MgZGUgcGFyJmFjaXJjO21ldHJvcyByZXBldGkmY2NlZGlsOyZhdGlsZGU7byBhbyBlc3BlY2lmaWNhciByZXN1bHRhciZhYWN1dGU7IG5hIHNvYnJlcG9zaSZjY2VkaWw7JmF0aWxkZTtvIGRlIGV2ZW50b3MuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JlcGV0aSZjY2VkaWw7JmF0aWxkZTtvJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdVbSBvdSBtYWlzIGRvcyB2YWxvcmVzIGRhIGRhdGEgaW5zY3JpdGEgcyZhdGlsZGU7byBpbnYmYWFjdXRlO2xpZG9zJzsKJGxhbmdbJ3N1bmRheSddID0gJ0RvbWluZ28nOwokbGFuZ1snbW9uZGF5J10gPSAnU2VndW5kYSc7CiRsYW5nWyd0dWVzZGF5J10gPSAnVGVyJmNjZWRpbDthJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1F1YXJ0YSc7CiRsYW5nWyd0aHVyc2RheSddID0gJ1F1aW50YSc7CiRsYW5nWydmcmlkYXknXSA9ICdTZXh0YSc7CiRsYW5nWydzYXR1cmRheSddID0gJ1NhYmFkbyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ0RvbSc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ1NlZyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUZXInOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdRdWEnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1F1aSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ1NleCc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnU2FiJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnRGlhcyAmdWFjdXRlO3RlaXMnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnRGlhcyc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnU2VtYW5hcyc7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01lc2VzJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbm9zJzsKJGxhbmdbJ25vJ10gPSAnTiZhdGlsZGU7byc7CiRsYW5nWydkYWlseSddID0gJ0RpJmFhY3V0ZTtyaWFtZW50ZSc7CiRsYW5nWyd3ZWVrbHknXSA9ICdTZW1hbmFsbWVudGUnOwokbGFuZ1snbW9udGhseSddID0gJ01lbnNhbG1lbnRlJzsKJGxhbmdbJ3llYXJseSddID0gJ0FudWFsbWVudGUnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdSZXBldGlyIGEgY2FkYSc7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ1JlcGV0aSZjY2VkaWw7JmF0aWxkZTtvICBFdmVudG9zIERldGFsaGVzJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ0lsaW1pdGFkbyc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTiZ1YWN1dGU7bWVybyBtJmFhY3V0ZTt4aW1vIGRlIHN1Yi1ldmVudG9zJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnRXNwZWNpZmljYXIgdW1hIGRhdGEgZmluYWwgZGlmZXJlbnRlPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWxhcic7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ01vc3RyYXIgU3ViLUV2ZW50b3MgPGVtPihwb2RlbSByZXN1bHRhciBlbSB1bSBsb25nbyBkaXNwbGF5KTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSAnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVwZXRpciBBdCZlYWN1dGU7JzsKJGxhbmdbJ3BhcmVudCddID0gJ1BhcmVudGUnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVwZXRpciBQZXImaWFjdXRlO29kbyc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cm8nOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0RhdGEgSW5pY2lvJzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnRGF0YSBGaW5hbCc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdBIGxpc3RhIGRlIHRlbXBsYXRlcyBxdWUgZXN0JmF0aWxkZTtvIGRpc3BvbiZpYWN1dGU7dmVpcyBwYXJhIGEgcHImb2FjdXRlO3hpbWEgbGlzdGEgZGUgdmlzdWFsaXphJmNjZWRpbDsmb3RpbGRlO2VzJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGljaW9uYXIvRWRpdGFyIHVtIHByJm9hY3V0ZTt4aW1vICBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTaXN0ZW1hIFBhZHImYXRpbGRlO28gZGUgUHImb2FjdXRlO3hpbW9zIFRlbXBsYXRlcyc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnQSBsaXN0YSBkZSB0ZW1wbGF0ZXMgcXVlIGVzdCZhdGlsZGU7byBkaXNwb24maWFjdXRlO3ZlaXMgcGFyYSBhIGxpc3RhIHZpc3VhbGl6YSZjY2VkaWw7Jm90aWxkZTtlcyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkaWNpb25hci9FZGl0YXIgYSBMaXN0YSBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnU2lzdGVtYSBQYWRyJmF0aWxkZTtvIExpc3RhIFRlbXBsYXRlcyc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0EgbGlzdGEgZGUgdGVtcGxhdGVzIHF1ZSBlc3QmYXRpbGRlO28gZGlzcG9uJmlhY3V0ZTt2ZWlzIHBhcmEgbyBldmVudG8gdmlzdWFsaXphJmNjZWRpbDsmb3RpbGRlO2VzJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkaWNpb25hci9FZGl0YXIgdW0gRXZlbnRvIERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2V2ZW50X3RlbXBsYXRlJ10gPSAnU2lzdGVtYSBQYWRyJmF0aWxkZTtvIEV2ZW50byBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19jYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdBIGxpc3RhIGRlIHRlbXBsYXRlcyBxdWUgZXN0JmF0aWxkZTtvIGRpc3BvbiZpYWN1dGU7dmVpcyBwYXJhIGEgdmlzdWFsaXNheiZhdGlsZGU7byBkbyBDYWxlbmQmYWFjdXRlO3Jpbyc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGljaW9uYXIvRWRpdGFyIHVtIENhbGVuZCZhYWN1dGU7cmlvIERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnU2lzdGVtYSBQYWRyJmF0aWxkZTtvIENhbGVuZCZhYWN1dGU7cmlvIFRlbXBsYXRlcyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdFc3RhIGZvcm11bCZhYWN1dGU7cmlvIGRlZmluZSBvIHRlbXBsYXRlIHF1ZSBzZXImYWFjdXRlOyB1c2FkbyBxdWFuZG8gIGNsaWNhciBlbSAmcXVvdDtOb3ZvIFRlbXBsYXRlJnF1b3Q7IG5hIHRhYiBhcHJvcHJpYWRhLiBBbHRlcmFyIGVzc2UgdmFsb3IgbiZhdGlsZGU7byB0ZXImYWFjdXRlOyBxdWFscXVlciBlZmVpdG8gaW1lZGlhdG8gc29icmUgb3MgZGlzcGxheXMgZ2VyYWRvcyBhIHBhcnRpciBkZXN0ZSBtJm9hY3V0ZTtkdWxvLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NoYW1hZGEgYXAmb2FjdXRlO3Mgc2UgYWRpY2lvbmFyIHVtIGV2ZW50byBubyBjYWxlbmQmYWFjdXRlO3JpbyAnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQ2hhbWFkYSBhcCZvYWN1dGU7cyBzZSBlZGl0YXIgdW0gZXZlbnRvIG5vIGNhbGVuZCZhYWN1dGU7cmlvIGV4aXN0ZW50ZSAnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0NoYW1hZGEgYXAmb2FjdXRlO3Mgc2UgZWxpbWluYXIgdW0gZXZlbnRvJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnQ2hhbWFkYSBhcCZvYWN1dGU7cyBzZSBhZGljaW9uYXIgdW1hIGNhdGVnb3JpYSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdDaGFtYWRhIGFwJm9hY3V0ZTtzIHNlIGVkaXRhciB1bWEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdDaGFtYWRhIGFwJm9hY3V0ZTtzIHNlIGVsaW1pbmFyIHVtYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5FbnZpYWRvIHF1YW5kbyB1bSBjYWxlbmQmYWFjdXRlO3JpbyBldmVudG8gJmVhY3V0ZTsgYWRpY2lvbmFkby48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50byBUaXR1bG88L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bSZhYWN1dGU7cmlvIFRleHRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXNjcmkmY2NlZGlsOyZhdGlsZGU7byBEZXRhbGhhZGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIE8gZXZlbnRvIGNvbWUmY2NlZGlsO2EgZGF0YS9ob3JhPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gTyBldmVudG8gdGVybWluYSBkYXRhL2hvcmE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIE8gdXNlcmlkIGRvIGF1dG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gTyBldmVudG8gaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5FbnZpYWRvIHF1YW5kbyB1bSBjYWxlbmQmYWFjdXRlO3JpbyBldmVudG8gJmVhY3V0ZTsgZWRpdGFkby48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50byBUaXR1bG88L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bSZhYWN1dGU7cmlvIFRleHRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXNjcmkmY2NlZGlsOyZhdGlsZGU7byBEZXRhbGhhZGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIE8gZXZlbnRvIGNvbWUmY2NlZGlsO2EgZGF0YS9ob3JhPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gTyBldmVudG8gdGVybWluYSBkYXRhL2hvcmE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIE8gdXNlcmlkIGRvIGF1dG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gTyBldmVudG8gaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+RW52aWFkbyBxdWFuZG8gdW0gY2FsZW5kJmFhY3V0ZTtyaW8gZXZlbnRvICZlYWN1dGU7IGVsaW1pbmFkby48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIE8gZXZlbnRvIGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5FbnZpYWRvIHF1YW5kbyB1bWEgY2F0ZWdvcmlhIGRhIGFnZW5kYSAgJmVhY3V0ZTsgYWRpY2lvbmFkYS48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIEEgY2F0ZWdvcmlhIGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+RW52aWFkbyBxdWFuZG8gdW1hIGNhdGVnb3JpYSBkYSBhZ2VuZGEgICZlYWN1dGU7IGVkaXRhZGEuPC9wPg0KPGg0PlBhciZhY2lyYzttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIEEgY2F0ZWdvcmlhIG5vbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBBIGNhdGVnb3JpYSBvcmRhZGVuYSZjY2VkaWw7JmF0aWxkZTtvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPkVudmlhZG8gcXVhbmRvIHVtYSBjYXRlZ29yaWEgZGEgYWdlbmRhICAmZWFjdXRlOyBlbGltaW5hZGEuPC9wPg0KPGg0PlBhciZhY2lyYzttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIEEgY2F0ZWdvcmlhIG5vbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBBIGNhdGVnb3JpYSBvcmRhZGVuYSZjY2VkaWw7JmF0aWxkZTtvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdFdmVudG8gQWRpY2lvbmFkbyc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ1VtIG5vbWUgcGFyYSBvIGV2ZW50byAmZWFjdXRlOyBvYnJpZ2F0Jm9hY3V0ZTtyaW8nOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPOiBOZW5odW0gYXJxdWl2byBmb2kgZW5jb250cmFkbyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPOiBPIGFycXVpdm8gY2FycmVnYWRvLCBuJmF0aWxkZTtvICZlYWN1dGU7IGFjZWl0ZSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0VSUk86IE9jb3JyZXUgdW0gcHJvYmxlbWEgYW8gdGVudGFuZG8gY2FycmVnYXIgbyBhcnF1aXZvJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJSTzogT2NvcnJldSB1bSBwcm9ibGVtYSBhbyBjb3BpYXIgbyBhcnF1aXZvIHBhcmEgbyBzZXUgZGVzdGlubyBmaW5hbCc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJSTzogVW0gYXJxdWl2byBjb20gZXNzZSBub21lIGomYWFjdXRlOyBleGlzdGUnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRVJSTzogTiZhdGlsZGU7byBmb2kgcG9zcyZpYWN1dGU7dmVsIGxvY2FsaXphciBvIGFycXVpdm8gQ1NWJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk86IE4mYXRpbGRlO28gJmVhY3V0ZTsgcG9zcyZpYWN1dGU7dmVsIGFicmlyIG8gYXJxdWl2byc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk86IFVtIGNhdGVnb3JpYSBjb20gbyBzZWd1aW50ZSBjb20gZXN0ZSBub21lICVzIGomYWFjdXRlOyBleGlzdGUnOwokbGFuZ1snY2FsX2lkJ10gPSAnSWQgJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGVuZCZhYWN1dGU7cmlvJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyBQYWRyJmF0aWxkZTtvJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaSZjY2VkaWw7JmF0aWxkZTtvJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0FkaWNpb25hciBFdmVudG8nOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnRhciBFdmVudG9zJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVudG9zJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmlhcyc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdDYWxlbmQmYWFjdXRlO3JpbyBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ0xpc3RhIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQciZvYWN1dGU7eGltb3MgRXZlbnRvcyBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdFdmVudG9zIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0NvbmZpZ3VyYSZjY2VkaWw7Jm90aWxkZTtlcyc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgVm9sdGFyJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU2VndWludGUgJnJhcXVvOyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmlhcyBDYXJyZWdhbWVudG8nOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdEZWZpbmkmY2NlZGlsOyZvdGlsZGU7ZXMgQWN0dWFsaXphZGFzJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdBZGljaW9uYXIgRXZlbnRvJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRWRpdGFyJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdFbGltaW5hcic7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ1RlbSBjZXJ0ZXphIGRlIHF1ZSBkZXNlamEgZXhjbHVpcic7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnQWN0dWFsaXphciBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRG9taW5nbyc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnU2VndW5kYSc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1RlciZjY2VkaWw7YSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnUXVhcnRhJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ1F1aW50YSc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnU2V4dGEnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2FiYWRvJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdEb20nOwokbGFuZ1snY2FsX21vbiddID0gJ1NlZyc7CiRsYW5nWydjYWxfdHVlcyddID0gJ1Rlcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnUXVhJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1F1aSc7CiRsYW5nWydjYWxfZnJpJ10gPSAnU2V4JzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYWInOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW5laXJvJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZldmVyZWlybyc7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNYXImY2NlZGlsO28nOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQWJyaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01haW8nOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5obyc7CiRsYW5nWydjYWxfanVseSddID0gJ0p1bGhvJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdG8nOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NldGVtYnJvJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT3V0dWJybyc7CiRsYW5nWydjYWxfbm92ZW1iZXInXSA9ICdOb3ZlbWJybyc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZWNlbWJybyc7CiRsYW5nWydjYWxfYWRkJ10gPSAnQWRpY2lvbmFyJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBY3R1YWxpemFyJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V2ZW50byc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW0mYWFjdXRlO3Jpbyc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFsaGVzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnbWFpcyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVm9sdGEnOwokbGFuZ1snY2FsX3RvJ10gPSAnYSc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICcmVWFjdXRlO2x0aW1vcyBFdmVudG9zJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdQciZvYWN1dGU7eGltb3MgRXZlbnRvcyc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnTmVuaHVtYSBDYXRlZ29yaWEnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdNb3N0cmFyIGFwZW5hcyBlbSBldmVudG9zJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cmEgUG9yJzsKJGxhbmdbJ2NhbF9nbyddID0gJ09LJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1RpdHVsbyc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdEZSBEYXRhJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdQYXJhIERhdGEnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWN0dWFsaXphciBDYXRlZ29yaWFzJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ0wmaWFjdXRlO25ndWFnZW0nOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQWN0dWFsaXphciBDb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzZSBhcyBkb3plIGhvcmFzIG5hIGhvcmEgZG8gcmVsJm9hY3V0ZTtnaW8gZHJvcC1kb3ducz8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yaWEgUGFkciZhdGlsZGU7byAnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdBY3R1YWxpemFyIENhbXBvcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvciZjY2VkaWw7YXIgcGVsbyBtZW5vcyB1bWEgY2F0ZWdvcmlhJzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXSA9ICdRdWFudG9zIGFub3Mgbm8gcGFzc2FkbyBzJmF0aWxkZTtvIHBlcm1pdGlkb3MnOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnUXVhbnRvcyBhbm9zIG5vIGZ1dHVybyBzJmF0aWxkZTtvIHBlcm1pdGlkb3MnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdEZXZlIHNlciBjYW1wbyBzdW0mYWFjdXRlO3JpbyBlc2NvbmRpZG8nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdEZXZlIHNlciBjYW1wbyBjb250ZSZ1YWN1dGU7ZG8gZXNjb25kaWRvJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnVmVyaWZpcXVlIHVtYSBvdSBtYWlzIGNhdGVnb3JpYXMgcGFyYSBlc3RlIGV2ZW50byc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ2FsZW5kJmFhY3V0ZTtyaW8gQ1NTIGV4ZW1wbG8nOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1ByZWNpc2FyJmFhY3V0ZTsgZGEgcGVybWlzcyZhdGlsZGU7byBhcHJvcHJpYWRhICglcykgcGFyYSBhY2VkZXIgYSBlc3RhIGZ1bmNpb25hbGlkYWRlJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdDZXJ0aWZpcXVlLXNlIGRlIGRlZmluaXIgYSBwZXJtaXNzJmF0aWxkZTtvICZxdW90O01vZGlmaWNhciBDYWxlbmQmYWFjdXRlO3JpbyZxdW90OyAgZG9zIHVzdSZhYWN1dGU7cmlvcyBxdWUgZGV2ZXImYXRpbGRlO28gYWRtaW5pc3RyYXIgYWdlbmRhIGUgZXZlbnRvcy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnRXhjbHVpciBldmVudG9zIG1hcmNhZG9zICc7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnVGVtIGNlcnRlemEgcXVlIGVzdGVzIGV2ZW50b3MgZGV2ZW0gc2VyIHN1cHJpbWlkb3M/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdFdmVudG9zIHNlbGVjaW9uYWRvcyBmb3JhbSBleGNsdSZpYWN1dGU7ZG9zJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyAnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1RlbXBsYXRlIEFqdWRhJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnRmljaGVpcm9zIFRlbXBsYXRlcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkaWNpb25hciBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlICc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAnVGVtcGxhdGUgTm9tZSc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdFZGl0YXIgVGVtcGxhdGUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdFbGltaW5hciBUZW1wbGF0ZSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ05vdm8gVGVtcGxhdGUgTm9tZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFcnJvOlVtIG1vZGVsbyBjb20gZXNzZSBub21lIGomYWFjdXRlOyBleGlzdGUuIFBvciBmYXZvciwgZXNjb2xoYSB1bSBub21lIGRpZmVyZW50ZS4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ08gdGVtcGxhdGUgZm9pIGltcG9ydGFkbyBwYXJhIG8gYmFuY28gZGUgZGFkb3MgZSBhZ29yYSBlc3QmYWFjdXRlOyBpbnN0YWxhZG8gcGFyYSB1c28uJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnVmVyIEZvbGhhIGRlIGVzdGlsbyBwYWRyJmF0aWxkZTtvJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmljaGVpcm8gTm9tZSc7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGFyIFRlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICdPIHRlbXBsYXRlIGZvaSBleGNsdSZpYWN1dGU7ZG8gY29tICZlY2lyYzt4aXRvIGRhIGJhc2UgZGUgZGFkb3MuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ08gdGVtcGxhdGUgZm9pIGF0dWFsaXphZGEgY29tIHN1Y2Vzc28nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAnT2NvcnJldSB1bSBlcnJvIGFvIGFjdHVhbGl6YXIgbyB0ZW1wbGF0ZSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnQ29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIHNhbHZhcyBjb20gc3VjZXNzbyc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdDYXRlZ29yaWEgZWxpbWluYWRhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3JpYSBhY3R1YWxpemFkYSc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvcmlhIGFkaWNpb25hZGEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnTyBldmVudG8gZm9pIHJlbW92aWRvJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ08gZXZlbnRvIGZvaSBhY3R1YWxpemFkbyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvOiBEZXZlIGRlZmluaXIgdW1hIHAmYWFjdXRlO2dpbmEgcGFkciZhdGlsZGU7bywgYSBmaW0gZGUgdXRpbGl6YXIgYSBBZ2VuZGEgY29tIFVSTHMgY3VydGFzIGxpZ2FkYS4gUG9yIGZhdm9yLCB2JmFhY3V0ZTsgJmFncmF2ZTsgYWJhIERlZmluaSZjY2VkaWw7Jm90aWxkZTtlcyBkbyBDYWxlbmQmYWFjdXRlO3JpbyBlIGVzY29saGEgdW0uJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdlbSc7CiRsYW5nWyd0eXBlJ10gPSAnVGlwbyc7CiRsYW5nWyduYW1lJ10gPSAnTm9tZSc7CiRsYW5nWydvcmRlciddID0gJ09yZGVtJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdDYW1wbyBhZGljaW9uYWRvIGNvbSBzdWNlc3NvJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0NhbXBvIGVsaW1pbmFkbyc7CiRsYW5nWydmaWVsZHMnXSA9ICdDYW1wb3MgUGVyc29uYWxpemFkb3MnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnQ2FtcG8gZGUgdGV4dG8nOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdDYW1wbyBkZSBjYXJyZWdhbWVudG8nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5BZ2VuZGEgJmVhY3V0ZTsgdW0gbSZvYWN1dGU7ZHVsbyBwYXJhIGV4aWJpJmNjZWRpbDsmYXRpbGRlO28gZGUgZXZlbnRvcyBlbSBzdWEgcCZhYWN1dGU7Z2luYS4gUXVhbmRvIG8NCk0mb2FjdXRlO2R1bG8gZm9yIGluc3RhbGFkbywgdW1hIEFnZW5kYSBhZG1pbiBwJmFhY3V0ZTtnaW5hICZlYWN1dGU7IGFkaWNpb25hZGEgYW8gY29udGUmdWFjdXRlO2RvIG1lbnUNClF1ZSBsaGUgcGVybWl0aXImYWFjdXRlOyBnZXJpciBvcyBzZXVzIGV2ZW50b3MuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnUCZhYWN1dGU7Z2luYSBQYWQmYXRpbGRlO28gcXVlIGNvbnQmZWFjdXRlO20gbyBDYWxlbmQmYWFjdXRlO3Jpby4gRXN0YSBwJmFhY3V0ZTtnaW5hIGRldmUgaW5jbHVpciB1bWEgdGFnIFNtYXJ0eSBxdWUgY2hhbWEgcGVsbyBDYWxlbmQmYWFjdXRlO3Jpby4gTmVjZXNzJmFhY3V0ZTtyaW8gc2Ugdm9jJmVjaXJjOyB1c2FyIGEgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmV0Jm9hY3V0ZTtyaW8gb25kZSAgb3MgYXJxdWl2byBjYXJyZWdhZG9zIGRldmVtIHNlciBjb2xvY2Fkb3MnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnUGVybWl0aXIgdGlwbyBkZSBmaWNoZWlyb3MnOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnQXNzZWd1cmFyIG5vbWVzIGRlIGZpY2hlaXJvcyAmdWFjdXRlO25pY29zJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnTWluaWF0dXJhIGxhcmd1cmEnOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnTWluaWF0dXJhIGFsdHVyYSc7CiRsYW5nWydsYXJnZV93aWR0aCddID0gJ0ltYWdlbSBncmFuZGUgbGFyZ3VyYSc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdJbWFnZW0gZ3JhbmRlIGVtIGFsdHVyYSc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnQXQmZWFjdXRlOyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdBdCZlYWN1dGU7IHJlcGV0aXInOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPkltcHJlc3MmYXRpbGRlO28gZG8gbm9tZSBkbyBhdXRvcjo8L2I+PC9wPg0KPGNvZGU+QXV0b3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnQXBlbGF0IGR1cGEgYWRhdWdhcmVhIHVudWkgZXZlbmltZW50IGNhbGVuZGFyaXN0aWMnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQXBlbGF0IGR1cGEgZWRpdGFyZWEgdW51aSBldmVuaW1lbnQgY2FsZW5kYXJpc3RpYyBleGlzdGVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQXBlbGF0IGR1cGEgc3RlcmdlcmVhIHVudWkgZXZlbmltZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnQXBlbGF0IGR1cGEgY3JlYXJlYSB1bmVpIGNhdGVnb3JpaSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdBcGVsYXQgZHVwYSBlZGl0YXJlYSB1bmVpIGNhdGVnb3JpaSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQXBlbGF0IGR1cGEgc3RlcmdlcmVhIHVuZWkgY2F0ZWdvcmlpJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+VHJpbWl0ZSBjYW5kIHVuIGV2ZW5pbWVudCBjYWxlbmRhcmlzdGljIGVzdGUgYWRhdWdhdC48L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gVGl0bHUgZXZlbmltZW50PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBUZXh0dWwgc3VtYXI8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERlc2NyaWVyZSBkZXRhbGlhdGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIERhdGEvb3JhIGRlIGluY2VwdXQgYSBldmVuaW1lbnR1bHVpPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gRGF0YS9vcmEgZGUgdGVybWluYXJlIGEgZXZlbmltZW50dWx1aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gdXNlcmlkLXVsIGF1dG9ydWx1aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIGlkLXVsIGV2ZW5pbWVudHVsdWk8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5UcmltaXRlIGNhbmQgdW4gZXZlbmltZW50IGNhbGVuZGFyaXN0aWMgZXN0ZSBlZGl0YXQuPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIFRpdGx1IGV2ZW5pbWVudDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gVGV4dHVsIHN1bWFyPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXNjcmllcmUgZGV0YWxpYXRhPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBEYXRhL29yYSBkZSBpbmNlcHV0IGEgZXZlbmltZW50dWx1aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIERhdGEvb3JhIGRlIHRlcm1pbmFyZSBhIGV2ZW5pbWVudHVsdWk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIHVzZXJpZC11bCBhdXRvcnVsdWk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBpZC11bCBldmVuaW1lbnR1bHVpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlRyaW1pdGUgY2FuZCB1biBldmVuaW1lbnQgY2FsZW5kYXJpc3RpYyBlc3RlIHN0ZXJzLjwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBpZC11bCBldmVuaW1lbnR1bHVpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5UcmltaXRlIGNhbmQgbyBjYXRlZ29yaWUgY2FsZW5kYXJpc3RpY2EgZXN0ZSBhZGF1Z2F0YS48L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gaWQtdWwgY2F0ZWdvcmllaTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlRyaW1pdGUgY2FuZCB1biBjYWxlbmRhciBjYXRlZ29pcmllIGVzdGUgZWRpdGF0LjwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZC11bCBjYXRlZ29yaWVpPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBOdW1lbGUgY2F0ZWdvcmllaTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIE9yZGluZWEgZHVwYSBjYXRlZ29yaWU8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+VHJpbWl0ZSBjYW5kIHVuIGNhbGVuZGFyIGNhdGVnb3JpZSBlc3RlIHN0ZXJzLjwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZC11bCBjYXRlZ29yaWVpPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBOdW1lbGUgY2F0ZWdvcmllaTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIE9yZGluZWEgZHVwYSBjYXRlZ29yaWU8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW5pbWVudCBhZGF1Z2F0JzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJPQVJFOiBOdSBhIGZvc3QgZ2FzaXQgbmljaSB1biBmaXNpZXIgaW5jYXJjYXQgJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VST0FSRTogRmlzaWVydWwgaW5jYXJjYXQgbnUgcG9hdGUgZmkgYWNjZXB0YXQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUk9BUkU6IEEgc3VydmVuaXQgbyBwcm9ibGVtYSBsYSBpbmNlcmNhcmVhIGRlIGEgaW5jYXJjYSBmaXNpZXJ1bCc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VST0FSRTogQSBzdXJ2ZW5pdCBvIHByb2JsZW1hIGxhIGNvcGllcmVhIGZpc2llcnVsdWkgbGEgZGVzdGluYXRpYSBmaW5hbGEnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0VST0FSRTogVW4gZmlzZXIgY3UgYWNlbGFzaSBudW1lIGV4aXN0YSBkZWphJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0VST0FSRTogTnUgcy1hIGdhc2l0IGZpc2llcnVsIENTVic7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUk9BUkU6IE51IHNlIHBvYXRlIGRlc2NoaWRlIGZpc2llcnVsJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGVuZGFyJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaWVyZSc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdBZGF1Z2EgZXZlbmltZW50JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0YSBldmVuaW1lbnRlJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVuaW1lbnRlJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmlpJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1NhYmxvbiBDYWxlbmRhcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ1NhYmxvbiBMaXN0YSc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU2FibG9uIFNvc2lyaSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdTYWJsb24gRXZlbmltZW50JzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ1NldGFyaSc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgQW50ZXJpb3InOwokbGFuZ1snY2FsX25leHQnXSA9ICdVcm1hdG9yICZyYXF1bzsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpaSBhY3R1YWxpemF0ZSc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldGFyaSBhY3R1YWxpemF0ZSc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnQWRhdWdhIGV2ZW5pbWVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXRlYXphJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTdGVyZ2UnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpIGNhIGRvcml0aSBzYSBzdGVyZ2V0aSc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnU2FibG9uIEFjdHVhbGl6YXJlJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdEdW1pbmljYSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTHVuaSc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ01hcnRpJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdNaWVyY3VyaSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdKb2knOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ1ZpbmVyaSc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTYW1iYXRhJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdEdW0nOwokbGFuZ1snY2FsX21vbiddID0gJ0x1bic7CiRsYW5nWydjYWxfdHVlcyddID0gJ01hcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnTWllJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0pvaSc7CiRsYW5nWydjYWxfZnJpJ10gPSAnVmluJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYW0nOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdJYW51YXJpZSc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJydWFyaWUnOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFydGllJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsaWUnOwokbGFuZ1snY2FsX21heSddID0gJ01haSc7CiRsYW5nWydjYWxfanVuZSddID0gJ0l1bmknOwokbGFuZ1snY2FsX2p1bHknXSA9ICdJdWxpZSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1icmllJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2N0b21icmllJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vaWVtYnJpZSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZWNlbWJyaWUnOwokbGFuZ1snY2FsX2FkZCddID0gJ0FkYXVnYSc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnQWN0dWFsaXplYXphJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V2ZW5pbWVudCc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1hcic7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFsaWknOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtYWkgbXVsdCA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV2ZW5pcmUnOwokbGFuZ1snY2FsX3RvJ10gPSAnbGEnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnRXZlbmltZW50ZSB0cmVjdXRlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFdmVuaW1lbnRlIG5vaSc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnT3JpY2UgY2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnQWZpc2VhemEgZG9hciBldmVuaW1lbnRlbGUgaW4nOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRyZWF6YSBkdXBhJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0R1dGUnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0bHUnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnRGluIGRhdGEnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ2xhIGRhdGEnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWN0dWFsaXplYXphIGNhdGVnb3JpaSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdMaW1iYSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdBY3R1YWxpemVhemEgc2V0YXJpJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdGb2xvc2VzdGUgZm9ybWF0dWwgY3UgZG9pc3ByZXplY2Ugb3JlIGxhIGxpc3RhIGRyb3AtZG93biBhIG9yZWxvcj8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yaWEgaW1wbGljaXRhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnQ2FtcHVyaSBhY3R1YWxpemFyZSc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcnRlYXphIGNlbCBwdXRpbiBvIGNhdGVnb3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnQ2UgbnVtYXIgZGUgYW5pIGRpbiB0cmVjdXQgZXN0ZSBwZXJtaXMnOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnQ2UgbnVtYXIgZGUgYW5pIGRpbiB2aWl0b3IgZXN0ZSBwZXJtaXMnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdBciB0cmVidWkgYXNjdW5zIGNhbXB1bCBzdW1hcic7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0FyIHRyZWJ1aSBhc2N1bnMgY2FtcHVsIGNvbnRpbnV0JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnVmEgcm9nIHNlbGVjdGF0aSB1bmEgc2F1IG1haSBtdWx0ZSBjYXRlZ29yaWkgcGVudHJ1IGFjZXN0IGV2ZW5pbWVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnRXhlbXBsdSBDU1MgY2FsZW5kYXJpc3RpYyc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnQXZldGkgbmV2b2llIGRlIHBlcm1pc2l1bmVhIGNvcmVzcHVuemF0b2FyZSAoJXMpIHBlbnRydSBhIGFjY2VzYSBhY2Vhc3RhIGZ1bmN0aW9uYWxpdGF0ZSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnQXNpZ3VyYXRpLXZhIGNhIGF0aSBzZXRhdCBwZXJtaXNpdW5lYSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgcGVudHJ1IHV0aWxpemF0b3JpaSBjYXJlIHZvciBhZG1pbmlzdHJhIGV2ZW5pbWVudGVsZSBjYWxlbmRhcmlzdGljZS4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnU3RlcmdlIGV2ZW5pbWVudGVsZSBtYXJjYXRlJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpIGNhIGFjZXN0ZSBldmVuaW1lbnRlIGFyIHRyZWJ1aSBzdGVyc2U/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdFdmVuaW1lbnRlbGUgbWFyY2F0ZSBhdSBmb3N0IHN0ZXJzZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdTYWJsb2FuZSc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnQWp1dG9yIHNhYmxvbic7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0Zpc2llciBzYWJsb2FuZSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkYXVnYSBTYWJsb24nOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdTYWJsb24nOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ051bWUgc2FibG9uJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRlYXphIHNhYmxvbic7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1N0ZXJnZSBzYWJsb24nOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOdW1lIHNhYmxvbiBub3UnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRXJvYXJlOiBVbiBzYWJsb24gY3UgYWNlc3QgbnVtZSBleGlzdGEgZGVqYS4gVmEgcm9nIHNhIGFsZWdldGkgdW4gbnVtZSBkaWZlcml0Lic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnU2FibG9udWwgYSBmb3N0IGltcG9ydGF0IGN1IHN1Y2NlcyBpbiBiYXphIGRlIGRhdGUgc2kgYWN1bSBlc3RlIGdhdGEgaW5zdGFsYXQgcGVudHJ1IGEgcHV0ZWEgZmkgZm9sb3NpdC4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaXp1YWxpemVhemEgZm9pYSBkZSBzdGlsIGltcGxpY2l0YSc7CiRsYW5nWydmaWxlbmFtZSddID0gJ051bWUgZmlzaWVyJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0YSBzYWJsb24nOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ0FjZXN0IHNhYmxvbiBhIGZvc3Qgc3RlcnMgY3Ugc3VjY2VzIGRpbiBiYXphIGRlIGRhdGUuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ1NhYmxvbnVsIGEgZm9zdCBhY3R1YWxpemF0IGN1IHN1Y2Nlcyc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdBIGludGVydmVuaXQgbyBlcm9hcmUgbGEgYWN0dWFsaXphcmVhIHNhYmxvbnVsdWknOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldGFyaWxlIGF1IGZvc3Qgc2FsdmF0ZSBjdSBzdWNjZXMnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnQ2F0ZWdvcmlhIGEgZm9zdCBzdGVhcnNhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3JpYSBhIGZvc3QgYWN0dWFsaXphdGEnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0NhdGVnb3JpYSBhIGZvc3QgYWRhdWdhdGEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnRXZlbmltZW50dWwgYSBmb3N0IHN0ZXJzJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0V2ZW5pbWVudHVsIGEgZm9zdCBhY3R1YWxpemF0JzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vyb2FyZTogVHJlYnVpZSBzYSBzZXRhdGkgbyBwYWdpbmEgaW1wbGljaXRhIHBlbnRydSBhIHB1dGVhIGZvbG9zaSBjYWxlbmRhcnVsIGN1IFVSTC11cmkgZHJhZ3V0ZSBhY3RpdmF0ZS4gVmEgcm9nIHNhIG1lcmdldGkgbGEgc2V0YXJpbGUgY2FsZW5kYXJ1bHVpIHNpIHNhIGFsZWdldGkgdW5hLic7CiRsYW5nWyd0aW1lX2F0J10gPSAnbGEnOwokbGFuZ1sndHlwZSddID0gJ1RpcCc7CiRsYW5nWyduYW1lJ10gPSAnTnVtZSc7CiRsYW5nWydvcmRlciddID0gJ09yZGluZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnQ2FtcCBhZGF1Z2F0IGN1IHN1Y2Nlcyc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdDYW1wIHN0ZXJzJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0NhbXB1cmkgcGFydGljdWxhcml6YXRlJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1RleHQgY2FtcCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0NhbXAgaW5jYXJjYXJlIGZpc2llcic7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGVzdGUgdW4gbW9kdWwgcGVudHJ1IGFmaXNhcmVhIGV2ZW5pbWVudGVsb3IgaW4gcGFnaW5hIGR1bW5lYXZhc3RyYS4gRHVwYSBpbnN0YWxhcmVhIG1vZHVsdWx1aSwgbyBwYWdpbmEgZGUgYWRtaW5pc3RyYXJlIGEgY2FsZW5kYXJ1bHVpIGVzdGUgYWRhdWdhdGEgbGEgbWVuaXVsIGNvbnRpbnV0IGNhcmUgdmEgcGVybWl0ZSBnZXN0aW9uYXJlYSBldmVuaW1lbnRlbG9yLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1BhZ2luYSBpbXBsaWNpdGEgY2FyZSBjb250aW5lIGNhbGVuZGFydWwuIEFjZWFzdGEgcGFnaW5hIHRyZWJ1aWUgc2EgY29udGluYSBvIGV0aWNoZXRhIFNtYXJ0eSBjYXJlIGFwZWxlYXphIGNhbGVuZGFydWwuIEVzdGUgbmVjZXNhcmEgZGFjYSBmb2xvc2l0aSBVUkwtdXJpIGRyYWd1dGUuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9ydWwgdW5kZSBmaXNpZXJlbGUgaW5jYXJjYXRlIGFyIHRyZWJ1aSBzYSBmaWUgcGxhc2F0ZSc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdUaXB1cmkgZGUgZmlzaWVyZSBwZXJtaXNlJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ0FzaWd1cmEgbnVtZSBkZSBmaXNpZXJlIHVuaWNlJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnVGh1bWJuYWlsIFdpZHRoJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1RodW1ibmFpbCBIZWlnaHQnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICdMYXJnZSBJbWFnZSBXaWR0aCc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdMYXJnZSBJbWFnZSBIZWlnaHQnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JlY3Vycyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlRpcGFyZXN0ZSBudW1lbGUgYXV0b3J1bHVpOjwvYj48L3A+DQo8Y29kZT5BdXRvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2RmbHRfdXJscHJlZml4J10gPSAnRGVmYXVsdCBVUkwgcHJlZml4IGZvciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmV3IGV2ZW50cyBhcmUgIkFsbCBEYXkiIGV2ZW50cyBieSBkZWZhdWx0JzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnRGVmYXVsdCBzdGFydCB0aW1lIGZvciBuZXcgZXZlbnRzJzsKJGxhbmdbJ2luZm9fZGZsdF9zdGFydHRpbWUnXSA9ICc8ZW0+KGFwcGxpZXMgb25seSBpZiBuZXcgZXZlbnRzIGFyZSBub3QgIkFsbCBEYXkiIGV2ZW50cy4pPC9lbT4nOwokbGFuZ1snc2VhcmNoX3R5cGUnXSA9ICdTZWFyY2ggVHlwZSc7CiRsYW5nWydzZWFyY2hfYW55J10gPSAnUmV0dXJuIHJlc3VsdHMgbWF0Y2hpbmcgYW55IHdvcmQnOwokbGFuZ1snc2VhcmNoX2FsbCddID0gJ1JldHVybiByZXN1bHRzIG1hdGNoaW5nIGFsbCB3b3Jkcyc7CiRsYW5nWydpbmZvX2N1c3RvbWZpZWxkcyddID0gJzxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Tm90ZTo8L3NwYW4+ICJGaWxlIFVwbG9hZCBGaWVsZHMiIGFyZSBub3Qgc2VhcmNoYWJsZS4nOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1NlYXJjaGFibGUnOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IGVkaXQgZXZlbnQgdGVtcGxhdGUgdG8gdXNlIHdoZW4gYSB1c2VyIGNyZWF0ZXMgb3IgZWRpdHMgYW4gZXZlbnQnOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0cGFnZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIGRpZmZlcmVudCBwYWdlIGZvciB0aGUgZWRpdCBmb3JtLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZSB0byB1c2UnOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdFZGl0IENhbGVuZGFyIEV2ZW50JzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdEYXRhYmFzZSBFcnJvcic7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snaW5mb19zeXNkZmx0X2VkaXRldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0ICJFZGl0IEV2ZW50IiBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbXlldmVudHNfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCAiTXkgRXZlbnRzIiBUZW1wbGF0ZSc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTWVtYmVycyBvZiB0aGlzIEZFVSBncm91cCBjYW4gYWRkIGV2ZW50cyc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X3BhZ2UnXSA9ICdEZWZhdWx0IHBhZ2UgZm9yIHRoZSBmcm9udGVuZCBlZGl0IGZvcm0uJzsKJGxhbmdbJ25vbmUnXSA9ICdOb25lJzsKJGxhbmdbJ293bmVyJ10gPSAnT3duZXInOwokbGFuZ1snY2FsX2VkaXRldmVudF90ZW1wbGF0ZXMnXSA9ICdFZGl0IEV2ZW50IEZvcm0gVGVtcGxhdGVzJzsKJGxhbmdbJ2luZm9fZWRpdGV2ZW50X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBlZGl0IGV2ZW50IGZvcm0nOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIEVkaXQgRXZlbnQgRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfbXlldmVudHNfdGVtcGxhdGVzJ10gPSAnTXkgRXZlbnRzIExpc3QgVGVtcGxhdGVzJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBkaXNwbGF5IGEgbGlzdCBvZiB1c2VyIGV2ZW50cyc7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhICJNeSBFdmVudHMiIHJlcG9ydCB0ZW1wbGF0ZSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVGhpcyBhY3Rpb24gd2lsbCByZW1vdmUgYW55IGV2ZW50cyB0aGF0IGNvbmZsaWN0IHdpdGggbm9uLW92ZXJsYXBwYWJsZSBldmVudHMuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdGVyIENvbmZsaWN0aW5nIEV2ZW50cyc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdTaWxlbnRseSByZW1vdmUgY29uZmxpY3RpbmcgZXZlbnRzJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnRGlzcGxheSBhbiBlcnJvcic7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdXaGF0IHNob3VsZCBoYXBwZW4gd2hlbiBhIGNvbmZsaWN0IGlzIGRldGVjdGVkIGR1cmluZyBlZGl0aW5nIG9yIGFkZGluZyBvZiBhbiBldmVudCc7CiRsYW5nWydlcnJvcl9ldmVudF9jb25mbGljdCddID0gJ1RoZSBldmVudCB2YWx1ZXMgc3BlY2lmaWVkIG92ZXJsYXAgd2l0aCBhbiBleGlzdGluZyBldmVudCB0aGF0IGRvZXMgbm90IGFsbG93IGNvbmZsaWN0cyc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnQXBwbGllcyBvbmx5IHRvIGV2ZW50cyB3aXRoIGFuIGVuZCB0aW1lIChvciBhbGwgZGF5IGV2ZW50cyknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdBbGxvdyBuZXcgZXZlbnRzIHRvIG92ZXJsYXAgd2l0aCB0aGlzIG9uZSc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9wb2xpY3knXSA9ICdFdmVudCBPdmVybGFwIFBvbGljeSc7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ05vIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ0RlY2lkZWQgb24gYW4gZXZlbnQgYnkgZXZlbnQgYmFzaXMnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdCYWNrJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOwokbGFuZ1snZXJyb3JfY2FsZW5kYXJfaW5jb21wYXRpYmxlJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCB0aGF0IHRoZSBDYWxlbmRhciBtb2R1bGUgaXMgYWxzbyBpbnN0YWxsZWQuLiAgVGhpcyBtb2R1bGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgQ2FsZW5kYXIgbW9kdWxlIGFuZCBjYW5ub3QgY28tZXhpc3Qgd2l0aCBpdCBvbiB0aGUgc2FtZSBpbnN0YWxsLiAgUGxlYXNlIHVuaW5zdGFsbCB0aGUgQ2FsZW5kYXIgbW9kdWxlJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0VpdGhlciBldmVudF9pZCBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBvciB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGV2ZW50IHdpdGggdGhpcyBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdlICVkIG9mICVkJzsKJGxhbmdbJ3NlYXJjaF9yZXN1bHRzJ10gPSAnQ2FsZW5kYXIgU2VhcmNoIFJlc3VsdHMnOwokbGFuZ1snc2VhcmNoX3dvcmRzJ10gPSAnU2VhcmNoIFdvcmRzJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdObyByZXN1bHRzIGZvdW5kIG1hdGNoaW5nIHRoZSBxdWVyeSBzcGVjaWZpZWQnOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbmN5JzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZSc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGaXJzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0ZpcnN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdHVlc2RheSddID0gJ0ZpcnN0IFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3dlZG5lc2RheSddID0gJ0ZpcnN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdGaXJzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRmlyc3QgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0ZpcnN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnU2Vjb25kIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ1NlY29uZCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnU2Vjb25kIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdTZWNvbmQgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdTZWNvbmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ1RoaXJkIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVGhpcmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVGhpcmQgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnVGhpcmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90aHVyc2RheSddID0gJ1RoaXJkIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdUaGlyZCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnVGhpcmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zdW5kYXknXSA9ICdGb3VydGggU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnRm91cnRoIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdGb3VydGggVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZvdXJ0aCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZvdXJ0aCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZvdXJ0aCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0ZvdXJ0aCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYXN0IFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYXN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGFzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ0xhc3QgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdMYXN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0xhc3QgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnSW52YWxpZCBmcmVxdWVuY3kuLi4uIHlvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIHRoZSBzcGVjaWZpZWQgZGF0ZSBBTkQgb3RoZXIgdmFsdWVzJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIGRpc3BsYXknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnU2VhcmNoIFJlc3VsdCBUZW1wbGF0ZXMnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnRGF0YWJhc2UgUXVlcnkgRmFpbGVkJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnSW52YWxpZCBTZWFyY2ggRGF0ZXMgU3BlY2lmaWVkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1NlYXJjaCc7CiRsYW5nWydjYXRlZ29yeSddID0gJ0NhdGVnb3J5JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBTZWFyY2ggRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydzZWFyY2h0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBTZWFyY2ggRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgc2VhcmNoIGZvcm0nOwokbGFuZ1snY2FsX3NlYXJjaF9mb3JtX3RlbXBsYXRlcyddID0gJ1NlYXJjaCBGb3JtIFRlbXBsYXRlcyc7CiRsYW5nWydtYXgnXSA9ICdtYXgnOwokbGFuZ1sndGltZXMnXSA9ICd0aW1lcyc7CiRsYW5nWydvbiddID0gJ29uJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRvIHRoaXM/ICBDb250aW51aW5nIHdpbGwgcGVybWFuZW5lbnRseSBlcmFzZSBhbGwgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2R1bGUuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnVGhlIENhbGVuZGFyIG1vZHVsZSBoYXMgYmVlbiB1bmluc3RhbGxlZCBhbmQgYWxsIGV2ZW50IGFuZCB0ZW1wbGF0ZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVtb3ZlZCc7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdGaWVsZCBVcGRhdGVkJzsKJGxhbmdbJ2V2ZXJ5J10gPSAnRXZlcnknOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdVcGRhdGUgQ2hpbGQgRXZlbnRzJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdZb3UgbXVzdCBzZWxlY3QgYXQgbGVhc3Qgb25lIGNhdGVnb3J5JzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ05vdGhpbmcgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gZGVsZXRlJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ1RoZSByZWN1cmluZyBldmVudCBwYXJhbWV0ZXJzIHlvdSBoYXZlIHNwZWNpZmllZCB3b3VsZCByZXN1bHQgaW4gb3ZlcmxhcHBpbmcgZXZlbnRzLic7CiRsYW5nWydyZWN1cnMnXSA9ICdSZWN1cnMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ09uZSBvciBtb3JlIG9mIHRoZSBkYXRlIHZhbHVlcyBlbnRlcmVkIHdlcmUgaW52YWxpZCc7CiRsYW5nWydzdW5kYXknXSA9ICdTdW5kYXknOwokbGFuZ1snbW9uZGF5J10gPSAnTW9uZGF5JzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdUdWVzZGF5JzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1dlZG5lc2RheSc7CiRsYW5nWyd0aHVyc2RheSddID0gJ1RodXJzZGF5JzsKJGxhbmdbJ2ZyaWRheSddID0gJ0ZyaWRheSc7CiRsYW5nWydzYXR1cmRheSddID0gJ1NhdHVyZGF5JzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnU3UnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUdSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1dlJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdUaCc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dlZWtkYXlzJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RheXMnOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ1dlZWtzJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTW9udGhzJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdZZWFycyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ2RhaWx5J10gPSAnRGFpbHknOwokbGFuZ1snd2Vla2x5J10gPSAnV2Vla2x5JzsKJGxhbmdbJ21vbnRobHknXSA9ICdNb250aGx5JzsKJGxhbmdbJ3llYXJseSddID0gJ1llYXJseSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1JlcGVhdCBldmVyeSc7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ1JlY3VycmluZyBFdmVudCBEZXRhaWxzJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ1VubGltaXRlZCc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgZXZlbnRzJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnU3BlY2lmeSBhIGRpZmZlcmVudCBlbmQgZGF0ZT8nOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnU2hvdyBDaGlsZCBFdmVudHMgPGVtPihtYXkgcmVzdWx0IGluIHZlcnkgbG9uZyBkaXNwbGF5KTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdSZWN1ciBVbnRpbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdQYXJlbnQnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVjdXIgUGVyaW9kJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnQgRGF0ZSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0VuZCBEYXRlJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHVwY29taW5nbGlzdCB2aWV3cyc7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gVXBjb21pbmdsaXN0IERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFVwY29taW5nbGlzdCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgbGlzdCB2aWV3cyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIExpc3QgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEV2ZW50IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgY2FsZW5kYXIgdmlld3MnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IENhbGVuZGFyIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RoaXMgZm9ybSBkZWZpbmVzIHRoZSB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBjbGljayAiTmV3IFRlbXBsYXRlIiBpbiB0aGUgYXBwcm9wcmlhdGUgdGFiLiAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIGhhdmUgbm8gaW1tZWRpYXRlIGVmZmVjdCBvbiB0aGUgZGlzcGxheXMgZ2VuZXJhdGVkIGZyb20gdGhpcyBtb2R1bGUuJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAn0JLRi9C30YvQstCw0LXRgtGB0Y8g0L/QvtGB0LvQtSDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgdC+0LHRi9GC0LjRjyDQutCw0LvQtdC90LTQsNGA0Y8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAn0JLRi9C30YvQstCw0LXRgtGB0Y8g0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0YHRg9GJ0LXRgdGC0LLRg9GO0YnQtdCz0L4g0YHQvtCx0YvRgtC40Y8g0LrQsNC70LXQvdC00LDRgNGPJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICfQktGL0LfRi9Cy0LDQtdGC0YHRjyDQv9C+0YHQu9C1INGD0LTQsNC70LXQvdC40Y8g0YHQvtCx0YvRgtC40Y8nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICfQktGL0LfRi9Cy0LDQtdGC0YHRjyDQv9C+0YHQu9C1INGB0L7Qt9C00LDQvdC40Y8g0LrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ9CS0YvQt9GL0LLQsNC10YLRgdGPINC/0L7RgdC70LUg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ9CS0YvQt9GL0LLQsNC10YLRgdGPINC/0L7RgdC70LUg0YPQtNCw0LvQtdC90LjRjyDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XFwiZXZlbnRfdGl0bGVcXCIgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XFwiZXZlbnRfc3VtbWFyeVxcIiAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XFwiZXZlbnRfZGV0YWlsc1xcIiAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cXCJldmVudF9kYXRlX3N0YXJ0XFwiIC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XFwiZXZlbnRfZGF0ZV9lbmRcXCIgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XFwiZXZlbnRfY3JlYXRlZF9ieVxcIiAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XFwiZXZlbnRfaWRcXCIgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlxcImV2ZW50X3RpdGxlXFwiIC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlxcImV2ZW50X3N1bW1hcnlcXCIgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlxcImV2ZW50X2RldGFpbHNcXCIgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XFwiZXZlbnRfZGF0ZV9zdGFydFxcIiAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlxcImV2ZW50X2RhdGVfZW5kXFwiIC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlxcImV2ZW50X2NyZWF0ZWRfYnlcXCIgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlxcImV2ZW50X2lkXFwiIC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlxcImV2ZW50X2lkXFwiIC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XFwiY2F0ZWdvcnlfaWRcXCIgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlxcImNhdGVnb3J5X2lkXFwiIC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cXCJjYXRlZ29yeV9uYW1lXFwiIC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlxcImNhdGVnb3J5X29yZGVyXFwiIC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XFwiY2F0ZWdvcnlfaWRcXCIgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlxcImNhdGVnb3J5X25hbWVcXCIgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XFwiY2F0ZWdvcnlfb3JkZXJcXCIgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAn0KHQvtCx0YvRgtC1INC00L7QsdCw0LLQu9C10L3Qvic7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0EgbmFtZSBmb3IgdGhlIGV2ZW50IGlzIHJlcXVpcmVkJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAn0J7QqNCY0JHQmtCQOiDQl9Cw0LPRgNGD0LbQtdC90L3Ri9C5INGE0LDQudC7INC90LUg0L3QsNC50LTQtdC9JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ9Ce0KjQmNCR0JrQkDog0JfQsNCz0YDRg9C20LXQvdC90YvQuSDRhNCw0LnQuyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L/RgNC40L3Rj9GCJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAn0J7QqNCY0JHQmtCQOiDQn9GA0L7QsdC70LXQvNCwINC/0YDQuCDQv9C+0L/Ri9GC0LrQtSDQt9Cw0LPRgNGD0LfQuNGC0Ywg0YTQsNC50LsnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogQSBQcm9ibGVtIG9jY3VycmVkIHdoZW4gY29weWluZyB0aGUgZmlsZSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ9Ce0KjQmNCR0JrQkDog0KTQsNC50Lsg0YEg0YLQsNC60LjQvCDQuNC80LXQvdC10Lwg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ9Ce0KjQmNCR0JrQkDog0J3QtSDRg9C00LDQu9C+0YHRjCDQvdCw0LnRgtC4IENTViDRhNCw0LnQuyc7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICfQntCo0JjQkdCa0JA6INCd0LUg0YPQtNCw0LXRgtGB0Y8g0L7RgtC60YDRi9GC0Ywg0YTQsNC50LsnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJPUjogQSBjYXRlZ29yeSB3aXRoIHRoZSBuYW1lICVzIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ9Ca0LDQu9C10L3QtNCw0YDRjCc7CiRsYW5nWydjYWxfZGVmYXVsdF90ZW1wbGF0ZXMnXSA9ICdEZWZhdWx0IFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICfQntC/0LjRgdCw0L3QuNC1JzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0YHQvtCx0YvRgtC40LUnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICfQmNC80L/QvtGA0YIg0YHQvtCx0YvRgtC40LknOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ9Ch0L7QsdGL0YLQuNGPJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ9Co0LDQsdC70L7QvSDQutCw0LvQtdC90LTQsNGA0Y8nOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICfQodC/0LjRgdC+0Log0YjQsNCx0LvQvtC90L7Qsic7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVXBjb21pbmcgVGVtcGxhdGUnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAn0KjQsNCx0LvQvtC9INGB0L7QsdGL0YLQuNGPJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCc7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrINCf0YDQtdC00YvQtNGD0YnQuNC5JzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAn0KHQu9C10LTRg9GO0YnQuNC5IMK7JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICfQmtCw0YLQtdCz0L7RgNC40Lgg0L7QsdC90L7QstC70LXQvdGLJzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC+0LHQvdC+0LLQu9C10L3Riyc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAn0JTQvtCx0LDQstC40YLRjCDRgdC+0LHRi9GC0LjQtSc7CiRsYW5nWydjYWxfZWRpdCddID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICfQo9C00LDQu9C40YLRjCc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ9CS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0YwnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ9Ce0LHQvdC+0LLQuNGC0Ywg0YjQsNCx0LvQvtC9JzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICfQktC+0YHQutGA0LXRgdC10L3RjNC1JzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICfQn9C+0L3QtdC00LXQu9GM0L3QuNC6JzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAn0JLRgtC+0YDQvdC40LonOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ9Ch0YDQtdC00LAnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAn0KfQtdGC0LLQtdGA0LMnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ9Cf0Y/RgtC90LjRhtCwJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ9Ch0YPQsdCx0L7RgtCwJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICfQktGBJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICfQn9C9JzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAn0JLRgic7CiRsYW5nWydjYWxfd2VkJ10gPSAn0KHRgCc7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICfQp9GCJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICfQn9GCJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICfQodCxJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAn0K/QvdCy0LDRgNGMJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ9Ck0LXQstGA0LDQu9GMJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ9Cc0LDRgNGCJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ9CQ0L/RgNC10LvRjCc7CiRsYW5nWydjYWxfbWF5J10gPSAn0JzQsNC5JzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAn0JjRjtC90YwnOwokbGFuZ1snY2FsX2p1bHknXSA9ICfQmNGO0LvRjCc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAn0JDQstCz0YPRgdGCJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICfQodC10L3RgtGP0LHRgNGMJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAn0J7QutGC0Y/QsdGA0YwnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAn0J3QvtGP0LHRgNGMJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ9CU0LXQutCw0LHRgNGMJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICfQlNC+0LHQsNCy0LjRgtGMJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICfQntCx0L3QvtCy0LjRgtGMJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ9Ch0L7QsdGL0YLQuNC1JzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAn0JTQsNGC0LAnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICcg0KDQtdC30Y7QvNC1JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAn0J/QvtC00YDQvtCx0L3Qvic7CiRsYW5nWydjYWxfbW9yZSddID0gJ9C/0L7QtNGA0L7QsdC90LXQtSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAn0JLQtdGA0L3Rg9GC0YzRgdGPJzsKJGxhbmdbJ2NhbF90byddID0gJ9CyJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ9Cf0YDQvtGI0LXQtNGI0LjQtSDRgdC+0LHRi9GC0LjRjyc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAn0J/RgNC10LTRgdGC0L7Rj9GJ0LjQtSDRgdC+0LHRi9GC0LjRjyc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAn0JvRjtCx0LDRjyDQutCw0YLQtdCz0L7RgNC40Y8nOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfQn9C+0LrQsNC30LDRgtGMINGC0L7Qu9GM0LrQviDRgdC+0LHRi9GC0LjRjyDQsic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAn0KTQuNC70YzRgtGAINC/0L4nOwokbGFuZ1snY2FsX2dvJ10gPSAn0J/QtdGA0LXQudGC0LgnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAn0JfQsNCz0L7Qu9C+0LLQvtC6JzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ9Ce0YIg0LTQsNGC0YsnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ9CU0L4g0LTQsNGC0YsnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAn0J7QsdC90L7QstC40YLRjCDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAn0K/Qt9GL0LonOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAn0J7QsdC90L7QstC40YLRjCDQvdCw0YHRgtGA0L7QudC60LgnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzZSB0d2VsdmUgaG91ciBjbG9jayBvbiBob3VyIGRyb3AtZG93bnM/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAn0J7QsdC90L7QstC40YLRjCDQv9C+0LvRjyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcmNlIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSG93IG1hbnkgeWVhcnMgaW4gdGhlIHBhc3QgaXMgYWxsb3dlZCc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIb3cgbWFueSB5ZWFyIGludG8gdGhlIGZ1dHVyZSBpcyBhbGxvd2VkJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnU2hvdWxkIHRoZSBzdW1tYXJ5IGZpZWxkIGJlIGhpZGRlbic7CiRsYW5nWydoaWRlY29udGVudCddID0gJ1Nob3VsZCB0aGUgY29udGVudCBmaWVsZCBiZSBoaWRkZW4nOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdQbGVhc2UgY2hlY2sgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyBmb3IgdGhpcyBldmVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAn0J/RgNC40LzQtdGAIENTUyDQutCw0LvQtdC90LTQsNGA0Y8nOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1lvdSBuZWVkIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9uICglcykgdG8gYWNjZXNzIHRoaXMgZnVuY3Rpb25hbGl0eSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgIk1vZGlmeSBDYWxlbmRhciIgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAn0KPQtNCw0LvQuNGC0Ywg0L7RgtC80LXRh9C10L3QvdGL0LUg0YHQvtCx0YvRgtC40Y8nOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ9CS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRjdGC0Lgg0YHQvtCx0YvRgtC40Y8g0LTQvtC70LbQvdGLINCx0YvRgtGMINGD0LTQsNC70LXQvdGLPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAn0J7RgtC80LXRh9C10L3QvdGL0LUg0YHQvtCx0YvRgtC40Y8g0YPQtNCw0LvQtdC90YsnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAn0KjQsNCx0LvQvtC90YsnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ9Ch0L/RgNCw0LLQutCwINGI0LDQsdC70L7QvdCwJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAn0KTQsNC50Lsg0YjQsNCx0LvQvtC90LAnOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICfQlNC+0LHQsNCy0LjRgtGMINGI0LDQsdC70L7QvSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ9Co0LDQsdC70L7QvSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAn0JjQvNGPINGI0LDQsdC70L7QvdCwJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINGI0LDQsdC70L7QvSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ9Cj0LTQsNC70LjRgtGMINGI0LDQsdC70L7QvSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ9CY0LzRjyDQvdC+0LLQvtCz0L4g0YjQsNCx0LvQvtC90LAnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAn0J7RiNC40LHQutCwOiDQqNCw0LHQu9C+0L0g0YEg0YLQsNC60LjQvCDQuNC80LXQvdC10Lwg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLRi9Cx0LXRgNC40YLQtSDQtNGA0YPQs9C+0LUg0LjQvNGPLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAn0K3RgtC+0YIg0YjQsNCx0LvQvtC9INGD0YHQv9C10YjQvdC+INC40LzQv9C+0YDRgtC40YDQvtCy0LDQvSDQsiDQsdCw0LfRgyDQtNCw0L3QvdGL0YUsINC4INCyINC90LDRgdGC0L7Rj9GJ0LXQtSDQstGA0LXQvNGPINGD0YHRgtCw0L3QvtCy0LvQtdC9INC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICfQn9GA0L7RgdC80L7RgtGAINGC0LDQsdC70LjRhtGLINGB0YLQuNC70LXQuSDQv9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydmaWxlbmFtZSddID0gJ9CY0LzRjyDRhNCw0LnQu9CwJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAn0JjQvNC+0YDRgiDRiNCw0LHQu9C+0L3QsCc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAn0KjQsNCx0LvQvtC9INGD0LTQsNC70LXQvSDQuNC3INCx0LDQt9GLINC00LDQvdC90YvRhS4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAn0KjQsNCx0LvQvtC9INGD0YHQv9C10YjQvdC+INC+0LHQvdC+0LLQu9GR0L0nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAn0J/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsCDQvtCx0L3QvtCy0LvQtdC90LjRjyDRiNCw0LHQu9C+0L3QsCc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4INGD0YHQv9C10YjQvdC+INGB0L7RhdGA0LDQvdC10L3Riyc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8g0YPQtNCw0LvQtdC90LAnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC+0LHQvdC+0LLQu9C10L3QsCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC00L7QsdCw0LLQu9C10L3QsCc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICfQodC+0LHRi9GC0LjQtSDRg9C00LDQu9C10L3Qvic7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICfQodC+0LHRi9GC0LjQtSDQvtCx0L3QvtCy0LvQtdC90L4nOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAn0J7RiNC40LHQutCwOiDQktGLINC00L7Qu9C20L3RiyDQv9GA0LjQstC10YHRgtC4INCyINC/0L7RgNGP0LTQvtC6INGB0YLRgNCw0L3QuNGG0YMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINGH0YLQvtCx0Ysg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCa0LDQu9C10L3QtNCw0YDRjCDRgSDQutGA0LDRgdC40LLRi9C80LggVVJMLiDQn9C+0LbQsNC70YPQudGB0YLQsCDQstC+0LnQtNC40YLQtSDQsiDQvdCw0YHRgtGA0L7QudC60Lgg0JrQsNC70LXQvdC00LDRgNGPINC4INCy0YvQsdC10YDQuNGC0LUg0Y3RgtGDINC30LDQutC70LDQtNC60YMuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICfQsic7CiRsYW5nWyd0eXBlJ10gPSAn0KLQuNC/JzsKJGxhbmdbJ25hbWUnXSA9ICfQmNC80Y8nOwokbGFuZ1snb3JkZXInXSA9ICfQn9C+0YDRj9C00L7Quic7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAn0J/QvtC70LUg0YPRgdC/0LXRiNC90L4g0LTQvtCx0LDQstC70LXQvdC+JzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ9Cf0L7Qu9C1INGD0LTQsNC70LXQvdC+JzsKJGxhbmdbJ2ZpZWxkcyddID0gJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNC1INC/0L7Qu9GPJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ9Ci0LXQutGB0YLQvtCy0L7QtSDQv9C+0LvQtSc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ9Ck0LDQudC7INC30LDQs9GA0YPQt9C60Lgg0L/QvtC70Y8nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBldmVudHMgb24geW91ciBwYWdlLiBXaGVuIHRoZQ0KCQltb2R1bGUgaXMgaW5zdGFsbGVkLCBhIENhbGVuZGFyIGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIGNvbnRlbnQgbWVudQ0KCQl0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdEZWZhdWx0IHBhZ2UgdGhhdCBjb250YWlucyBDYWxlbmRhci4gVGhpcyBwYWdlIG11c3QgY29udGFpbiBhIFNtYXJ0eSB0YWcgdGhhdCBjYWxscyBDYWxlbmRhci4gUmVxdWlyZWQgaWYgeW91IHVzZSB0aGUgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZXIgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAn0KDQsNC30YDQtdGI0LXQvdC90YvQtSDRgtC40L/RiyDRhNCw0LnQu9C+0LInOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAn0J7QsdC10YHQv9C10YfQuNGC0Ywg0YPQvdC40LrQsNC70YzQvdGL0LUg0LjQvNC10L3QsCDRhNCw0LnQu9C+0LInOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICfQqNC40YDQuNC90LAg0LzQuNC90LjQsNGC0Y7RgNGLJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ9CS0YvRgdC+0YLQsCDQvNC40L3QuNCw0YLRjtGA0LAnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICfQndCw0LjQsdC+0LvRjNGI0LDRjyDRiNC40YDQuNC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICfQndCw0LjQsdC+0LvRjNGI0LDRjyDQstGL0YHQvtGC0LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAn0J/QvtCy0YLQvtGA0Y/QtdGC0YHRjyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICfQlNC+INGC0LXRhSDQv9C+0YAsINC/0L7QutCwINC/0L7QstGC0L7RgNGP0LXRgtGB0Y8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPtCf0LXRh9Cw0YLRjCDQuNC80LXQvdC4INCw0LLRgtC+0YDQsDo8L2I+PC9wPg0KPGNvZGU+0JDQstGC0L7RgDogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sk_SK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ8SNYXMnOwokbGFuZ1snb24nXSA9ICduYSc7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOz8gUG9rcmHEjW92YW4maWFjdXRlO20gb2RzdHImYWFjdXRlO25pdGUgdiZzY2Fyb247ZXRreSBkYXRhIHMmdWFjdXRlO3Zpc2lhY2UgcyB0JnlhY3V0ZTttdG8gbW9kdWxvbS4gICc7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ01vZHVsIGthbGVuZCZhYWN1dGU7cmEgYm9sIG9kaW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOyBhIHYmc2Nhcm9uO2V0a3kgdWRhbG9zdGkgYSAmc2Nhcm9uO2FibCZvYWN1dGU7bnkgcHJpcmFkZW4mZWFjdXRlOyBrIHRvbXV0byBtb2R1bHUgYm9saSBvZHN0ciZhYWN1dGU7bmVuJmVhY3V0ZTsuJzsKJGxhbmdbJ2ZpZWxkdXBkYXRlZCddID0gJ1BvbGUgdXByYXZlbiZlYWN1dGU7JzsKJGxhbmdbJ2V2ZXJ5J10gPSAnS2HFvmQmeWFjdXRlOyc7CiRsYW5nWydvciddID0gJ2FsZWJvJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ1VwcmF2IHZub3JlbiZlYWN1dGU7IHVkYWxvc3RpJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdNdXMmaWFjdXRlO3RlIHZ5YnJhxaUgbWluaW0mYWFjdXRlO2xuZSBqZWRudSBrYXRlZyZvYWN1dGU7cml1JzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ1ByZSBvZHN0ciZhYWN1dGU7bmVuaWUgbmVib2xpIHZ5YnJhbiZlYWN1dGU7IMW+aWFkbmUgcG9sb8Wla3knOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnUGFyYW1ldHJlIHByZSBvcGFrb3ZhbmllIG0mb2NpcmM7xb51IHNwJm9jaXJjO3NvYmnFpSB2byB2JnlhY3V0ZTtwaXNlIHByZWtyJnlhY3V0ZTt2YW5pZSB1ZGFsb3N0JmlhY3V0ZTsnOwokbGFuZ1sncmVjdXJzJ10gPSAnT3Bha292YW5pZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnVmxvxb5lbiZlYWN1dGU7IGhvZG5vdHkgZCZhYWN1dGU7dHVtb3YgcyZ1YWN1dGU7IG5lcGxhdG4mZWFjdXRlOyc7CiRsYW5nWydzdW5kYXknXSA9ICdOZWRlxL5hJzsKJGxhbmdbJ21vbmRheSddID0gJ1BvbmRlbG9rJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdVdG9yb2snOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnU3RyZWRhJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnJlNjYXJvbjt0dnJ0b2snOwokbGFuZ1snZnJpZGF5J10gPSAnUGlhdG9rJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU29ib3RhJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnTmUnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdQbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdVdCc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1N0JzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICcmU2Nhcm9uO3QnOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdQaSc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnU28nOwokbGFuZ1snd2Vla2RheXMnXSA9ICdQcmFjb3ZuJmVhY3V0ZTsgZG5pJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0Rlbm5lJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdUJnlhY3V0ZTvFvmRlbm5lJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTWVzYcSNbmUnOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ1JvxI1uZSc7CiRsYW5nWydubyddID0gJ05pZSc7CiRsYW5nWydkYWlseSddID0gJ0Rlbm5lJzsKJGxhbmdbJ3dlZWtseSddID0gJ1QmeWFjdXRlO8W+ZGVubmUnOwokbGFuZ1snbW9udGhseSddID0gJ01lc2HEjW5lJzsKJGxhbmdbJ3llYXJseSddID0gJ1JvxI1uZSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ09wYWtvdmHFpSc7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ09wYWtvdmFuaWUgZGV0YWlsdSc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdOZW9ibWVkemVuJmVhY3V0ZTsnOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ01heC4gcG/EjWV0IHZub3JlbiZ5YWN1dGU7Y2ggdWRhbG9zdGknOwokbGFuZ1sndXNlX3RvX2RhdGUnXSA9ICcmU2Nhcm9uO3BlY2lmaWtvdmHFpSBwcmVzbiZ5YWN1dGU7IGtvbmllYz8nOwokbGFuZ1snY2FuY2VsJ10gPSAnWnJ1JnNjYXJvbjtpxaUnOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdab2JyYXppxaUgdm5vcmVuJmVhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snbi9hJ10gPSAnxb5pYWRuZSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdPcGFrb3ZhxaUgZG8nOwokbGFuZ1sncGFyZW50J10gPSAnUm9kacSNJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ0RvYmEgb3Bha292YW5pYSc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1phxI1pYXRvayc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0tvbmllYyc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdab3puYW0gJnNjYXJvbjthYmwmb2FjdXRlO24gZG9zdHVwbiZ5YWN1dGU7Y2ggcHJlIHYmeWFjdXRlO3BpcyBuYWRjaCZhYWN1dGU7ZHphaiZ1YWN1dGU7Y2ljaCB1ZGFsb3N0JmlhY3V0ZTsnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ1ByaWRhxaUvVXByYXZpxaUgJnNjYXJvbjthYmwmb2FjdXRlO251IHByZSB2JnlhY3V0ZTtwaXMgbmFkY2gmYWFjdXRlO2R6YWomdWFjdXRlO2NpY2ggdWRhbG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0JmVhY3V0ZTttb20gcHJlZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmwmb2FjdXRlO25hIG5hZGNoJmFhY3V0ZTtkemFqJnVhY3V0ZTtjaWNoIHVkYWxvc3QmaWFjdXRlOyc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnWm96bmFtICZzY2Fyb247YWJsJm9hY3V0ZTtuIGRvc3R1cG4meWFjdXRlO2NoIHByZSB2JnlhY3V0ZTtwaXMgdWRhbG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnUHJpZGHFpS9VcHJhdmnFpSAmc2Nhcm9uO2FibCZvYWN1dGU7bnUgcHJlIHYmeWFjdXRlO3Bpc3UgdWRhbG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnU3lzdCZlYWN1dGU7bW9tIHByZWRuYXN0YXZlbiZhYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtuYSB6b3puYW11IHVkYWxvc3QmaWFjdXRlOyc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ1pvem5hbSAmc2Nhcm9uO2FibCZvYWN1dGU7biBkb3N0dXBuJnlhY3V0ZTsgcHJlIHpvYnJhemVuaWUgZGV0YWlsdSc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdQcmlkYcWlL1VwcmF2acWlICZzY2Fyb247YWJsJm9hY3V0ZTtudSBwcmUgZGV0YWlsdSB1ZGFsb3N0aSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTeXN0JmVhY3V0ZTttb20gcHJlZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmwmb2FjdXRlO25hJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnWm96bmFtICZzY2Fyb247YWJsJm9hY3V0ZTtuIHByZSB6b2JyYXplbmllIGthbGVuZCZhYWN1dGU7cmEnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnUHJpZGHFpS9VcHJhdmnFpSAmc2Nhcm9uO2FibCZvYWN1dGU7bnUgem9icmF6ZW5pYSBrYWxlbmQmYWFjdXRlO3JhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3QmZWFjdXRlO21vdiZlYWN1dGU7IHByZWRuYXN0YXZlbiZlYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtueSBrYWxlbmQmYWFjdXRlO3JhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RlbnRvIGZvcm11bCZhYWN1dGU7ciBkZWZpbnVqZSAmc2Nhcm9uO2FibCZvYWN1dGU7bnksIGt0b3ImZWFjdXRlOyBidWQmdWFjdXRlOyBwb3XFviZpYWN1dGU7dmFuJmVhY3V0ZTsgcHJpIGthxb5kZWogemFsb8W+a2UvdGFiZSBwbyBrbGlrbnV0JmlhY3V0ZTsgbmEgJmFtcDtxdW90O05vdiZhYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtuYSZhbXA7cXVvdDsuIFptZW55IG5lYnVkJnVhY3V0ZTsgbWHFpSDFvmlhZG55IHZwbHl2IG5hIHXFviB2eWdlbmVyb3ZhbiZlYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtueS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdWb2xhxaUgcG8gcHJpZGFuJmlhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnVm9sYcWlIHBvIHVwcmF2ZW4maWFjdXRlOyBleGlzdHVqJnVhY3V0ZTtjZWogdWRhbG9zdGknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ1ZvbGHFpSBwbyBvZHN0ciZhYWN1dGU7bmVuJmlhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdWb2xhxaUgcG8gdnl0dm9yZW4maWFjdXRlOyBrYXRlZyZvYWN1dGU7cmllJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1ZvbGHFpSBwbyB1cHJhdmVuJmlhY3V0ZTsga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnVm9sYcWlIHBvIG9kc3RyJmFhY3V0ZTtuZW4maWFjdXRlOyBrYXRlZyZvYWN1dGU7cmllJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+T2Rvc2xhbiZlYWN1dGU7IHBvIHByaWRhbiZpYWN1dGU7IHVkYWxvc3RpIGRvIGthbGVuZCZhYWN1dGU7cmEuPC9wPg0KPGg0PlBhcmFtZXRyZTwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIG4mYWFjdXRlO3pvdiB1ZGFsb3N0aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0ga3ImYWFjdXRlO3RreSBwb3BpczwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gZGV0YWlsbiZ5YWN1dGU7IHBvcGlzPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSB6YcSNaWF0b2sgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBrb25pZWMgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIGlkIGF1dG9yYTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIGlkIHVkYWxvc3RpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+T2Rvc2xhbiZlYWN1dGU7IHBvIHByaWRhbiZpYWN1dGU7IGthbGVuZCZhYWN1dGU7cmEuPC9wPg0KPGg0PlBhcmFtZXRyZTwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIG4mYWFjdXRlO3pvdiB1ZGFsb3N0aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0ga3ImYWFjdXRlO3RreSBwb3BpczwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gZGV0YWlsbiZ5YWN1dGU7IHBvcGlzPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSB6YcSNaWF0b2sgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBrb25pZWMgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIGlkIGF1dG9yYTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIGlkIHVkYWxvc3RpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ1VkYWxvc8WlIHByaWRhbiZhYWN1dGU7JzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnTiZhYWN1dGU7em92IHVkYWxvc3RpIGplIG51dG4mZWFjdXRlOyB2eXBsbmnFpSc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0NoeWJhOiDFvWlhZG55IG5haHImYWFjdXRlO3ZhbiZ5YWN1dGU7IHMmdWFjdXRlO2JvciBuZWJvbCBuJmFhY3V0ZTtqZGVuJnlhY3V0ZTsnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnQ2h5YmE6IE5haHImYWFjdXRlO3ZhbiZ5YWN1dGU7IHMmdWFjdXRlO2JvciBuaWUgamUgcG92b2xlbiZ5YWN1dGU7ICh1cHJlc25pdGUgZm9ybSZhYWN1dGU7dCBzJnVhY3V0ZTtib3J1IHYgbmFzdGF2ZW5pYWNoKSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0NoeWJhOiBQcm9ibCZlYWN1dGU7bSBuYXN0YWwgcHJpIHBva3VzZSBvIG5haHJhdGllIHMmdWFjdXRlO2JvcnUnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdDaHliYTogUHJvYmwmZWFjdXRlO20gbmFzdGFsIHByaSBrb3AmaWFjdXRlO3JvdmFuJmlhY3V0ZTsgcyZ1YWN1dGU7Ym9yYSBkbyBjaWXEvm92JmVhY3V0ZTtobyB1bWllc3RuZW5pYSc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnQ2h5YmE6IFMmdWFjdXRlO2JvciBzIHQmeWFjdXRlO210byBuJmFhY3V0ZTt6dm9tIHXFviBleGlzdHVqZSc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdDaHliYTogTmVtJm9jaXJjO8W+ZW0gbiZhYWN1dGU7anPFpSBDU1YgcyZ1YWN1dGU7Ym9yJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0NoeWJhOiBOZW0mb2NpcmM7xb5lbSBvdHZvcmnFpSBzJnVhY3V0ZTtib3InOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdDaHliYTogS2F0ZWcmb2FjdXRlO3JpYSBzIG4mYWFjdXRlO3p2b20gJXMgdcW+IGV4aXN0dWplJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZCZhYWN1dGU7cic7CiRsYW5nWydjYWxfZGVmYXVsdF90ZW1wbGF0ZXMnXSA9ICdQcmVkbmFzdGF2ZW4mZWFjdXRlOyAmc2Nhcm9uO2FibCZvYWN1dGU7bnknOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnUG9waXMnOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnUHJpZGHFpSB1ZGFsb3PFpSc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ05haW1wb3J0b3ZhxaUgdWRhbG9zdGknOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1VkYWxvc3RpJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnS2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibCZvYWN1dGU7bmEga2FsZW5kJmFhY3V0ZTtyYSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsJm9hY3V0ZTtuYSB6b3puYW11JzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FsJm9hY3V0ZTtuYSBuYWRjaCZhYWN1dGU7ZHphaiZ1YWN1dGU7Y2ljaCB1ZGFsb3N0JmlhY3V0ZTsnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmwmb2FjdXRlO25hIGRldGFpbHUgdWRhbG9zdGknOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnTmFzdGF2ZW5pYSc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgUHJlZGNoJmFhY3V0ZTtkemFqJnVhY3V0ZTtjZSc7CiRsYW5nWydjYWxfbmV4dCddID0gJ05hZGNoJmFhY3V0ZTtkemFqJnVhY3V0ZTtjZSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZyZvYWN1dGU7cmllIGFrdHVhbGl6b3ZhbiZlYWN1dGU7JzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnTmFzdGF2ZW5pYSBha3R1YWxpem92YW4mZWFjdXRlOyc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnUHJpZGFqIHVkYWxvc8WlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnVXByYXYnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ09kc3RyJmFhY3V0ZTvFiCc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOywgxb5lIGNoY2V0ZSBvZHN0ciZhYWN1dGU7bmnFpT8nOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwcmF2acWlICZzY2Fyb247YWJsJm9hY3V0ZTtudSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnTmVkZcS+YSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnUG9uZGVsb2snOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdVdG9yb2snOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1N0cmVkYSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICcmU2Nhcm9uO3R2cnRvayc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnUGlhdG9rJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1NvYm90YSc7CiRsYW5nWydjYWxfc3VuJ10gPSAnTmUnOwokbGFuZ1snY2FsX21vbiddID0gJ1BvJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVXQnOwokbGFuZ1snY2FsX3dlZCddID0gJ1N0JzsKJGxhbmdbJ2NhbF90aHVycyddID0gJyZTY2Fyb247dCc7CiRsYW5nWydjYWxfZnJpJ10gPSAnUGlhJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTbyc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phbnUmYWFjdXRlO3InOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnRmVicnUmYWFjdXRlO3InOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFyZWMnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQXByJmlhY3V0ZTtsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNJmFhY3V0ZTtqJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSiZ1YWN1dGU7bic7CiRsYW5nWydjYWxfanVseSddID0gJ0omdWFjdXRlO2wnOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ0F1Z3VzdCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnU2VwdGVtYmVyJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2t0Jm9hY3V0ZTtiZXInOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTm92ZW1iZXInOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnRGVjZW1iZXInOwokbGFuZ1snY2FsX2FkZCddID0gJ1ByaWRhxaUnOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0FrdHVhbGl6b3ZhxaUnOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnVWRhbG9zxaUnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEJmFhY3V0ZTt0dW0nOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTJnVhY3V0ZTtocm4nOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhaWx5JzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAndmlhYyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnTiZhYWN1dGU7dnJhdCc7CiRsYW5nWydjYWxfdG8nXSA9ICdkbyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdVZGFsb3N0aSB2IG1pbnVsb3N0aSc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnTmFkY2gmYWFjdXRlO2R6YWomdWFjdXRlO2NlIHVkYWxvc3RpJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICfFvWlhZG5hIGthdGVnJm9hY3V0ZTtyaWEnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdVayZhYWN1dGU7xb4gaWJhIHVkYWxvc3RpIHYnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRlciBvZCc7CiRsYW5nWydjYWxfZ28nXSA9ICdQcmVqZGknOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnTmFkcGlzJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ09kICc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnRG8nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnVXByYXYga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdKYXp5ayc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdVcHJhdiBuYXN0YXZlbmllJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdWIHNlbGVjdGJveG9jaCBwb3XFviZpYWN1dGU7dmFqIDEyIGhvZGlub3YmeWFjdXRlOyDEjWFzIChhbSxwbSknOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdQcmVkbmFzdGF2ZW4mYWFjdXRlOyBrYXRlZyZvYWN1dGU7cmlhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnVXByYXYgcG9saWEnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdOdXRub3PFpSBhc3BvbiBqZWRuZWoga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnS2/EvmtvIHJva292IHBvdm9sacWlIHByaSBwcmlkJmFhY3V0ZTt2YW4maWFjdXRlOyBkbyBtaW51bG9zdGknOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnS2/EvmtvIHJva292IHBvdm9sacWlIHByaSBwcmlkJmFhY3V0ZTt2YW4maWFjdXRlOyBkbyBidWQmdWFjdXRlO2Nub3N0aSc7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ1NrcnnFpSBwb2xlIHByZSBzJnVhY3V0ZTtyaG4nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdTa3J5xaUgcG9sZSBwcmUgb2JzYWggKGRldGFpbCknOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdQcm9zJmlhY3V0ZTttLCB2eWJlcnRlIGFzcG/FiCBqZWRudSBrYXRlZyZvYWN1dGU7cml1IHByZSB0JnVhY3V0ZTt0byB1ZGFsb3PFpSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ1NTIHByZSBrYWxlbmQmYWFjdXRlO3InOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1BvdHJlYnVqZXRlIHByJmlhY3V0ZTtzdSZzY2Fyb247biZlYWN1dGU7IHByJmFhY3V0ZTt2YSAgKCVzKSBwcmUgcHImaWFjdXRlO3N0dXAgayB0ZWp0byBmdW5rY2lpJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdNYWtlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnT2RzdHImYWFjdXRlO8WIIG96bmHEjWVuJmVhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOywgxb5lIGNoY2V0ZSB0aWV0byB1ZGFsb3N0aSBvZHN0ciZhYWN1dGU7bmnFpT8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ1Z5em5hxI1lbiZlYWN1dGU7IHVkYWxvc3RpIGJvbGkgb2RzdHImYWFjdXRlO25lbiZlYWN1dGU7JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJyZTY2Fyb247YWJsJm9hY3V0ZTtueSc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnUG9tb2NuJmlhY3V0ZTtrIGsgJnNjYXJvbjthYmwmb2FjdXRlO25lJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnUyZ1YWN1dGU7Ym9yICZzY2Fyb247YWJsJm9hY3V0ZTtueSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ1ByaWRhxaUgJnNjYXJvbjthYmwmb2FjdXRlO251JzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmwmb2FjdXRlO25hJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdOJmFhY3V0ZTt6b3YgJnNjYXJvbjthYmwmb2FjdXRlO255JzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1VwcmF2ICZzY2Fyb247YWJsJm9hY3V0ZTtudSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ09kc3RyJmFhY3V0ZTvFiCAmc2Nhcm9uO2FibCZvYWN1dGU7bnUnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb3YmeWFjdXRlOyBuJmFhY3V0ZTt6b3YgJnNjYXJvbjthYmwmb2FjdXRlO255JzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0NoeWJhOiAmU2Nhcm9uO2FibCZvYWN1dGU7bmEgcyB0JnlhY3V0ZTttdG8gbiZhYWN1dGU7enZvbSBleGlzdHVqZS4gUHJvcyZpYWN1dGU7bSB2eWJlcnRlIGluJnlhY3V0ZTsgbiZhYWN1dGU7em92Lic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnJlNjYXJvbjthYmwmb2FjdXRlO25hIGJvbGEgJnVhY3V0ZTtzcGUmc2Nhcm9uO25lIG5haW1wb3J0b3ZhbiZhYWN1dGU7IGRvIGRhdGFiJmFhY3V0ZTt6eSBhIGplIHByaXByYXZlbiZhYWN1dGU7IGsgcG91xb4maWFjdXRlO3Zhbml1Lic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1BvenJpZcWlIHByZWRuYXN0YXZlbiZlYWN1dGU7IENTUyc7CiRsYW5nWydmaWxlbmFtZSddID0gJ04mYWFjdXRlO3pvdiBzJnVhY3V0ZTtib3J1JzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0b3ZhxaUgJnNjYXJvbjthYmwmb2FjdXRlO251JzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICcmU2Nhcm9uO2FibCZvYWN1dGU7bmEgYm9sYSAmdWFjdXRlO3NwZSZzY2Fyb247bmUgb2RzdHImYWFjdXRlO25lbiZhYWN1dGU7IHogZGF0YWImYWFjdXRlO3ppJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJyZTY2Fyb247YWJsJm9hY3V0ZTtuYSBib2xhICZ1YWN1dGU7c3BlJnNjYXJvbjtuZSB1cHJhdmVuJmFhY3V0ZTsnOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAnRG8mc2Nhcm9uO2xvIGsgY2h5YmUgcHJpIGFrdHVhbGl6JmFhY3V0ZTtjaWkgJnNjYXJvbjthYmwmb2FjdXRlO255JzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdOYXN0YXZlbmlhIGJvbCB1bG/FvmVuJmVhY3V0ZTsnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBvZHN0ciZhYWN1dGU7bmVuJmFhY3V0ZTsnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBha3R1YWxpem92YW4mYWFjdXRlOyc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBwcmlkYW4mYWFjdXRlOyc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdVZGFsb3PFpSBvZHN0ciZhYWN1dGU7bmVuJmFhY3V0ZTsnOwokbGFuZ1snZXZlbnR1cGRhdGVkJ10gPSAnVWRhbG9zxaUgYm9sYSBha3R1YWxpem92YW4mYWFjdXRlOyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdDaHliYTogViB6JmFhY3V0ZTtsb8W+a2UgJiMwMzk7TmFzdGF2ZW5pYSYjMDM5OyBtdXMmaWFjdXRlO3RlIG1hxaUgdnlicmFuJnVhY3V0ZTsgIHByZWRuYXN0YXZlbiZ1YWN1dGU7IHN0ciZhYWN1dGU7bmt1IHByZSBwb3XFviZpYWN1dGU7dmFuaWUga2FsZW5kJmFhY3V0ZTtyYSBzbyBTRU8gdXJsLiAnOwokbGFuZ1sndGltZV9hdCddID0gJ3YnOwokbGFuZ1sndHlwZSddID0gJ1R5cCc7CiRsYW5nWyduYW1lJ10gPSAnTiZhYWN1dGU7em92JzsKJGxhbmdbJ29yZGVyJ10gPSAnUG9yYWRpZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnUG9sZSBib2xvICZ1YWN1dGU7c3BlJnNjYXJvbjtuZSBwcmlkYW4mZWFjdXRlOyc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdQb2xlIG9kc3RyJmFhY3V0ZTtuZW4mZWFjdXRlOyc7CiRsYW5nWydmaWVsZHMnXSA9ICdWbGFzdG4mZWFjdXRlOyBwb2xpYSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0b3YmZWFjdXRlOyBwb2xlJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnUG9sZSBwcmUgbmFociZhYWN1dGU7dmFuaWUgKHVwbG9hZCknOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5LYWxlbmQmYWFjdXRlO3IgIGplIG1vZHVsLCBrdG9yJnlhY3V0ZTsgc2wmdWFjdXRlO8W+aSBuYSB6b2JyYXplbmllIGFrY2kmaWFjdXRlOy9ldmVudG92IG5hIFZhJnNjYXJvbjtlaiBzdHImYWFjdXRlO25rZS4gViBwciZpYWN1dGU7cGFkZSwgxb5lIGplIG1vZHVsIG5haW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOywgbiZhYWN1dGU7amRldGUgamVobyBhZG1pbmlzdHImYWFjdXRlO2NpdSB2IG1lbnUgT2JzYWguPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnUHJlZG5hc3RhdmVuJmFhY3V0ZTsgc3RyJmFhY3V0ZTtua2EgcHJlIGthbGVuZCZhYWN1dGU7ci4gVCZhYWN1dGU7dG8gc3RyJmFhY3V0ZTtua2EgbXVzJmlhY3V0ZTsgb2JzYWhvdmHFpSB0YWcga2FsZW5kJmFhY3V0ZTtyYS4gTmFzdGF2ZW5pZSBqZSBwb3RyZWJuJmVhY3V0ZTsgdiBwciZpYWN1dGU7cGFkZSBwb3XFviZpYWN1dGU7dmFuaWEgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0FkcmVzJmFhY3V0ZTtyLCBrZGUgYnVkJnVhY3V0ZTsgbmFociZhYWN1dGU7dmFuJmVhY3V0ZTsgcyZ1YWN1dGU7Ym9yeSc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdQb3ZvbGVuJmVhY3V0ZTsgdHlweSBzJnVhY3V0ZTtib3Jvdic7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdaYWJlenBlxI1pxaUgdW5payZhYWN1dGU7dG5lIG4mYWFjdXRlO3p2eSBzJnVhY3V0ZTtib3Jvdic7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ0TEusW+a2EgbiZhYWN1dGU7aMS+YWR1JzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1YmeWFjdXRlOyZzY2Fyb247a2EgbiZhYWN1dGU7aMS+YWR1JzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnRMS6xb5rYSB2ZcS+ayZlYWN1dGU7aG8gb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnViZ5YWN1dGU7JnNjYXJvbjtrYSB2ZcS+ayZlYWN1dGU7aG8gb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ09wYWt1amUgc2EnOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnT3Bha3VqZSBzIGRvJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5QcmludCBBdXRob3IgTmFtZTo8L2I+PC9wPg0KPGNvZGU+QXV0aG9yOiB7JGV2ZW50LmF1dGhvcm5hbWV9PC9jb2RlPg0KJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FyZXlvdXN1cmVfcmVtb3ZlY29uZmxpY3RpbmcnXSA9ICdUaGlzIGFjdGlvbiB3aWxsIHJlbW92ZSBhbnkgZXZlbnRzIHRoYXQgY29uZmxpY3Qgd2l0aCBub24tb3ZlcmxhcHBhYmxlIGV2ZW50cy4gIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkbyB0aGlzPyc7CiRsYW5nWydmaWx0ZXJfY29uZmxpY3RpbmcnXSA9ICdGaWx0ZXIgQ29uZmxpY3RpbmcgRXZlbnRzJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ1NpbGVudGx5IHJlbW92ZSBjb25mbGljdGluZyBldmVudHMnOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdWaXNhIGV0dCBmZWwnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfYWN0aW9uJ10gPSAnV2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gYSBjb25mbGljdCBpcyBkZXRlY3RlZCBkdXJpbmcgZWRpdGluZyBvciBhZGRpbmcgb2YgYW4gZXZlbnQnOwokbGFuZ1snZXJyb3JfZXZlbnRfY29uZmxpY3QnXSA9ICdUaGUgZXZlbnQgdmFsdWVzIHNwZWNpZmllZCBvdmVybGFwIHdpdGggYW4gZXhpc3RpbmcgZXZlbnQgdGhhdCBkb2VzIG5vdCBhbGxvdyBjb25mbGljdHMnOwokbGFuZ1snY2FsX2luZm9fb3ZlcmxhcCddID0gJ0cmYXVtbDtsbGVyIGVuZGFzdCBmJm91bWw7ciBoJmF1bWw7bmRlbHNlciBtZWQgZW4gc2x1dHRpZCAoZWxsZXIgaGVsYS1kYWdlbiBoJmF1bWw7bmRlbHNlciknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdUaWxsJmFyaW5nO3QgbnlhIGgmYXVtbDtuZGVsc2VyIGF0dCAmb3VtbDt2ZXJsYXBwYSBtZWQgZGVuIGgmYXVtbDtyJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0V2ZW50IE92ZXJsYXAgUG9saWN5JzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdBbGxhIGgmYXVtbDtuZGVsc2VyIGYmYXJpbmc7ciAmb3VtbDt2ZXJsYXBwYSc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ0gmYXVtbDtuZGVsc2VyIGYmYXJpbmc7ciBpbnRlICZvdW1sO3ZlcmxhcHBhJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnRGVjaWRlZCBvbiBhbiBldmVudCBieSBldmVudCBiYXNpcyc7CiRsYW5nWydsYmxfYmFjayddID0gJ1RpbGxiYWthJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdNYWxsYXInOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0QXJlYSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdWaSBoYXIgdXBwdCZhdW1sO2NrdCBhdHQgQ2FsZW5kZXItbW9kdWxlbiBvY2tzJmFyaW5nOyAmYXVtbDtyIGluc3RhbGxlcmFkLiBEZW4gaCZhdW1sO3IgbW9kdWxlbiAmYXVtbDtyIGludGUga29tcGF0aWJlbCBtZWQgQ2FsZW5kZXItbW9kdWxlbiBvY2gga2FuIGludGUgZmlubmFzIHRpbGxzYW1tYW5zIG1lZCBkZW4gcCZhcmluZzsgc2FtbWEgaW5zdGFsbGF0aW9uLiBWYXIgZ29kIGF2aW5zdGFsbGVyYSBDYWxlbmRlci1tb2R1bGVuLiAgJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0FudGluZ2VuICZhdW1sO3IgaCZhdW1sO25kZWxzZSBfaWQgaW50ZSBpIGRhdGFiYXNlbiwgZWxsZXIgcyZhcmluZzsgZmlubnMgZGV0IG1lciAmYXVtbDtuIGVuIGgmYXVtbDtuZGVsc2UgbWVkIGRldHRhIGlkISAoJWQpJzsKJGxhbmdbJ2ZpcnN0X3BhZ2UnXSA9ICc8PCc7CiRsYW5nWydwcmV2X3BhZ2UnXSA9ICc8JzsKJGxhbmdbJ25leHRfcGFnZSddID0gJz4nOwokbGFuZ1snbGFzdF9wYWdlJ10gPSAnPj4nOwokbGFuZ1sncGFnZV9vZiddID0gJ1NpZGEgJWQgYXYgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdLYWxlbmRlciBzJm91bWw7a3Jlc3VsdGF0JzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1Mmb3VtbDtrb3JkJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdJbmdhIHJlc3VsdGF0IGhpdHRhZGVzIHNvbSBzcGVjaWZlcmFkZXMgaSBzJm91bWw7a2ZyJmFyaW5nO2dhbic7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdGcmVrdmVucyc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ0FudiZhdW1sO25kIGRldCBzcGVjaWZpY2VyYWRlIGRhdHVtZXQnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnRiZvdW1sO3JzdGEgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnRiZvdW1sO3JzdGEgbSZhcmluZztuZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdGJm91bWw7cnN0YSB0aXNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRiZvdW1sO3JzdGEgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnRiZvdW1sO3JzdGEgdG9yc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmaXJzdF9mcmlkYXknXSA9ICdGJm91bWw7cnN0YSBmcmVkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZmlyc3Rfc2F0dXJkYXknXSA9ICdGJm91bWw7cnN0YSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnQW5kcmEgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ0FuZHJhIG0mYXJpbmc7bmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ0FuZHJhIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnQW5kcmEgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ3NlY29uZF90aHVyc2RheSddID0gJ0FuZHJhIHRvcnNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ0FuZHJhIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdBbmRyYSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUcmVkamUgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVHJlZGplIG0mYXJpbmc7bmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVHJlZGplIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUcmVkamUgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnVHJlZGplIHRvcnNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVHJlZGplIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ1RyZWRqZSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnRmomYXVtbDtyZGUgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0ZqJmF1bWw7cmRlIG0mYXJpbmc7bmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ0ZqJmF1bWw7cmRlIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnRmomYXVtbDtyZGUgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZqJmF1bWw7cmRlIHRvcnNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZqJmF1bWw7cmRlIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfc2F0dXJkYXknXSA9ICdGaiZhdW1sO3JkZSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ1Npc3RhIHMmb3VtbDtuZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnU2lzdGEgbSZhcmluZztuZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ1Npc3RhIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ1Npc3RhIG9uc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnU2lzdGEgdG9yc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X2ZyaWRheSddID0gJ1Npc3RhIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnU2lzdGEgbCZvdW1sO3JkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdPZ2lsdGlnIGZyZWt2ZW5zLiBEdSBrYW4gaW50ZSBhbmdlIGImYXJpbmc7ZGUgZGV0IGFuZ2l2bmEgZGF0dW1ldCBvY2ggYW5kcmEgdiZhdW1sO3JkZW4nOwokbGFuZ1snc2VhcmNocmVzdWx0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0wmYXVtbDtnZyB0aWxsL3JlZGlnZXJhIFMmb3VtbDtrcmVzdWx0YXRzbWFsbGVuJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhbiAmb3VtbDt2ZXIgZGUgbWFsbGFyIHNvbSBmaW5ucyBmJm91bWw7ciBkZSBzJm91bWw7a3Jlc3VsdGF0IHNvbSB2aXNhcyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNocmVzdWx0X3RlbXBsYXRlJ10gPSAnU3RhbmRhcmQgUyZvdW1sO2tyZXN1bHRhdHNtYWxsJzsKJGxhbmdbJ2NhbF9zZWFyY2hfcmVzdWx0X3RlbXBsYXRlcyddID0gJ1Mmb3VtbDtrcmVzdWx0YXRzbWFsbGFyJzsKJGxhbmdbJ2Vycm9yX3F1ZXJ5X2ZhaWxlZCddID0gJ0RhdGFiYXNmciZhcmluZztnYW4gTWlzc2x5Y2thZGVzJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnT2dpbHRpZ2EgcyZvdW1sO2tkYXR1bSBzcGVjaWZpY2VyYWRlJzsKJGxhbmdbJ3RleHQnXSA9ICd0ZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1Mmb3VtbDtrJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaF90ZW1wbGF0ZSddID0gJ1N0YW5kYXJkIFMmb3VtbDtrZm9ybXVsJmF1bWw7cnNtYWxsJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbC9yZWRpZ2VyYSBTJm91bWw7a2Zvcm11bCZhdW1sO3JzbWFsbCc7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0YW4gbWVkIG1hbGxhciBzb20gJmF1bWw7ciB0aWxsZyZhdW1sO25nbGlnYSBmJm91bWw7ciBzJm91bWw7a2Zvcm11bCZhdW1sO3JldCc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnUyZvdW1sO2tmb3JtdWwmYXVtbDtycyBtYWxsJzsKJGxhbmdbJ21heCddID0gJ21heGltYWx0JzsKJGxhbmdbJ3RpbWVzJ10gPSAnZyZhcmluZztuZ2VyJzsKJGxhbmdbJ29uJ10gPSAncCZhcmluZzsnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgZyZvdW1sO3JhIGRldHRhPyBPbSBkdSBmb3J0cyZhdW1sO3R0ZXIgcyZhcmluZzsga29tbWVyIGFsbCBkYXRhIHNvbSBhc3NvY2llcmFzIG1lZCBkZW5uYSBtb2R1bCBhdHQgcmFkZXJhcy4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdLYWxlbmRlcm1vZHVsZW4gaGFyIGF2aW5zdGFsbGVyYXQgb2NoIGFsbGEgZXZlbmVtYW5nIG9jaCBtYWxsaW5mb3JtYXRpb24gaSBzYW1iYW5kIG1lZCBkZW5uYSBtb2R1bCBoYXIgdGFnaXRzIGJvcnQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRiZhdW1sO2x0ZXQgdXBwZGF0ZXJhdCc7CiRsYW5nWydldmVyeSddID0gJ1ZhcmplJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnVXBwZGF0ZXJhIENoaWxkIEV2ZW50cyc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3J5J10gPSAnRHUgbSZhcmluZztzdGUgdiZhdW1sO2xqYSBtaW5zdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdJbmdlbnRpbmcgaGFyIHZhbHRzIGYmb3VtbDtyIGF0dCByYWRlcmEnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnRGVuICZhcmluZzt0ZXJrb21tYW5kZSBoJmF1bWw7bmRlbHNlbnMgcGFyYW1ldHJhciBzb20gZHUgaGFyIGFuZ2V0dCBza3VsbGUgcmVzdWx0ZXJhIGkgJm91bWw7dmVybGFwcGFuZGUgaCZhdW1sO25kZWxzZXIuJzsKJGxhbmdbJ3JlY3VycyddID0gJyZBcmluZzt0ZXJrb21tZXInOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ0VuIGVsbGVyIGZsZXJhIGF2IGRlIGRhdHVtdiZhdW1sO3JkZW4gc29tIGFuZ2V0dHMgdmFyIG9naWx0aWcnOwokbGFuZ1snc3VuZGF5J10gPSAnUyZvdW1sO25kYWcnOwokbGFuZ1snbW9uZGF5J10gPSAnTSZhcmluZztuZGFnJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdUaXNkYWcnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnT25zZGFnJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnVG9yc2RhZyc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdMJm91bWw7cmRhZyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ1Mmb3VtbDsnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNJmFyaW5nOyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUaSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ09uJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdUbyc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdMJm91bWw7JzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnVmVja29kYWdhcic7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEYWdhcic7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVmVja29yJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTSZhcmluZztuYWRlcic7CiRsYW5nWydwbHVyYWxfeWVhcmx5J10gPSAnJkFyaW5nO3InOwokbGFuZ1snbm8nXSA9ICdOZWonOwokbGFuZ1snZGFpbHknXSA9ICdEYWdsaWcnOwokbGFuZ1snd2Vla2x5J10gPSAnVmVja292aXMnOwokbGFuZ1snbW9udGhseSddID0gJ00mYXJpbmc7bmFkc3Zpcyc7CiRsYW5nWyd5ZWFybHknXSA9ICcmQXJpbmc7cmxpZyc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1JlcGV0ZXJhIHZhcmplJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnJkFyaW5nO3RlcmtvbW1hbmRlIGgmYXVtbDtuZGVsc2VpbmZvcm1hdGlvbic7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdPJmF1bWw7bmRsaWd0JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbWFsdCBhbnRhbCBhdiBjaGlsZCBldmVudHMnOwokbGFuZ1sndXNlX3RvX2RhdGUnXSA9ICdTcGVjaWZlcmEgZXR0IGFubmF0IHN0b3BwZGF0dW0/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzJzsKJGxhbmdbJ24vYSddID0gJ04vQSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdQZXJpb2Rpc2sgdGlsbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdGJm91bWw7ciZhdW1sO2xkZXInOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUGVyaW9kaXNrIHRpZCc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXIgJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdTdGFydGRhdHVtJzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnU3RvcGRhdHVtJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhbiBtZWQgbWFsbGFyIHNvbSAmYXVtbDtyIHRpbGxnJmF1bWw7bmdsaWdhIGYmb3VtbDtyIGtvbW1hbmRlbGlzdGF2aXNuaW5nYXInOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0wmYXVtbDtnZyB0aWxsL3JlZGlnZXJhIGVuIGtvbW1hbmRlbGlzdGEtdmlzbmluZ3NtYWxsJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCBmJm91bWw7ciBrb21tYW5kZWxpc3RhbWFsbCc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGFuIG1lZCBtYWxsYXIgc29tICZhdW1sO3IgdGlsbGcmYXVtbDtuZ2xpZ2EgZiZvdW1sO3IgbGlzdC12aXNuaW5nYXInOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbC9yZWRpZ2VyYSBlbiBsaXN0YS12aXNuaW5nc21hbGwnOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCBmJm91bWw7ciBsaXN0bWFsbCc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhbiBtZWQgbWFsbGFyIHNvbSAmYXVtbDtyIHRpbGxnJmF1bWw7bmdsaWdhIGYmb3VtbDtyIGgmYXVtbDtuZGVsc2V2aXNuaW5nYXInOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTCZhdW1sO2dnIHRpbGwvcmVkaWdlcmEgaCZhdW1sO25kZWxzZXZpc25pbmdzbWFsbC0nOwokbGFuZ1snaW5mb19zeXNkZmx0X2V2ZW50X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgZiZvdW1sO3IgaCZhdW1sO25kZWxzZW1hbGwnOwokbGFuZ1snaW5mb19jYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdMaXN0YW4gbWVkIG1hbGxhciBzb20gJmF1bWw7ciB0aWxsZyZhdW1sO25nbGlnYSBmJm91bWw7ciBrYWxlbmRlcnZpc25pbmdhcic7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbC9yZWRpZ2VyYSBlbiBrYWxlbmRlcnZpc25pbmdzbWFsbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCBmJm91bWw7ciBrYWxlbmRlcm1hbGwnOwokbGFuZ1snaW5mb19zeXNkZmx0X3RlbXBsYXRlJ10gPSAnRGV0dGEgZm9ybXVsJmF1bWw7ciBkZWZpbmllcmFyIHZpbGtlbiBtYWxsIHNvbSBza2EgYW52JmF1bWw7bmRhcyBuJmF1bWw7ciBkdSBrbGlja2FyIHAmYXJpbmc7ICZxdW90O055IG1hbGwmcXVvdDsgaSByZXNwZWt0aXZlIGZsaWsuIE9tIGRldHRhIHYmYXVtbDtyZGUgJmF1bWw7bmRyYXMgaGFyIGRldCBpbmdlbiBvbWVkZWxiYXIgcCZhcmluZzt2ZXJrYW4gcCZhcmluZzsgZGUgdmlzbmluZ2FyIHNvbSBnZW5lcmVyYXMgZnImYXJpbmc7biBkZW4gaCZhdW1sO3IgbW9kdWxlbi4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdBbnJvcGFzIGVmdGVyIGF0dCBlbiBoJmF1bWw7bmRlbHNlIGkga2FsZW5kZXJuIGxhZ3RzIHRpbGwnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQW5yb3BhcyBlZnRlciBhdHQgZW4gZXhpc3RlcmFuZGUgaCZhdW1sO25kZWxzZSBpIGthbGVuZGVybiByZWRpZ2VyYXRzJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdBbnJvcGFzIGVmdGVyIGF0dCBlbiBoJmF1bWw7bmRlbHNlIGkga2FsZW5kZXJuIGhhciB0YWdpdHMgYm9ydCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0Fucm9wYXMgZWZ0ZXIgYXR0IGVuIGthdGVnb3JpIGhhciBza2FwYXRzJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0Fucm9wYXMgZWZ0ZXIgYXR0IGVuIGthdGVnb3JpIGhhciByZWRpZ2VyYXRzJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdBbnJvcGFzIGVmdGVyIGF0dCBlbiBrYXRlZ29yaSBoYXIgdGFnaXRzIGJvcnQnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tZXJhbmRlIHRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFsamVyYWQgYmVza3Jpdm5pbmc8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIEgmYXVtbDtuZGVsc2VucyBzdGFydGRhdHVtIG9jaCB0aWQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0gmYXVtbDtuZGVsc2UgdGlsbGFnZCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0V0dCBuYW1uIGtyJmF1bWw7dnMgZiZvdW1sO3IgaCZhdW1sO25kZWxzZW4nOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdGRUw6IEhpdHRhZGUgaW5nZW4gdXBwbGFkZGFkIGZpbCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdGRUw6IERlbiB1cHBsYWRkYWRlIGZpbGVuIGFjY2VwdGVyYXMgaW50ZSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0ZFTDogRXR0IGZlbCB1cHBzdG9kIGQmYXJpbmc7IGZpbGVuIHNrdWxsZSBsYWRkYXMgdXBwJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRkVMOiBFdHQgZmVsIHVwcHN0b2QgZCZhcmluZzsgZmlsZW4gc2t1bGxlIGZseXR0YXMgdGlsbCBzaW4gc2x1dGxpZ2EgcGxhdHMnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZFTDogRW4gZmlsIG1lZCBkZXQgbmFtbmV0IGV4aXN0ZXJhciByZWRhbic7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdGRUw6IEt1bmRlIGludGUgaGl0dGEgQ1NWLWZpbGVuJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0ZFTDogS2FuIGludGUgJm91bWw7cHBuYSBmaWwnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdGRUw6IEVuIGthdGVnb3JpIG1lZCBkZXR0YSBuYW1uICVzIGZpbm5zIHJlZGFuJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZGVyJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYXJkbWFsbGFyJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0wmYXVtbDtnZyB0aWxsLCByZWRpZ2VyYSBvY2ggdGEgYm9ydCBoJmF1bWw7bmRlbHNlcic7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdMJmF1bWw7Z2cgdGlsbCBoJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0ZXJhIGgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdIJmF1bWw7bmRlbHNlcic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZXInOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTWFsbCBmJm91bWw7ciBrYWxlbmRlcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ01hbGwgZiZvdW1sO3IgbGlzdGEnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ01hbGwgZiZvdW1sO3Iga29tbWFuZGUtbGlzdGEnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnTWFsbCBmJm91bWw7ciBoJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0luc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRiZvdW1sO3JlZyZhcmluZztlbmRlJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnTiZhdW1sO3N0YSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWVyIHVwcGRhdGVyYWRlJzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnSW5zdCZhdW1sO2xsbmluZ2FyIHVwcGRhdGVyYWRlJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdMJmF1bWw7Z2cgdGlsbCBoJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnUmVkaWdlcmEnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ1RhIGJvcnQnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgdGEgYm9ydCc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnVXBwZGF0ZXJhIG1hbGwnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1Mmb3VtbDtuZGFnJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdNJmFyaW5nO25kYWcnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdUaXNkYWcnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ09uc2RhZyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdUb3JzZGFnJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnTCZvdW1sO3JkYWcnOwokbGFuZ1snY2FsX3N1biddID0gJ1Mmb3VtbDtuJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICdNJmFyaW5nO24nOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICdUaXMnOwokbGFuZ1snY2FsX3dlZCddID0gJ09ucyc7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdUb3InOwokbGFuZ1snY2FsX2ZyaSddID0gJ0ZyZSc7CiRsYW5nWydjYWxfc2F0J10gPSAnTCZvdW1sO3InOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdqYW51YXJpJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2ZlYnJ1YXJpJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ21hcnMnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnYXByaWwnOwokbGFuZ1snY2FsX21heSddID0gJ21haic7CiRsYW5nWydjYWxfanVuZSddID0gJ2p1bmknOwokbGFuZ1snY2FsX2p1bHknXSA9ICdqdWxpJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdhdWd1c3RpJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdzZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdva3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ25vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ2RlY2VtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdMJmF1bWw7Z2cgdGlsbCc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnVXBwZGF0ZXJhJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0gmYXVtbDtuZGVsc2UnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1NhbW1hbmZhdHRuaW5nJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWxqZXInOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtZXIgPj4nOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1RpbGxiYWthJzsKJGxhbmdbJ2NhbF90byddID0gJ3RpbGwnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnUGFzc2VyYWRlIGgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdLb21tYW5kZSBoJmF1bWw7bmRlbHNlcic7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnQWxsYSBrYXRlZ29yaWVyJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnVmlzYSBiYXJhIGgmYXVtbDtuZGVsc2VyIGknOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRyZXJhIHAmYXJpbmc7JzsKJGxhbmdbJ2NhbF9nbyddID0gJ1NraWNrYSc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdIJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0ZyJmFyaW5nO24gZGF0dW0nOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RpbGwgZGF0dW0nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnVXBwZGF0ZXJhIGthdGVnb3JpZXInOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnU3ByJmFyaW5nO2snOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnVXBwZGF0ZXJhIGluc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnQW52JmF1bWw7bmQgMTItdGltbWFycyB0aWRzYW5naXZlbHNlIGkgbWVueWVyPyc7CiRsYW5nWydjYWxfZGVmYXVsdF9jYXRlZ29yeSddID0gJ1N0YW5kYXJka2F0ZWdvcmknOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdVcHBkYXRlcmEgZiZhdW1sO2x0JzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnS3ImYXVtbDt2IG1pbnN0IGVuIGthdGVnb3JpJzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXSA9ICdIdXIgbSZhcmluZztuZ2EgJmFyaW5nO3IgYmFrJmFyaW5nO3QgaSB0aWRlbiBzb20gJmF1bWw7ciB0aWxsJmFyaW5nO3RuYSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIdXIgbSZhcmluZztuZ2EgJmFyaW5nO3IgZnJhbSZhcmluZzt0IGkgdGlkZW4gc29tICZhdW1sO3IgdGlsbCZhcmluZzt0bmEnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdTa2Egc3VtbWVyaW5nc2YmYXVtbDtsdCB2YXJhIGRvbHQnOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdTa2EgaW5uZWgmYXJpbmc7bGxzZiZhdW1sO2x0ZXQgdmFyYSBkb2x0JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnTWFya2VyYSBlbiBlbGxlciBmbGVyYSBrYXRlZ29yaWVyIGYmb3VtbDtyIGRlbiBoJmF1bWw7ciBoJmF1bWw7bmRlbHNlbic7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ1NTLWV4ZW1wZWwgZiZvdW1sO3IgQ2FsZW5kYXInOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ0R1IGJlaCZvdW1sO3ZlciBwYXNzYW5kZSByJmF1bWw7dHRpZ2hldGVyICglcykgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBkZW4gaCZhdW1sO3IgZnVua3Rpb25lbic7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnU2UgdGlsbCBhdHQgc3QmYXVtbDtsbGEgaW4gJnF1b3Q7JkF1bWw7bmRyYSBLYWxlbmRlciZxdW90OyByJmF1bWw7dHRpZ2hldGVyIGYmb3VtbDtyIGFudiZhdW1sO25kYXJlIHNvbSBrb21tZXIgYXR0IGFkbWluaXN0cmVyYSBrYWxlbmRlcmgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ1RhIGJvcnQgbWFya2VyYWRlIGgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgdGEgYm9ydCBkZXNzYSBoJmF1bWw7bmRlbHNlcj8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ01hcmtlcmFkZSBoJmF1bWw7bmRlbHNlciB0b2dzIGJvcnQnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnTWFsbGFyJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdNYWxsaGomYXVtbDtscCc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0ZpbG1hbGxhcic7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0wmYXVtbDtnZyB0aWxsIG1hbGwnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNYWxsJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdNYWxsbmFtbic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdSZWRpZ2VyYSBtYWxsJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnVGEgYm9ydCBtYWxsJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnTnl0dCBtYWxsbmFtbic7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdGRUw6IEVuIG1hbGwgbWVkIGRldCBuYW1uZXQgZXhpc3RlcmFyIHJlZGFuLiBWJmF1bWw7bGogZXR0IGFubmF0IG5hbW4uJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdNYWxsZW4gJmF1bWw7ciBpbXBvcnRlcmFkIG9jaCBpbnN0YWxsZXJhZCwgcmVkbyBhdHQgYW52JmF1bWw7bmRhcy4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaXNhIGYmb3VtbDtydmFsZCBTdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsbmFtbic7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGVyYSBtYWxsJzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICdNYWxsZW4gdG9ncyBib3J0IHVyIGRhdGFiYXNlbic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdNYWxsZW4gdXBwZGF0ZXJhZGVzJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0V0dCBmZWwgdXBwc3RvZCBkJmFyaW5nOyBtYWxsZW4gc2t1bGxlIHVwcGRhdGVyYXMnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0luc3QmYXVtbDtsbG5pbmdhcm5hIHNwYXJhZGVzJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpbiB0b2dzIGJvcnQnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnS2F0ZWdvcmluICZhdW1sO3IgdXBwZGF0ZXJhZCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmluIGxhZGVzIHRpbGwnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnSCZhdW1sO25kZWxzZW4gdG9ncyBib3J0JzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0gmYXVtbDtuZGVsc2VuIHVwcGRhdGVyYWRlcyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdGZWw6IER1IG0mYXJpbmc7c3RlIGFuZ2UgZW4gZiZvdW1sO3J2YWxkIHNpZGEgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBDYWxlbmRhciBtZWQgJnF1b3Q7cHJldHR5IFVSTCZxdW90OyBha3RpdmVyYWQuIEcmYXJpbmc7IHRpbGwgZmxpa2VuIEluc3QmYXVtbDtsbG5pbmdhciBpIENhbGVuZGFyIG9jaCB2JmF1bWw7bGogZW4gc2lkYS4nOwokbGFuZ1sndGltZV9hdCddID0gJ3ZpZCc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1uJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JuaW5nJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdGJmF1bWw7bHQgbGFkZXMgdGlsbCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGJmF1bWw7bHQgdG9ncyBib3J0JzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0FucGFzc2FkZSBmJmF1bWw7bHQnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGV4dGYmYXVtbDtsdCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0YmYXVtbDtsdCBmJm91bWw7ciBmaWx1cHBsYWRkbmluZyc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGlzIGEgbW9kdWxlIGZvciBkaXNwbGF5aW5nIGV2ZW50cyBvbiB5b3VyIHBhZ2UuIFdoZW4gdGhlDQoJCW1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgQ2FsZW5kYXIgYWRtaW4gcGFnZSBpcyBhZGRlZCB0byB0aGUgY29udGVudCBtZW51DQoJCXRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gbWFuYWdlIHlvdXIgZXZlbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ0Ymb3VtbDtydmFsZCBzaWRhIHNvbSBpbm5laCZhcmluZztsbGVyIENhbGVuZGFyLiBEZW4gaCZhdW1sO3Igc2lkYW4gbSZhcmluZztzdGUgaW5uZWgmYXJpbmc7bGxhIGVuICZxdW90O1NtYXJ0eSB0YWcmcXVvdDsgc29tIGFucm9wYXIgQ2FsZW5kYXIuIEtyJmF1bWw7dnMgb20gZHUgYW52JmF1bWw7bmRlciAmcXVvdDtwcmV0dHkgVVJMcyZxdW90Oy4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnS2F0YWxvZyBmJm91bWw7ciBmaWx1cHBsYWRkbmluZ2FyJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpbGwmYXJpbmc7dG5hIGZpbHR5cGVyJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ0Ymb3VtbDtycyZhdW1sO2tyYSB1bmlrYSBmaWxuYW1uJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnQnJlZGQgZiZvdW1sO3IgdHVtbmFnZWxiaWxkJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ0gmb3VtbDtqZCBmJm91bWw7ciB0dW1uYWdlbGJpbGQnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICdCcmVkZCBmJm91bWw7ciBzdG9yIGJpbGQnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnSCZvdW1sO2pkIGYmb3VtbDtyIHN0b3IgYmlsZCc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnJkFyaW5nO3RlcmtvbW1lcic7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICcmQXJpbmc7dGVya29tbWVyIHRpbGwgb2NoIG1lZCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/tr_TR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ1RoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4gdG8gRkVVLiAgQWRkaW5nIG9yIGVkaXRpbmcgZXZlbnRzIGlzIG5vdCBwZXJtaXR0ZWQnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ0ZyaWVuZGx5IE5hbWUgZm9yIHRoaXMgTW9kdWxlIGluIEFkbWluIE5hdmlnYXRpb24nOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdOb3RlOiBZb3UgbWF5IG5lZWQgdG8gY2xlYXIgdGhlIHNpdGUgY2FjaGUgZm9yIHRoaXMgcHJlZmVyZW5jZSB0byBoYXZlIGVmZmVjdC4gIElmIG5vIHZhbHVlIGlzIHN1cHBsaWVkIGEgZGVmYXVsdCB3aWxsIGJlIHVzZWQuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnV3lzaXd5ZyBFZGl0Jm91bWw7ciZ1dW1sOyBLdWxsYW4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnSW5zdWZmaWNpZW50IFBhcmFtZXRlcnMnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0ltcG9ydCBmaWxlIGNvbHVtbiBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ0ltcG9ydCBDb21wbGV0ZSc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdOdW1iZXIgb2YgZXZlbnRzIGNyZWF0ZWQ6ICVkJzsKJGxhbmdbJ2ltcG9ydF9saW5lcyddID0gJ051bWJlciBvZiBsaW5lcyBwcm9jZXNzZWQgZnJvbSBmaWxlOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdIYXRhbGFyJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWludmFsaWRmaWVsZCddID0gJ0ZpZWxkOiAlcyBpcyBub3QgcmVjb2duaXplZCwgYW5kIGlzIG5vdCBhIGN1c3RvbSBmaWVsZCc7CiRsYW5nWydpbmZvX2Nzdl9mb3JtYXQnXSA9ICc8aDQ+Q1NWIEZpbGUgRm9ybWF0IEluZm9ybWF0aW9uLjwvaDQ+DQo8dWw+DQogIDxsaT5HZW5lcmFsIEluZm9ybWF0aW9uOg0KICAgPHVsPg0KICAgICA8bGk+VGhlIGZpbGUgbXVzdCBiZSBhbiBBU0NJSSBmaWxlIHdpdGggdW5peCAocHJlZmVycmVkKSwgZG9zLCBvciBtYWMgbGluZSBlbmRpbmdzLjwvbGk+DQogICAgIDxsaT5Db21tZW50cyBzdGFydCB3aXRoIC8vIGFueSBjaGFyYWN0ZXJzIGFmdGVyIHRoaXMgb24gYSBsaW5lIHdpbGwgYmUgaWdub3JlZCAoaW5jbHVkaW5nIHdpdGhpbiBxdW90ZXMuPC9saT4NCiAgICAgPGxpPkVtcHR5IGxpbmVzIGFyZSBpZ25vcmVkPC9saT4NCiAgICAgPGxpPkZpZWxkIGRlbGltaXRlcnMgYXJlIHVzZXIgY29udHJvbGxhYmxlLCBob3dldmVyIGEgZGVsaW1pdGVyIGNhbiBiZSB1c2VkIGFzIGEgdmFsdWUgd2l0aGluIGEgZmllbGQgaWYgdGhlIGZpZWxkIGlzIGRlbGltaXRlZCBieSBkb3VibGUgcXVvdGVzLjwvbGk+DQogICAgIDxsaT5Sb3dzIGFyZSBkZWxpbWl0ZWQgYnkgbmV3bGluZSBjaGFycyAoYXMgYWJvdmUpLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIEZpZWxkIE1hcDoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgJnF1b3Q7Y3VzdG9tIGZpZWxkcyZxdW90OyBhcmUgZGVmaW5lZCBpbiB0aGUgZmlsZS4gRGF0YSBjYW4gc3RhcnQgb24gdGhlIHNlY29uZCBub24tZW1wdHkgbGluZSwgb3IgYWZ0ZXIuPC9saT4NCiAgICA8bGk+VGhlcmVzIGFyZSB0aGUgcmVxdWlyZWQgZmllbGRzOiBzdGFydCB0aW1lLCBlbmQgdGltZSwgdGl0bGUsIHN1bW1hcnksIGFuZCBkZXNjcmlwdGlvbi4gIFdpdGhvdXQgZGVmaW5pbmcgdGhlc2UgZmllbGRzIGluIHRoZSBoZWFkZXIgdGhlIGltcG9ydCB3aWxsIG5vdCBwcm9jZWVkLiAgUmVxdWlyZWQgZmllbGQgbmFtZXMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5UaGVyZSBpcyBvbmUgb3B0aW9uYWwgY29sdW1uOjogJnF1b3Q7Y2F0ZWdvcnkmcXVvdDsuICBJZiBzcGVjaWZpZWQgaXQgY2FuIGNvbnRhaW4gYSA7IHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzIHRoYXQgdGhlIGV2ZW50IHdpbGwgYmVsb25nIHRvLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIERhdGEgUm93czoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIHN0YXJ0IHRpbWUsIHRpdGxlLCBhbmQgZGVzY3JpcHRpb24gZmllbGRzIG11c3Qgbm90IGJlIGVtcHR5LjwvbGk+DQo8bGk+U3RhcnQgYW5kIEVuZCBUaW1lczo8L2xpPg0KICA8dWw+DQogICA8bGk+U3RhcnQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciAgWVlZWS1NTS1ERCBISDpNTSBmb3JtYXQsIG9yIG1hbnkgZm9ybWF0cyBhcyBkZWZpbmVkIGJ5IHRoZSBzdHJ0b3RpbWUgZnVuY3Rpb24sIGluY2x1ZGluZyByZWxhdGl2ZSB0aW1lcy4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzdXBwbGllZCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRpbWUuPC9saT4NCiAgIDxsaT5FbmQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLCBhbmQgbWF5IGJlIGVtcHR5LiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciBhbiBhYnNvbHV0ZSB0aW1lIChpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIHN0YXJ0IHRpbWUpIG9yIGEgcmVsYXRpdmUgdGltZS4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzcGVjaWZpZWQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHRpbWUuICAgaS5lOiAmcXVvdDsrNCBob3VycyZxdW90OyB3b3VsZCBpbmRpY2F0ZSA0IGhvdXJzIGZyb20gdGhlIHN0YXJ0IHRpbWUgY29sdW1uLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICZxdW90O0FsbCBkYXkmcXVvdDsgPGVtPihjYXNlIGluc2Vuc2l0aXZlKTwvZW0+IGl0IHdpbGwgYXNzdW1lIGFuIGFsbCBkYXkgZXZlbnQgZnJvbSB0aGUgc3RhcnQgdGltZS48L2xpPg0KICAgPGxpPklmIHRoZSBlbmQgdGltZSBjb2x1bW4gaXMgZW1wdHksIHRoZW4gbm8gZW5kIHRpbWUgdmFsdWUgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkYXRhYmFzZS48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DYXRlZ29yaWVzDQogIDx1bD4NCiAgIDxsaT5JZiBzcGVjaWZpZWQsIHRoZSBjYXRlZ29yeSBjb2x1bW4gY2FuIGNvbnRhaW4gYSBsaXN0IChzZXBhcmF0ZWQgYnkgOykgb2YgY2F0ZWdvcnkgbmFtZXMgZm9yIHdoaWNoIHRoZSBldmVudCBzaG91bGQgYmVsb25nLjwvbGk+DQogICA8bGk+Q2F0ZWdvcnkgbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICA8bGk+Q2F0ZWdvcmllcyBhcmUgbm90IGNyZWF0ZWQgaWYgdGhleSBkbyBub3QgZXhpc3QuPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+Q3VzdG9tIEZpZWxkczoNCiAgPHVsPg0KICAgIDxsaT5DdXN0b20gZmllbGQgbmFtZXMgKGV2ZW4gaW4gdGhlIGZpcnN0IGxpbmUgdGhhdCBkZXRlcm1pbmVzIHRoZSBmaWVsZCBtYXBwaW5nKSBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgICA8bGk+Q3V0b20gZmllbGRzIGFyZSBub3QgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIENTViBmaWxlLiAgVW5rbm93biBjdXN0b20gZmllbGQgY29sdW1ucyB3aWxsIGJlIGlnbm9yZWQuPC9saT4NCiAgICA8bGk+Q3VzdG9tIGZpZWxkcyBvZiB0eXBlICZxdW90O2ZpbGUmcXVvdDsgY2Fubm90IGJlIGltcG9ydGVkLiAgVGhlIGVudGlyZSBpbXBvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbC48L2xpPg0KICA8L3VsPg0KICA8L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5BIHNhbXBsZSBjc3YgZmlsZSBleGlzdHMgaW4gdGhlIG1vZHVsZXMgc291cmNlIGNvZGUgZGlyZWN0b3J5LjwvbGk+DQo8L3VsPic7CiRsYW5nWydwcm9tcHRfY3N2X2ZpbGUnXSA9ICdTZWxlY3QgSW1wb3J0IEZpbGUnOwokbGFuZ1snZGVsZXRlJ10gPSAnU2lsJzsKJGxhbmdbJ2NkX2NvbXBhbnknXSA9ICdDb21wYW55IERpcmVjdG9yeSBDb21wYW55JzsKJGxhbmdbJ2RmbHRfdXJscHJlZml4J10gPSAnRGVmYXVsdCBVUkwgcHJlZml4IGZvciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmV3IGV2ZW50cyBhcmUgJnF1b3Q7QWxsIERheSZxdW90OyBldmVudHMgYnkgZGVmYXVsdCc7CiRsYW5nWydkZmx0X3N0YXJ0dGltZSddID0gJ0RlZmF1bHQgc3RhcnQgdGltZSBmb3IgbmV3IGV2ZW50cyc7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPihhcHBsaWVzIG9ubHkgaWYgbmV3IGV2ZW50cyBhcmUgbm90ICZxdW90O0FsbCBEYXkmcXVvdDsgZXZlbnRzLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ1NlYXJjaCBUeXBlJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdSZXR1cm4gcmVzdWx0cyBtYXRjaGluZyBhbnkgd29yZCc7CiRsYW5nWydzZWFyY2hfYWxsJ10gPSAnUmV0dXJuIHJlc3VsdHMgbWF0Y2hpbmcgYWxsIHdvcmRzJzsKJGxhbmdbJ2luZm9fY3VzdG9tZmllbGRzJ10gPSAnPHNwYW4gc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDs+Tm90ZTo8L3NwYW4+IE9ubHkgdGV4dCBmaWVsZHMgYXJlIHNlYXJjaGFibGUuICBDbGlja2luZyB0aGUgY2hlY2hib3ggb24gb3RoZXIgZmllbGQgdHlwZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4nOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ0FyYW5hYmlsaXInOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IGVkaXQgZXZlbnQgdGVtcGxhdGUgdG8gdXNlIHdoZW4gYSB1c2VyIGNyZWF0ZXMgb3IgZWRpdHMgYW4gZXZlbnQnOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0cGFnZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIGRpZmZlcmVudCBwYWdlIGZvciB0aGUgZWRpdCBmb3JtLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZSB0byB1c2UnOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdUYWt2aW0gRXRraW5sacSfaW5pIEQmdXVtbDt6ZW5sZSc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgRXJyb3InOwokbGFuZ1snc3VibWl0J10gPSAnRyZvdW1sO25kZXInOwokbGFuZ1snaW5mb19zeXNkZmx0X2VkaXRldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0ICZxdW90O0VkaXQgRXZlbnQmcXVvdDsgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X215ZXZlbnRzX3RlbXBsYXRlJ10gPSAnU3lzdGVtIERlZmF1bHQgJnF1b3Q7TXkgRXZlbnRzJnF1b3Q7IFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfZ3JvdXAnXSA9ICdNZW1iZXJzIG9mIHRoaXMgRkVVIGdyb3VwIGNhbiBhZGQgZXZlbnRzJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfcGFnZSddID0gJ0RlZmF1bHQgcGFnZSBmb3IgdGhlIGZyb250ZW5kIGVkaXQgZm9ybS4nOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwokbGFuZ1snb3duZXInXSA9ICdTYWhpcCc7CiRsYW5nWydjYWxfZWRpdGV2ZW50X3RlbXBsYXRlcyddID0gJ0VkaXQgRXZlbnQgRm9ybSBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGVkaXQgZXZlbnQgZm9ybSc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gRWRpdCBFdmVudCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdNeSBFdmVudHMgTGlzdCBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19teWV2ZW50c190ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHVzZXIgZXZlbnRzJzsKJGxhbmdbJ215ZXZlbnRzdGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgJnF1b3Q7TXkgRXZlbnRzJnF1b3Q7IHJlcG9ydCB0ZW1wbGF0ZSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVGhpcyBhY3Rpb24gd2lsbCByZW1vdmUgYW55IGV2ZW50cyB0aGF0IGNvbmZsaWN0IHdpdGggbm9uLW92ZXJsYXBwYWJsZSBldmVudHMuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnJkNjZWRpbDtha8SxxZ9hbmxhcsSxIEZpbHRyZWxlJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ1NpbGVudGx5IHJlbW92ZSBjb25mbGljdGluZyBldmVudHMnOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdEaXNwbGF5IGFuIGVycm9yJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ1doYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGEgY29uZmxpY3QgaXMgZGV0ZWN0ZWQgZHVyaW5nIGVkaXRpbmcgb3IgYWRkaW5nIG9mIGFuIGV2ZW50JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnVGhlIGV2ZW50IHZhbHVlcyBzcGVjaWZpZWQgb3ZlcmxhcCB3aXRoIGFuIGV4aXN0aW5nIGV2ZW50IHRoYXQgZG9lcyBub3QgYWxsb3cgY29uZmxpY3RzJzsKJGxhbmdbJ2NhbF9pbmZvX292ZXJsYXAnXSA9ICdBcHBsaWVzIG9ubHkgdG8gZXZlbnRzIHdpdGggYW4gZW5kIHRpbWUgKG9yIGFsbCBkYXkgZXZlbnRzKSc7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ0FsbG93IG5ldyBldmVudHMgdG8gb3ZlcmxhcCB3aXRoIHRoaXMgb25lJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0V2ZW50IE92ZXJsYXAgUG9saWN5JzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdBbGwgRXZlbnRzIGNhbiBvdmVybGFwJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnTm8gRXZlbnRzIGNhbiBvdmVybGFwJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnRGVjaWRlZCBvbiBhbiBldmVudCBieSBldmVudCBiYXNpcyc7CiRsYW5nWydsYmxfYmFjayddID0gJ0dlcmknOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHQgQXJlYSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdXZSBoYXZlIGRldGVjdGVkIHRoYXQgdGhlIENhbGVuZGFyIG1vZHVsZSBpcyBhbHNvIGluc3RhbGxlZC4uICBUaGlzIG1vZHVsZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBDYWxlbmRhciBtb2R1bGUgYW5kIGNhbm5vdCBjby1leGlzdCB3aXRoIGl0IG9uIHRoZSBzYW1lIGluc3RhbGwuICBQbGVhc2UgdW5pbnN0YWxsIHRoZSBDYWxlbmRhciBtb2R1bGUnOwokbGFuZ1snZXJyb3JfZXZlbnRfbm90X2ZvdW5kJ10gPSAnRWl0aGVyIGV2ZW50X2lkIGlzIG5vdCBpbiB0aGUgZGF0YWJhc2UsIG9yIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZXZlbnQgd2l0aCB0aGlzIGlkISAoJWQpJzsKJGxhbmdbJ2ZpcnN0X3BhZ2UnXSA9ICc8PCc7CiRsYW5nWydwcmV2X3BhZ2UnXSA9ICc8JzsKJGxhbmdbJ25leHRfcGFnZSddID0gJz4nOwokbGFuZ1snbGFzdF9wYWdlJ10gPSAnPj4nOwokbGFuZ1sncGFnZV9vZiddID0gJ1BhZ2UgJWQgb2YgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdDYWxlbmRhciBTZWFyY2ggUmVzdWx0cyc7CiRsYW5nWydzZWFyY2hfd29yZHMnXSA9ICdTZWFyY2ggV29yZHMnOwokbGFuZ1snbm9fcmVzdWx0c19mb3VuZCddID0gJ05vIHJlc3VsdHMgZm91bmQgbWF0Y2hpbmcgdGhlIHF1ZXJ5IHNwZWNpZmllZCc7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdGcmVrYW5zJzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZSc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGaXJzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0ZpcnN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdHVlc2RheSddID0gJ0ZpcnN0IFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3dlZG5lc2RheSddID0gJ0ZpcnN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdGaXJzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRmlyc3QgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0ZpcnN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnU2Vjb25kIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ1NlY29uZCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnU2Vjb25kIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdTZWNvbmQgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdTZWNvbmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ1RoaXJkIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVGhpcmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVGhpcmQgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnVGhpcmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90aHVyc2RheSddID0gJ1RoaXJkIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdUaGlyZCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnVGhpcmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zdW5kYXknXSA9ICdGb3VydGggU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnRm91cnRoIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdGb3VydGggVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZvdXJ0aCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZvdXJ0aCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZvdXJ0aCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0ZvdXJ0aCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYXN0IFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYXN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGFzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ0xhc3QgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdMYXN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0xhc3QgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnSW52YWxpZCBmcmVxdWVuY3kuLi4uIHlvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIHRoZSBzcGVjaWZpZWQgZGF0ZSBBTkQgb3RoZXIgdmFsdWVzJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIGRpc3BsYXknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnU2VhcmNoIFJlc3VsdCBUZW1wbGF0ZXMnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnRGF0YWJhc2UgUXVlcnkgRmFpbGVkJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnSW52YWxpZCBTZWFyY2ggRGF0ZXMgU3BlY2lmaWVkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ0FyYW1hJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFNlYXJjaCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc2VhcmNoX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBzZWFyY2ggZm9ybSc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnU2VhcmNoIEZvcm0gVGVtcGxhdGVzJzsKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ2tlcmUnOwokbGFuZ1snb24nXSA9ICdvbic7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkbyB0aGlzPyAgQ29udGludWluZyB3aWxsIHBlcm1hbmVuZW50bHkgZXJhc2UgYWxsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlLic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ1RoZSBDYWxlbmRhciBtb2R1bGUgaGFzIGJlZW4gdW5pbnN0YWxsZWQgYW5kIGFsbCBldmVudCBhbmQgdGVtcGxhdGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmllbGQgVXBkYXRlZCc7CiRsYW5nWydldmVyeSddID0gJ0hlcic7CiRsYW5nWydvciddID0gJ3lhZGEnOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnVXBkYXRlIENoaWxkIEV2ZW50cyc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3J5J10gPSAnWW91IG11c3Qgc2VsZWN0IGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdOb3RoaW5nIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGRlbGV0ZSc7CiRsYW5nWydlcnJvcl9ldmVudG92ZXJsYXAnXSA9ICdUaGUgcmVjdXJpbmcgZXZlbnQgcGFyYW1ldGVycyB5b3UgaGF2ZSBzcGVjaWZpZWQgd291bGQgcmVzdWx0IGluIG92ZXJsYXBwaW5nIGV2ZW50cy4nOwokbGFuZ1sncmVjdXJzJ10gPSAnWWluZWxlbWUnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ09uZSBvciBtb3JlIG9mIHRoZSBkYXRlIHZhbHVlcyBlbnRlcmVkIHdlcmUgaW52YWxpZCc7CiRsYW5nWydzdW5kYXknXSA9ICdQYXphcic7CiRsYW5nWydtb25kYXknXSA9ICdQYXphcnRlc2knOwokbGFuZ1sndHVlc2RheSddID0gJ1NhbMSxJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJyZDY2VkaWw7YXLFn2FtYmEnOwokbGFuZ1sndGh1cnNkYXknXSA9ICdQZXLFn2VtYm1lJzsKJGxhbmdbJ2ZyaWRheSddID0gJ0N1bWEnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdDdW1hcnRlc2knOwokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdQeic7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ1B0JzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ1NhJzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnJkNjZWRpbDthJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdQZSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0N1JzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdDdCc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ0hhZnRhIGkmY2NlZGlsO2knOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnRyZ1dW1sO25sZXInOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ0hhZnRhbGFyJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnQXlsYXInOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ1nEsWxsYXInOwokbGFuZ1snbm8nXSA9ICdIYXnEsXInOwokbGFuZ1snZGFpbHknXSA9ICdHJnV1bWw7bmwmdXVtbDtrJzsKJGxhbmdbJ3dlZWtseSddID0gJ0hhZnRhbMSxayc7CiRsYW5nWydtb250aGx5J10gPSAnQXlsxLFrJzsKJGxhbmdbJ3llYXJseSddID0gJ1nEsWxsxLFrJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnVGVrcmFybGEnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdZaW5lbGVuZW4gRXRraW5saWsgRGV0YXlsYXLEsSc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdMaW1pdHNpeic7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgZXZlbnRzJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnQml0acWfIGcmdXVtbDtuJnV1bWw7IGJlbGlybGV5aW4nOwokbGFuZ1snY2FuY2VsJ10gPSAnVmF6Z2UmY2NlZGlsOyc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzIDxlbT4obWF5IHJlc3VsdCBpbiB2ZXJ5IGxvbmcgZGlzcGxheSk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2EnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVjdXIgVW50aWwnOwokbGFuZ1sncGFyZW50J10gPSAnJlV1bWw7c3QnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnWWluZWxlbWUgUGVyaXlvZHUnOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdHJlJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdCYcWfbGFtYSBUYXJpaGknOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdCaXRpxZ8gVGFyaWhpJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHVwY29taW5nbGlzdCB2aWV3cyc7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gVXBjb21pbmdsaXN0IERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFVwY29taW5nbGlzdCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgbGlzdCB2aWV3cyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIExpc3QgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEV2ZW50IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgY2FsZW5kYXIgdmlld3MnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IENhbGVuZGFyIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RoaXMgZm9ybSBkZWZpbmVzIHRoZSB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBjbGljayAmcXVvdDtOZXcgVGVtcGxhdGUmcXVvdDsgaW4gdGhlIGFwcHJvcHJpYXRlIHRhYi4gIENoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBoYXZlIG5vIGltbWVkaWF0ZSBlZmZlY3Qgb24gdGhlIGRpc3BsYXlzIGdlbmVyYXRlZCBmcm9tIHRoaXMgbW9kdWxlLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NhbGxlZCBhZnRlciBhZGRpbmcgYSBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgZWRpdGluZyBhbiBleGlzdGluZyBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGFuIGV2ZW50IGhhcyBiZWVuIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYSBjYXRlZ29yeSBpcyBjcmVhdGVkJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0NhbGxlZCBhZnRlciBhIGNhdGVnb3J5IGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGEgY2F0ZWdvcnkgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRXJyb3IgaW1wb3J0aW5nIGV2ZW50IGZyb20gY3N2IGF0IGxpbmUgJWQnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5lZmxkbm90Zm91bmQnXSA9ICdBIHJlcXVpcmVkIGZpZWxkOiAlcywgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBjc3YgZmlsZSBoZWFkZXIgbGluZSc7CiRsYW5nWydlcnJvcl9jc3ZpbnZhbGlkZmlyc3RsaW5lJ10gPSAnQ291bGQgbm90IGZpbmQgYSB2YWxpZCBmaXJzdCBsaW5lIG9mIHRoZSBDU1YgZmlsZSc7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW50IEFkZGVkJzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnQSBuYW1lIGZvciB0aGUgZXZlbnQgaXMgcmVxdWlyZWQnOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPUjogTm8gdXBsb2FkZWQgZmlsZSBmb3VuZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPUjogVGhlIGZpbGUgdXBsb2FkZWQgY2Fubm90IGJlIGFjY2VwdGVkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IEEgcHJvYmxlbSBvY2N1cnJlZCB0cnlpbmcgdG8gdXBsb2FkIHRoZSBmaWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJST1I6IEEgUHJvYmxlbSBvY2N1cnJlZCB3aGVuIGNvcHlpbmcgdGhlIGZpbGUgdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUjogQSBmaWxlIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdFUlJPUjogQ291bGQgbm90IGZpbmQgdGhlIENTViBGaWxlJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk9SOiBDYW5ub3Qgb3BlbiBmaWxlJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRVJST1I6IEEgY2F0ZWdvcnkgd2l0aCB0aGUgbmFtZSAlcyBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydjYWxfaWQnXSA9ICdJZCc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdUYWt2aW0nOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSZjY2VkaWw7xLFrbGFtYSc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdFdGtpbmxpayBFa2xlJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0IEV0JzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdGtpbmxpa2xlcic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpbGVyJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0NhbGVuZGFyIFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ0xpc3QgVGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdVcGNvbWluZyBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnRXZlbnQgVGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0F5YXJsYXInOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87ICZPdW1sO25jZWtpJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU29ucmFraSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yaWVzIFVwZGF0ZWQnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdTZXR0aW5ncyBVcGRhdGVkJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdFdGtpbmxpayBFa2xlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRCZ1dW1sO3plbmxlJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTaWwnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdTaWxtZWsgaXN0ZWRpxJ9pbml6ZSBlbWluIG1pc2luaXo/JzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdVcGRhdGUgVGVtcGxhdGUnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1BhemFyJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdQYXphcnRlc2knOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdTYWzEsSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnJkNjZWRpbDthcsWfYW1iYSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdQZXLFn2VtYmUnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ0N1bWEnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnQ3VtYXJ0ZXNpJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdQYXonOwokbGFuZ1snY2FsX21vbiddID0gJ1B0cyc7CiRsYW5nWydjYWxfdHVlcyddID0gJ1NhbCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnJkNjZWRpbDthcic7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdQZXInOwokbGFuZ1snY2FsX2ZyaSddID0gJ0N1bSc7CiRsYW5nWydjYWxfc2F0J10gPSAnQ3RzJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnT2Nhayc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICfFnnViYXQnOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFydCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdOaXNhbic7CiRsYW5nWydjYWxfbWF5J10gPSAnTWF5xLFzJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSGF6aXJhbic7CiRsYW5nWydjYWxfanVseSddID0gJ1RlbW11eic7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQcSfdXN0b3MnOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ0V5bCZ1dW1sO2wnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdFa2ltJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ0thc8SxbSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdBcmFsxLFrJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdFa2xlJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdHJnV1bWw7bmNlbGxlJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V0a2lubGlrJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnVGFyaWgnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICcmT3VtbDt6ZXQnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdBeXLEsW50xLFsYXInOwokbGFuZ1snY2FsX21vcmUnXSA9ICdkZXZhbcSxID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdHZXJpIGQmb3VtbDtuJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0dlJmNjZWRpbDttacWfIEV0a2lubGlrbGVyJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdZYWtsYcWfYW4gRXRraW5saWtsZXInOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0hlcmhhbmdpIGJpciBrYXRlZ29yaSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ1Nob3cgT25seSBFdmVudHMgSW4nOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRlciBUaXRsZSBCeSA8ZW0+KHJlZ2V4KTwvZW0+JzsKJGxhbmdbJ2NhbF9nbyddID0gJ0dpdCc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdCYcWfbMSxayc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdCYcWfbGFtYSBUYXJpaGknOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0JpdGnFnyBUYXJpaGknOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnS2F0ZWdvcmlsZXJpIGcmdXVtbDtuY2VsbGUnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnRGlsJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0F5YXJsYXLEsSBHJnV1bWw7bmNlbGxlJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdVc2UgdHdlbHZlIGhvdXIgY2xvY2sgb24gaG91ciBkcm9wLWRvd25zPyc7CiRsYW5nWydjYWxfZGVmYXVsdF9jYXRlZ29yeSddID0gJ1ZhcnNhecSxbGFuIEthdGVnb3JpJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnVXBkYXRlIEZpZWxkcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcmNlIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSG93IG1hbnkgeWVhcnMgaW4gdGhlIHBhc3QgaXMgYWxsb3dlZCc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIb3cgbWFueSB5ZWFyIGludG8gdGhlIGZ1dHVyZSBpcyBhbGxvd2VkJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnU2hvdWxkIHRoZSBzdW1tYXJ5IGZpZWxkIGJlIGhpZGRlbic7CiRsYW5nWydoaWRlY29udGVudCddID0gJ1Nob3VsZCB0aGUgY29udGVudCBmaWVsZCBiZSBoaWRkZW4nOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdQbGVhc2UgY2hlY2sgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyBmb3IgdGhpcyBldmVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ2FsZW5kYXIgQ1NTIGV4YW1wbGUnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1lvdSBuZWVkIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9uICglcykgdG8gYWNjZXNzIHRoaXMgZnVuY3Rpb25hbGl0eSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgJnF1b3Q7TW9kaWZ5IENhbGVuZGFyJnF1b3Q7IHBlcm1pc3Npb24gb24gdXNlcnMgd2hvIHdpbGwgYmUgYWRtaW5pc3RlcmluZyBjYWxlbmRhciBldmVudHMuJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ0RlbGV0ZSB0YWdnZWQgZXZlbnRzJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdBcmUgeW91IHN1cmUgdGhlc2UgZXZlbnRzIHNob3VsZCBiZSBkZWxldGVkPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAnVGFnZ2VkIGV2ZW50cyBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1RlbXBsYXRlIEhlbHAnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdGaWxlIFRlbXBsYXRlcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkZCBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdUZW1wbGF0ZSBOYW1lJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXQgVGVtcGxhdGUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdEZWxldGUgVGVtcGxhdGUnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOZXcgVGVtcGxhdGUgTmFtZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFcnJvcjogQSB0ZW1wbGF0ZSB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cy4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBuYW1lLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNlc3NmdWxseSBpbXBvcnRlZCBpbnRvIHRoZSBkYXRhYmFzZSBhbmQgaXMgbm93IGluc3RhbGxlZCBmb3IgdXNlLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1ZpZXcgRGVmYXVsdCBTdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsZW5hbWUnOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnQgVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJhc2UuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgdXBkYXRlZCBzdWNjZXNzZnVsbHknOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgdXBkYXRpbmcgdGhlIHRlbXBsYXRlJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdTZXR0aW5ncyB3YXMgc2F2ZWQgc3VjY2Vzc2Z1bGx5JzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3J5IGRlbGV0ZWQnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQ2F0ZWdvcnkgdXBkYXRlZCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvcnkgYWRkZWQnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnVGhlIGV2ZW50IHdhcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ1RoZSBldmVudCB3YXMgdXBkYXRlZCc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcjogWW91IG11c3Qgc2V0IGEgZGVmYXVsdCBwYWdlIGluIG9yZGVyIHRvIHVzZSBDYWxlbmRhciB3aXRoIHByZXR0eSBVUkxzIHR1cm5lZCBvbi4gUGxlYXNlIGdvIHRvIHRoZSBDYWxlbmRhciBzZXR0aW5ncyB0YWIgYW5kIGNob29zZSBvbmUuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdhdCc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWyduYW1lJ10gPSAnxLBzaW0nOwokbGFuZ1snb3JkZXInXSA9ICdTxLFyYWxhbWEnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZpZWxkIFN1Y2Nlc3NmdWxseSBBZGRlZCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGaWVsZCBEZWxldGVkJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0Vrc3RyYSBFbGFubGFyJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1RleHQgRmllbGQnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdGaWxlIHVwbG9hZCBmaWVsZCc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGlzIGEgbW9kdWxlIGZvciBkaXNwbGF5aW5nIGV2ZW50cyBvbiB5b3VyIHBhZ2UuIFdoZW4gdGhlDQoJCW1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgQ2FsZW5kYXIgYWRtaW4gcGFnZSBpcyBhZGRlZCB0byB0aGUgY29udGVudCBtZW51DQoJCXRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gbWFuYWdlIHlvdXIgZXZlbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ0RlZmF1bHQgcGFnZSB0aGF0IGNvbnRhaW5zIENhbGVuZGFyLiBUaGlzIHBhZ2UgbXVzdCBjb250YWluIGEgU21hcnR5IHRhZyB0aGF0IGNhbGxzIENhbGVuZGFyLiBSZXF1aXJlZCBpZiB5b3UgdXNlIHRoZSBwcmV0dHkgVVJMcy4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnRGlyZWN0b3J5IHdoZXJlIGZpbGUgdXBsb2FkcyBzaG91bGQgYmUgcGxhY2VkJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ0FsbG93ZWQgZmlsZSB0eXBlcyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdFbnN1cmUgdW5pcXVlIGZpbGVuYW1lcyc7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ1RodW1ibmFpbCBXaWR0aCc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdUaHVtYm5haWwgSGVpZ2h0JzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnTGFyZ2UgSW1hZ2UgV2lkdGgnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnTGFyZ2UgSW1hZ2UgSGVpZ2h0JzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdZaW5lbGVtZWxlcic7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+DQo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzYzMTM5MTU0LjEzNjQzMTE3MDkuMTM2NDMxMTcwOS4xMzY0MzExNzA5LjEnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM2NDMxMTcwOS4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/zh_TW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ+aXpeabhic7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICfliqDlhaUsIOe3qOi8ryDlkowg5Yiq6Zmk5LqL5Lu2JzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ+WKoOWFpeS6i+S7tic7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ+i8uOWFpeS6i+S7tic7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAn5LqL5Lu2JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAn55uu6YyEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ+aXpeabhuaooeadvyc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ+aooeadv+ebrumMhCc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVXBjb21pbmcg5qih5p2/JzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ+aooeadv+S6i+S7tic7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICfoqK3lrponOwokbGFuZ1snY2FsX3ByZXYnXSA9ICfCqyDkuIrkuIDpoIEnOwokbGFuZ1snY2FsX25leHQnXSA9ICfkuIvkuIDpoIEgwrsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ+abtOaWsOebrumMhCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ+ioreWumuabtOaWsCc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAn5Yqg5YWl5LqL5Lu2JzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAn57eo6LyvJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICfliKrpmaQnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICfkvaDnorrlrpropoHliKrpmaTll44/JzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICfmm7TmlrDmqKHmnb8nOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ+aYn+acn+aXpSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAn5pif5pyf5LiAJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAn5pif5pyf5LqMJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICfmmJ/mnJ/kuIknOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAn5pif5pyf5ZubJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICfmmJ/mnJ/kupQnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAn5pif5pyf5YWtJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICfmmJ/mnJ/ml6UnOwokbGFuZ1snY2FsX21vbiddID0gJ+aYn+acn+S4gCc7CiRsYW5nWydjYWxfdHVlcyddID0gJ+aYn+acn+S6jCc7CiRsYW5nWydjYWxfd2VkJ10gPSAn5pif5pyf5LiJJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ+aYn+acn+Wbmyc7CiRsYW5nWydjYWxfZnJpJ10gPSAn5pif5pyf5LqUJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICfmmJ/mnJ/lha0nOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICfkuIDmnIgnOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAn5LqM5pyIJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ+S4ieaciCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICflm5vmnIgnOwokbGFuZ1snY2FsX21heSddID0gJ+S6lOaciCc7CiRsYW5nWydjYWxfanVuZSddID0gJ+WFreaciCc7CiRsYW5nWydjYWxfanVseSddID0gJ+S4g+aciCc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAn5YWr5pyIJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICfkuZ3mnIgnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICfljYHmnIgnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAn5Y2B5LiA5pyIJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ+WNgeS6jOaciCc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ+aXpeacnyc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ+e4vee1kCc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ+ips+aDhSc7CiRsYW5nWydjYWxfbW9yZSddID0gJ+abtOWkmiA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAn6L+U5ZueJzsKJGxhbmdbJ2NhbF90byddID0gJ+WIsCc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAn5Y2z5bCH5L6G6Ieo55qE5LqL5Lu2JzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICfku7vkvZXnm67pjIQnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfpoa/npLrllK/kuIDnmoTkuovku7blnKgnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ+mBjua/viBCeSc7CiRsYW5nWydjYWxfZ28nXSA9ICfljrsnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAn5qiZ6aGMJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ+W+nuaXpeacnyc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAn6L+E5LuKJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ+abtOaWsOebrumMhCc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICfoqp7oqIAnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAn5pu05paw6Kit5a6aJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpuYW1lc3BhY2UgQ0dDYWxlbmRhcjsKCmZpbmFsIGNsYXNzIGNhdGVnb3J5IGltcGxlbWVudHMgXEFycmF5QWNjZXNzCnsKICAgIHByaXZhdGUgc3RhdGljICRfY2FjaGVkX2NhdGVnb3JpZXM7CiAgICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfZGlydHk7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CiAgICAgICAgJHRoaXMtPl9kYXRhWydmZ2NvbG9yJ10gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkZmx0X2ZnY29sb3InLCcwMDAwMDAnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2JnY29sb3InXSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2RmbHRfYmdjb2xvcicsJ2ZmZmZmZicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRHZXQoJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnaWQnOgogICAgICAgIGNhc2UgJ29yZGVyJzoKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gKGludCkkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICduYW1lJzoKICAgICAgICBjYXNlICdiZ2NvbG9yJzoKICAgICAgICBjYXNlICdmZ2NvbG9yJzoKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRTZXQoJGtleSwkdmFsdWUpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdvcmRlcic6CiAgICAgICAgICAgIC8vIHRoc2UgcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IHRoaXMgd2F5CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCJUaGUgJGtleSBtZW1iZXIgY2Fubm90IGJlIHNldCB0aGlzIHdheSBpbiBhICIuX19DTEFTU19fKTsKCiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IHRyaW0oJHZhbHVlKTsKICAgICAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdiZ2NvbG9yJzoKICAgICAgICBjYXNlICdmZ2NvbG9yJzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAkdGhpcy0+X2RpcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCRrZXkuJyBpcyBub3QgYSB2YWxpZCBtZW1iZXIgb2YgYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdvcmRlcic6CiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgY2FzZSAnYmdjb2xvcic6CiAgICAgICAgY2FzZSAnZmdjb2xvcic6CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJGtleV0pICkgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgIHJldHVybiBGQUxTRTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRVbnNldCgka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnb3JkZXInOgogICAgICAgICAgICAvLyB0aHNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNldCB0aGlzIHdheQogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbigiVGhlICRrZXkgbWVtYmVyIGNhbm5vdCBiZSBhZGp1c3RlZCB0aGlzIHdheSBpbiBhICIuX19DTEFTU19fKTsKCiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnYmdjb2xvcic6CiAgICAgICAgY2FzZSAnZmdjb2xvcic6CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgaWYoICEkdGhpc1snbmFtZSddICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ25hbWUgY2Fubm90IGJlIGVtcHR5IGluIGEgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydpZCddKSAmJiAkdGhpcy0+X2RhdGFbJ2lkJ10gPCAwICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ2ludmFsaWQgaWQgaW4gJy5fX0NMQVNTX18pOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHRoZSBuYW1lIGRvZXMgbm90IGV4aXN0CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CiAgICAgICAgJHRtcCA9IG51bGw7CiAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnaWQnXSkgJiYgJHRoaXMtPl9kYXRhWydpZCddID4gMCApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCBGUk9NICcuJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgY2F0ZWdvcnlfbmFtZSA9ID8gQU5EIGNhdGVnb3J5X2lkICE9ID8nOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR0aGlzWyduYW1lJ10sJHRoaXNbJ2lkJ10pKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGNhdGVnb3J5X2lkIEZST00gJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBjYXRlZ29yeV9uYW1lID0gPyc7CiAgICAgICAgICAgICR0bXAgPSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSkpOwogICAgICAgIH0KICAgICAgICBpZiggJHRtcCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJywkdGhpc1snbmFtZSddKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9pbnNlcnQoKQogICAgewogICAgICAgICRkYiA9IFxjbXNtcygpLT5HZXREYigpOwogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKCiAgICAgICAgLy8gZGV0ZXJtaW5lIGEgbmV3IHNlcXVlbmNlIGZvciBjYXRlZ29yaWVzLgogICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9ICRkYi0+R2VuSUQoJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLidfc2VxJyk7CgogICAgICAgIC8vIGRldGVybWluZSBhIG5ldyBvcmRlcgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgQ09BTEVTQ0UoTUFYKGNhdGVnb3J5X29yZGVyKSwwKSsxIEZST00gJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgICAgICAgJHRoaXMtPl9kYXRhWydvcmRlciddID0gKGludCkkZGItPkdldE9uZSgkcXVlcnkpOwoKICAgICAgICAvLyBpbnNlcnQgdGhlIHRoaW5nCiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgKGNhdGVnb3J5X2lkLGNhdGVnb3J5X25hbWUsY2F0ZWdvcnlfYmdjb2xvcixjYXRlZ29yeV9mZ2NvbG9yLGNhdGVnb3J5X29yZGVyKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCR0aGlzWydpZCddLCR0aGlzWyduYW1lJ10sJHRoaXNbJ2JnY29sb3InXSwkdGhpc1snZmdjb2xvciddLCR0aGlzWydvcmRlciddKSk7CiAgICAgICAgJG1vZC0+U2VuZEV2ZW50KCdDYXRlZ29yeUFkZGVkJyxhcnJheSgnY2F0ZWdvcnlfaWQnPT4kdGhpc1snaWQnXSwnY2F0ZWdvcnlfbmFtZSc9PiR0aGlzWyduYW1lJ10sJ2NhdGVnb3J5X29yZGVyJz0+JHRoaXNbJ29yZGVyJ10pKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3VwZGF0ZSgpCiAgICB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CgogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfbmFtZSA9ID8sIGNhdGVnb3J5X2JnY29sb3IgPSA/LCBjYXRlZ29yeV9mZ2NvbG9yID0gPywgY2F0ZWdvcnlfb3JkZXIgPSA/CiAgICAgICAgICAgICAgICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSwkdGhpc1snYmdjb2xvciddLCR0aGlzWydmZ2NvbG9yJ10sJHRoaXNbJ29yZGVyJ10sJHRoaXNbJ2lkJ10pKTsKICAgICAgICAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RWRpdGVkJyxhcnJheSgnY2F0ZWdvcnlfaWQnPT4kdGhpc1snaWQnXSwnY2F0ZWdvcnlfbmFtZSc9PiR0aGlzWyduYW1lJ10sJ2NhdGVnb3J5X29yZGVyJz0+JHRoaXNbJ29yZGVyJ10pKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X2RpcnR5ICkgcmV0dXJuOwogICAgICAgICR0aGlzLT52YWxpZGF0ZSgpOwogICAgICAgIGlmKCAkdGhpc1snaWQnXSA9PSAwICkgewogICAgICAgICAgICAkdGhpcy0+X2luc2VydCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5fdXBkYXRlKCk7CiAgICAgICAgfQogICAgICAgIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXMgPSBudWxsOwogICAgICAgICR0aGlzLT5fZGlydHkgPSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJmxvYWQoJGNhdGVnb3J5X2lkKQogICAgewogICAgICAgICRvYmogPSBudWxsOwogICAgICAgICRjYXRlZ29yaWVzID0gc2VsZjo6Z2V0X2NhdGVnb3JpZXMoVFJVRSk7CiAgICAgICAgaWYoICFpc3NldCgkY2F0ZWdvcmllc1skY2F0ZWdvcnlfaWRdKSApIHJldHVybiAkb2JqOwoKICAgICAgICAkcm93ID0gJGNhdGVnb3JpZXNbJGNhdGVnb3J5X2lkXTsKICAgICAgICAkb2JqID0gbmV3IHNlbGYoKTsKICAgICAgICAkb2JqLT5fZGF0YVsnaWQnXSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107CiAgICAgICAgJG9iai0+X2RhdGFbJ25hbWUnXSA9ICRyb3dbJ2NhdGVnb3J5X25hbWUnXTsKICAgICAgICAkb2JqLT5fZGF0YVsnYmdjb2xvciddID0gJHJvd1snY2F0ZWdvcnlfYmdjb2xvciddOwogICAgICAgICRvYmotPl9kYXRhWydmZ2NvbG9yJ10gPSAkcm93WydjYXRlZ29yeV9mZ2NvbG9yJ107CiAgICAgICAgJG9iai0+X2RhdGFbJ29yZGVyJ10gPSAkcm93WydjYXRlZ29yeV9vcmRlciddOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3JpZXMoJGJ5X2lkID0gRkFMU0UpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheShzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzKSApIHsKICAgICAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAgICAgc2VsZjo6JF9jYWNoZWRfY2F0ZWdvcmllcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKICAgICAgICAgICAgJGNhdGVnb3JpZXNfdGFibGVfbmFtZSA9ICRtb2QtPmNhdGVnb3JpZXNfdGFibGVfbmFtZTsKICAgICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICRtb2QtPmNhdGVnb3JpZXNfdGFibGVfbmFtZSBPUkRFUiBCWSBjYXRlZ29yeV9vcmRlciwgY2F0ZWdvcnlfbmFtZSI7CgogICAgICAgICAgICBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzID0gJGRiLT5HZXRBcnJheSgkc3FsKTsKICAgICAgICB9CgogICAgICAgIGlmKCAkYnlfaWQgKSByZXR1cm4gXGNnZV9hcnJheTo6dG9faGFzaChzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzLCdjYXRlZ29yeV9pZCcpOwogICAgICAgIHJldHVybiBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzOwogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGV0ZSgkY2F0aWQpCiAgICB7CiAgICAgICAgJGNhdGlkID0gKGludCkkY2F0aWQ7CgogICAgICAgICRjYXQgPSBzZWxmOjpsb2FkKCRjYXRpZCk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CgogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfb3JkZXIgPSBjYXRlZ29yeV9vcmRlciAtIDEgV0hFUkUgY2F0ZWdvcnlfb3JkZXIgPiA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRjYXRbJ29yZGVyJ10pKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJG1vZC0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkY2F0aWQpKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRjYXRpZCkpOwoKICAgICAgICAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcsYXJyYXkoJ2NhdGVnb3J5X2lkJz0+JGNhdGlkLCdjYXRlZ29yeV9uYW1lJz0+JGNhdFsnbmFtZSddLCdjYXRlZ29yeV9vcmRlcic9PiRjYXRbJ29yZGVyJ10pKTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgcalendar_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmZpbmFsIGNsYXNzIGNnY2FsZW5kYXJfdXRpbHMKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogICAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9jYWxlX2RhdGVzKCkKICAgIHsKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICAkb3V0Wydtb250aE5hbWVzJ10gPSBhcnJheSgpOwogICAgICAgICRvdXRbJ21vbnRoTmFtZXNTaG9ydCddID0gYXJyYXkoKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCAxMjsgJGkrKyApIHsKICAgICAgICAgICAgJG91dFsnbW9udGhOYW1lcyddW10gPSBzdHJmdGltZSgnJUInLG1rdGltZSgxLDAsMCwkaSsxLDEsMjAwMCkpOwogICAgICAgICAgICAkb3V0Wydtb250aE5hbWVzU2hvcnQnXVtdID0gc3RyZnRpbWUoJyViJyxta3RpbWUoMSwwLDAsJGkrMSwxLDIwMDApKTsKICAgICAgICB9CgogICAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRmbXQgPSAnbGFzdCBzdW5kYXkgKyAlZCBkYXlzJzsKICAgICAgICAkb3V0WydkYXlOYW1lcyddID0gYXJyYXkoKTsKICAgICAgICAkb3V0WydkYXlOYW1lc1Nob3J0J10gPSBhcnJheSgpOwogICAgICAgICRjdXJkYXkgPSAoaW50KWRhdGUoJ3cnKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCA3OyAkaSsrICkgewogICAgICAgICAgICAkb3V0WydkYXlOYW1lcyddW10gPSBzdHJmdGltZSgnJUEnLHN0cnRvdGltZShzcHJpbnRmKCRmbXQsJGkpKSk7CiAgICAgICAgICAgICRvdXRbJ2RheU5hbWVzU2hvcnQnXVtdID0gc3RyZnRpbWUoJyVhJyxzdHJ0b3RpbWUoc3ByaW50ZigkZm10LCRpKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIGdldF91aWRfYnlfdXNlcm5hbWUoJHVzZXJuYW1lLCRjaGVja19hZG1pbiA9IGZhbHNlKQogICAgewogICAgICAgIGlmKCAkY2hlY2tfYWRtaW4gKSB7CiAgICAgICAgICAgICR1c2Vyb3BzID0gY21zbXMoKS0+R2V0VXNlck9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHVzZXIgPSAkdXNlcm9wcy0+TG9hZFVzZXJCeVVzZXJuYW1lKCR1c2VybmFtZSk7CiAgICAgICAgICAgIGlmKCBpc19vYmplY3QoJHVzZXIpICkgcmV0dXJuICR1c2VyLT5pZCAqIC0xIC0gMTAwOwogICAgICAgIH0KCiAgICAgICAgJGZldSA9IGNnZV91dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgICAgIGlmKCAhJGZldSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgJGluZm8gPSAkZmV1LT5HZXRVc2VySW5mb0J5TmFtZSgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGluZm8pICkgcmV0dXJuIEZBTFNFOwogICAgICAgIGlmKCAkaW5mb1swXSA9PSBGQUxTRSApIHJldHVybiBGQUxTRTsKICAgICAgICByZXR1cm4gJGluZm9bMV1bJ2lkJ107CiAgICB9CgoKICAgIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJuYW1lKCR1aWQpCiAgICB7CiAgICAgICAgaWYoICR1aWQgPCAtMTAwICkgewogICAgICAgICAgICAvLyBhbiBhZG1pbiB1c2VyCiAgICAgICAgICAgICR1c2Vyb3BzID0gY21zbXMoKS0+R2V0VXNlck9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHVzZXIgPSAkdXNlcm9wcy0+TG9hZFVzZXJCeUlEKCR1aWQgKiAtMSAtIDEwMCk7CiAgICAgICAgICAgIGlmKCAhJHVzZXIgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIHJldHVybiAkdXNlci0+dXNlcm5hbWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR1aWQgPiAwICkgewogICAgICAgICAgICAkZmV1ID0gY2dlX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICAgICAgICAgIGlmKCAhJGZldSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgICAgICR1c2VyaW5mbyA9ICRmZXUtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR1c2VyaW5mbykgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICAgICBpZiggJHVzZXJpbmZvWzBdICE9IFRSVUUgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIHJldHVybiAkdXNlcmluZm9bMV1bJ3VzZXJuYW1lJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHBhbmRfZXZlbnRzKCRldmVudGlkcywkcmV0dXJuaWQsJHBhcmFtZXRlcnMsJGxpbWl0ID0gMTAwMDAsJHN0YXJ0b2Zmc2V0ID0gMCkKICAgIHsKICAgICAgICBpZiggIWlzX2FycmF5KCRldmVudGlkcykgfHwgY291bnQoJGV2ZW50aWRzKSA8IDEgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICRtb2R1bGUgPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRnQ21zID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAkZGIgPSAkZ0Ntcy0+R2V0RGIoKTsKCiAgICAgICAgJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lOwogICAgICAgICRjYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgICAgICAgJGV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lID0gJG1vZHVsZS0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWU7CgogICAgICAgICR1c2Vyb3BzID0gJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCk7CiAgICAgICAgJHRtcCA9ICR1c2Vyb3BzLT5Mb2FkVXNlcnMoKTsKICAgICAgICAkdXNlcnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCR0bXAgYXMgJG9uZXVzZXIpIHsKICAgICAgICAgICAgJHVzZXJzWyRvbmV1c2VyLT5pZF0gPSAkb25ldXNlcjsKICAgICAgICB9CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuJG1vZHVsZS0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCBJTiAoJy5pbXBsb2RlKCcsJywkZXZlbnRpZHMpLicpCiAgICAgICAgICAgICAgICAgIE9SREVSIEJZIGV2ZW50X2RhdGVfc3RhcnQgQVNDJzsKICAgICAgICAkcnMgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeSwkbGltaXQsJHN0YXJ0b2Zmc2V0KTsKICAgICAgICAkZmV1X3VzZXJzID0gYXJyYXkoKTsKICAgICAgICB3aGlsZSggISRycy0+RU9GKCkgKSB7CiAgICAgICAgICAgICRyb3cgPSAkcnMtPmZpZWxkczsKICAgICAgICAgICAgJHVpZCA9ICRyb3dbJ2V2ZW50X2NyZWF0ZWRfYnknXTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICYmICFpbl9hcnJheSgkdWlkLCRmZXVfdXNlcnMpICkgJGZldV91c2Vyc1tdID0gJHVpZDsKICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KICAgICAgICAkcnMtPk1vdmVGaXJzdCgpOwoKICAgICAgICAkZXZlbnRzID0gYXJyYXkoKTsKICAgICAgICB3aGlsZSgkcnMgJiYgKCRyb3cgPSAkcnMtPkZldGNoUm93KCkpKSB7CiAgICAgICAgICAgICR0aXRsZVNFTyA9IG11bmdlX3N0cmluZ190b191cmwoJHJvd1snZXZlbnRfdGl0bGUnXSk7CiAgICAgICAgICAgICRkZXN0cGFnZSA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnLC0xKTsKICAgICAgICAgICAgJGRlc3RwYWdlID0gKCRkZXN0cGFnZT4wKSA/ICRkZXN0cGFnZSA6ICRyZXR1cm5pZDsKICAgICAgICAgICAgLy8kZGVzdHBhZ2UgPSRkZXRhaWxwYWdlIT0nJz8kZGV0YWlscGFnZTokZGVzdHBhZ2U7CiAgICAgICAgICAgICRwcmVmaXggPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4Jyk7IGlmKCAhJHByZWZpeCApICRwcmVmaXggPSAnY2FsZW5kYXInOwogICAgICAgICAgICAkcHJldHR5dXJsID0gc3ByaW50ZigkcHJlZml4LiIvJWQvJWQtJXMiLCAkZGVzdHBhZ2UsICRyb3dbJ2V2ZW50X2lkJ10sICR0aXRsZVNFTyk7CiAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRwYXJtc1snZXZlbnRfaWQnXSA9ICRyb3dbJ2V2ZW50X2lkJ107CiAgICAgICAgICAgICRwYXJtc1snZGlzcGxheSddID0gJ2V2ZW50JzsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbWV0ZXJzWydldmVudHRlbXBsYXRlJ10pICkgJHBhcm1zWydldmVudHRlbXBsYXRlJ10gPSAkcGFyYW1ldGVyc1snZXZlbnR0ZW1wbGF0ZSddOwogICAgICAgICAgICAkdXJsID0gJG1vZHVsZS0+Q3JlYXRlTGluaygnY250bnQwMScsICdkZWZhdWx0JywkZGVzdHBhZ2UsICRjb250ZW50cz0nJywgJHBhcm1zLCAnJywgdHJ1ZSwgJycsICcnLCAnJywgJHByZXR0eXVybCk7CiAgICAgICAgICAgICRyb3dbJ3VybCddID0gJHVybDsKICAgICAgICAgICAgJHJvd1snYXV0aG9yJ10gPSAkdXNlcnNbJHJvd1snZXZlbnRfY3JlYXRlZF9ieSddXS0+dXNlcm5hbWU7CiAgICAgICAgICAgICRyb3dbJ2F1dGhvcm5hbWUnXSA9ICR1c2Vyc1skcm93WydldmVudF9jcmVhdGVkX2J5J11dLT5maXJzdG5hbWUuJyAnLiR1c2Vyc1skcm93WydldmVudF9jcmVhdGVkX2J5J11dLT5sYXN0bmFtZTsKCiAgICAgICAgICAgIC8vIEJlZ2luIGNhdGVnb3JpZXMgcmV0cmlldmFsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIEJ1aWxkIHRoZSBzcWwgdG8gcmV0cmlldmUgdGhlIGNhdGVnb3JpZXMgZm9yIHRoaXMgZXZlbnQuCiAgICAgICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBjYXRlZ29yeV9uYW1lIEZST00gJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUKCSAgICAgICAgSU5ORVIgSk9JTiAkY2F0ZWdvcmllc190YWJsZV9uYW1lIE9OICAkZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS5jYXRlZ29yeV9pZCA9ICRjYXRlZ29yaWVzX3RhYmxlX25hbWUuY2F0ZWdvcnlfaWQKCSAgICAgICAgV0hFUkUgZXZlbnRfaWQgPSA/IjsKICAgICAgICAgICAgICAgICRjcnMgPSAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkcm93WydldmVudF9pZCddKSk7IC8vIEdldCB0aGUgZmllbGQgdmFsdWVzCiAgICAgICAgICAgICAgICAkY2F0ZWdvcmllcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc190ZW1wID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGlmICgkY3JzKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGFyZSByZXN1bHRzIGFuZCBhc3NpZ24gdG8gdGhlICRjYXRlZ29yaWVzIGFycmF5CiAgICAgICAgICAgICAgICAgICAgJGNhdGVnb3JpZXNfdGVtcCA9ICRjcnMtPkdldEFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkY2F0ZWdvcmllc190ZW1wIGFzICRjYXRlZ29yeSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcnlfbmFtZSA9ICRjYXRlZ29yeVsnY2F0ZWdvcnlfbmFtZSddOwogICAgICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc1skY2F0ZWdvcnlfbmFtZV0gPSAnMSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQXR0YWNoIHRoZSBjdXN0b20gZmllbGRzIHRvIHRoZSBldmVudAogICAgICAgICAgICAgICAgJHJvd1snY2F0ZWdvcmllcyddID0gJGNhdGVnb3JpZXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRW5kIGNhdGVnb3JpZXMgcmV0cmlldmFsCgogICAgICAgICAgICAvLyBCZWdpbiBjdXN0b20gZmllbGRzIHJldHJpZXZhbAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBCdWlsZCB0aGUgc3FsIHRvIHJldHJpZXZlIHRoZSBmaWVsZCB2YWx1ZXMgZm9yIHRoaXMgZXZlbnQuCiAgICAgICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBmaWVsZF9uYW1lLGZpZWxkX3ZhbHVlIEZST00gJGV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lIFdIRVJFIGV2ZW50X2lkID0gPyI7CiAgICAgICAgICAgICAgICAkZnJzID0gJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJHJvd1snZXZlbnRfaWQnXSkpOyAvLyBHZXQgdGhlIGZpZWxkIHZhbHVlcwogICAgICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkZmllbGRzX3RlbXAgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgaWYgKCRmcnMpIHsKICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgYXJlIHJlc3VsdHMgYW5kIGFzc2lnbiB0byB0aGUgJGZpZWxkcyBhcnJheQogICAgICAgICAgICAgICAgICAgICRmaWVsZHNfdGVtcCA9ICRmcnMtPkdldEFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkZmllbGRzX3RlbXAgYXMgJGZpZWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lID0gJGZpZWxkWydmaWVsZF9uYW1lJ107CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF92YWx1ZSA9ICRmaWVsZFsnZmllbGRfdmFsdWUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkc1skZmllbGRfbmFtZV0gPSAkZmllbGRfdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQXR0YWNoIHRoZSBjdXN0b20gZmllbGRzIHRvIHRoZSBldmVudAogICAgICAgICAgICAgICAgJHJvd1snZmllbGRzJ10gPSAkZmllbGRzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEVuZCBjdXN0b20gZmllbGRzIHJldHJpZXZhbAoKICAgICAgICAgICAgLy8gYW5kIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBjb21wbGV0ZWQsIGV4cGFuZGVkIGV2ZW50cy4KICAgICAgICAgICAgJGV2ZW50c1tdID0gJHJvdzsKICAgICAgICB9CiAgICAgICAgaWYoICRycyApICRycy0+Q2xvc2UoKTsKCiAgICAgICAgcmV0dXJuICRldmVudHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXh0X3ltZCgkZGF0ZV9zdHIpCiAgICB7CiAgICAgICAgbGlzdCgkeXksJG1tLCRkZCkgPSBzZWxmOjp0b195bWQoJGRhdGVfc3RyKTsKICAgICAgICBpZiggJGRkID09ICcnICkgewogICAgICAgICAgICBpZiggJG1tID09ICcnICkgewogICAgICAgICAgICAgICAgLy8gbmV4dCB5ZWFyCiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkkeXkrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIG5leHQgbW9udGgKICAgICAgICAgICAgICAgICRtbSA9IChpbnQpJG1tKzE7CiAgICAgICAgICAgICAgICBpZiggJG1tID09IDEzICkgewogICAgICAgICAgICAgICAgICAgICR5eSA9IChpbnQpJHl5KzE7CiAgICAgICAgICAgICAgICAgICAgJG1tID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAiJHl5LSRtbSI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIG5leHQgZGF5LgogICAgICAgICAgICAkZGQgPSAoaW50KSRkZCsxOwogICAgICAgICAgICAkdXQgPSBzdHJ0b3RpbWUoJGRhdGVfc3RyKTsKICAgICAgICAgICAgJGxhc3RkYXkgPSBkYXRlKCd0JywkdXQpOwogICAgICAgICAgICBpZiggJGRkID4gJGxhc3RkYXkgKSB7CiAgICAgICAgICAgICAgICAkZGQgPSAxOwogICAgICAgICAgICAgICAgJG1tID0gKGludCkkbW0rMTsKICAgICAgICAgICAgICAgIGlmKCAkbW0gPT0gMTMgKSB7CiAgICAgICAgICAgICAgICAgICAgJHl5ID0gKGludCkkeXkrMTsKICAgICAgICAgICAgICAgICAgICAkbW0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAiJHl5LSRtbS0kZGQiOwogICAgICAgIH0KICAgIH0KCgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmV2X3ltZCgkZGF0ZV9zdHIpCiAgICB7CiAgICAgICAgbGlzdCgkeXksJG1tLCRkZCkgPSBzZWxmOjp0b195bWQoJGRhdGVfc3RyKTsKICAgICAgICBpZiggJGRkID09ICcnICkgewogICAgICAgICAgICBpZiggJG1tID09ICcnICkgewogICAgICAgICAgICAgICAgLy8gcHJldiB5ZWFyCiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkkeXktMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIHByZXYgbW9udGgKICAgICAgICAgICAgICAgICRtbSA9IChpbnQpJG1tLTE7CiAgICAgICAgICAgICAgICBpZiggJG1tIDwgMSApIHsKICAgICAgICAgICAgICAgICAgICAvLyB3cmFwcGluZyB5ZWFycwogICAgICAgICAgICAgICAgICAgICR5eSA9IChpbnQpJHl5LTE7CiAgICAgICAgICAgICAgICAgICAgJG1tID0gMTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gIiR5eS0kbW0iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBwcmV2IGRheS4KICAgICAgICAgICAgJGRkID0gKGludCkkZGQtMTsKICAgICAgICAgICAgaWYoICRkZCA8IDEgKSB7CiAgICAgICAgICAgICAgICAkbW0gPSAoaW50KSRtbS0xOwogICAgICAgICAgICAgICAgaWYoICRtbSA8IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd3JhcHBpbmcgeWVhcnMKICAgICAgICAgICAgICAgICAgICAkeXkgPSAoaW50KSR5eS0xOwogICAgICAgICAgICAgICAgICAgICRtbSA9IDEyOwogICAgICAgICAgICAgICAgICAgICRkZCA9IDMxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGRkID0gZGF0ZSgndCcsc3RydG90aW1lKCIkeXktJG1tLTIiKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICIkeXktJG1tLSRkZCI7CiAgICAgICAgfQogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvX3ltZCgkc3RyKQogICAgewogICAgICAgICR0bXAgPSBleHBsb2RlKCcgJywkc3RyKTsKICAgICAgICAkdG1wID0gJHRtcFswXTsKICAgICAgICAkdG1wID0gZXhwbG9kZSgnLScsJHRtcCk7CiAgICAgICAgZm9yKCAkaSA9IGNvdW50KCR0bXApOyAkaSA8IDM7ICRpKysgKSB7CiAgICAgICAgICAgICR0bXBbJGldID0gJyc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdG1wOwogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9xdWVyeSgkc3RhcnQsJGVuZCwkY2F0ZWdvcnksJHJldmVyc2UsJGxpbWl0ID0gbnVsbCkKICAgIHsKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDR0NhbGVuZGFyJyk7CiAgICAgICAgJHNvcnRpbmcgPSAoJHJldmVyc2UgPT0gdHJ1ZSA/ICdERVNDJyA6ICdBU0MnKTsKICAgICAgICAkZXZlbnRzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5ldmVudHNfdGFibGVfbmFtZTsKICAgICAgICAkY2F0ZWdvcmllc190YWJsZV9uYW1lID0gJG1vZHVsZS0+Y2F0ZWdvcmllc190YWJsZV9uYW1lOwogICAgICAgICRldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lID0gJG1vZHVsZS0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZTsKCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICBpZiggaXNfaW50KCRzdGFydCkgKSAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRzdGFydCk7CiAgICAgICAgaWYoIGlzX2ludCgkZW5kKSApICRlbmQgPSAkZGItPkRiVGltZVN0YW1wKCRlbmQpOwoKICAgICAgICAkc3FsID0gIlNFTEVDVCBESVNUSU5DVCBFLmV2ZW50X2lkIEZST00gJGV2ZW50c190YWJsZV9uYW1lIEVcbiI7CgogICAgICAgIGlmKCAkY2F0ZWdvcnkgKSB7CiAgICAgICAgICAgICRzcWwgLj0gIklOTkVSIEpPSU4gJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgRUMgT04gRS5ldmVudF9pZCA9IEVDLmV2ZW50X2lkCgkgICAgICAgSU5ORVIgSk9JTiAkY2F0ZWdvcmllc190YWJsZV9uYW1lIEMgT04gRUMuY2F0ZWdvcnlfaWQgPSBDLmNhdGVnb3J5X2lkIjsKICAgICAgICB9CgogICAgICAgIGlmKCAkc3RhcnQgKSB7CiAgICAgICAgICAgIGlmKCAkZW5kICkgewogICAgICAgICAgICAgICAgLy8gc3RhcnQgZGF0ZSBhbmQgZW5kIGRhdGUKICAgICAgICAgICAgICAgICRzcWwgLj0gIiBXSEVSRSAoRS5ldmVudF9kYXRlX3N0YXJ0IEJFVFdFRU4gJHN0YXJ0IGFuZCAkZW5kKSBPUiAoRS5ldmVudF9kYXRlX2VuZCBCRVRXRUVOICRzdGFydCBhbmQgJGVuZCkiOwogICAgICAgICAgICAgICAgJHNxbCAuPSAiIE9SIChFLmV2ZW50X2RhdGVfc3RhcnQgPD0gJHN0YXJ0IEFORCBFLmV2ZW50X2RhdGVfZW5kID4gJGVuZCkiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gc3RhcnQgZGF0ZSwgYnV0IG5vIGVuZCBkYXRlCiAgICAgICAgICAgICAgICAvLyBwcm9sbHkgYW4gdXBjb21taW5nIGxpc3QuCiAgICAgICAgICAgICAgICAkc3FsIC49ICJXSEVSRSAoRS5ldmVudF9kYXRlX3N0YXJ0ID49ICRzdGFydCkgT1IgKEUuZXZlbnRfZGF0ZV9lbmQgPiAkc3RhcnQpIjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiggJGVuZCApIHsKICAgICAgICAgICAgLy8gZW5kIGRhdGUsIGJ1dCBubyBzdGFydCBkYXRlLgogICAgICAgICAgICAvLyBwcm9sbHkgYSBwYXN0IGxpc3QKICAgICAgICAgICAgJHNxbCAuPSAiIFdIRVJFIChFLmV2ZW50X2RhdGVfc3RhcnQgPCAkZW5kKSBPUiAoRS5ldmVudF9kYXRlX2VuZCA8ICRlbmQgQU5EIEUuZXZlbnRfZGF0ZV9lbmQgSVMgTk9UIE5VTEwpIjsKICAgICAgICB9CgogICAgICAgIGlmKCAkY2F0ZWdvcnkgKSB7CiAgICAgICAgICAgICRjYXRzID0gZXhwbG9kZSgnLCcsICRjYXRlZ29yeSk7CiAgICAgICAgICAgICR0bXAgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCRjYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgICAgICRjYXQgPSB0cmltKCRjYXQpOwogICAgICAgICAgICAgICAgaWYoIHN0cnBvcygnKicsJGNhdCkgIT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgICAgICRjYXQgPSBzdHJfcmVwbGFjZSgnKicsJyUnLCRjYXQpOwogICAgICAgICAgICAgICAgICAgICR0bXBbXSA9ICJDLmNhdGVnb3J5X25hbWUgTElLRSAnJGNhdCciOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiggc3RycG9zKCclJywkY2F0KSAhPT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcFtdID0gIkMuY2F0ZWdvcnlfbmFtZSBMSUtFICckY2F0JyI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKCBpc19udW1lcmljKCRjYXQpICkgewogICAgICAgICAgICAgICAgICAgICR0bXBbXSA9ICdDLmNhdGVnb3J5X2lkID0gJy4oaW50KSRjYXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdG1wW10gPSAiQy5jYXRlZ29yeV9uYW1lID0gJyRjYXQnIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkc3FsIC49ICcgQU5EICgnLmltcGxvZGUoJyBPUiAnLCR0bXApLicpJzsKICAgICAgICB9CiAgICAgICAgJHNxbCAuPSAiIE9SREVSIEJZIEUuZXZlbnRfZGF0ZV9zdGFydCAkc29ydGluZyI7CiAgICAgICAgaWYoICRsaW1pdCApICRzcWwgLj0gJyBMSU1JVCAnLm1heCgxLChpbnQpICRsaW1pdCk7CiAgICAgICAgcmV0dXJuICRzcWw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVfZXZlbnQoJGV2ZW50X2lkKQogICAgewogICAgICAgICRldmVudF9pZCA9IChpbnQpJGV2ZW50X2lkOwogICAgICAgICRkYiA9IENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldERiKCk7CiAgICAgICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CiAgICAgICAgJGV2ZW50c190YWJsZV9uYW1lID0gJG1vZC0+ZXZlbnRzX3RhYmxlX25hbWU7CiAgICAgICAgJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lOwogICAgICAgICRldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZSA9ICRtb2QtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lOwogICAgICAgIGlmKCAkZXZlbnRfaWQgPCAxICkgcmV0dXJuIEZBTFNFOwoKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLiRldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyBPUiBldmVudF9wYXJlbnRfaWQgPSA/IE9SREVSIEJZIGV2ZW50X3BhcmVudF9pZCBERVNDJzsKICAgICAgICAkcm93cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LGFycmF5KCRldmVudF9pZCwkZXZlbnRfaWQpKTsKCiAgICAgICAgaWYoIENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApIHsKICAgICAgICAgICAgLy8gdXNlcmlkIGhhcyB0byBtYXRjaCB0aGUgb3duZXIKICAgICAgICAgICAgJGZldSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgICAgICAgICBpZiggISRmZXUgKSByZXR1cm47CiAgICAgICAgICAgICR1c2VyaWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CgogICAgICAgICAgICBmb3JlYWNoKCAkcm93cyBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgaWYoICEkbW9kLT5IYXZlTWFuYWdlUmlnaHQoKSAmJiAkcm93WydldmVudF9jcmVhdGVkX2J5J10gIT0gJHVzZXJpZCApIHsKICAgICAgICAgICAgICAgICAgICAvLyBvb3BzLCB3ZSBjYW4ndCBkZWxldGUgYW55dGhpbmcKICAgICAgICAgICAgICAgICAgICBhdWRpdCgkZXZlbnRfaWQsJG1vZC0+R2V0TmFtZSgpLCJGRVUgdXNlciAkdXNlcmlkIGF0dGVtcHRlZCB0byBkZWxldGUgYW4gZXZlbnQgb3duZWQgYnkgc29tZWJvZHkgZWxzZSIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gYWRtaW4gcmVxdWVzdC4KICAgICAgICAgICAgaWYoICEkbW9kLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicpICkgewogICAgICAgICAgICAgICAgLy8gdXNlcmlkIGhhcyB0byBtYXRjaCB0aGUgb3duZXIuLiBhbmQgd2UgaGF2ZSB0byBoYXZlIHBlcm1pc3Npb24gdG8gZWRpdCBteSBldmVudHMKICAgICAgICAgICAgICAgIGlmKCAhJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCdFZGl0IE15IENhbGVuZGFyIEV2ZW50cycpICkgewogICAgICAgICAgICAgICAgICAgICR1c2VyaWQgPSBnZXRfdXNlcmlkKEZBTFNFKSAqIC0xIC0gMTAwOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICRyb3dzIGFzICRyb3cgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkcm93WydldmVudF9jcmVhdGVkX2J5J10gIT0gJHVzZXJpZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9vcHMuIHdlIGNhbid0IGRlbGV0ZSB0aGlzIGV2ZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaXQoJGV2ZW50X2lkLCRtb2QtPkdldE5hbWUoKSwiQWRtaW4gdXNlciAkdXNlcmlkIGF0dGVtcHRlZCB0byBkZWxldGUgYW4gZXZlbnQgb3duZWQgYnkgc29tZWJvZHkgZWxzZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkxID0gJ0RFTEVURSBGUk9NICcuJGV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAkcXVlcnkyID0gJ0RFTEVURSBGUk9NICcuJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgICAgICRxdWVyeTMgPSAnREVMRVRFIEZST00gJy4kZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9wYXJlbnRfaWQgPSA/JzsKICAgICAgICAkcXVlcnk0ID0gJ0RFTEVURSBGUk9NICcuJGV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICBmb3JlYWNoKCAkcm93cyBhcyAkb25lICkgewogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSxhcnJheSgkb25lWydldmVudF9pZCddKSk7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRvbmVbJ2V2ZW50X2lkJ10pKTsKICAgICAgICB9CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeTEsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeTMsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeTQsYXJyYXkoJGV2ZW50X2lkKSk7CgogICAgICAgICRtb2QtPlNlbmRFdmVudCgnRXZlbnREZWxldGVkJyxhcnJheSgnZXZlbnRfaWQnPT4kZXZlbnRfaWQpKTsKCiAgICAgICAgJGNnY2FsID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDR0NhbGVuZGFyJyk7CiAgICAgICAgJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X3NlYXJjaF9tb2R1bGUoKTsKICAgICAgICBpZiggJHNlYXJjaCApICRzZWFyY2gtPkRlbGV0ZVdvcmRzKCRjZ2NhbC0+R2V0TmFtZSgpLCRldmVudF9pZCk7CgogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VwbG9hZF9sb2NhdGlvbigpCiAgICB7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJG9yaWdkaXIgPSAkZGlyID0gdHJpbSgkbW9kLT5HZXRQcmVmZXJlbmNlKCd1cGxvYWRkaXJlY3RvcnknKSk7CiAgICAgICAgaWYoICEkb3JpZ2RpciApICRvcmlnZGlyID0gJGRpciA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddOwogICAgICAgIGlmKCAhaXNfZGlyKCRkaXIpICkgJGRpciA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10sJG9yaWdkaXIpOwogICAgICAgIGlmKCAhaXNfZGlyKCRkaXIpICkgJGRpciA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sJG9yaWdkaXIpOwogICAgICAgIGlmKCBpc19kaXIoJGRpcikgKSB7CiAgICAgICAgICAgICRycDEgPSByZWFscGF0aCgkY29uZmlnWydyb290X3BhdGgnXSk7CiAgICAgICAgICAgICRycDIgPSByZWFscGF0aCgkZGlyKTsKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJHJwMiwkcnAxKSApIHsKICAgICAgICAgICAgICAgICR1cmwgPSBzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3BhdGgnXSwkY29uZmlnWydyb290X3VybCddLCRkaXIpOwogICAgICAgICAgICAgICAgcmV0dXJuICR1cmw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCRwYXJhbW5hbWUsJHR5cGVuYW1lKQogICAgewogICAgICAgICRwYXJhbW5hbWUgPSAoc3RyaW5nKSAkcGFyYW1uYW1lOwogICAgICAgICR0eXBlbmFtZSA9IChzdHJpbmcpICR0eXBlbmFtZTsKICAgICAgICBpZiggIWlzX2FycmF5KCRwYXJhbXMpIHx8ICEoJHRoZXRlbXBsYXRlID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCRwYXJhbW5hbWUpKSApIHsKICAgICAgICAgICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgkdHlwZW5hbWUpOwogICAgICAgICAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsKICAgICAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ05vIGRlZmF1bHQgJy4kdHlwZW5hbWUuJyB0ZW1wbGF0ZSBmb3VuZCcpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGV0ZW1wbGF0ZSA9ICR0cGwtPmdldF9uYW1lKCk7CiAgICAgICAgICAgIHVuc2V0KCR0cGwpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoZXRlbXBsYXRlOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgc_event_loader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpmaW5hbCBjbGFzcyBjZ2NfZXZlbnRfbG9hZGVyCnsKICAgIHByaXZhdGUgJF9pZGxpc3Q7CiAgICBwcml2YXRlICRfZXZlbnR0ZW1wbGF0ZTsKICAgIHByaXZhdGUgJF9ldmVudHMgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkX2ZpZWxkcyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfY2F0ZWdvcmllcyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfZGVzdHBhZ2U7CiAgICBwcml2YXRlICRfdXJsX3ByZWZpeCA9ICdjYWxlbmRhcic7CiAgICBwcml2YXRlICRfcmV2ZXJzZSA9IEZBTFNFOwogICAgcHJpdmF0ZSAkX2FjdGlvbmlkOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYWN0aW9uaWQsJGlkbGlzdCwkZGVzdHBhZ2UsJHJldmVyc2UpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCRpZGxpc3QpICkgewogICAgICAgICAgICAkdGhpcy0+X2lkbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICRpZGxpc3QgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgICAgICAgICAgICBpZiggJG9uZSA8IDEgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICR0aGlzLT5faWRsaXN0W10gPSAkb25lOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5faWRsaXN0ID0gYXJyYXlfdW5pcXVlKCR0aGlzLT5faWRsaXN0KTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggKGludCkkaWRsaXN0ID4gMCApIHsKICAgICAgICAgICAgJHRoaXMtPl9pZGxpc3QgPSBhcnJheSgoaW50KSRpZGxpc3QpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X2FjdGlvbmlkID0gJGFjdGlvbmlkOwogICAgICAgICR0aGlzLT5fcmV2ZXJzZSA9IChib29sKSRyZXZlcnNlOwogICAgICAgICR0aGlzLT5fZGVzdHBhZ2UgPSAkZGVzdHBhZ2U7CiAgICAgICAgJHRtcCA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUiktPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKICAgICAgICBpZiggJHRtcCApICR0aGlzLT5fdXJsX3ByZWZpeCA9ICR0bXA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9ldmVudF90ZW1wbGF0ZSgkZXZlbnR0ZW1wbGF0ZSkKICAgIHsKICAgICAgICAkdGhpcy0+X2V2ZW50dGVtcGxhdGUgPSAkZXZlbnR0ZW1wbGF0ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlb3JkZXJfY3VzdG9tZmllbGRzKCRjdXN0b21maWVsZHMpCiAgICB7CiAgICAgICAgJGZpZWxkcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDYWxlbmRhcicpLT5HZXRGaWVsZHMoKTsKICAgICAgICAkZmllbGRzID0gY2dlX2FycmF5Ojp0b19oYXNoKCRmaWVsZHMsJ2ZpZWxkX25hbWUnKTsKCiAgICAgICAgJGZ1bmMgPSBmdW5jdGlvbigkYSwkYikgdXNlICgkZmllbGRzKSB7CiAgICAgICAgICAgIGlmKCAkYVsnZXZlbnRfaWQnXSA8ICRiWydldmVudF9pZCddICkgcmV0dXJuIC0xOwogICAgICAgICAgICBpZiggJGFbJ2V2ZW50X2lkJ10gPiAkYlsnZXZlbnRfaWQnXSApIHJldHVybiAxOwogICAgICAgICAgICAkYWEgPSAkZmllbGRzWyRhWydmaWVsZF9uYW1lJ11dOwogICAgICAgICAgICAkYWEgPSAkZmllbGRzWyRiWydmaWVsZF9uYW1lJ11dOwogICAgICAgICAgICBpZiggJGFhWydmaWVsZF9vcmRlciddIDwgJGJiWydmaWVsZF9vcmRlciddICkgcmV0dXJuIC0xOwogICAgICAgICAgICBpZiggJGFhWydmaWVsZF9vcmRlciddID4gJGJiWydmaWVsZF9vcmRlciddICkgcmV0dXJuIDE7CiAgICAgICAgICAgIC8vIG5vdyBjb21wYXJlIGJ5IGZpZWxkIHZhbHVlLgogICAgICAgICAgICBpZiggJGFbJ2ZpZWxkX3ZhbHVlJ10gPCAkYlsnZmllbGRfdmFsdWUnXSApIHJldHVybiAtMTsKICAgICAgICAgICAgaWYoICRhWydmaWVsZF92YWx1ZSddID4gJGJbJ2ZpZWxkX3ZhbHVlJ10gKSByZXR1cm4gLTE7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH07CgogICAgICAgIHVzb3J0KCRjdXN0b21maWVsZHMsJGZ1bmMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZXZlbnRzKCkKICAgIHsKICAgICAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAgICAgJHNvcnRpbmcgPSAoJHRoaXMtPl9yZXZlcnNlKSA/ICdERVNDJyA6ICdBU0MnOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2djYWxlbmRhcl9ldmVudHMgV0hFUkUgZXZlbnRfaWQgSU4gKCc7CiAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCR0aGlzLT5faWRsaXN0KS4nKSc7CiAgICAgICAgJHF1ZXJ5IC49ICIgT1JERVIgQlkgZXZlbnRfZGF0ZV9zdGFydCAkc29ydGluZyI7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgLy8gZ2V0IHRoZSBwYXJlbnQgaWRzIGFuZCBldmVudHMuCiAgICAgICAgJGV2ZW50cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAkcGFyZW50X2lkcyA9ICR0aGlzLT5faWRsaXN0OwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGV2ZW50cykgfHwgY291bnQoJGV2ZW50cykgPT0gMCApIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCggJGV2ZW50cyBhcyAkcm93ICkgewogICAgICAgICAgICBpZiggJHJvd1snZXZlbnRfcGFyZW50X2lkJ10gPiAwICkgJHBhcmVudF9pZHNbXSA9ICRyb3dbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgIH0KICAgICAgICAkcGFyZW50X2lkcyA9IGFycmF5X3VuaXF1ZSgkcGFyZW50X2lkcyk7CgogICAgICAgICRjdXN0b21maWVsZHMgPSBhcnJheSgpOwogICAgICAgIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50X2ZpZWxkX3ZhbHVlcwogICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHBhcmVudF9pZHMpLicpIE9SREVSIEJZIGV2ZW50X2lkJzsKICAgICAgICAgICAgJGZycyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAgICAgZm9yZWFjaCggJGZycyBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgJGN1c3RvbWZpZWxkc1skcm93WydldmVudF9pZCddXVtdID0gJHJvdzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGFsbGNhdGVnb3JpZXMgPSBhcnJheSgpOwogICAgICAgIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50c190b19jYXRlZ29yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHRoaXMtPl9pZGxpc3QpLicpIE9SREVSIEJZIGV2ZW50X2lkJzsKICAgICAgICAgICAgJGNycyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgICAgICB3aGlsZSggJGNycyAmJiAhJGNycy0+RU9GKCkgKSB7CiAgICAgICAgICAgICAgICAkcm93ID0gJGNycy0+ZmllbGRzOwogICAgICAgICAgICAgICAgJGFsbGNhdGVnb3JpZXNbJHJvd1snZXZlbnRfaWQnXV1bXSA9ICRyb3c7CiAgICAgICAgICAgICAgICAkY3JzLT5Nb3ZlTmV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCBjb3VudCgkYWxsY2F0ZWdvcmllcykgKSBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6Z2V0X2NhdGVnb3JpZXMoKTsgLy8gZm9yY2VzIHByZWxvYWQuCiAgICAgICAgfQoKICAgICAgICAkdXNlcnMgPSBhcnJheSgpOwogICAgICAgIHsKICAgICAgICAgICAgJHVzZXJvcHMgPSAkZ0Ntcy0+R2V0VXNlck9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHVzZXJsaXN0ID0gJHVzZXJvcHMtPkxvYWRVc2VycygpOwogICAgICAgICAgICBmb3JlYWNoICgkdXNlcmxpc3QgYXMgJG9uZXVzZXIpIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25ldXNlci0+aWRdID0gJG9uZXVzZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRhbGxmaWVsZHMgPSBcY2dlX2FycmF5Ojp0b19oYXNoKCRtb2R1bGUtPkdldEZpZWxkcygpLCdmaWVsZF9uYW1lJyk7CiAgICAgICAgZm9yZWFjaCggJGV2ZW50cyBhcyAmJHJvdyApIHsKICAgICAgICAgICAgJHRpdGxlU0VPID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcm93WydldmVudF90aXRsZSddKTsKICAgICAgICAgICAgJHByZXR0eXVybCA9IHNwcmludGYoJHRoaXMtPl91cmxfcHJlZml4LicvJWQvJWQtJXMnLCAkdGhpcy0+X2Rlc3RwYWdlLCAkcm93WydldmVudF9pZCddLCAkdGl0bGVTRU8pOwogICAgICAgICAgICAkcGFybXMgPSBhcnJheSgpOwogICAgICAgICAgICAkcGFybXNbJ2V2ZW50X2lkJ10gPSAkcm93WydldmVudF9pZCddOwogICAgICAgICAgICAkcGFybXNbJ2Rpc3BsYXknXSA9ICdldmVudCc7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+X2V2ZW50dGVtcGxhdGUgKSAkcGFybXNbJ2V2ZW50dGVtcGxhdGUnXSA9ICR0aGlzLT5fZXZlbnR0ZW1wbGF0ZTsKICAgICAgICAgICAgJHJvd1sndXJsJ10gPSAkbW9kdWxlLT5jcmVhdGVfdXJsKCR0aGlzLT5fYWN0aW9uaWQsJ2RlZmF1bHQnLCR0aGlzLT5fZGVzdHBhZ2UsJHBhcm1zLGZhbHNlLGZhbHNlLCRwcmV0dHl1cmwpOwoKICAgICAgICAgICAgJHB0ciA9IG51bGw7CiAgICAgICAgICAgIGlmKCBpc3NldCgkYWxsY2F0ZWdvcmllc1skcm93WydldmVudF9pZCddXSkgKSB7CiAgICAgICAgICAgICAgICAkcHRyID0gJGFsbGNhdGVnb3JpZXNbJHJvd1snZXZlbnRfaWQnXV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggJHJvd1snZXZlbnRfcGFyZW50X2lkJ10gPiAwICYmIGlzc2V0KCRhbGxjYXRlZ29yaWVzWyRyb3dbJ2V2ZW50X3BhcmVudF9pZCddXSkgKSB7CiAgICAgICAgICAgICAgICAkcHRyID0gJGFsbGNhdGVnb3JpZXNbJHJvd1snZXZlbnRfcGFyZW50X2lkJ11dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcm93WydiZ2NvbG9yJ10gPSAkcm93WydmZ2NvbG9yJ10gPSBudWxsOwogICAgICAgICAgICBpZiggJHB0ciApIHsKICAgICAgICAgICAgICAgICRjYXRlZ29yaWVzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRwdHIgYXMgJGNhdCApIHsKICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc1tdID0gJGNhdFsnY2F0ZWdvcnlfaWQnXTsKICAgICAgICAgICAgICAgICAgICBpZiggISRyb3dbJ2JnY29sb3InXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGNvbG9ycyBmb3IgdGhpcyBldmVudC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkY2F0X29iaiA9IFxDR0NhbGVuZGFyXGNhdGVnb3J5Ojpsb2FkKCRjYXRbJ2NhdGVnb3J5X2lkJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkcm93WydmZ2NvbG9yJ10gPSAkY2F0X29ialsnZmdjb2xvciddOwogICAgICAgICAgICAgICAgICAgICAgICAkcm93WydiZ2NvbG9yJ10gPSAkY2F0X29ialsnYmdjb2xvciddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyb3dbJ2NhdGVnb3JpZXMnXSA9ICRjYXRlZ29yaWVzOwogICAgICAgICAgICAgICAgJHJvd1snY2F0ZWdvcnlfbmFtZXMnXSA9ICRtb2R1bGUtPkdldENhdGVnb3J5TmFtZXMoJGNhdGVnb3JpZXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcHRyID0gbnVsbDsKICAgICAgICAgICAgaWYoIGlzc2V0KCRjdXN0b21maWVsZHNbJHJvd1snZXZlbnRfaWQnXV0pICkgewogICAgICAgICAgICAgICAgJHB0ciA9ICRjdXN0b21maWVsZHNbJHJvd1snZXZlbnRfaWQnXV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggJHJvd1snZXZlbnRfcGFyZW50X2lkJ10gPiAwICYmIGlzc2V0KCRjdXN0b21maWVsZHNbJHJvd1snZXZlbnRfcGFyZW50X2lkJ11dKSApIHsKICAgICAgICAgICAgICAgICRwdHIgPSAkY3VzdG9tZmllbGRzWyRyb3dbJ2V2ZW50X3BhcmVudF9pZCddXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggJHB0ciApIHsKICAgICAgICAgICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHB0ciBhcyAka2V5ID0+ICRyZWMgKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpZWxkX25hbWUgPSAkcmVjWydmaWVsZF9uYW1lJ107CiAgICAgICAgICAgICAgICAgICAgJHJlYyA9IGFycmF5X21lcmdlKCRhbGxmaWVsZHNbJGZpZWxkX25hbWVdLCRyZWMpOwogICAgICAgICAgICAgICAgICAgICRyZWNbJ3Jhd192YWx1ZSddID0gJHJlY1snZmllbGRfdmFsdWUnXTsKICAgICAgICAgICAgICAgICAgICBpZiggJHJlY1snZmllbGRfdHlwZSddID09IDYgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhZW1wdHkoJHJlY1snZmllbGRfZXh0cmEnXVsnZGRvcHRzJ10pICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlY1snb3B0aW9ucyddID0gXGNnZV9hcnJheTo6ZXhwbG9kZV93aXRoX2tleSgkcmVjWydmaWVsZF9leHRyYSddWydkZG9wdHMnXSwnPScsIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydmaWVsZF92YWx1ZSddID0gJHJlY1snb3B0aW9ucyddWyRyZWNbJ3Jhd192YWx1ZSddXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkZmllbGRzWyRmaWVsZF9uYW1lXSA9ICRyZWM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcm93WydmaWVsZHMnXSA9ICRmaWVsZHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCAkcm93WydldmVudF9jcmVhdGVkX2J5J10gPCAwICkgewogICAgICAgICAgICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzIChzbWFsbGVyIHRoYW4gLTEwMCkgaW5kaWNhdGUgYW4gYWRtaW4gdXNlciBhY2NvdW50CiAgICAgICAgICAgICAgICAkdWlkID0gJHJvd1snZXZlbnRfY3JlYXRlZF9ieSddICsgMTAwICogLTE7CiAgICAgICAgICAgICAgICAkcm93WydhZG1pbl91aWQnXSA9ICR1aWQ7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHVzZXJzWyR1aWRdKSApICRyb3dbJ2F1dGhvciddID0gJHVzZXJzWyR1aWRdLT51c2VybmFtZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJvd1snaXNfcGFyZW50J10gPSAoJHJvd1snZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSAhPSAnbm9uZScgJiYgJHJvd1snZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSAhPSAnJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZXZlbnRzOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgc_event_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpjbGFzcyBjZ2NfZXZlbnRfdXRpbHMKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogICAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBnZXRfZXZlbnRfZnJvbV9wYXJhbXMoJiRldmVudCwkcGFyYW1zLCRpc19lZGl0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgJGdDbXMgPSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpOwogICAgICAgICRkYiA9ICRnQ21zLT5HZXREYigpOwoKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfaWQnXSkgKSAgJGV2ZW50WydldmVudF9pZCddID0gIChpbnQpJHBhcmFtc1snZXZlbnRfaWQnXTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfcGFyZW50X2lkJ10pICkgICRldmVudFsnZXZlbnRfcGFyZW50X2lkJ10gPSAoaW50KSRwYXJhbXNbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydyZW1vdmVmcm9tcGFyZW50J10pICYmICRwYXJhbXNbJ3JlbW92ZWZyb21wYXJlbnQnXSApICRldmVudFsnZXZlbnRfcGFyZW50X2lkJ10gPSAtMTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfdGl0bGUnXSkgKSAgJGV2ZW50WydldmVudF90aXRsZSddID0gdHJpbSgkcGFyYW1zWydldmVudF90aXRsZSddKTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfc3VtbWFyeSddKSApICAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSA9IHRyaW0oJHBhcmFtc1snZXZlbnRfc3VtbWFyeSddKTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfZGV0YWlscyddKSApICAkZXZlbnRbJ2V2ZW50X2RldGFpbHMnXSA9IHRyaW0oJHBhcmFtc1snZXZlbnRfZGV0YWlscyddKTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfYWxsb3dzX292ZXJsYXAnXSkgKSB7CiAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSA9IChpbnQpJHBhcmFtc1snZXZlbnRfYWxsb3dzX292ZXJsYXAnXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKICAgICAgICAgICAgJHRtcCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfcG9saWN5JywnYWxsJyk7CiAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSA9ICgkdG1wID09ICdhbGwnKT8xOjA7CiAgICAgICAgfQoKICAgICAgICAkYWxsX2RheV9ldmVudCA9IDA7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2FsbF9kYXlfZXZlbnQnXSkgKSAgJGFsbF9kYXlfZXZlbnQgPSAoaW50KSRwYXJhbXNbJ2FsbF9kYXlfZXZlbnQnXTsKICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSA9ICRhbGxfZGF5X2V2ZW50OwoKICAgICAgICAkc3RhcnRfaG91ciA9IDA7CiAgICAgICAgJHN0YXJ0X21pbnV0ZSA9IDA7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Nb250aCddKSApIHsKICAgICAgICAgICAgJHN0YXJ0X2hvdXIgPSAkcGFyYW1zWydzdGFydGRhdGVfSG91ciddOwogICAgICAgICAgICAkc3RhcnRfbWludXRlID0gJHBhcmFtc1snc3RhcnRkYXRlX01pbnV0ZSddOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snc3RhcnRkYXRlX01lcmlkaWFuJ10pICkgewogICAgICAgICAgICAgICAgaWYoICRwYXJhbXNbJ3N0YXJ0ZGF0ZV9NZXJpZGlhbiddID09ICdhbScgJiYgJHN0YXJ0X2hvdXIgPj0gMTIgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X2hvdXIgLT0gMTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKCAkcGFyYW1zWydzdGFydGRhdGVfTWVyaWRpYW4nXSA9PSAncG0nICYmICRzdGFydF9ob3VyIDwgMTIgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X2hvdXIgKz0gMTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10gPSBta3RpbWUoJHN0YXJ0X2hvdXIsJHN0YXJ0X21pbnV0ZSwwLCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Nb250aCddLCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9EYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snc3RhcnRkYXRlX1llYXInXSk7CiAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSk7CiAgICAgICAgfQoKICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gPSBOVUxMOwogICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSA9IE5VTEw7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfdmFsaWQnXSkgJiYgJHBhcmFtc1snZW5kZGF0ZV92YWxpZCddICYmIGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfRGF5J10pICkgewogICAgICAgICAgICAkZW5kX21vbnRoID0gJHBhcmFtc1snZW5kZGF0ZV9Nb250aCddOwogICAgICAgICAgICAkZW5kX2RheSA9ICRwYXJhbXNbJ2VuZGRhdGVfRGF5J107CiAgICAgICAgICAgICRlbmRfeWVhciA9ICRwYXJhbXNbJ2VuZGRhdGVfWWVhciddOwogICAgICAgICAgICAkZW5kX2hvdXIgPSAkcGFyYW1zWydlbmRkYXRlX0hvdXInXTsKICAgICAgICAgICAgJGVuZF9taW51dGUgPSAkcGFyYW1zWydlbmRkYXRlX01pbnV0ZSddOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZW5kZGF0ZV9NZXJpZGlhbiddKSAmJiAkcGFyYW1zWydlbmRkYXRlX01lcmlkaWFuJ10gPT0gJ2FtJyAmJiAkZW5kX2hvdXIgPj0gMTIgKSB7CiAgICAgICAgICAgICAgICAkZW5kX2hvdXIgLT0gMTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snZW5kZGF0ZV9NZXJpZGlhbiddKSAmJiAkcGFyYW1zWydlbmRkYXRlX01lcmlkaWFuJ10gPT0gJ3BtJyAmJiAkZW5kX2hvdXIgPCAxMiApIHsKICAgICAgICAgICAgICAgICRlbmRfaG91ciArPSAxMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPSBta3RpbWUoJGVuZF9ob3VyLCRlbmRfbWludXRlLDAsJGVuZF9tb250aCwkZW5kX2RheSwkZW5kX3llYXIpOwogICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfcmVjdXJfcGVyaW9kJ10pICkgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSA9IHRyaW0oJHBhcmFtc1snZXZlbnRfcmVjdXJfcGVyaW9kJ10pOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyApIHsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10pICkgJGV2ZW50WydldmVudF9yZWN1cl9pbnRlcnZhbCddID0gKGludCkkcGFyYW1zWydldmVudF9yZWN1cl9pbnRlcnZhbCddOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSkgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSkgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pICkgewogICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSAkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBleHBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX2NvdW50J10pICkgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSA9IChpbnQpJHBhcmFtc1snZXZlbnRfcmVjdXJfY291bnQnXTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX2RhdGVfTW9udGgnXSkgJiYgJHBhcmFtc1snZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnICkgewogICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddID0gbWt0aW1lKDAsMCwwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX2RhdGVfTW9udGgnXSwkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX0RheSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX2RhdGVfWWVhciddKTsKICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSA9ICRkYi0+RGJUaW1lU3RhbXAoJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX3V0J10pICkgewogICAgICAgICAgICAgICAgLy8gaGFuZGxlIGEgc2luZ2xlIGlucHV0IGZpZWxkIGluIHRoZSBmb3JtIG9mIGEgdW5peCB0aW1lc3RhbXAuCiAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJ10gPSAkZGItPkRiVGltZVN0YW1wKCRwYXJhbXNbJ2V2ZW50X3JlY3VyX2RhdGVfdXQnXSk7CiAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10gPSAkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX3V0J107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJ10gPSBOVUxMOwogICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddID0gTlVMTDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgKSB7CiAgICAgICAgICAgIGlmKCBpc19zdHJpbmcoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHVuc2VyaWFsaXplKCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICkgewogICAgICAgICAgICAgICAgLy8gdG9kbzogbWFrZSBzdXJlIGFsbCB2YWx1ZXMgYXJlIGludHMsIGFuZCBrZXlzIGFyZSBjYXRlZ29yeSBpZCdzLgogICAgICAgICAgICAgICAgJGV2ZW50WydjYXRlZ29yaWVzJ10gPSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBpc19ldmVudF9jb25mbGljdGVkKCRldmVudCwkcG9saWN5KQogICAgewogICAgICAgICRnQ21zID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAkZGIgPSAkZ0Ntcy0+R2V0RGIoKTsKCiAgICAgICAgJGV2ZW50X2lkID0gKGlzc2V0KCRldmVudFsnZXZlbnRfaWQnXSkpID8gJGV2ZW50WydldmVudF9pZCddIDogLTE7CiAgICAgICAgJHN0ciA9ICcnOwogICAgICAgIGlmKCAkcG9saWN5ID09ICdpbmRpdmlkdWFsJykgJHN0ciAuPSAnIEFORCBldmVudF9hbGxvd3Nfb3ZlcmxhcCA9IDAnOwogICAgICAgIGlmKCAkZXZlbnRfaWQgIT0gLTEpICRzdHIgLj0gIiBBTkQgZXZlbnRfaWQgIT0gJGV2ZW50X2lkIjsKCiAgICAgICAgJGRiciA9ICcnOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gPT0gTlVMTCApIHsKICAgICAgICAgICAgJHN0YXJ0ID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSkgKSB7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdW5peCB0aW1lc3RhbXAKICAgICAgICAgICAgICAgICRzdGFydCA9ICRkYi0+RGJUaW1lU3RhbXAoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRldmVudFsnc3RhcnQnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdW5peCB0aW1lc3RhbXAKICAgICAgICAgICAgICAgICRzdGFydCA9ICRkYi0+RGJUaW1lU3RhbXAoJGV2ZW50WydzdGFydCddKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCBGUk9NICcuJG1vZHVsZS0+ZXZlbnRzX3RhYmxlX25hbWUuIiBXSEVSRSAoJHN0YXJ0IEJFVFdFRU4gZXZlbnRfZGF0ZV9zdGFydCBhbmQgZXZlbnRfZGF0ZV9lbmQpIjsKICAgICAgICAgICAgJGRiciA9ICRkYi0+R2V0T25lKCRxdWVyeS4kc3RyKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzdGFydCA9ICcnOwogICAgICAgICAgICBpZiggaXNzZXQoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkZXZlbnRbJ3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnc3RhcnQnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbmQgPSAnJzsKICAgICAgICAgICAgaWYoIGlzc2V0KCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSkgKSB7CiAgICAgICAgICAgICAgICAkZW5kID0gJGV2ZW50WydldmVudF9kYXRlX2VuZCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdW5peCB0aW1lc3RhbXAKICAgICAgICAgICAgICAgICRlbmQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGV2ZW50WydlbmQnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdW5peCB0aW1lc3RhbXAKICAgICAgICAgICAgICAgICRlbmQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZW5kJ10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGV2ZW50X2lkIEZST00gJy4kbW9kdWxlLT5ldmVudHNfdGFibGVfbmFtZS4iCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSAoKCRzdGFydCBCRVRXRUVOIGV2ZW50X2RhdGVfc3RhcnQgYW5kIGV2ZW50X2RhdGVfZW5kKQogICAgICAgICAgICAgICAgICAgICAgT1IgKCRlbmQgQkVUV0VFTiBldmVudF9kYXRlX3N0YXJ0IGFuZCBldmVudF9kYXRlX2VuZCkpIjsKICAgICAgICAgICAgJGRiciA9ICRkYi0+R2V0T25lKCRxdWVyeS4kc3RyLCBhcnJheSh0cmltKCRzdGFydCwnIicpLHRyaW0oJGVuZCwnIicpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiggJGRiciApIHJldHVybiBUUlVFOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIG50aF93ZWVrZGF5KCRudGgsJHdlZWtkYXksJGZyb21kYXRlKQogICAgewogICAgICAgICRtb250aCA9IGRhdGUoJ20nLCRmcm9tZGF0ZSk7CiAgICAgICAgJHllYXIgPSBkYXRlKCdZJywkZnJvbWRhdGUpOwogICAgICAgICRob3VycyA9IGRhdGUoJ0gnLCRmcm9tZGF0ZSk7CiAgICAgICAgJG1pbnV0ZXMgPSBkYXRlKCdpJywkZnJvbWRhdGUpOwogICAgICAgICRzZWNvbmRzID0gZGF0ZSgncycsJGZyb21kYXRlKTsKICAgICAgICAkbmRheXMgPSAtMTsKCiAgICAgICAgJG50aCA9IHN0cnRvbG93ZXIoJG50aCk7CiAgICAgICAgc3dpdGNoKCAkbnRoICkgewogICAgICAgIGNhc2UgJ2ZpcnN0JzoKICAgICAgICAgICAgJG50aCA9IDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3NlY29uZCc6CiAgICAgICAgICAgICRudGggPSAyOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd0aGlyZCc6CiAgICAgICAgICAgICRudGggPSAzOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdmb3VydGgnOgogICAgICAgICAgICAkbnRoID0gNDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbGFzdCc6CiAgICAgICAgICAgICRudGggPSAtMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgJG50aCA9IChpbnQpJG50aDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmKCAkbnRoID09IC0xICkgewogICAgICAgICAgICAkZGF5c19pbl9tb250aCA9IGRhdGUoJ3QnLCRmcm9tZGF0ZSk7CiAgICAgICAgICAgICR0bXAxID0gbWt0aW1lKDAsMCwwLCRtb250aCwkZGF5c19pbl9tb250aCwkeWVhcik7CiAgICAgICAgICAgICR3ZWVrZGF5X29mX2xhc3QgPSBkYXRlKCd3JywkdG1wMSk7CgogICAgICAgICAgICBpZiggJHdlZWtkYXlfb2ZfbGFzdCA8ICR3ZWVrZGF5ICkgewogICAgICAgICAgICAgICAgLy8kbmRheXMgPSAkZGF5c19pbl9tb250aCAtICR3ZWVrZGF5X29mX2xhc3QgLSAkd2Vla2RheSAtIDE7CiAgICAgICAgICAgICAgICAkbmRheXMgPSAkZGF5c19pbl9tb250aCAtICR3ZWVrZGF5X29mX2xhc3QgKyAkd2Vla2RheSAtIDc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbmRheXMgPSAkZGF5c19pbl9tb250aCAtICR3ZWVrZGF5X29mX2xhc3QgKyAkd2Vla2RheTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJG50aCA9IG1heCgkbnRoLDEpOwogICAgICAgICAgICAkbnRoID0gbWluKCRudGgsNCk7CgogICAgICAgICAgICAvLyBnZXQgd2Vla2RheSBvZiBmaXJzdCBvZiB0aGUgbW9udGgKICAgICAgICAgICAgJHRtcDEgPSBta3RpbWUoMCwwLDAsJG1vbnRoLDEsJHllYXIpOwogICAgICAgICAgICAkd2Vla2RheV9vZl9maXJzdCA9IGRhdGUoJ3cnLCR0bXAxKTsKCiAgICAgICAgICAgIGlmKCAkd2Vla2RheV9vZl9maXJzdCA8PSAkd2Vla2RheSApIHsKICAgICAgICAgICAgICAgICRuZGF5cyA9ICgkd2Vla2RheSAtICR3ZWVrZGF5X29mX2ZpcnN0ICsgMSkgKyAoJG50aCAtIDEpICogNzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRuZGF5cyA9ICg3IC0gJHdlZWtkYXlfb2ZfZmlyc3QgKyAkd2Vla2RheSArIDEpICsgKCRudGggLSAxKSAqIDc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRkYXRlID0gbWt0aW1lKCRob3VycywkbWludXRlcywkc2Vjb25kcywkbW9udGgsJG5kYXlzLCR5ZWFyKTsKICAgICAgICByZXR1cm4gJGRhdGU7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja19vdmVybGFwcGluZ19ldmVudHMoJGV2ZW50X3N0YXJ0X3V0LCRldmVudF9lbmRfdXQsJGNoaWxkX2V2ZW50cykKICAgIHsKICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAkdG1wW10gPSBhcnJheSgnc3RhcnQnPT4kZXZlbnRfc3RhcnRfdXQsJ2VuZCc9PiRldmVudF9lbmRfdXQpOwogICAgICAgICR0bXAgPSBhcnJheV9tZXJnZSgkdG1wLCRjaGlsZF9ldmVudHMpOwoKICAgICAgICAvLyB0cml2aWFsIGNoZWNrLCBpZiB0aGUgZW5kIGRhdGUgaXMgbnVsbCBvciBlbXB0eQogICAgICAgIC8vIHRoZXJlIGlzIG5vIGNoYW5jZSB0aGF0IGV2ZW50cyBjYW4gb3ZlcmxhcC4KICAgICAgICBpZihlbXB0eSgkZXZlbnRfZW5kX3V0KSApIHJldHVybiBmYWxzZTsKCiAgICAgICAgZm9yKCAkaSA9IDE7ICRpIDwgY291bnQoJHRtcCk7ICRpKysgKSB7CiAgICAgICAgICAgICRwcmV2ID0mICR0bXBbJGktMV07CiAgICAgICAgICAgICRjdXIgPSYgJHRtcFskaV07CiAgICAgICAgICAgIGlmKCAoJGN1clsnc3RhcnQnXSA+PSAkcHJldlsnc3RhcnQnXSAmJiAkY3VyWydzdGFydCddIDw9ICRwcmV2WydlbmQnXSkgfHwKICAgICAgICAgICAgICAgICgkY3VyWydlbmQnXSA+PSAkcHJldlsnc3RhcnQnXSAmJiAkY3VyWydlbmQnXSA8PSAkcHJldlsnZW5kJ10pICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrX2RiX2Zvcl9jb25mbGljdHMoJGV2ZW50LCRldmVudF9pZCwkcG9saWN5LCRldmVudF9hbGxvd3Nfb3ZlcmxhcCkKICAgIHsKICAgICAgICAkZGIgPSBcQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kdWxlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CgogICAgICAgICRzdHIgPSAnJzsKICAgICAgICBpZiggJHBvbGljeSA9PSAnaW5kaXZpZHVhbCcgJiYgJGV2ZW50X2FsbG93c19vdmVybGFwKSAkc3RyIC49ICcgQU5EIGV2ZW50X2FsbG93c19vdmVybGFwID0gMCc7CiAgICAgICAgaWYoICRldmVudF9pZCAhPSAnJyAmJiAkZXZlbnRfaWQgIT0gLTEpICRzdHIgLj0gIiBBTkQgZXZlbnRfaWQgIT0gJGV2ZW50X2lkIjsKCiAgICAgICAgJGRiciA9ICcnOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gPT0gTlVMTCApIHsKICAgICAgICAgICAgJHN0YXJ0ID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSkgKSB7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkZXZlbnRbJ3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnc3RhcnQnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiRtb2R1bGUtPmV2ZW50c190YWJsZV9uYW1lLiIgV0hFUkUgKCRzdGFydCBCRVRXRUVOIGV2ZW50X2RhdGVfc3RhcnQgYW5kIGV2ZW50X2RhdGVfZW5kKSI7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcXVlcnkuJHN0cik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkc3RhcnQgPSAnJzsKICAgICAgICAgICAgaWYoIGlzc2V0KCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKSApIHsKICAgICAgICAgICAgICAgICRzdGFydCA9ICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRldmVudFsnc3RhcnQnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdW5peCB0aW1lc3RhbXAKICAgICAgICAgICAgICAgICRzdGFydCA9ICRkYi0+RGJUaW1lU3RhbXAoJGV2ZW50WydzdGFydCddKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVuZCA9ICcnOwogICAgICAgICAgICBpZiggaXNzZXQoJGV2ZW50WydldmVudF9kYXRlX2VuZCddKSApIHsKICAgICAgICAgICAgICAgICRlbmQgPSAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGV2ZW50WydlbmQnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdW5peCB0aW1lc3RhbXAKICAgICAgICAgICAgICAgICRlbmQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZW5kJ10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGV2ZW50X2lkIEZST00gJy4kbW9kdWxlLT5ldmVudHNfdGFibGVfbmFtZS4iCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSAoKCRzdGFydCBCRVRXRUVOIGV2ZW50X2RhdGVfc3RhcnQgYW5kIGV2ZW50X2RhdGVfZW5kKSAgT1IgKCRlbmQgQkVUV0VFTiBldmVudF9kYXRlX3N0YXJ0IGFuZCBldmVudF9kYXRlX2VuZCkpIjsKICAgICAgICAgICAgJGRiciA9ICRkYi0+R2V0T25lKCRxdWVyeS4kc3RyKTsKICAgICAgICB9CiAgICAgICAgaWYoICRkYnIgKSByZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhdGVfcmVjdXJyaW5nX2V2ZW50cygkZXZlbnRfc3RhcnRfdXQsICRldmVudF9lbmRfdXQsJGV2ZW50X3JlY3VyX3BlcmlvZCwkZXZlbnRfcmVjdXJfZW5kX3V0LCRldmVudF9yZWN1cl9pbnRlcnZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50X3JlY3VyX2NvdW50LCRldmVudF9yZWN1cl93ZWVrZGF5cywkZXZlbnRfcmVjdXJfbW9udGhkYXlzKQogICAgewogICAgICAgICRyZXN1bHRzID0gYXJyYXkoKTsKICAgICAgICAkd2Vla2RheXMgPSBhcnJheSgnc3VuZGF5JywnbW9uZGF5JywndHVlc2RheScsJ3dlZG5lc2RheScsJ3RodXJzZGF5JywnZnJpZGF5Jywnc2F0dXJkYXknKTsKICAgICAgICAkZGF0ZSA9ICRldmVudF9zdGFydF91dDsKICAgICAgICAkZGVsdGF0ID0gJGV2ZW50X2VuZF91dCAtICRldmVudF9zdGFydF91dDsKICAgICAgICBpZiggKGludCkkZXZlbnRfZW5kX3V0ID09IDAgKSAkZGVsdGF0ID0gMDsKCiAgICAgICAgJHBlcmlvZCA9ICdkYXknOwogICAgICAgICRkYXRlZm10c3RyID0gIislZCAlcyI7CiAgICAgICAgJGhvdXIgPSAoaW50KXN0cmZ0aW1lKCclSCcsJGRhdGUpOwogICAgICAgICRtaW51dGUgPSAoaW50KXN0cmZ0aW1lKCclTScsJGRhdGUpOwogICAgICAgIGlmKCAkZXZlbnRfcmVjdXJfY291bnQgPCAwICkgJGV2ZW50X3JlY3VyX2NvdW50ID0gMTAwMDAwMDsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CiAgICAgICAgJGZpcnN0ZGF5b2Z3ZWVrID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZmlyc3RkYXlvZndlZWsnKTsKCiAgICAgICAgc3dpdGNoKCAkZXZlbnRfcmVjdXJfcGVyaW9kICkgewogICAgICAgIGNhc2UgJ2RhaWx5JzoKICAgICAgICAgICAgJHBlcmlvZCA9ICdkYXlzJzsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3dlZWtseSc6CiAgICAgICAgICAgICRkYXRlZm10c3RyID0gIislZCAlcyAlcyAlZDolZCI7CiAgICAgICAgICAgICRwZXJpb2QgPSAnd2Vla3MnOwogICAgICAgICAgICAvLyB0aGlzIGxvb3AgaGFuZGxlcyBldmVudCBpbiB0aGUgc2FtZSB3ZWVrIGFzIHRoZSBzdGFydCBldmVudAogICAgICAgICAgICBpZiggIWNvdW50KCRldmVudF9yZWN1cl93ZWVrZGF5cykgKSB7CiAgICAgICAgICAgICAgICAkZXZlbnRfcmVjdXJfd2Vla2RheXMgPSBhcnJheShkYXRlKCd3JywkZXZlbnRfc3RhcnRfdXQpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0ZSA9ICRldmVudF9zdGFydF91dDsKICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50X3JlY3VyX3dlZWtkYXlzIGFzICR3ZCApIHsKICAgICAgICAgICAgICAgIGlmKCBjb3VudCgkcmVzdWx0cykgPj0gJGV2ZW50X3JlY3VyX2NvdW50ICkgYnJlYWs7CiAgICAgICAgICAgICAgICAkc3RyID0gc3ByaW50ZigkZGF0ZWZtdHN0ciwwLCRwZXJpb2QsJHdlZWtkYXlzWyR3ZCskZmlyc3RkYXlvZndlZWtdLCRob3VyLCRtaW51dGUpOwogICAgICAgICAgICAgICAgJHRtcCA9IHN0cnRvdGltZSgkc3RyLCRkYXRlKTsKICAgICAgICAgICAgICAgIGlmKCAkdG1wIDw9ICRldmVudF9zdGFydF91dCApIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICR0bXBhID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR0bXBhWydzdGFydCddID0gJHRtcDsKICAgICAgICAgICAgICAgIGlmKCAkZGVsdGF0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcGFbJ2VuZCddID0gTlVMTDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0bXBhWydlbmQnXSA9ICR0bXAgKyAkZGVsdGF0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGhlcmUgd2UgY2hlY2sgZm9yIGFuIG92ZXJsYXAKICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMKICAgICAgICAgICAgICAgIC8vIGFuZCBpZ25vcmUgYW55dGhpbmcgdGhhdCBtaWdodCBvdmVybGFwCiAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5KCR0bXBhKTsKICAgICAgICAgICAgICAgICR0ZXN0ID0gXGNnY19ldmVudF91dGlsczo6Y2hlY2tfb3ZlcmxhcHBpbmdfZXZlbnRzKCRldmVudF9zdGFydF91dCwkZXZlbnRfZW5kX3V0LCR0bXAyKTsKICAgICAgICAgICAgICAgIGlmKCAkdGVzdCA9PSBmYWxzZSApICRyZXN1bHRzW10gPSAkdG1wYTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnbW9udGhseSc6CiAgICAgICAgICAgICRwZXJpb2QgPSAnbW9udGhzJzsKICAgICAgICAgICAgaWYoICRldmVudF9yZWN1cl9tb250aGRheXNbMF0gPT0gJ3NwZWNpZmllZCcgKSB7CiAgICAgICAgICAgICAgICAkZXZlbnRfcmVjdXJfcGVyaW9kID0gJ21vbnRobHlfc3BlY2lmaWVkJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRkYXRlZm10c3RyID0gIiVzICVzICVkICVkOiVkIjsKICAgICAgICAgICAgICAgIC8vIHRoaXMgbG9vcCBoYW5kbGVzIGV2ZW50cyBpbiB0aGUgc2FtZSBtb250aCBhcyB0aGUgc3RhcnQgZXZlbnQKICAgICAgICAgICAgICAgICRtb250aCA9IGRhdGUoJ00nLCRkYXRlKTsKICAgICAgICAgICAgICAgICR5ZWFyID0gZGF0ZSgnWScsJGRhdGUpOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50X3JlY3VyX21vbnRoZGF5cyBhcyAkbWQgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIGNvdW50KCRyZXN1bHRzKSA+PSAkZXZlbnRfcmVjdXJfY291bnQgKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBsaXN0KCRudGgsJHdkKSA9IGV4cGxvZGUoJywnLCRtZCwyKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gc2VsZjo6bnRoX3dlZWtkYXkoJG50aCwkd2QsJGRhdGUpOwogICAgICAgICAgICAgICAgICAgIC8vJHN0ciA9IHNwcmludGYoJGRhdGVmbXRzdHIsJG1kLCRtb250aCwkeWVhciwkaG91ciwkbWludXRlKTsKICAgICAgICAgICAgICAgICAgICAvLyR0bXAgPSBzdHJ0b3RpbWUoJHN0ciwkZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICR0bXAgPD0gJGV2ZW50X3N0YXJ0X3V0ICkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbXSA9ICR0bXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdG1wMiA9IHN0cnRvdGltZShzcHJpbnRmKCcrJWQgbW9udGhzJywkZXZlbnRfcmVjdXJfaW50ZXJ2YWwpLCRkYXRlKTsKICAgICAgICAgICAgICAgIGlmIChkYXRlKCdkJywkdG1wMik+MjgpICR0bXAyID0gc3RydG90aW1lKCctNCBkYXlzJywkdG1wMik7CiAgICAgICAgICAgICAgICAkZGF0ZSA9ICR0bXAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICd5ZWFybHknOgogICAgICAgICAgICAkcGVyaW9kID0gJ3llYXJzJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAvLyBoYW5kbGUgdGhlIHJlY3VycmluZyBuYXR1cmUgb2YgdGhpbmdzLgogICAgICAgIHdoaWxlKCBjb3VudCgkcmVzdWx0cykgPCAkZXZlbnRfcmVjdXJfY291bnQgJiYgJGRhdGUgPD0gJGV2ZW50X3JlY3VyX2VuZF91dCApIHsKICAgICAgICAgICAgc3dpdGNoKCAkZXZlbnRfcmVjdXJfcGVyaW9kICkgewogICAgICAgICAgICBjYXNlICd3ZWVrbHknOgogICAgICAgICAgICAgICAgLy8gaGFuZGxlIGVhY2ggd2Vla2RheQogICAgICAgICAgICAgICAgJHRtcCA9ICcnOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50X3JlY3VyX3dlZWtkYXlzIGFzICR3ZCApIHsKICAgICAgICAgICAgICAgICAgICBpZiggY291bnQoJHJlc3VsdHMpID49ICRldmVudF9yZWN1cl9jb3VudCApIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICRzdHIgPSBzcHJpbnRmKCRkYXRlZm10c3RyLCRldmVudF9yZWN1cl9pbnRlcnZhbCwkcGVyaW9kLCR3ZWVrZGF5c1skd2QrJGZpcnN0ZGF5b2Z3ZWVrXSwkaG91ciwkbWludXRlKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gc3RydG90aW1lKCRzdHIsJGRhdGUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdG1wID4gJGV2ZW50X3JlY3VyX2VuZF91dCApIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICR0bXBhID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkdG1wYVsnc3RhcnQnXSA9ICR0bXA7CiAgICAgICAgICAgICAgICAgICAgaWYoICRkZWx0YXQgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcGFbJ2VuZCddID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXBhWydlbmQnXSA9ICR0bXAgKyAkZGVsdGF0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcmVzdWx0c1tdID0gJHRtcGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZGF0ZSA9ICR0bXA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ21vbnRobHknOgogICAgICAgICAgICAgICAgJHRtcCA9ICcnOwogICAgICAgICAgICAgICAgJG1vbnRoID0gZGF0ZSgnTScsJGRhdGUpOwogICAgICAgICAgICAgICAgJHllYXIgPSBkYXRlKCdZJywkZGF0ZSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkZXZlbnRfcmVjdXJfbW9udGhkYXlzIGFzICRtZCApIHsKICAgICAgICAgICAgICAgICAgICBpZiggY291bnQoJHJlc3VsdHMpID49ICRldmVudF9yZWN1cl9jb3VudCApIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGxpc3QoJG50aCwkd2QpID0gZXhwbG9kZSgnLCcsJG1kLDIpOwogICAgICAgICAgICAgICAgICAgICR0bXAgPSBzZWxmOjpudGhfd2Vla2RheSgkbnRoLCR3ZCwkZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgLy8kc3RyID0gc3ByaW50ZigkZGF0ZWZtdHN0ciwkbWQsJG1vbnRoLCR5ZWFyLCRob3VyLCRtaW51dGUpOwogICAgICAgICAgICAgICAgICAgIC8vJHRtcCA9IHN0cnRvdGltZSgkc3RyLCRkYXRlKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHRtcCA8PSAkZXZlbnRfc3RhcnRfdXQgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgJHRtcGEgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICR0bXBhWydzdGFydCddID0gJHRtcDsKICAgICAgICAgICAgICAgICAgICBpZiggJGRlbHRhdCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wYVsnZW5kJ10gPSBOVUxMOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcGFbJ2VuZCddID0gJHRtcCArICRkZWx0YXQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRyZXN1bHRzW10gPSAkdG1wYTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdG1wMiA9IHN0cnRvdGltZShzcHJpbnRmKCcrJWQgbW9udGhzJywkZXZlbnRfcmVjdXJfaW50ZXJ2YWwpLCRkYXRlKTsKICAgICAgICAgICAgICAgIGlmIChkYXRlKCdkJywkdG1wMik+MjgpCSR0bXAyID0gc3RydG90aW1lKCctNCBkYXlzJywkdG1wMik7CiAgICAgICAgICAgICAgICAkZGF0ZSA9ICR0bXAyOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgLy8gbm9ybWFsIGluY3JlbWVudGluZwogICAgICAgICAgICAgICAgJHRtcCA9IHN0cnRvdGltZShzcHJpbnRmKCRkYXRlZm10c3RyLCRldmVudF9yZWN1cl9pbnRlcnZhbCwkcGVyaW9kKSwkZGF0ZSk7CiAgICAgICAgICAgICAgICAkdG1wYSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkdG1wYVsnc3RhcnQnXSA9ICR0bXA7CiAgICAgICAgICAgICAgICBpZiggJGRlbHRhdCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICR0bXBhWydlbmQnXSA9IE5VTEw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdG1wYVsnZW5kJ10gPSAkdG1wICsgJGRlbHRhdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXN1bHRzW10gPSAkdG1wYTsKICAgICAgICAgICAgICAgICRkYXRlID0gJHRtcDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9IC8vIHN3aXRjaAogICAgICAgIH0gLy8gd2hpbGUKCiAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.IcalParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCm5hbWVzcGFjZSBDR0NhbGVuZGFyOyAgIC8vIGNoYW5nZWQgZnJvbSBuYW1lc3BhY2Ugb20KLyoqCiAqIENvcHlyaWdodCAoYykgMjAwNC0yMDE1IFJvbWFuIE/FvmFuYSAoaHR0cDovL3d3dy5vbWRlc2lnbi5jeikKICoKICogQGF1dGhvciBSb21hbiBPxb5hbmEgPG96YW5hQG9tZGVzaWduLmN6PgogKi8KY2xhc3MgSWNhbFBhcnNlciB7CgoJLyoqIEB2YXIgXERhdGVUaW1lWm9uZSAqLwoJcHVibGljICR0aW1lem9uZTsKCgkvKiogQHZhciBhcnJheSAqLwoJcHVibGljICRkYXRhOwoKCS8qKiBAdmFyIGFycmF5ICovCglwdWJsaWMgJHdpbmRvd3NfdGltZXpvbmVzID0gWwoJCSdEYXRlbGluZSBTdGFuZGFyZCBUaW1lJyA9PiAnRXRjL0dNVCsxMicsCgkJJ1VUQy0xMScgPT4gJ0V0Yy9HTVQrMTEnLAoJCSdIYXdhaWlhbiBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9Ib25vbHVsdScsCgkJJ0FsYXNrYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQW5jaG9yYWdlJywKCQknUGFjaWZpYyBTdGFuZGFyZCBUaW1lIChNZXhpY28pJyA9PiAnQW1lcmljYS9TYW50YV9Jc2FiZWwnLAoJCSdQYWNpZmljIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0xvc19BbmdlbGVzJywKCQknVVMgTW91bnRhaW4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvUGhvZW5peCcsCgkJJ01vdW50YWluIFN0YW5kYXJkIFRpbWUgKE1leGljbyknID0+ICdBbWVyaWNhL0NoaWh1YWh1YScsCgkJJ01vdW50YWluIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0RlbnZlcicsCgkJJ0NlbnRyYWwgQW1lcmljYSBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9HdWF0ZW1hbGEnLAoJCSdDZW50cmFsIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0NoaWNhZ28nLAoJCSdDZW50cmFsIFN0YW5kYXJkIFRpbWUgKE1leGljbyknID0+ICdBbWVyaWNhL01leGljb19DaXR5JywKCQknQ2FuYWRhIENlbnRyYWwgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvUmVnaW5hJywKCQknU0EgUGFjaWZpYyBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9Cb2dvdGEnLAoJCSdFYXN0ZXJuIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL05ld19Zb3JrJywKCQknVVMgRWFzdGVybiBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9JbmRpYW5hcG9saXMnLAoJCSdWZW5lenVlbGEgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQ2FyYWNhcycsCgkJJ1BhcmFndWF5IFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0FzdW5jaW9uJywKCQknQXRsYW50aWMgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvSGFsaWZheCcsCgkJJ0NlbnRyYWwgQnJhemlsaWFuIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0N1aWFiYScsCgkJJ1NBIFdlc3Rlcm4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvTGFfUGF6JywKCQknUGFjaWZpYyBTQSBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9TYW50aWFnbycsCgkJJ05ld2ZvdW5kbGFuZCBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9TdF9Kb2hucycsCgkJJ0UuIFNvdXRoIEFtZXJpY2EgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvU2FvX1BhdWxvJywKCQknQXJnZW50aW5hIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0J1ZW5vc19BaXJlcycsCgkJJ1NBIEVhc3Rlcm4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQ2F5ZW5uZScsCgkJJ0dyZWVubGFuZCBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9Hb2R0aGFiJywKCQknTW9udGV2aWRlbyBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9Nb250ZXZpZGVvJywKCQknQmFoaWEgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQmFoaWEnLAoJCSdVVEMtMDInID0+ICdFdGMvR01UKzInLAoJCSdBem9yZXMgU3RhbmRhcmQgVGltZScgPT4gJ0F0bGFudGljL0F6b3JlcycsCgkJJ0NhcGUgVmVyZGUgU3RhbmRhcmQgVGltZScgPT4gJ0F0bGFudGljL0NhcGVfVmVyZGUnLAoJCSdNb3JvY2NvIFN0YW5kYXJkIFRpbWUnID0+ICdBZnJpY2EvQ2FzYWJsYW5jYScsCgkJJ1VUQycgPT4gJ0V0Yy9HTVQnLAoJCSdHTVQgU3RhbmRhcmQgVGltZScgPT4gJ0V1cm9wZS9Mb25kb24nLAoJCSdHcmVlbndpY2ggU3RhbmRhcmQgVGltZScgPT4gJ0F0bGFudGljL1JleWtqYXZpaycsCgkJJ1cuIEV1cm9wZSBTdGFuZGFyZCBUaW1lJyA9PiAnRXVyb3BlL0JlcmxpbicsCgkJJ0NlbnRyYWwgRXVyb3BlIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvQnVkYXBlc3QnLAoJCSdSb21hbmNlIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvUGFyaXMnLAoJCSdDZW50cmFsIEV1cm9wZWFuIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvV2Fyc2F3JywKCQknVy4gQ2VudHJhbCBBZnJpY2EgU3RhbmRhcmQgVGltZScgPT4gJ0FmcmljYS9MYWdvcycsCgkJJ05hbWliaWEgU3RhbmRhcmQgVGltZScgPT4gJ0FmcmljYS9XaW5kaG9laycsCgkJJ0dUQiBTdGFuZGFyZCBUaW1lJyA9PiAnRXVyb3BlL0J1Y2hhcmVzdCcsCgkJJ01pZGRsZSBFYXN0IFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0JlaXJ1dCcsCgkJJ0VneXB0IFN0YW5kYXJkIFRpbWUnID0+ICdBZnJpY2EvQ2Fpcm8nLAoJCSdTeXJpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9EYW1hc2N1cycsCgkJJ1NvdXRoIEFmcmljYSBTdGFuZGFyZCBUaW1lJyA9PiAnQWZyaWNhL0pvaGFubmVzYnVyZycsCgkJJ0ZMRSBTdGFuZGFyZCBUaW1lJyA9PiAnRXVyb3BlL0tpZXYnLAoJCSdUdXJrZXkgU3RhbmRhcmQgVGltZScgPT4gJ0V1cm9wZS9Jc3RhbmJ1bCcsCgkJJ0lzcmFlbCBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9KZXJ1c2FsZW0nLAoJCSdMaWJ5YSBTdGFuZGFyZCBUaW1lJyA9PiAnQWZyaWNhL1RyaXBvbGknLAoJCSdKb3JkYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvQW1tYW4nLAoJCSdBcmFiaWMgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvQmFnaGRhZCcsCgkJJ0thbGluaW5ncmFkIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvS2FsaW5pbmdyYWQnLAoJCSdBcmFiIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1JpeWFkaCcsCgkJJ0UuIEFmcmljYSBTdGFuZGFyZCBUaW1lJyA9PiAnQWZyaWNhL05haXJvYmknLAoJCSdJcmFuIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1RlaHJhbicsCgkJJ0FyYWJpYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvRHViYWknLAoJCSdBemVyYmFpamFuIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0Jha3UnLAoJCSdSdXNzaWFuIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvTW9zY293JywKCQknTWF1cml0aXVzIFN0YW5kYXJkIFRpbWUnID0+ICdJbmRpYW4vTWF1cml0aXVzJywKCQknR2VvcmdpYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvVGJpbGlzaScsCgkJJ0NhdWNhc3VzIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1llcmV2YW4nLAoJCSdBZmdoYW5pc3RhbiBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9LYWJ1bCcsCgkJJ1dlc3QgQXNpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9UYXNoa2VudCcsCgkJJ1Bha2lzdGFuIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0thcmFjaGknLAoJCSdJbmRpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9DYWxjdXR0YScsCgkJJ1NyaSBMYW5rYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9Db2xvbWJvJywKCQknTmVwYWwgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvS2F0bWFuZHUnLAoJCSdDZW50cmFsIEFzaWEgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvQWxtYXR5JywKCQknQmFuZ2xhZGVzaCBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9EaGFrYScsCgkJJ0VrYXRlcmluYnVyZyBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9ZZWthdGVyaW5idXJnJywKCQknTXlhbm1hciBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9SYW5nb29uJywKCQknU0UgQXNpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9CYW5na29rJywKCQknTi4gQ2VudHJhbCBBc2lhIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL05vdm9zaWJpcnNrJywKCQknQ2hpbmEgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvU2hhbmdoYWknLAoJCSdOb3J0aCBBc2lhIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0tyYXNub3lhcnNrJywKCQknU2luZ2Fwb3JlIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1NpbmdhcG9yZScsCgkJJ1cuIEF1c3RyYWxpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXVzdHJhbGlhL1BlcnRoJywKCQknVGFpcGVpIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1RhaXBlaScsCgkJJ1VsYWFuYmFhdGFyIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1VsYWFuYmFhdGFyJywKCQknTm9ydGggQXNpYSBFYXN0IFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0lya3V0c2snLAoJCSdUb2t5byBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9Ub2t5bycsCgkJJ0tvcmVhIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1Nlb3VsJywKCQknQ2VuLiBBdXN0cmFsaWEgU3RhbmRhcmQgVGltZScgPT4gJ0F1c3RyYWxpYS9BZGVsYWlkZScsCgkJJ0FVUyBDZW50cmFsIFN0YW5kYXJkIFRpbWUnID0+ICdBdXN0cmFsaWEvRGFyd2luJywKCQknRS4gQXVzdHJhbGlhIFN0YW5kYXJkIFRpbWUnID0+ICdBdXN0cmFsaWEvQnJpc2JhbmUnLAoJCSdBVVMgRWFzdGVybiBTdGFuZGFyZCBUaW1lJyA9PiAnQXVzdHJhbGlhL1N5ZG5leScsCgkJJ1dlc3QgUGFjaWZpYyBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9Qb3J0X01vcmVzYnknLAoJCSdUYXNtYW5pYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXVzdHJhbGlhL0hvYmFydCcsCgkJJ1lha3V0c2sgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvWWFrdXRzaycsCgkJJ0NlbnRyYWwgUGFjaWZpYyBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9HdWFkYWxjYW5hbCcsCgkJJ1ZsYWRpdm9zdG9rIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1ZsYWRpdm9zdG9rJywKCQknTmV3IFplYWxhbmQgU3RhbmRhcmQgVGltZScgPT4gJ1BhY2lmaWMvQXVja2xhbmQnLAoJCSdVVEMrMTInID0+ICdFdGMvR01ULTEyJywKCQknRmlqaSBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9GaWppJywKCQknTWFnYWRhbiBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9NYWdhZGFuJywKCQknVG9uZ2EgU3RhbmRhcmQgVGltZScgPT4gJ1BhY2lmaWMvVG9uZ2F0YXB1JywKCQknU2Ftb2EgU3RhbmRhcmQgVGltZScgPT4gJ1BhY2lmaWMvQXBpYScsCgldOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkZmlsZQoJICogQHBhcmFtIG51bGwgJGNhbGxiYWNrCgkgKiBAcmV0dXJuIGFycmF5fG51bGwKCSAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KCSAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2VGaWxlKCRmaWxlLCAkY2FsbGJhY2sgPSBudWxsKSB7CgkJaWYgKCEkaGFuZGxlID0gZm9wZW4oJGZpbGUsICdyJykpIHsKCQkJdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5cJ3Qgb3BlbiBmaWxlJyAuICRmaWxlIC4gJyBmb3IgcmVhZGluZycpOwoJCX0KCQlmY2xvc2UoJGhhbmRsZSk7CgoJCXJldHVybiAkdGhpcy0+cGFyc2VTdHJpbmcoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpLCAkY2FsbGJhY2spOwoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCgkgKiBAcGFyYW0gbnVsbCAkY2FsbGJhY2sKCSAqIEByZXR1cm4gYXJyYXl8bnVsbAoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2VTdHJpbmcoJHN0cmluZywgJGNhbGxiYWNrID0gbnVsbCkgewoJCSR0aGlzLT5kYXRhID0gW107CgoJCWlmICghcHJlZ19tYXRjaCgnL0JFR0lOOlZDQUxFTkRBUi8nLCAkc3RyaW5nKSkgewoJCQl0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBJQ0FMIGRhdGEgZm9ybWF0Jyk7CgkJfQoKCQkkY291bnRlcnMgPSBbXTsKCQkkc2VjdGlvbiA9ICdWQ0FMRU5EQVInOwoKCQkvLyBSZXBsYWNlIFxyXG4gd2l0aCBcbgoJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRzdHJpbmcpOwoKCQkvLyBVbmZvbGQgbXVsdGktbGluZSBzdHJpbmdzCgkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCJcbiAiLCAiIiwgJHN0cmluZyk7CgoJCWZvcmVhY2ggKGV4cGxvZGUoIlxuIiwgJHN0cmluZykgYXMgJHJvdykgewoKCQkJc3dpdGNoICgkcm93KSB7CgkJCQljYXNlICdCRUdJTjpEQVlMSUdIVCc6CgkJCQljYXNlICdCRUdJTjpWQUxBUk0nOgoJCQkJY2FzZSAnQkVHSU46VlRJTUVaT05FJzoKCQkJCWNhc2UgJ0JFR0lOOlZGUkVFQlVTWSc6CgkJCQljYXNlICdCRUdJTjpWSk9VUk5BTCc6CgkJCQljYXNlICdCRUdJTjpTVEFOREFSRCc6CgkJCQljYXNlICdCRUdJTjpWVE9ETyc6CgkJCQljYXNlICdCRUdJTjpWRVZFTlQnOgoJCQkJCSRzZWN0aW9uID0gc3Vic3RyKCRyb3csIDYpOwoJCQkJCSRjb3VudGVyc1skc2VjdGlvbl0gPSBpc3NldCgkY291bnRlcnNbJHNlY3Rpb25dKSA/ICRjb3VudGVyc1skc2VjdGlvbl0gKyAxIDogMDsKCQkJCQljb250aW51ZSAyOyAvLyB3aGlsZQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnRU5EOkRBWUxJR0hUJzoKCQkJCWNhc2UgJ0VORDpWQUxBUk0nOgoJCQkJY2FzZSAnRU5EOlZUSU1FWk9ORSc6CgkJCQljYXNlICdFTkQ6VkZSRUVCVVNZJzoKCQkJCWNhc2UgJ0VORDpWSk9VUk5BTCc6CgkJCQljYXNlICdFTkQ6U1RBTkRBUkQnOgoJCQkJY2FzZSAnRU5EOlZFVkVOVCc6CgkJCQljYXNlICdFTkQ6VlRPRE8nOgoJCQkJY2FzZSAnRU5EOlZDQUxFTkRBUic6CgkJCQkJY29udGludWUgMjsgLy8gd2hpbGUKCQkJCQlicmVhazsKCQkJfQoKCQkJbGlzdCgka2V5LCAkbWlkZGxlLCAkdmFsdWUpID0gJHRoaXMtPnBhcnNlUm93KCRyb3cpOwoKCgkJCWlmICgkY2FsbGJhY2spIHsKCQkJCS8vIGNhbGwgdXNlciBmdW5jdGlvbiBmb3IgcHJvY2Vzc2luZyBsaW5lCgkJCQljYWxsX3VzZXJfZnVuYygkY2FsbGJhY2ssICRyb3csICRrZXksICRtaWRkbGUsICR2YWx1ZSwgJHNlY3Rpb24sICRjb3VudGVyc1skc2VjdGlvbl0pOwoJCQl9IGVsc2UgewoJCQkJaWYgKCRzZWN0aW9uID09PSAnVkNBTEVOREFSJykgewoJCQkJCSR0aGlzLT5kYXRhWyRrZXldID0gJHZhbHVlOwoJCQkJfSBlbHNlIHsKCQkJCQlpZigka2V5ID09PSAnQVRUQUNIJykgewoJCQkJCQkvLyB1c2UgYW4gYXJyYXkgc2luY2UgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGF0dGFjaG1lbnRzLiAgVGhpcyBkb2VzIG5vdAoJCQkJCQkvLyBicmVhayB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi0taXQgbGVhdmVzIHRoZSBBVFRBQ0gga2V5IGFsb25lLgoJCQkJCQkkbmV3S2V5ID0gJ0FUVEFDSE1FTlRTJzsKCQkJCQkJJHRoaXMtPmRhdGFbJHNlY3Rpb25dWyRjb3VudGVyc1skc2VjdGlvbl1dWyRuZXdLZXldW10gPSAkdmFsdWU7CgkJCQkJfQoKCQkJCQkkdGhpcy0+ZGF0YVskc2VjdGlvbl1bJGNvdW50ZXJzWyRzZWN0aW9uXV1bJGtleV0gPSAkdmFsdWU7CgkJCQl9CgoJCQl9CgkJfQoKCQlyZXR1cm4gKCRjYWxsYmFjaykgPyBudWxsIDogJHRoaXMtPmRhdGE7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gJHJvdwoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUm93KCRyb3cpIHsKCQlwcmVnX21hdGNoKCcjXihbXHctXSspOz8oLio/KTooLiopJCNpJywgJHJvdywgJG1hdGNoZXMpOwoKCQkka2V5ID0gZmFsc2U7CgkJJG1pZGRsZSA9IG51bGw7CgkJJHZhbHVlID0gbnVsbDsKCgkJaWYgKCRtYXRjaGVzKSB7CgkJCSRrZXkgPSAkbWF0Y2hlc1sxXTsKCQkJJG1pZGRsZSA9ICRtYXRjaGVzWzJdOwoJCQkkdmFsdWUgPSAkbWF0Y2hlc1szXTsKCQkJJHRpbWV6b25lID0gbnVsbDsKCgkJCWlmICgka2V5ID09PSAnWC1XUi1USU1FWk9ORScgfHwgJGtleSA9PT0gJ1RaSUQnKSB7CgkJCQlpZiAocHJlZ19tYXRjaCgnIyhcdysvXHcrKSQjaScsICR2YWx1ZSwgJG1hdGNoZXMpKSB7CgkJCQkJJHZhbHVlID0gJG1hdGNoZXNbMV07CgkJCQl9CgkJCQlpZiAoaXNzZXQoJHRoaXMtPndpbmRvd3NfdGltZXpvbmVzWyR2YWx1ZV0pKSB7CgkJCQkJJHZhbHVlID0gJHRoaXMtPndpbmRvd3NfdGltZXpvbmVzWyR2YWx1ZV07CgkJCQl9CgkJCQkkdGhpcy0+dGltZXpvbmUgPSBuZXcgXERhdGVUaW1lWm9uZSgkdmFsdWUpOwoJCQl9CgoJCQkvLyBoYXZlIHNvbWUgbWlkZGxlIHBhcnQgPwoJCQlpZiAoJG1pZGRsZSAmJiBwcmVnX21hdGNoX2FsbCgnIyg/PGtleT5bXj07XSspPSg/PHZhbHVlPlteO10rKSMnLCAkbWlkZGxlLCAkbWF0Y2hlcywgUFJFR19TRVRfT1JERVIpKSB7CgkJCQkkbWlkZGxlID0gW107CgkJCQlmb3JlYWNoICgkbWF0Y2hlcyBhcyAkbWF0Y2gpIHsKCQkJCQlpZiAoJG1hdGNoWydrZXknXSA9PT0gJ1RaSUQnKSB7CgkJCQkJCWlmIChpc3NldCgkdGhpcy0+d2luZG93c190aW1lem9uZXNbJG1hdGNoWyd2YWx1ZSddXSkpIHsKCQkJCQkJCSRtYXRjaFsndmFsdWUnXSA9ICR0aGlzLT53aW5kb3dzX3RpbWV6b25lc1skbWF0Y2hbJ3ZhbHVlJ11dOwoJCQkJCQl9CgkJCQkJCXRyeSB7CgkJCQkJCQkkbWlkZGxlWyRtYXRjaFsna2V5J11dID0gJHRpbWV6b25lID0gbmV3IFxEYXRlVGltZVpvbmUoJG1hdGNoWyd2YWx1ZSddKTsKCQkJCQkJfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewoJCQkJCQkJJG1pZGRsZVskbWF0Y2hbJ2tleSddXSA9ICRtYXRjaFsndmFsdWUnXTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJLy8gcHJvY2VzcyBzaW1wbGUgZGF0ZXMgd2l0aCB0aW1lem9uZQoJCWlmICgka2V5ID09PSAnRFRTVEFNUCcgfHwgJGtleSA9PT0gJ0xBU1QtTU9ESUZJRUQnIHx8ICRrZXkgPT09ICdDUkVBVEVEJyB8fCAka2V5ID09PSAnRFRTVEFSVCcgfHwgJGtleSA9PT0gJ0RURU5EJykgewoJCQl0cnkgewoJCQkJJHZhbHVlID0gbmV3IFxEYXRlVGltZSgkdmFsdWUsICgkdGltZXpvbmUgPzogJHRoaXMtPnRpbWV6b25lKSk7CgkJCX0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKCQkJCSR2YWx1ZSA9IG51bGw7CgkJCX0KCQl9CgoJCWlmICgka2V5ID09PSAnUlJVTEUnICYmIHByZWdfbWF0Y2hfYWxsKCcjKD88a2V5PltePTtdKyk9KD88dmFsdWU+W147XSspIycsICR2YWx1ZSwgJG1hdGNoZXMsIFBSRUdfU0VUX09SREVSKSkgewoJCQkkbWlkZGxlID0gbnVsbDsKCQkJJHZhbHVlID0gW107CgkJCWZvcmVhY2ggKCRtYXRjaGVzIGFzICRtYXRjaCkgewoJCQkJJHZhbHVlWyRtYXRjaFsna2V5J11dID0gJG1hdGNoWyd2YWx1ZSddOwoJCQl9CgkJfQoKCQkvL3NwbGl0IGJ5IGNvbW1hLCBlc2NhcGUgXCwKCQlpZiAoJGtleSA9PT0gJ0NBVEVHT1JJRVMnKSB7CgkJCSR2YWx1ZSA9IHByZWdfc3BsaXQoJy8oPzwhW15cXFxcXVxcXFwpLC8nLCAkdmFsdWUpOwoJCX0KCgkJLy9pbXBsZW1lbnQgNC4zLjExIFRleHQgRVNDQVBFRC1DSEFSCgkJJHRleHRfcHJvcGVydGllcyA9IGFycmF5KAoJCQknQ0FMU0NBTEUnLCAnTUVUSE9EJywgJ1BST0RJRCcsICdWRVJTSU9OJywgJ0NBVEVHT1JJRVMnLCAnQ0xBU1MnLCAnQ09NTUVOVCcsICdERVNDUklQVElPTicKCQksICdMT0NBVElPTicsICdSRVNPVVJDRVMnLCAnU1RBVFVTJywgJ1NVTU1BUlknLCAnVFJBTlNQJywgJ1RaSUQnLCAnVFpOQU1FJywgJ0NPTlRBQ1QnLCAnUkVMQVRFRC1UTycsICdVSUQnCgkJLCAnQUNUSU9OJywgJ1JFUVVFU1QtU1RBVFVTJwoJCSk7CgkJaWYgKGluX2FycmF5KCRrZXksICR0ZXh0X3Byb3BlcnRpZXMpIHx8IHN0cnBvcygka2V5LCAnWC0nKSA9PT0gMCkgewoJCQlpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewoJCQkJZm9yZWFjaCAoJHZhbHVlIGFzICYkdmFyKSB7CgkJCQkJJHZhciA9IHN0cnRyKCR2YXIsIFsnXFxcXCcgPT4gJ1xcJywgJ1xcTicgPT4gIlxuIiwgJ1xcbicgPT4gIlxuIiwgJ1xcOycgPT4gJzsnLCAnXFwsJyA9PiAnLCddKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSR2YWx1ZSA9IHN0cnRyKCR2YWx1ZSwgWydcXFxcJyA9PiAnXFwnLCAnXFxOJyA9PiAiXG4iLCAnXFxuJyA9PiAiXG4iLCAnXFw7JyA9PiAnOycsICdcXCwnID0+ICcsJ10pOwoJCQl9CgkJfQoKCQlyZXR1cm4gWyRrZXksICRtaWRkbGUsICR2YWx1ZV07Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIGFycmF5CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRFdmVudHMoKSB7CgkJcmV0dXJuIGlzc2V0KCR0aGlzLT5kYXRhWydWRVZFTlQnXSkgPyAkdGhpcy0+ZGF0YVsnVkVWRU5UJ10gOiBbXTsKCX0KCgkvKioKCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEFsYXJtcygpIHsKCQlyZXR1cm4gaXNzZXQoJHRoaXMtPmRhdGFbJ1ZBTEFSTSddKSA/ICR0aGlzLT5kYXRhWydWQUxBUk0nXSA6IFtdOwoJfQoKCS8qKgoJICogQHJldHVybiBhcnJheQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0VGltZXpvbmVzKCkgewoJCXJldHVybiBpc3NldCgkdGhpcy0+ZGF0YVsnVlRJTUVaT05FJ10pID8gJHRoaXMtPmRhdGFbJ1ZUSU1FWk9ORSddIDogW107Cgl9CgoJLyoqCgkgKiBSZXR1cm4gc29ydGVkIGV2ZW50bGlzdCBhcyBhcnJheSBvciBmYWxzZSBpZiBjYWxlbmFyIGlzIGVtcHR5CgkgKgoJICogQHJldHVybiBhcnJheXxib29sZWFuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRTb3J0ZWRFdmVudHMoKSB7CgkJaWYgKCRldmVudHMgPSAkdGhpcy0+Z2V0RXZlbnRzKCkpIHsKCQkJdXNvcnQoCgkJCQkkZXZlbnRzLCBmdW5jdGlvbiAoJGEsICRiKSB7CgkJCQlyZXR1cm4gJGFbJ0RUU1RBUlQnXSA+ICRiWydEVFNUQVJUJ107CgkJCX0KCQkJKTsKCQkJcmV0dXJuICRldmVudHM7CgkJfQoJCXJldHVybiBbXTsKCX0KCgkvKioKCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldFJldmVyc2VTb3J0ZWRFdmVudHMoKSB7CgkJaWYgKCRldmVudHMgPSAkdGhpcy0+Z2V0RXZlbnRzKCkpIHsKCQkJdXNvcnQoCgkJCQkkZXZlbnRzLCBmdW5jdGlvbiAoJGEsICRiKSB7CgkJCQlyZXR1cm4gJGFbJ0RUU1RBUlQnXSA8ICRiWydEVFNUQVJUJ107CgkJCX0KCQkJKTsKCQkJcmV0dXJuICRldmVudHM7CgkJfQoJCXJldHVybiBbXTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/colorPicker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/colorPicker/colorPicker.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2LmNvbG9yUGlja2VyLXBpY2tlciB7CiAgaGVpZ2h0OiAxNnB4OwogIHdpZHRoOiAxNnB4OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJhY2tncm91bmQ6IHVybChhcnJvdy5naWYpIG5vLXJlcGVhdCB0b3AgcmlnaHQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGxpbmUtaGVpZ2h0OiAxNnB4OwogIGZvbnQtc2l6ZTowLjc1ZW07CiAgZm9udC13ZWlnaHQ6Ym9sZDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmRpdi5jb2xvclBpY2tlci1wYWxldHRlIHsKICB3aWR0aDogMTEwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlcjogMXB4IHNvbGlkICM1OThGRUY7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VGRUZFRjsKICBwYWRkaW5nOiAycHg7CiAgei1pbmRleDogOTk5OTsKfQogIGRpdi5jb2xvclBpY2tlcl9oZXhXcmFwIHt3aWR0aDogMTAwJTsgZmxvYXQ6bGVmdCB9CiAgZGl2LmNvbG9yUGlja2VyX2hleFdyYXAgbGFiZWwge2ZvbnQtc2l6ZTogOTUlOyBjb2xvcjogIzJGMkYyRjsgbWFyZ2luOiA1cHggMnB4OyB3aWR0aDogMjUlfQogIGRpdi5jb2xvclBpY2tlcl9oZXhXcmFwIGlucHV0IHttYXJnaW46IDVweCAycHg7IHBhZGRpbmc6IDA7IGZvbnQtc2l6ZTogOTUlOyBib3JkZXI6IDFweCBzb2xpZCAjMDAwOyB3aWR0aDogNjUlOyB9CgpkaXYuY29sb3JQaWNrZXItc3dhdGNoIHsKICBoZWlnaHQ6IDEycHg7CiAgd2lkdGg6IDEycHg7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICBtYXJnaW46IDJweDsKICBmbG9hdDogbGVmdDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgbGluZS1oZWlnaHQ6IDEycHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/colorPicker/jquery.colorPicker.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFJlYWxseSBTaW1wbGUgQ29sb3IgUGlja2VyIGluIGpRdWVyeQogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMgogKiBMYWtzaGFuIFBlcmVyYSAod3d3Lmxha3Rlay5jb20pICYgRGFuaWVsIExhY3kgKGRhbmllbGxhY3kuY29tKQogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwogKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQogKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwogKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCiAqIElOIFRIRSBTT0ZUV0FSRS4KICovKGZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0wLGU9e2NvbnRyb2w6YSgnPGRpdiBjbGFzcz0iY29sb3JQaWNrZXItcGlja2VyIj4mbmJzcDs8L2Rpdj4nKSxwYWxldHRlOmEoJzxkaXYgaWQ9ImNvbG9yUGlja2VyX3BhbGV0dGUiIGNsYXNzPSJjb2xvclBpY2tlci1wYWxldHRlIiAvPicpLHN3YXRjaDphKCc8ZGl2IGNsYXNzPSJjb2xvclBpY2tlci1zd2F0Y2giPiZuYnNwOzwvZGl2PicpLGhleExhYmVsOmEoJzxsYWJlbCBmb3I9ImNvbG9yUGlja2VyX2hleCI+SGV4PC9sYWJlbD4nKSxoZXhGaWVsZDphKCc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvbG9yUGlja2VyX2hleCIgLz4nKX0sZj0idHJhbnNwYXJlbnQiLGc7YS5mbi5jb2xvclBpY2tlcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxnPWEuZXh0ZW5kKHt9LGEuZm4uY29sb3JQaWNrZXIuZGVmYXVsdHMsYiksaD1hLmZuLmNvbG9yUGlja2VyLnRvSGV4KGMudmFsKCkubGVuZ3RoPjA/Yy52YWwoKTpnLnBpY2tlckRlZmF1bHQpLGk9ZS5jb250cm9sLmNsb25lKCksaj1lLnBhbGV0dGUuY2xvbmUoKS5hdHRyKCJpZCIsImNvbG9yUGlja2VyX3BhbGV0dGUtIitkKSxrPWUuaGV4TGFiZWwuY2xvbmUoKSxsPWUuaGV4RmllbGQuY2xvbmUoKSxtPWpbMF0uaWQsbixvO2EuZWFjaChnLmNvbG9ycyxmdW5jdGlvbihiKXtuPWUuc3dhdGNoLmNsb25lKCksZy5jb2xvcnNbYl09PT1mPyhuLmFkZENsYXNzKGYpLnRleHQoIlgiKSxhLmZuLmNvbG9yUGlja2VyLmJpbmRQYWxldHRlKGwsbixmKSk6KG4uY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiIyIrdGhpcyksYS5mbi5jb2xvclBpY2tlci5iaW5kUGFsZXR0ZShsLG4pKSxuLmFwcGVuZFRvKGopfSksay5hdHRyKCJmb3IiLCJjb2xvclBpY2tlcl9oZXgtIitkKSxsLmF0dHIoe2lkOiJjb2xvclBpY2tlcl9oZXgtIitkLHZhbHVlOmh9KSxsLmJpbmQoImtleWRvd24iLGZ1bmN0aW9uKGIpe2lmKGIua2V5Q29kZT09PTEzKXt2YXIgZD1hLmZuLmNvbG9yUGlja2VyLnRvSGV4KGEodGhpcykudmFsKCkpO2EuZm4uY29sb3JQaWNrZXIuY2hhbmdlQ29sb3IoZD9kOmMudmFsKCkpfWIua2V5Q29kZT09PTI3JiZhLmZuLmNvbG9yUGlja2VyLmhpZGVQYWxldHRlKCl9KSxsLmJpbmQoImtleXVwIixmdW5jdGlvbihiKXt2YXIgZD1hLmZuLmNvbG9yUGlja2VyLnRvSGV4KGEoYi50YXJnZXQpLnZhbCgpKTthLmZuLmNvbG9yUGlja2VyLnByZXZpZXdDb2xvcihkP2Q6Yy52YWwoKSl9KSxhKCc8ZGl2IGNsYXNzPSJjb2xvclBpY2tlcl9oZXhXcmFwIiAvPicpLmFwcGVuZChrKS5hcHBlbmRUbyhqKSxqLmZpbmQoIi5jb2xvclBpY2tlcl9oZXhXcmFwIikuYXBwZW5kKGwpLGcuc2hvd0hleEZpZWxkPT09ITEmJihsLmhpZGUoKSxrLmhpZGUoKSksYSgiYm9keSIpLmFwcGVuZChqKSxqLmhpZGUoKSxpLmNzcygiYmFja2dyb3VuZC1jb2xvciIsaCksaS5iaW5kKCJjbGljayIsZnVuY3Rpb24oKXtjLmlzKCI6bm90KDpkaXNhYmxlZCkiKSYmYS5mbi5jb2xvclBpY2tlci50b2dnbGVQYWxldHRlKGEoIiMiK20pLGEodGhpcykpfSksYiYmYi5vbkNvbG9yQ2hhbmdlP2kuZGF0YSgib25Db2xvckNoYW5nZSIsYi5vbkNvbG9yQ2hhbmdlKTppLmRhdGEoIm9uQ29sb3JDaGFuZ2UiLGZ1bmN0aW9uKCl7fSksKG89Yy5kYXRhKCJ0ZXh0IikpJiZpLmh0bWwobyksYy5hZnRlcihpKSxjLmJpbmQoImNoYW5nZSIsZnVuY3Rpb24oKXtjLm5leHQoIi5jb2xvclBpY2tlci1waWNrZXIiKS5jc3MoImJhY2tncm91bmQtY29sb3IiLGEuZm4uY29sb3JQaWNrZXIudG9IZXgoYSh0aGlzKS52YWwoKSkpfSksYy52YWwoaCk7aWYoY1swXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiKXRyeXtjLmF0dHIoInR5cGUiLCJoaWRkZW4iKX1jYXRjaChwKXtjLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpfWVsc2UgYy5oaWRlKCk7ZCsrfSl9LGEuZXh0ZW5kKCEwLGEuZm4uY29sb3JQaWNrZXIse3RvSGV4OmZ1bmN0aW9uKGEpe2lmKGEubWF0Y2goL1swLTlBLUZdezZ9fFswLTlBLUZdezN9JC9pKSlyZXR1cm4gYS5jaGFyQXQoMCk9PT0iIyI/YToiIyIrYTtpZighYS5tYXRjaCgvXnJnYlwoXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccypcKSQvKSlyZXR1cm4hMTt2YXIgYj1bcGFyc2VJbnQoUmVnRXhwLiQxLDEwKSxwYXJzZUludChSZWdFeHAuJDIsMTApLHBhcnNlSW50KFJlZ0V4cC4kMywxMCldLGM9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg8Milmb3IodmFyIGI9MCxjPTItYS5sZW5ndGg7YjxjO2IrKylhPSIwIithO3JldHVybiBhfTtpZihiLmxlbmd0aD09PTMpe3ZhciBkPWMoYlswXS50b1N0cmluZygxNikpLGU9YyhiWzFdLnRvU3RyaW5nKDE2KSksZj1jKGJbMl0udG9TdHJpbmcoMTYpKTtyZXR1cm4iIyIrZCtlK2Z9fSxjaGVja01vdXNlOmZ1bmN0aW9uKGQsZSl7dmFyIGY9YyxnPWEoZC50YXJnZXQpLnBhcmVudHMoIiMiK2YuYXR0cigiaWQiKSkubGVuZ3RoO2lmKGQudGFyZ2V0PT09YShmKVswXXx8ZC50YXJnZXQ9PT1iWzBdfHxnPjApcmV0dXJuO2EuZm4uY29sb3JQaWNrZXIuaGlkZVBhbGV0dGUoKX0saGlkZVBhbGV0dGU6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlZG93biIsYS5mbi5jb2xvclBpY2tlci5jaGVja01vdXNlKSxhKCIuY29sb3JQaWNrZXItcGFsZXR0ZSIpLmhpZGUoKX0sc2hvd1BhbGV0dGU6ZnVuY3Rpb24oYyl7dmFyIGQ9Yi5wcmV2KCJpbnB1dCIpLnZhbCgpO2MuY3NzKHt0b3A6Yi5vZmZzZXQoKS50b3ArYi5vdXRlckhlaWdodCgpLGxlZnQ6Yi5vZmZzZXQoKS5sZWZ0fSksYSgiI2NvbG9yX3ZhbHVlIikudmFsKGQpLGMuc2hvdygpLGEoZG9jdW1lbnQpLmJpbmQoIm1vdXNlZG93biIsYS5mbi5jb2xvclBpY2tlci5jaGVja01vdXNlKX0sdG9nZ2xlUGFsZXR0ZTpmdW5jdGlvbihkLGUpe2UmJihiPWUpLGM9ZCxjLmlzKCI6dmlzaWJsZSIpP2EuZm4uY29sb3JQaWNrZXIuaGlkZVBhbGV0dGUoKTphLmZuLmNvbG9yUGlja2VyLnNob3dQYWxldHRlKGQpfSxjaGFuZ2VDb2xvcjpmdW5jdGlvbihjKXtiLmNzcygiYmFja2dyb3VuZC1jb2xvciIsYyksYi5wcmV2KCJpbnB1dCIpLnZhbChjKS5jaGFuZ2UoKSxhLmZuLmNvbG9yUGlja2VyLmhpZGVQYWxldHRlKCksYi5kYXRhKCJvbkNvbG9yQ2hhbmdlIikuY2FsbChiLGEoYikucHJldigiaW5wdXQiKS5hdHRyKCJpZCIpLGMpfSxwcmV2aWV3Q29sb3I6ZnVuY3Rpb24oYSl7Yi5jc3MoImJhY2tncm91bmQtY29sb3IiLGEpfSxiaW5kUGFsZXR0ZTpmdW5jdGlvbihjLGQsZSl7ZT1lP2U6YS5mbi5jb2xvclBpY2tlci50b0hleChkLmNzcygiYmFja2dyb3VuZC1jb2xvciIpKSxkLmJpbmQoe2NsaWNrOmZ1bmN0aW9uKGIpe2c9ZSxhLmZuLmNvbG9yUGlja2VyLmNoYW5nZUNvbG9yKGUpfSxtb3VzZW92ZXI6ZnVuY3Rpb24oYil7Zz1jLnZhbCgpLGEodGhpcykuY3NzKCJib3JkZXItY29sb3IiLCIjNTk4RkVGIiksYy52YWwoZSksYS5mbi5jb2xvclBpY2tlci5wcmV2aWV3Q29sb3IoZSl9LG1vdXNlb3V0OmZ1bmN0aW9uKGQpe2EodGhpcykuY3NzKCJib3JkZXItY29sb3IiLCIjMDAwIiksYy52YWwoYi5jc3MoImJhY2tncm91bmQtY29sb3IiKSksYy52YWwoZyksYS5mbi5jb2xvclBpY2tlci5wcmV2aWV3Q29sb3IoZyl9fSl9fSksYS5mbi5jb2xvclBpY2tlci5kZWZhdWx0cz17cGlja2VyRGVmYXVsdDoiRkZGRkZGIixjb2xvcnM6WyIwMDAwMDAiLCI5OTMzMDAiLCIzMzMzMDAiLCIwMDAwODAiLCIzMzMzOTkiLCIzMzMzMzMiLCI4MDAwMDAiLCJGRjY2MDAiLCI4MDgwMDAiLCIwMDgwMDAiLCIwMDgwODAiLCIwMDAwRkYiLCI2NjY2OTkiLCI4MDgwODAiLCJGRjAwMDAiLCJGRjk5MDAiLCI5OUNDMDAiLCIzMzk5NjYiLCIzM0NDQ0MiLCIzMzY2RkYiLCI4MDAwODAiLCI5OTk5OTkiLCJGRjAwRkYiLCJGRkNDMDAiLCJGRkZGMDAiLCIwMEZGMDAiLCIwMEZGRkYiLCIwMENDRkYiLCI5OTMzNjYiLCJDMEMwQzAiLCJGRjk5Q0MiLCJGRkNDOTkiLCJGRkZGOTkiLCJDQ0ZGRkYiLCI5OUNDRkYiLCJGRkZGRkYiXSxhZGRDb2xvcnM6W10sc2hvd0hleEZpZWxkOiEwfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/changelog.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnYyLjMuMiAoMjAxNS0wNi0xNCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBtaW5vciBjb2RlIGFkanVzdG1lbnQgaW4gcHJlcGFyYXRpb24gZm9yIHBsdWdpbnMKCgp2Mi4zLjEgKDIwMTUtMDMtMDgpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gRml4IHdlZWsgdmlldyBjb2x1bW4gdGl0bGUgZm9yIGVuLWdiIChbUFIyMjBdKQotIFB1Ymxpc2ggdG8gTlBNIChbMjQ0N10pCi0gRGV0YW5nbGUgYm93ZXIgZnJvbSBucG0gcGFja2FnZSAoW1BSMTc5XSkKCltQUjIyMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMjIwClsyNDQ3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDQ3CltQUjE3OV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTc5CgoKdjIuMy4wICgyMDE1LTAyLTIxKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGludGVybmFsIHJlZmFjdG9yaW5nIGluIHByZXBhcmF0aW9uIGZvciBvdGhlciB2aWV3cwotIGJ1c2luZXNzSG91cnMgbm93IHJlbmRlcnMgb24gd2hvbGUtZGF5cyBpbiBhZGRpdGlvbiB0byB0aW1lZCBhcmVhcwotIGV2ZW50cyBpbiAibW9yZSIgcG9wb3ZlciBub3Qgc29ydGVkIGJ5IHRpbWUgKFsyMzg1XSkKLSBhdm9pZCB1c2luZyBtb21lbnQncyBkZXByZWNhdGVkIHpvbmUgbWV0aG9kIChbMjQ0M10pCi0gZGVzdHJveWluZyB0aGUgY2FsZW5kYXIgc29tZXRpbWVzIGNhdXNlcyBhbGwgd2luZG93IHJlc2l6ZSBoYW5kbGVycyB0byBiZSB1bmJvdW5kIChbMjQzMl0pCi0gbXVsdGlwbGUgY2FsZW5kYXJzIG9uIG9uZSBwYWdlLCBjYW4ndCBhY2NlcHQgZXh0ZXJuYWwgZWxlbWVudHMgYWZ0ZXIgbmF2aWdhdGluZyAoWzI0MzNdKQotIGFjY2VwdCBleHRlcm5hbCBldmVudHMgZnJvbSBqcXVpIHNvcnRhYmxlIChbMTY5OF0pCi0gZXh0ZXJuYWwganF1aSBkcm9wIHByb2Nlc3NlZCBiZWZvcmUgcmV2ZXJ0aW5nIChbMTY2MV0pCi0gSUU4IGZpeDogbW9udGggdmlldyByZW5kZXJzIGluY29ycmVjdGx5IChbMjQyOF0pCi0gSUU4IGZpeDogZXZlbnRMaW1pdDp0cnVlIHdvdWxkbid0IGFjdGl2YXRlICJtb3JlIiBsaW5rIChbMjMzMF0pCi0gSUU4IGZpeDogZHJhZ2dpbmcgYW4gZXZlbnQgd2l0aCBhbiBocmVmCi0gSUU4IGZpeDogaW52aXNpYmxlIGVsZW1lbnQgd2hpbGUgZHJhZ2dpbmcgYWdlbmRhIHZpZXcgZXZlbnRzCi0gSUU4IGZpeDogZXJyYXRpYyBleHRlcm5hbCBlbGVtZW50IGRyYWdnaW5nCgpbMjM4NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjM4NQpbMjQ0M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQ0MwpbMjQzMl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQzMgpbMjQzM106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQzMwpbMTY5OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTY5OApbMTY2MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTY2MQpbMjQyOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQyOApbMjMzMF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjMzMAoKCnYyLjIuNyAoMjAxNS0wMi0xMCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSB2aWV3LnRpdGxlIHdhc24ndCBkZWZpbmVkIGluIHZpZXdSZW5kZXIgY2FsbGJhY2sgKFsyNDA3XSkKLSBGdWxsQ2FsZW5kYXIgdmVyc2lvbnMgPj0gMi4yLjUgYnJva2VubmVzcyB3aXRoIE1vbWVudCB2ZXJzaW9ucyA8PSAyLjguMyAoWzI0MTddKQotIFN1cHBvcnQgQm9rbWFsIE5vcndlZ2lhbiBsYW5ndWFnZSBzcGVjaWZpY2FsbHkgKFsyNDI3XSkKClsyNDA3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDA3ClsyNDE3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDE3ClsyNDI3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDI3CgoKdjIuMi42ICgyMDE1LTAxLTExKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIENvbXBhdGliaWxpdHkgd2l0aCBNb21lbnQgdjIuOS4gV2FzIGJyZWFraW5nIEdDYWwgcGx1Z2luIChbMjQwOF0pCi0gVmlldyBvYmplY3QncyBgdGl0bGVgIHByb3BlcnR5IG1pc3Rha2VubHkgb21pdHRlZCAoWzI0MDddKQotIFNpbmdsZS1kYXkgdmlld3Mgd2l0aCBoaWRkZW5zIGRheXMgY291bGQgY2F1c2UgcHJldi9uZXh0IG1pc2JlaGF2aW9yIChbMjQwNl0pCi0gRG9uJ3QgbGV0IHRoZSBjdXJyZW50IGRhdGUgZXZlciBiZSBhIGhpZGRlbiBkYXkgKHNvbHZlcyBbMjM5NV0pCi0gSGVicmV3IGxvY2FsZSAoWzIxNTddKQoKWzI0MDhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDgKWzI0MDddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDcKWzI0MDZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDYKWzIzOTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzOTUKWzIxNTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNTcKCgp2Mi4yLjUgKDIwMTQtMTItMzApCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYGJ1dHRvblRleHRgIHNwZWNpZmllZCBmb3IgY3VzdG9tIHZpZXdzIHZpYSB0aGUgYHZpZXdzYCBvcHRpb24KCS0gYnVnZml4OiB3cm9uZyBkZWZhdWx0IHZhbHVlLCBjb3VsZG4ndCBvdmVycmlkZSBkZWZhdWx0CgktIGZlYXR1cmU6IGRlZmF1bHQgdmFsdWUgdGFrZW4gZnJvbSBsb2NhbGUKCgp2Mi4yLjQgKDIwMTQtMTItMjkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gQXJiaXRyYXJ5IGR1cmF0aW9ucyBmb3IgYmFzaWMvYWdlbmRhIHZpZXdzIHdpdGggdGhlIGB2aWV3c2Agb3B0aW9uIChbNjkyXSkKLSBTcGVjaWZ5IHZpZXctc3BlY2lmaWMgb3B0aW9ucyB1c2luZyB0aGUgYHZpZXdzYCBvcHRpb24uIGZpeGVzIFsyMjgzXQotIERlcHJlY2F0ZSB2aWV3LW9wdGlvbi1oYXNoZXMKLSBGb3JtYWxpemUgYW5kIGV4cG9zZSBWaWV3IEFQSSAoWzEwNTVdKQotIHVwZGF0ZUV2ZW50IG1ldGhvZCwgbW9yZSBpbnR1aXRpdmUgYmVoYXZpb3IuIGZpeGVzIFsyMTk0XQoKWzY5Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NjkyClsyMjgzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjgzClsxMDU1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMDU1ClsyMTk0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTk0CgoKdjIuMi4zICgyMDE0LTExLTI2KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIHJlbW92ZUV2ZW50U291cmNlIHdpdGggR29vZ2xlIENhbGVuZGFyIG9iamVjdCBzb3VyY2UsIHdvdWxkIG5vdCByZW1vdmUgKFsyMzY4XSkKLSBFdmVudHMgd2l0aCBpbnZhbGlkIGVuZCBkYXRlcyBhcmUgc3RpbGwgYWNjZXB0ZWQgYW5kIHJlbmRlcmVkIChbMjM1MF0sIFsyMjM3XSwgWzIyOTZdKQotIEJ1ZyB3aGVuIHJlbmRlcmluZyBidXNpbmVzcyBob3VycyBhbmQgbmF2aWdhdGluZyBhd2F5IGZyb20gb3JpZ2luYWwgdmlldyAoWzIzNjVdKQotIExpbmtzIHRvIEdvb2dsZSBDYWxlbmRhciBldmVudHMgd2lsbCB1c2UgY3VycmVudCB0aW1lem9uZSAoWzIxMjJdKQotIEdvb2dsZSBDYWxlbmRhciBwbHVnaW4gd29ya3Mgd2l0aCB0aW1lem9uZSBuYW1lcyB0aGF0IGhhdmUgc3BhY2VzCi0gR29vZ2xlIENhbGVuZGFyIHBsdWdpbiBhY2NlcHRzIHBlcnNvbiBlbWFpbCBhZGRyZXNzZXMgYXMgY2FsZW5kYXIgSURzCi0gSW50ZXJuYWxseSB1c2UgbnVtZXJpYyBzb3J0IGluc3RlYWQgb2YgYWxwaGFudW1lcmljIHNvcnQgKFsyMzcwXSkKClsyMzY4XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzY4ClsyMzUwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzUwClsyMjM3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjM3ClsyMjk2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjk2ClsyMzY1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzY1ClsyMTIyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTIyClsyMzcwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzcwCgoKdjIuMi4yICgyMDE0LTExLTE5KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEZpeGVzIHRvIEdvb2dsZSBDYWxlbmRhciBBUEkgVjMgY29kZQoJLSB3b3VsZG4ndCByZWNvZ25pemUgYSBsb25lLXN0cmluZyBHb29nbGUgQ2FsZW5kYXIgSUQgaWYgcGVyaW9kcyBiZWZvcmUgdGhlIEAgc3ltYm9sCgktIHJlbW92ZUV2ZW50U291cmNlIHdvdWxkbid0IHdvcmsgd2hlbiBnaXZlbiBhIEdvb2dsZSBDYWxlbmRhciBJRAoKCnYyLjIuMSAoMjAxNC0xMS0xOSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBNaWdyYXRlIEdvb2dsZSBDYWxlbmRhciBwbHVnaW4gdG8gdXNlIFYzIG9mIHRoZSBBUEkgKFsxNTI2XSkKClsxNTI2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNTI2CgoKdjIuMi4wICgyMDE0LTExLTE0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEJhY2tncm91bmQgZXZlbnRzLiBFdmVudCBvYmplY3QncyBgcmVuZGVyaW5nYCBwcm9wZXJ0eSAoWzE0NF0sIFsxMjg2XSkKLSBgYnVzaW5lc3NIb3Vyc2Agb3B0aW9uIChbMTQ0XSkKLSBDb250cm9sbGluZyB3aGVyZSBldmVudHMgY2FuIGJlIGRyYWdnZWQvcmVzaXplZCBhbmQgc2VsZWN0aW9ucyBjYW4gZ28gKFszOTZdLCBbMTI4Nl0sIFsyMjUzXSkKCS0gYGV2ZW50T3ZlcmxhcGAsIGBzZWxlY3RPdmVybGFwYCwgYW5kIHNpbWlsYXIKCS0gYGV2ZW50Q29uc3RyYWludGAsIGBzZWxlY3RDb25zdHJhaW50YCwgYW5kIHNpbWlsYXIKLSBJbXByb3ZlbWVudHMgdG8gZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIGV4dGVybmFsIGV2ZW50cyAoWzIwMDRdKQoJLSBBc3NvY2lhdGluZyB3aXRoIHJlYWwgZXZlbnQgZGF0YS4gdXNlZCB3aXRoIGBldmVudFJlY2VpdmVgCgktIEFzc29jaWF0aW5nIGEgYGR1cmF0aW9uYAotIFBlcmZvcm1hbmNlIGJvb3N0IGZvciBtb21lbnQgY3JlYXRpb24KCS0gQmUgYXdhcmUsIEZ1bGxDYWxlbmRhci1zcGVjaWZpYyBtZXRob2RzIG5vdyBhdHRhY2hlZCBkaXJlY3RseSB0byBnbG9iYWwgbW9tZW50LmZuCgktIEhlbHBzIHdpdGggW2lzc3VlIDIyNTldWzIyNTldCi0gUmVpbnRyb2R1Y2VkIGZvcmdvdHRlbiBgZHJvcEFjY2VwdGAgb3B0aW9uIChbMjMxMl0pCgpbMTQ0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNDQKWzM5Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mzk2ClsxMjg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMjg2ClsyMDA0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDA0ClsyMjUzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjUzClsyMjU5XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjU5ClsyMzEyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzEyCgoKdjIuMS4xICgyMDE0LTA4LTI5KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIHJlbW92ZUV2ZW50U291cmNlIG5vdCB3b3JraW5nIHdpdGggYXJyYXkgKFsyMjAzXSkKLSBtb3VzZW91dCBub3QgdHJpZ2dlcmVkIGFmdGVyIG1vdXNlb3Zlcit1cGRhdGVFdmVudCAoWzgyOV0pCi0gYWdlbmRhIGV2ZW50J3MgcmVuZGVyIHdpdGggbm8gPGE+IGhyZWYsIG5vdCBjbGlja2FibGUgKFsyMjYzXSkKClsyMjAzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjAzCls4MjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTgyOQpbMjI2M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjI2MwoKCnYyLjEuMCAoMjAxNC0wOC0yNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKTGFyZ2UgY29kZSByZWZhY3RvciB3aXRoIGJldHRlciBPT1AsIGJldHRlciBjb2RlIHJldXNlLCBhbmQgbW9yZSBjb21tZW50cy4KKipObyBtb3JlIHJlbGlhbmNlIG9uIGpRdWVyeSBVSSoqIGZvciBldmVudCBkcmFnZ2luZywgcmVzaXppbmcsIG9yIGFueXRoaW5nIGVsc2UuCgpTaWduaWZpY2FudCBjaGFuZ2VzIHRvIEhUTUwvQ1NTIHNrZWxldG9uOgotIExldmVyYWdlcyB0YWJsZXMgZm9yIGxpcXVpZCByZW5kZXJpbmcgb2YgZGF5cyBhbmQgZXZlbnRzLiBObyBjb3N0bHkgbWFudWFsIHJlcG9zaXRpb25pbmcgKFs4MDldKQotICoqQmFja3dhcmRzLWluY29tcGF0aWJpbGl0aWVzKio6CgktICoqTWFueSBjbGFzc05hbWVzIGhhdmUgY2hhbmdlZC4gQ3VzdG9tIENTUyB3aWxsIGxpa2VseSBuZWVkIHRvIGJlIGFkanVzdGVkLioqCgktIElFNyBkZWZpbml0ZWx5IG5vdCBzdXBwb3J0ZWQgYW55bW9yZQoJLSBJbiBgZXZlbnRSZW5kZXJgIGNhbGxiYWNrLCBgZWxlbWVudGAgd2lsbCBub3QgYmUgYXR0YWNoZWQgdG8gRE9NIHlldAoJLSBFdmVudHMgYXJlIHN0eWxlZCB0byBiZSBvbmUgbGluZSBieSBkZWZhdWx0IChbMTk5Ml0pLiBDYW4gYmUgdW5kb25lIHRocm91Z2ggY3VzdG9tIENTUywKCSAgYnV0IG5vdCByZWNvbW1lbmRlZCAobWlnaHQgZ2V0IGdhcHMgW2xpa2UgdGhpc11bMTExXSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMpLgoKQSAibW9yZS4uLiIgbGluayB3aGVuIHRoZXJlIGFyZSB0b28gbWFueSBldmVudHMgb24gYSBkYXkgKFszMDRdKS4gV29ya3Mgd2l0aCBtb250aCBhbmQgYmFzaWMgdmlld3MKYXMgd2VsbCBhcyB0aGUgYWxsLWRheSBzZWN0aW9uIG9mIHRoZSBhZ2VuZGEgdmlld3MuIE5ldyBvcHRpb25zOgotIGBldmVudExpbWl0YC4gYSBudW1iZXIgb3IgYHRydWVgCi0gYGV2ZW50TGltaXRDbGlja2AuIHRoZSBgInBvcG92ZXJgIiB2YWx1ZSB3aWxsIHJldmVhbCBhbGwgZXZlbnRzIGluIGEgcmFpc2VkIHBhbmVsICh0aGUgZGVmYXVsdCkKLSBgZXZlbnRMaW1pdFRleHRgCi0gYGRheVBvcG92ZXJGb3JtYXRgCgpDaGFuZ2VzIHJlbGF0ZWQgdG8gaGVpZ2h0IGFuZCBzY3JvbGxiYXJzOgotIGBhc3BlY3RSYXRpb2AvYGhlaWdodGAvYGNvbnRlbnRIZWlnaHRgIHZhbHVlcyB3aWxsIGJlIGhvbm9yZWQgKm5vIG1hdHRlciB3aGF0KgoJLSBJZiB0b28gbWFueSBldmVudHMgY2F1c2luZyB0b28gbXVjaCB2ZXJ0aWNhbCBzcGFjZSwgc2Nyb2xsYmFycyB3aWxsIGJlIHVzZWQgKFs3MjhdKS4KCSAgVGhpcyBpcyBkZWZhdWx0IGJlaGF2aW9yIGZvciBtb250aCB2aWV3ICgqKmJhY2t3YXJkcy1pbmNvbXBhdGliaWxpdHkqKikKCS0gSWYgdG9vIGZldyBzbG90cyBpbiBhZ2VuZGEgdmlldywgdmlldyB3aWxsIHN0cmV0Y2ggdG8gYmUgdGhlIGNvcnJlY3QgaGVpZ2h0IChbMjE5Nl0pCi0gYCdhdXRvJ2AgdmFsdWUgZm9yIGBoZWlnaHRgL2Bjb250ZW50SGVpZ2h0YCBvcHRpb25zLiBJZiBjb250ZW50IGlzIHRvbyB0YWxsLCB0aGUgdmlldyB3aWxsCiAgdmVydGljYWxseSBzdHJldGNoIHRvIGFjY29tb2RhdGUgYW5kIG5vIHNjcm9sbGJhcnMgd2lsbCBiZSB1c2VkIChbNTIxXSkuCi0gVGFsbCB3ZWVrcyBpbiBtb250aCB2aWV3IHdpbGwgYm9ycm93IGhlaWdodCBmcm9tIG90aGVyIHdlZWtzIChbMjQzXSkKLSBBdXRvbWF0aWNhbGx5IHNjcm9sbCB0aGUgdmlldyB0aGVuIGRyYWdnaW5nL3Jlc2l6aW5nIGFuIGV2ZW50IChbMTAyNV0sIFsyMDc4XSkKLSBOZXcgYGZpeGVkV2Vla0NvdW50YCBvcHRpb24gdG8gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIG1vbnRoIHZpZXcKCS0gU3VwZXJzZWRlcyBgd2Vla01vZGVgICgqKmRlcHJlY2F0ZWQqKikuIEluc3RlYWQsIHVzZSBhIGNvbWJpbmF0aW9uIG9mIGBmaXhlZFdlZWtDb3VudGAgYW5kCgkgIG9uZSBvZiB0aGUgaGVpZ2h0IG9wdGlvbnMsIHBvc3NpYmx5IHdpdGggYW4gYCdhdXRvJ2AgdmFsdWUKCk11Y2ggbmljZXIsIGdsaXRjaC1mcmVlIHJlbmRlcmluZyBvZiBjYWxlbmRhciAqZm9yIHByaW50ZXJzKiAoWzM1XSkuIFRoaW5ncyB5b3UgbWlnaHQgbm90IGV4cGVjdDoKLSBCdXR0b25zIHdpbGwgYmVjb21lIGhpZGRlbgotIEFnZW5kYSB2aWV3cyBkaXNwbGF5IGEgZmxhdCBsaXN0IG9mIGV2ZW50cyB3aGVyZSB0aGUgdGltZSBzbG90cyB3b3VsZCBiZQoKT3RoZXIgaXNzdWVzIHJlc29sdmVkIGFsb25nIHRoZSB3YXk6Ci0gU3BhY2Ugb24gcmlnaHQgc2lkZSBvZiBhZ2VuZGEgZXZlbnRzIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIENTUyAoWzIwNF0pCi0gUHJvYmxlbSB3aXRoIHdpbmRvdyByZXNpemUgKFsyNTldKQotIEV2ZW50cyBzb3J0aW5nIHN0YXlzIGNvbnNpc3RlbnQgYWNyb3NzIHdlZWtzIChbNTEwXSkKLSBBZ2VuZGEncyBjb2x1bW5zIG1pc2FsaWduZWQgb24gd2lkZSBzY3JlZW5zIChbNTExXSkKLSBSdW4gYHNlbGVjdEhlbHBlcmAgdGhyb3VnaCBgZXZlbnRSZW5kZXJgIGNhbGxiYWNrcyAoWzYyOV0pCi0gS2V5Ym9hcmQgYWNjZXNzLCB0YWJiaW5nIChbNjM3XSkKLSBSdW4gcmVzaXppbmcgZXZlbnRzIHRocm91Z2ggYGV2ZW50UmVuZGVyYCAoWzcxNF0pCi0gUmVzaXplIGFuIGV2ZW50IHRvIGEgZGlmZmVyZW50IGRheSBpbiBhZ2VuZGEgdmlld3MgKFs3MzZdKQotIEFsbG93IHNlbGVjdGlvbiBhY3Jvc3MgZGF5cyBpbiBhZ2VuZGEgdmlld3MgKFs3NzhdKQotIE1vdXNlZW50ZXIgZGVsZWdhdGVkIGV2ZW50IG5vdCB3b3JraW5nIG9uIGV2ZW50IGVsZW1lbnRzIChbOTM2XSkKLSBBZ2VuZGEgZXZlbnQgZHJhZ2dpbmcsIHNuYXBwaW5nIHRvIGRpZmZlcmVudCBjb2x1bW5zIGlzIGVycmF0aWMgKFsxMTAxXSkKLSBBbmRyb2lkIGJyb3dzZXIgY3V0cyBvZmYgRGF5IHZpZXcgYXQgOCBQTSB3aXRoIG5vIHNjcm9sbCBiYXIgKFsxMjAzXSkKLSBEb24ndCBmaXJlIGBldmVudE1vdXNlb3ZlcmAvYGV2ZW50TW91c2VvdXRgIHdoaWxlIGRyYWdnaW5nL3Jlc2l6aW5nIChbMTI5N10pCi0gQ3VzdG9taXplIHRoZSByZXNpemUgaGFuZGxlIHRleHQgKCI9IikgKFsxMzI2XSkKLSBJZiBhZ2VuZGEgZXZlbnQgaXMgdG9vIHNob3J0LCBkb24ndCBvdmVyd3JpdGUgYC5mYy1ldmVudC10aW1lYCAoWzE3MDBdKQotIFpvb21pbmcgY2FsZW5kYXIgY2F1c2VzIGV2ZW50cyB0byBtaXNhbGlnbiAoWzE5OTZdKQotIEV2ZW50IGRlc3Ryb3kgY2FsbGJhY2sgb24gZXZlbnQgcmVtb3ZhbCAoWzIwMTddKQotIEFnZW5kYSB2aWV3cywgd2hlbiBSVEwsIHNob3VsZCBoYXZlIGF4aXMgb24gcmlnaHQgKFsyMTMyXSkKLSBNYWtlIGhlYWRlciBidXR0b25zIG1vcmUgYWNjZXNzaWJpbGUgKFsyMTUxXSkKLSBkYXlTZWxlY3Rpb25Nb3VzZWRvd24gc2hvdWxkIGludGVycHJldCBPU1ggY3RybCtjbGljayBhcyBhIHJpZ2h0IG1vdXNlIGNsaWNrIChbMjE2OV0pCi0gQmVzdCB3YXkgdG8gZGlzcGxheSB0aW1lIHRleHQgb24gbXVsdGktZGF5IGV2ZW50cyAqd2l0aCB0aW1lcyogKFsyMTcyXSkKLSBFbGltaW5hdGUgdGFibGUgdXNlIGZvciBoZWFkZXIgbGF5b3V0IChbMjE4Nl0pCi0gRXZlbnQgZGVsZWdhdGlvbiB1c2VkIGZvciBldmVudC1yZWxhdGVkIGNhbGxiYWNrcyAobGlrZSBgZXZlbnRDbGlja2ApLiBTcGVlZGllci4KClszNV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzUKWzIwNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjA0ClsyNDNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MwpbMjU5XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNTkKWzMwNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzA0Cls1MTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTUxMApbNTExXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01MTEKWzUyMV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTIxCls2MjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTYyOQpbNjM3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD02MzcKWzcxNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzE0Cls3MjhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTcyOApbNzM2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03MzYKWzc3OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Nzc4Cls4MDldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTgwOQpbOTM2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD05MzYKWzEwMjVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEwMjUKWzExMDFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExMDEKWzEyMDNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEyMDMKWzEyOTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEyOTcKWzEzMjZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEzMjYKWzE3MDBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE3MDAKWzE5OTJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE5OTIKWzE5OTZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE5OTYKWzIwMTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwMTcKWzIwNzhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwNzgKWzIxMzJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxMzIKWzIxNTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNTEKWzIxNjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNjkKWzIxNzJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNzIKWzIxODZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxODYKWzIxOTZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOTYKWzExMV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTExCgoKdjIuMC4zICgyMDE0LTA4LTE1KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIG1vbWVudC0yLjguMSBjb21wYXRpYmlsaXR5IChbMjIyMV0pCi0gcmVsYXRpdmUgcGF0aCBpbiBib3dlci5qc29uIChbUFIgMTE3XSkKLSB1cGdyYWRlZCBqcXVlcnktdWkgYW5kIG1pc2MgZGV2IGRlcGVuZGVuY2llcwoKWzIyMjFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyMjEKW1BSIDExN106IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTc3CgoKdjIuMC4yICgyMDE0LTA2LTI0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGJ1ZyB3aXRoIHBlcnNpc3RpbmcgYWRkRXZlbnRTb3VyY2UgY2FsbHMgKFsyMTkxXSkKLSBidWcgd2l0aCBwZXJzaXN0aW5nIHJlbW92ZUV2ZW50cyBjYWxscyB3aXRoIGFuIGFycmF5IHNvdXJjZSAoWzIxODddKQotIGJ1ZyB3aXRoIHJlbW92ZUV2ZW50cyBtZXRob2Qgd2hlbiBjYWxsZWQgd2l0aCAwIHJlbW92ZXMgYWxsIGV2ZW50cyAoWzIwODJdKQoKWzIxOTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOTEKWzIxODddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxODcKWzIwODJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwODIKCgp2Mi4wLjEgKDIwMTQtMDYtMTUpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYGRlbHRhYCBwYXJhbWV0ZXJzIHJlaW50cm9kdWNlZCBpbiBgZXZlbnREcm9wYCBhbmQgYGV2ZW50UmVzaXplYCBoYW5kbGVycyAoWzIxNTZdKQogIC0gKipOb3RlKio6IHRoaXMgY2hhbmdlcyB0aGUgYXJndW1lbnQgb3JkZXIgZm9yIGByZXZlcnRGdW5jYAotIHdyb25nZnVsbHkgdHJpZ2dlcmluZyBhIHdpbmRvd1Jlc2l6ZSB3aGVuIHJlc2l6aW5nIGFuIGFnZW5kYSB2aWV3IGV2ZW50IChbMTExNl0pCi0gYHRoaXNgIHZhbHVlcyBpbiBldmVudCBkcmFnLW4tZHJvcC9yZXNpemUgaGFuZGxlcnMgY29uc2lzdGVudGx5IHRoZSBET00gbm9kZSAoWzExNzddKQotIGBkaXNwbGF5RXZlbnRFbmRgIC0gdjIgd29ya2Fyb3VuZCB0byBmb3JjZSBkaXNwbGF5IG9mIGFuIGVuZCB0aW1lIChbMjA5MF0pCi0gZG9uJ3QgbW9kaWZ5IHBhc3NlZC1pbiBldmVudFNvdXJjZSBpdGVtcyAoWzk1NF0pCi0gZGVzdHJveSBtZXRob2Qgbm93IHJlbW92ZXMgZmMtbHRyIGNsYXNzIChbMjAzM10pCi0gd2Vla3Mgb2YgbGFzdC9uZXh0IG1vbnRoIHN0aWxsIHZpc2libGUgd2hlbiB3ZWVrZW5kcyBhcmUgaGlkZGVuIChbMjA5NV0pCi0gZml4ZWQgbWVtb3J5IGxlYWsgd2hlbiBkZXN0cm95aW5nIGNhbGVuZGFyIHdpdGggc2VsZWN0YWJsZS9kcm9wcGFibGUgKFsyMTM3XSkKLSBJY2VsYW5kaWMgbGFuZ3VhZ2UgKFsyMTgwXSkKLSBCYWhhc2EgSW5kb25lc2lhIGxhbmd1YWdlIChbUFIgMTcyXSkKClsxMTE2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTE2ClsxMTc3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTc3ClsyMDkwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDkwCls5NTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTk1NApbMjAzM106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjAzMwpbMjA5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjA5NQpbMjEzN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjEzNwpbMjE1Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE1NgpbMjE4MF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE4MApbUFIgMTcyXTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xNzIKCgp2Mi4wLjAgKDIwMTQtMDYtMDEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCkludGVybmF0aW9uYWxpemF0aW9uIHN1cHBvcnQsIHRpbWV6b25lIHN1cHBvcnQsIGFuZCBbTW9tZW50SlNdIGludGVncmF0aW9uLiBFeHRlbnNpdmUgY2hhbmdlcywgbWFueQpvZiB3aGljaCBhcmUgYmFja3dhcmRzIGluY29tcGF0aWJsZS4KCltGdWxsIGxpc3Qgb2YgY2hhbmdlc11bVXBncmFkaW5nLXRvLXYyXSB8IFtBZmZlY3RlZCBJc3N1ZXNdW0RhdGUtTWlsZXN0b25lXQoKQW4gYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGhhcyBiZWVuIHNldCB1cCAoW0thcm1hXSArIFtKYXNtaW5lXSkgYW5kIHRlc3RzIGhhdmUgYmVlbiB3cml0dGVuCndoaWNoIGNvdmVyIGFib3V0IGhhbGYgb2YgRnVsbENhbGVuZGFyJ3MgZnVuY3Rpb25hbGl0eS4gU3BlY2lhbCB0aGFua3MgdG8gQGluY3JlLWQsIEB2aWRiaW5hLCBhbmQKQHNpcnJvY2NvIGZvciB0aGUgaGVscC4KCkluIGFkZGl0aW9uLCB0aGUgbWFpbiBkZXZlbG9wbWVudCByZXBvIGhhcyBiZWVuIHJlcHVycG9zZWQgdG8gYWxzbyBpbmNsdWRlIHRoZSBidWlsdCBkaXN0cmlidXRhYmxlCkpTL0NTUyBmb3IgdGhlIHByb2plY3QgYW5kIHdpbGwgc2VydmUgYXMgdGhlIG5ldyBbQm93ZXJdIGVuZHBvaW50LgoKW01vbWVudEpTXTogaHR0cDovL21vbWVudGpzLmNvbS8KW1VwZ3JhZGluZy10by12Ml06IGh0dHA6Ly9hcnNoYXcuY29tL2Z1bGxjYWxlbmRhci93aWtpL1VwZ3JhZGluZy10by12Mi8KW0RhdGUtTWlsZXN0b25lXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2xpc3Q/Y2FuPTEmcT1taWxlc3RvbmUlM0RkYXRlCltLYXJtYV06IGh0dHA6Ly9rYXJtYS1ydW5uZXIuZ2l0aHViLmlvLwpbSmFzbWluZV06IGh0dHA6Ly9qYXNtaW5lLmdpdGh1Yi5pby8KW0Jvd2VyXTogaHR0cDovL2Jvd2VyLmlvLwoKCnYxLjYuNCAoMjAxMy0wOS0wMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBiZXR0ZXIgYWxnb3JpdGhtIGZvciBwb3NpdGlvbmluZyB0aW1lZCBhZ2VuZGEgZXZlbnRzIChbMTExNV0pCi0gYHNsb3RFdmVudE92ZXJsYXBgIG9wdGlvbiB0byB0d2VhayB0aW1lZCBhZ2VuZGEgZXZlbnQgb3ZlcmxhcHBpbmcgKFsyMThdKQotIHNlbGVjdGlvbiBidWcgd2hlbiBzbG90IGhlaWdodCBpcyBjdXN0b21pemVkIChbMTAzNV0pCi0gc3VwcGx5IHZpZXcgYXJndW1lbnQgaW4gYGxvYWRpbmdgIGNhbGxiYWNrIChbMTAxOF0pCi0gZml4ZWQgd2VlayBudW1iZXIgbm90IGRpc3BsYXlpbmcgaW4gYWdlbmRhIHZpZXdzIChbMTk1MV0pCi0gZml4ZWQgZnVsbENhbGVuZGFyIG5vdCBpbml0aWFsaXppbmcgd2l0aCBubyBvcHRpb25zIChbMTM1Nl0pCi0gTlBNJ3MgYHBhY2thZ2UuanNvbmAsIG5vIG1vcmUgd2FybmluZ3Mgb3IgZXJyb3JzIChbMTc2Ml0pCi0gYnVpbGRpbmcgdGhlIGJvd2VyIGNvbXBvbmVudCBzaG91bGQgb3V0cHV0IGBib3dlci5qc29uYCBpbnN0ZWFkIG9mIGBjb21wb25lbnQuanNvbmAgKFtQUiAxMjVdKQotIHVzZSBib3dlciBpbnRlcm5hbGx5IGZvciBmZXRjaGluZyBuZXcgdmVyc2lvbnMgb2YgalF1ZXJ5IGFuZCBqUXVlcnkgVUkKClsxMTE1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTE1ClsyMThdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOApbMTAzNV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTAzNQpbMTAxOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTAxOApbMTk1MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTk1MQpbMTM1Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTM1NgpbMTc2Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTc2MgpbUFIgMTI1XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xMjUKCgp2MS42LjMgKDIwMTMtMDgtMTApCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYHZpZXdSZW5kZXJgIGNhbGxiYWNrIChbUFIgMTVdKQotIGB2aWV3RGVzdHJveWAgY2FsbGJhY2sgKFtQUiAxNV0pCi0gYGV2ZW50RGVzdHJveWAgY2FsbGJhY2sgKFtQUiAxMTFdKQotIGBoYW5kbGVXaW5kb3dSZXNpemVgIG9wdGlvbiAoW1BSIDU0XSkKLSBgZXZlbnRTdGFydEVkaXRhYmxlYC9gc3RhcnRFZGl0YWJsZWAgb3B0aW9ucyAoW1BSIDQ5XSkKLSBgZXZlbnREdXJhdGlvbkVkaXRhYmxlYC9gZHVyYXRpb25FZGl0YWJsZWAgb3B0aW9ucyAoW1BSIDQ5XSkKLSBzcGVjaWZ5IGZ1bmN0aW9uIGZvciBgJC5hamF4YCBgZGF0YWAgcGFyYW1ldGVyIGZvciBKU09OIGV2ZW50IHNvdXJjZXMgKFtQUiA1OV0pCi0gZml4ZWQgYnVnIHdpdGggYWdlbmRhIGV2ZW50IGRyb3BwaW5nIGluIHdyb25nIGNvbHVtbiAoW1BSIDU1XSkKLSBlYXNpZXIgZXZlbnQgZWxlbWVudCB6LWluZGV4IGN1c3RvbWl6YXRpb24gKFtQUiA1OF0pCi0gY2xhc3NOYW1lcyBvbiBwYXN0L2Z1dHVyZSBkYXlzIChbUFIgODhdKQotIGFsbG93IGBudWxsYC9gdW5kZWZpbmVkYCBldmVudCB0aXRsZXMgKFtQUiA4NF0pCi0gc21hbGwgb3B0aW1pemUgZm9yIGFnZW5kYSBldmVudCByZW5kZXJpbmcgKFtQUiA1Nl0pCi0gZGVwcmVjYXRlZDoKCS0gYHZpZXdEaXNwbGF5YAoJLSBgZGlzYWJsZURyYWdnaW5nYAoJLSBgZGlzYWJsZVJlc2l6aW5nYAotIGJ1bmRsZWQgd2l0aCBsYXRlc3QgalF1ZXJ5ICgxLjEwLjIpIGFuZCBqUXVlcnkgVUkgKDEuMTAuMykKCltQUiAxNV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTUKW1BSIDExMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTExCltQUiA1NF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvNTQKW1BSIDQ5XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC80OQpbUFIgNTldOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzU5CltQUiA1NV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvNTUKW1BSIDU4XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC81OApbUFIgODhdOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzg4CltQUiA4NF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvODQKW1BSIDU2XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC81NgoKCnYxLjYuMiAoMjAxMy0wNy0xOCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBgaGlkZGVuRGF5c2Agb3B0aW9uIChbNjg2XSkKLSBidWdmaXg6IHdoZW4gYGV2ZW50UmVuZGVyYCByZXR1cm5zIGBmYWxzZWAsIGluY29ycmVjdCBzdGFja2luZyBvZiBldmVudHMgKFs3NjJdKQotIGJ1Z2ZpeDogY291bGRuJ3QgY2hhbmdlIGBldmVudC5iYWNrZ3JvdW5kSW1hZ2VgIHdoZW4gY2FsbGluZyBgdXBkYXRlRXZlbnRgICh0aHggQHN0ZXBoZW5oYXJyaXMpCgpbNjg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD02ODYKWzc2Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzYyCgoKdjEuNi4xICgyMDEzLTA0LTE0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGZpeGVkIGV2ZW50IGlubmVyIGNvbnRlbnQgb3ZlcmZsb3cgYnVnIChbMTc4M10pCi0gZml4ZWQgdGFibGUgaGVhZGVyIGNsYXNzTmFtZSBidWcgWzE3NzJdCi0gcmVtb3ZlZCB0ZXh0LXNoYWRvdyBvbiBldmVudHMgKGJldHRlciBmb3IgZ2VuZXJhbCB1c2UsIHRoeCBAdGtyb3RvZmYpCgpbMTc4M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTc4MwpbMTc3Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTc3MgoKCnYxLjYuMCAoMjAxMy0wMy0xOCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSB2aXN1YWwgZmFjZWxpZnQsIHdpdGggYm9vdHN0cmFwLWluc3BpcmVkIGJ1dHRvbnMgYW5kIGNvbG9ycwotIHNpbXBsaWZpZWQgSFRNTC9DU1MgZm9yIGV2ZW50cyBhbmQgYnV0dG9ucwotIGBkYXlSZW5kZXJgLCBmb3IgbW9kaWZ5aW5nIGEgZGF5IGNlbGwgKFsxOTFdLCB0aHggQGFsdGhhdXMpCi0gd2VlayBudW1iZXJzIG9uIHNpZGUgb2YgY2FsZW5kYXIgKFsyOTVdKQoJLSBgd2Vla051bWJlcmAKCS0gYHdlZWtOdW1iZXJDYWxjdWxhdGlvbmAKCS0gYHdlZWtOdW1iZXJUaXRsZWAKCS0gYFdgIGZvcm1hdHRpbmcgdmFyaWFibGUKLSBmaW5lciBzbmFwcGluZyBncmFudWxhcml0eSBmb3IgYWdlbmRhIHZpZXcgZXZlbnRzIChbNDk1XSwgdGh4IEBtcy1kb29kbGUtY29tKQotIGBldmVudEFmdGVyQWxsUmVuZGVyYCAoWzc1M10sIHRoeCBAcGRyYWtld2ViKQotIGBldmVudERhdGFUcmFuc2Zvcm1gICh0aHggQGpvZXlzcG8pCi0gYGRhdGEtZGF0ZWAgYXR0cmlidXRlcyBvbiBjZWxscyAodGh4IEBKYWUpCi0gZXhwb3NlIGAkLmZ1bGxDYWxlbmRhci5kYXRlRm9ybWF0dGVyc2AKLSB3aGVuIGNsaWNraW5nIGZhc3Qgb24gYnV0dG9ucywgcHJldmVudCB0ZXh0IHNlbGVjdGlvbgotIGJ1bmRsZWQgd2l0aCBsYXRlc3QgalF1ZXJ5ICgxLjkuMSkgYW5kIGpRdWVyeSBVSSAoMS4xMC4yKQotIEdydW50L0x1bWJhciBidWlsZCBzeXN0ZW0gZm9yIGludGVybmFsIGRldmVsb3BtZW50Ci0gYnVpbGQgZm9yIEJvd2VyIHBhY2thZ2UgbWFuYWdlcgotIGJ1aWxkIGZvciBqUXVlcnkgcGx1Z2luIHNpdGUKClsxOTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE5MQpbMjk1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yOTUKWzQ5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDk1Cls3NTNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc1MwoKCnYxLjUuNCAoMjAxMi0wOS0wNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBtYWRlIGNvbXBhdGlibGUgd2l0aCBqUXVlcnkgMS44LiogKHRoeCBAYXJjaGFlcm9uKQotIGJ1bmRsZWQgd2l0aCBqUXVlcnkgMS44LjEgYW5kIGpRdWVyeSBVSSAxLjguMjMKCgp2MS41LjMgKDIwMTItMDItMDYpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgZHJhZ2dpbmcgaXNzdWUgd2l0aCBqUXVlcnkgVUkgMS44LjE2IChbMTE2OF0pCi0gYnVuZGxlZCB3aXRoIGpRdWVyeSAxLjcuMSBhbmQgalF1ZXJ5IFVJIDEuOC4xNwoKWzExNjhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExNjgKCgp2MS41LjIgKDIwMTEtMDgtMjEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gY29ycmVjdGx5IHByb2Nlc3MgVVRDICJaIiBJU084NjAxIGRhdGUgc3RyaW5ncyAoWzc1MF0pCgpbNzUwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NTAKCgp2MS41LjEgKDIwMTEtMDQtMDkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gbW9yZSBmbGV4aWJsZSBJU084NjAxIGRhdGUgcGFyc2luZyAoWzgxNF0pCi0gbW9yZSBmbGV4aWJsZSBwYXJzaW5nIG9mIFVOSVggdGltZXN0YW1wcyAoWzgyNl0pCi0gRnVsbENhbGVuZGFyIG5vdyBidWlsZGFibGUgZnJvbSBzb3VyY2Ugb24gYSBNYWMgKFs3OTVdKQotIEZ1bGxDYWxlbmRhciBRQSdkIGluIEZGNCAoWzg4M10pCi0gdXBncmFkZWQgdG8galF1ZXJ5IDEuNS4yICh3aGljaCBzdXBwb3J0cyBJRTkpIGFuZCBqUXVlcnkgVUkgMS44LjExCgpbODE0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD04MTQKWzgyNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9ODI2Cls3OTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc5NQpbODgzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD04ODMKCgp2MS41ICgyMDExLTAzLTE5KQotLS0tLS0tLS0tLS0tLS0tLQoKLSBzbGlja2VyIGRlZmF1bHQgc3R5bGluZyBmb3IgYnV0dG9ucwotIHJld29ya2VkIGEgbG90IG9mIHRoZSBjYWxlbmRhcidzIEhUTUwgYW5kIGFjY29tcGFueWluZyBDU1MgKHNvbHZlcyBbMzI3XSBhbmQgWzM5NV0pCi0gbW9yZSBwcmludGVyLWZyaWVuZGx5IChmdWxsY2FsZW5kYXItcHJpbnQuY3NzKQotIGZ1bGxjYWxlbmRhciBub3cgaW5oZXJpdHMgc3R5bGVzIGZyb20ganF1ZXJ5LXVpIHRoZW1lcyBkaWZmZXJlbnRseS4KICBzdHlsZXMgZm9yIGJ1dHRvbnMgYXJlIGRpc3RpbmN0IGZyb20gc3R5bGVzIGZvciBjYWxlbmRhciBjZWxscy4KICAoc29sdmVzIFsyOTldKQotIGNhbiBub3cgY29sb3IgZXZlbnRzIHRocm91Z2ggRnVsbENhbGVuZGFyIG9wdGlvbnMgYW5kIEV2ZW50LU9iamVjdCBwcm9wZXJ0aWVzIChbMTE3XSkKICBUSElTIElTIE5PVyBUSEUgUFJFRkVSUkVEIE1FVEhPRCBPRiBDT0xPUklORyBFVkVOVFMgKGFzIG9wcG9zZWQgdG8gdXNpbmcgY2xhc3NOYW1lIGFuZCBDU1MpCgktIEZ1bGxDYWxlbmRhciBvcHRpb25zOgoJCS0gZXZlbnRDb2xvciAoY2hhbmdlcyBib3RoIGJhY2tncm91bmQgYW5kIGJvcmRlcikKCQktIGV2ZW50QmFja2dyb3VuZENvbG9yCgkJLSBldmVudEJvcmRlckNvbG9yCgkJLSBldmVudFRleHRDb2xvcgoJLSBFdmVudC1PYmplY3Qgb3B0aW9uczoKCQktIGNvbG9yIChjaGFuZ2VzIGJvdGggYmFja2dyb3VuZCBhbmQgYm9yZGVyKQoJCS0gYmFja2dyb3VuZENvbG9yCgkJLSBib3JkZXJDb2xvcgoJCS0gdGV4dENvbG9yCi0gY2FuIG5vdyBzcGVjaWZ5IGFuIGV2ZW50IHNvdXJjZSBhcyBhbiAqb2JqZWN0KiB3aXRoIGEgYHVybGAgcHJvcGVydHkgKGpzb24gZmVlZCkgb3IKICBhbiBgZXZlbnRzYCBwcm9wZXJ0eSAoZnVuY3Rpb24gb3IgYXJyYXkpIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgd2lsbAogIGJlIGFwcGxpZWQgdG8gdGhlIGVudGlyZSBldmVudCBzb3VyY2U6CgktIGNvbG9yIChjaGFuZ2VzIGJvdGggYmFja2dyb3VuZCBhbmQgYm9yZGVyKQoJLSBiYWNrZ3JvdWRDb2xvcgoJLSBib3JkZXJDb2xvcgoJLSB0ZXh0Q29sb3IKCS0gY2xhc3NOYW1lCgktIGVkaXRhYmxlCgktIGFsbERheURlZmF1bHQKCS0gaWdub3JlVGltZXpvbmUKCS0gc3RhcnRQYXJhbSAoZm9yIGEgZmVlZCkKCS0gZW5kUGFyYW0gICAoZm9yIGEgZmVlZCkKCS0gQU5ZIE9GIFRIRSBKUVVFUlkgJC5hamF4IE9QVElPTlMKCSAgYWxsb3dzIGZvciBlYXNpbHkgY2hhbmdpbmcgZnJvbSBHRVQgdG8gUE9TVCBhbmQgc2VuZGluZyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgKFszODZdKQoJICBhbGxvd3MgZm9yIGVhc2lseSBhdHRhY2hpbmcgYWpheCBoYW5kbGVycyBzdWNoIGFzIGBlcnJvcmAgKFs3NTRdKQoJICBhbGxvd3MgZm9yIHR1cm5pbmcgY2FjaGluZyBvbiAoWzM1NV0pCi0gR29vZ2xlIENhbGVuZGFyIGZlZWRzIGFyZSBub3cgc3BlY2lmaWVkIGRpZmZlcmVudGx5OgoJLSBzcGVjaWZ5IGEgc2ltcGxlIHN0cmluZyBvZiB5b3VyIGZlZWQncyBVUkwKCS0gc3BlY2lmeSBhbiAqb2JqZWN0KiB3aXRoIGEgYHVybGAgcHJvcGVydHkgb2YgeW91ciBmZWVkJ3MgVVJMLgoJICB5b3UgY2FuIGluY2x1ZGUgYW55IG9mIHRoZSBuZXcgRXZlbnQtU291cmNlIG9wdGlvbnMgaW4gdGhpcyBvYmplY3QuCgktIHRoZSBvbGQgYCQuZnVsbENhbGVuZGFyLmdjYWxGZWVkYCBtZXRob2Qgc3RpbGwgd29ya3MKLSBubyBtb3JlIElFNyBTU0wgcG9wdXAgKFs1MDRdKQotIHJlbW92ZSBgY2FjaGVQYXJhbWAgLSB1c2UganNvbiBldmVudCBzb3VyY2UgYGNhY2hlYCBvcHRpb24gaW5zdGVhZAotIGxhdGVzdCBqcXVlcnkvanF1ZXJ5LXVpCgpbMzI3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zMjcKWzM5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mzk1ClsyOTldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI5OQpbMTE3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTcKWzM4Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mzg2Cls3NTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc1NApbMzU1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNTUKWzUwNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTA0CgoKdjEuNC4xMSAoMjAxMS0wMi0yMikKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgcmVyZW5kZXJFdmVudHMgYnVnIChbNzkwXSkKLSBmaXhlZCBidWcgd2l0aCBmYXVsdHkgZHJhZ2dpbmcgb2YgZXZlbnRzIGZyb20gYWxsLWRheSBzbG90IGluIGFnZW5kYSB2aWV3cwotIGJ1bmRsZWQgd2l0aCBqcXVlcnkgMS41IGFuZCBqcXVlcnktdWkgMS44LjkKCls3OTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc5MAoKCnYxLjQuMTAgKDIwMTEtMDEtMDIpCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgotIGZpeGVkIGJ1ZyB3aXRoIHJlc2l6aW5nIGV2ZW50IHRvIGRpZmZlcmVudCB3ZWVrIGluIDUtZGF5IG1vbnRoIHZpZXcgKFs3NDBdKQotIGZpeGVkIGJ1ZyB3aXRoIGV2ZW50cyBub3Qgc3RpY2tpbmcgYWZ0ZXIgYSByZW1vdmVFdmVudHMgY2FsbCAoWzc1N10pCi0gZml4ZWQgYnVnIHdpdGggdW5kZXJseWluZyBwYXJzZVRpbWUgbWV0aG9kLCBhbmQgb3RoZXIgdXNlcyBvZiBwYXJzZUludCAoWzY4OF0pCgpbNzQwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NDAKWzc1N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzU3Cls2ODhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTY4OAoKCnYxLjQuOSAoMjAxMC0xMS0xNikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBuZXcgYWxnb3JpdGhtIGZvciB2ZXJ0aWNhbGx5IHN0YWNraW5nIGV2ZW50cyAoWzExMV0pCi0gcmVzaXppbmcgYW4gZXZlbnQgdG8gYSBkaWZmZXJlbnQgd2VlayAoWzMwNl0pCi0gYnVnOiBzb21lIGV2ZW50cyBub3QgcmVuZGVyZWQgd2l0aCBjb25zZWN1dGl2ZSBjYWxscyB0byBhZGRFdmVudFNvdXJjZSAoWzY3OV0pCgpbMTExXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTEKWzMwNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzA2Cls2NzldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTY3OQoKCnYxLjQuOCAoMjAxMC0xMC0xNikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBpZ25vcmVUaW1lem9uZSBvcHRpb24gKHNldCB0byBgZmFsc2VgIHRvIHByb2Nlc3MgVVRDIG9mZnNldHMgaW4gSVNPODYwMSBkYXRlcykKLSBidWdmaXhlcwoJLSBldmVudCByZWZldGNoaW5nIG5vdCBiZWluZyBjYWxsZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChbNDE3XSwgWzU1NF0pCgktIGV2ZW50IHJlZmV0Y2hpbmcgYmVpbmcgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyAoWzU4Nl0sIFs2MTZdKQoJLSBzZWxlY3Rpb24gY2Fubm90IGJlIHRyaWdnZXJlZCBieSByaWdodCBtb3VzZSBidXR0b24gKFs1NThdKQoJLSBhZ2VuZGEgdmlldyBsZWZ0IGF4aXMgc2l6ZWQgaW5jb3JyZWN0bHkgKFs0NjVdKQoJLSBJRSBqcyBlcnJvciB3aGVuIGNhbGVuZGFyIGlzIHRvbyBuYXJyb3cgKFs1MTddKQoJLSBhZ2VuZGEgdmlldyBsb29rcyBzdHJhbmdlIHdoZW4gbm8gc2Nyb2xsYmFycyAoWzIzNV0pCgktIGltcHJvdmVkIHBhcnNpbmcgb2YgSVNPODYwMSBkYXRlcyB3aXRoIFVUQyBvZmZzZXRzCi0gJC5mdWxsQ2FsZW5kYXIudmVyc2lvbgotIGFuIGludGVybmFsIHJlZmFjdG9yIG9mIHRoZSBjb2RlLCBmb3IgZWFzaWVyIGZ1dHVyZSBkZXZlbG9wbWVudCBhbmQgbW9kdWxhcml0eQoKWzQxN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDE3Cls1NTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTU1NApbNTg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01ODYKWzYxNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NjE2Cls1NThdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTU1OApbNDY1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00NjUKWzUxN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTE3ClsyMzVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzNQoKCnYxLjQuNyAoMjAxMC0wNy0wNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSAiZHJvcHBpbmciIGV4dGVybmFsIG9iamVjdHMgb250byB0aGUgY2FsZW5kYXIKCS0gZHJvcHBhYmxlIChib29sZWFuLCB0byB0dXJuIG9uL29mZikKCS0gZHJvcEFjY2VwdCAodG8gZmlsdGVyIHdoaWNoIGV2ZW50cyB0aGUgY2FsZW5kYXIgd2lsbCBhY2NlcHQpCgktIGRyb3AgKHRyaWdnZXIpCi0gc2VsZWN0YWJsZSBvcHRpb25zIGNhbiBub3cgYmUgc3BlY2lmaWVkIHdpdGggYSBWaWV3IE9wdGlvbiBIYXNoCi0gYnVnZml4ZXMKCS0gZHJhZ2dlZCAmIHJldmVydGVkIGV2ZW50cyBoYXZpbmcgd3JvbmcgdGltZSB0ZXh0IChbNDA2XSkKCS0gYnVnIHJlbmRlcmluZyBldmVudHMgdGhhdCBoYXZlIGFuIGVuZHRpbWUgd2l0aCBzZWNvbmRzLCBidXQgbm8gaG91cnMvbWludXRlcyAoWzQ3N10pCgktIGdvdG9EYXRlIGRhdGUgb3ZlcmZsb3cgYnVnIChbNDI5XSkKCS0gd3JvbmcgZGF0ZSByZXBvcnRlZCB3aGVuIGNsaWNraW5nIG9uIGVkZ2Ugb2YgbGFzdCBjb2x1bW4gaW4gYWdlbmRhIHZpZXdzIFs0MTJdCi0gc3VwcG9ydCBuZXdsaW5lcyBpbiBldmVudCB0aXRsZXMKLSBzZWxlY3QvdW5zZWxlY3QgY2FsbGJhY2tzIG5vdyBwYXNzZXMgbmF0aXZlIGpzIGV2ZW50CgpbNDA2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00MDYKWzQ3N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDc3Cls0MjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTQyOQpbNDEyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00MTIKCgp2MS40LjYgKDIwMTAtMDUtMzEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gInNlbGVjdGluZyIgZGF5cyBvciB0aW1lc2xvdHMKCS0gb3B0aW9uczogc2VsZWN0YWJsZSwgc2VsZWN0SGVscGVyLCB1bnNlbGVjdEF1dG8sIHVuc2VsZWN0Q2FuY2VsCgktIGNhbGxiYWNrczogc2VsZWN0LCB1bnNlbGVjdAoJLSBtZXRob2RzOiBzZWxlY3QsIHVuc2VsZWN0Ci0gd2hlbiBkcmFnZ2luZyBhbiBldmVudCwgdGhlIGhpZ2hsaWdodGluZyByZWZsZWN0cyB0aGUgZHVyYXRpb24gb2YgdGhlIGV2ZW50Ci0gY29kZSBjb21wcmVzc2luZyBieSBHb29nbGUgQ2xvc3VyZSBDb21waWxlcgotIGJ1bmRsZWQgd2l0aCBqUXVlcnkgMS40LjIgYW5kIGpRdWVyeSBVSSAxLjguMQoKCnYxLjQuNSAoMjAxMC0wMi0yMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBsYXp5RmV0Y2hpbmcgb3B0aW9uLCB3aGljaCBjYW4gZm9yY2UgdGhlIGNhbGVuZGFyIHRvIGZldGNoIGV2ZW50cyBvbiBldmVyeSB2aWV3L2RhdGUgY2hhbmdlCi0gc2Nyb2xsIHN0YXRlIG9mIGFnZW5kYSB2aWV3cyBhcmUgcHJlc2VydmVkIHdoZW4gc3dpdGNoaW5nIGJhY2sgdG8gdmlldwotIGJ1Z2ZpeGVzCgktIGNhbGxpbmcgbWV0aG9kcyBvbiBhbiB1bmluaXRpYWxpemVkIGZ1bGxjYWxlbmRhciB0aHJvd3MgZXJyb3IKCS0gSUU2LzcgYnVnIHdoZXJlIGFuIGVudGlyZSB2aWV3IGJlY29tZXMgaW52aXNpYmxlIChbMzIwXSkKCS0gZXJyb3Igd2hlbiByZW5kZXJpbmcgYSBoaWRkZW4gY2FsZW5kYXIgKGluIGpxdWVyeSB1aSB0YWJzIGZvciBleGFtcGxlKSBpbiBJRSAoWzM0MF0pCgktIGludGVyY29ubmVjdGVkIGJ1Z3MgcmVsYXRlZCB0byBjYWxlbmRhciByZXNpemluZyBhbmQgc2Nyb2xsYmFycwoJCS0gd2hlbiBzd2l0Y2hpbmcgdmlld3Mgb3IgY2xpY2tpbmcgcHJldi9uZXh0LCBjYWxlbmRhciB3b3VsZCAiYmxpbmsiIChbMzMzXSkKCQktIGxpcXVpZC13aWR0aCBjYWxlbmRhcidzIGV2ZW50cyBzaGlmdGVkIChkZXBlbmRpbmcgb24gaW5pdGlhbCBoZWlnaHQgb2YgYnJvd3NlcikgKFszNDFdKQoJCS0gbW9yZSByb2J1c3QgdW5kZXJseWluZyBhbGdvcml0aG0gZm9yIGNhbGVuZGFyIHJlc2l6aW5nCgpbMzIwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zMjAKWzM0MF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzQwClszMzNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTMzMwpbMzQxXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNDEKCgp2MS40LjQgKDIwMTAtMDItMDMpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gb3B0aW1pemVkIGV2ZW50IHJlbmRlcmluZyBpbiBhbGwgdmlld3MgKGV2ZW50cyByZW5kZXIgaW4gMS8xMCB0aGUgdGltZSkKLSBnb3RvRGF0ZSgpIGRvZXMgbm90IGZvcmNlIHRoZSBjYWxlbmRhciB0byB1bm5lY2Vzc2FyaWx5IHJlcmVuZGVyCi0gcmVuZGVyKCkgbWV0aG9kIG5vdyBjb3JyZWN0bHkgcmVhZGp1c3RzIGhlaWdodAoKCnYxLjQuMyAoMjAwOS0xMi0yMikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBhZGRlZCBkZXN0cm95IG1ldGhvZAotIEdvb2dsZSBDYWxlbmRhciBldmVudCBwYWdlcyByZXNwZWN0IGN1cnJlbnRUaW1lem9uZQotIGNhY2hpbmcgbm93IGhhbmRsZWQgYnkgalF1ZXJ5J3MgYWpheAkKLSBwcm90ZWN0aW9uIGZyb20gc2V0dGluZyBhc3BlY3RSYXRpbyB0byB6ZXJvCi0gYnVnZml4ZXMKCS0gcGFyc2VJU084NjAxIGFuZCBEU1QgY2F1c2VkIGNlcnRhaW4gZXZlbnRzIHRvIGRpc3BsYXkgZGF5IGJlZm9yZQoJLSBidXR0b24gcG9zaXRpb25pbmcgcHJvYmxlbSBpbiBJRTYKCS0gYWpheCBldmVudCBzb3VyY2UgcmVtb3ZlZCBhZnRlciByZWNlbnRseSBiZWluZyBhZGRlZCwgZXZlbnRzIHN0aWxsIGRpc3BsYXllZAoJLSBldmVudCBub3QgZGlzcGxheWVkIHdoZW4gZW5kIGlzIGFuIGVtcHR5IHN0cmluZwoJLSBkeW5hbWljYWxseSBzZXR0aW5nIGNhbGVuZGFyIGhlaWdodCB3aGVuIG5vIGV2ZW50cyBoYXZlIGJlZW4gZmV0Y2hlZCwgdGhyb3dzIGVycm9yCgoKdjEuNC4yICgyMDA5LTEyLTAyKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGV2ZW50QWZ0ZXJSZW5kZXIgdHJpZ2dlcgotIGdldERhdGUgJiBnZXRWaWV3IG1ldGhvZHMKLSBoZWlnaHQgJiBjb250ZW50SGVpZ2h0IG9wdGlvbnMgKGV4cGxpY2l0bHkgc2V0cyB0aGUgcGl4ZWwgaGVpZ2h0KQotIG1pblRpbWUgJiBtYXhUaW1lIG9wdGlvbnMgKHJlc3RyaWN0cyBzaG93biBob3VycyBpbiBhZ2VuZGEgdmlldykKLSBnZXR0ZXJzIFtmb3IgYWxsIG9wdGlvbnNdIGFuZCBzZXR0ZXJzIFtmb3IgaGVpZ2h0LCBjb250ZW50SGVpZ2h0LCBhbmQgYXNwZWN0UmF0aW8gT05MWSEgc3RheSB0dW5lZC4uXQotIHJlbmRlciBtZXRob2Qgbm93IHJlYWRqdXN0cyBjYWxlbmRhcidzIHNpemUKLSBidWdmaXhlcwoJLSBsaWdodGJveCBzY3JpcHRzIHRoYXQgdXNlIGlmcmFtZXMgKGxpa2UgZmFuY3lib3gpCgktIGRheS1vZi13ZWVrIGNsYXNzTmFtZXMgd2VyZSBvZmYgd2hlbiBmaXJzdERheT0xCgktIGd1YXJhbnRlZWQgc3BhY2Ugb24gcmlnaHQgc2lkZSBvZiBhZ2VuZGEgZXZlbnRzIChldmVuIHdoZW4gc3RhY2tlZCkKCS0gYWNjZXB0cyBJU084NjAxIGRhdGVzIHdpdGggYSBzcGFjZSAoaW5zdGVhZCBvZiAnVCcpCgoKdjEuNC4xICgyMDA5LTEwLTMxKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGNhbiBleGNsdWRlIHdlZWtlbmRzIHdpdGggbmV3ICd3ZWVrZW5kcycgb3B0aW9uCi0gZ2NhbCBmZWVkICdjdXJyZW50VGltZXpvbmUnIG9wdGlvbgotIGJ1Z2ZpeGVzCgktIHllYXIvbW9udGgvZGF0ZSBvcHRpb24gc29tZXRpbWVzIHdvdWxkbid0IHNldCBjb3JyZWN0bHkgKGRlcGVuZGluZyBvbiBjdXJyZW50IGRhdGUpCgktIGRheWxpZ2h0IHNhdmluZ3MgaXNzdWUgY2F1c2VkIGFnZW5kYSB2aWV3cyB0byBzdGFydCBhdCAxYW0gKGZvciBCU1QgdXNlcnMpCi0gY2xlYW51cCBvZiBnY2FsLmpzIGNvZGUKCgp2MS40ICgyMDA5LTEwLTE5KQotLS0tLS0tLS0tLS0tLS0tLQoKLSBhZ2VuZGFXZWVrIGFuZCBhZ2VuZGFEYXkgdmlld3MKLSBhZGRlZCBzb21lIG9wdGlvbnMgZm9yIGFnZW5kYSB2aWV3czoKCS0gYWxsRGF5U2xvdAoJLSBhbGxEYXlUZXh0CgktIGZpcnN0SG91cgoJLSBzbG90TWludXRlcwoJLSBkZWZhdWx0RXZlbnRNaW51dGVzCgktIGF4aXNGb3JtYXQKLSBtb2RpZmllZCBzb21lIGV4aXN0aW5nIG9wdGlvbnMvdHJpZ2dlcnMgdG8gd29yayB3aXRoIGFnZW5kYSB2aWV3czoKCS0gZHJhZ09wYWNpdHkgYW5kIHRpbWVGb3JtYXQgY2FuIG5vdyBhY2NlcHQgYSAiVmlldyBIYXNoIiAoYSBuZXcgY29uY2VwdCkKCS0gZGF5Q2xpY2sgbm93IGhhcyBhbiBhbGxEYXkgcGFyYW1ldGVyCgktIGV2ZW50RHJvcCBub3cgaGFzIGFuIGFuIGFsbERheSBwYXJhbWV0ZXIKCSAgKHRoaXMgd2lsbCBhZmZlY3QgdGhvc2Ugd2hvIHVzZSByZXZlcnRGdW5jLCBhZGp1c3QgcGFyYW1ldGVyIGxpc3QpCi0gYWRkZWQgJ3ByZXZZZWFyJyBhbmQgJ25leHRZZWFyJyBmb3IgYnV0dG9ucyBpbiBoZWFkZXIKLSBtaW5vciBjaGFuZ2UgZm9yIHRoZW1lIHVzZXJzLCB1aS1zdGF0ZS1ob3ZlciBub3QgYXBwbGllZCB0byBhY3RpdmUvaW5hY3RpdmUgYnV0dG9ucwotIGFkZGVkIGV2ZW50LWNvbG9yLWNoYW5naW5nIGV4YW1wbGUgaW4gZG9jcwotIGJldHRlciBkZWZhdWx0cyBmb3IgcmlnaHQtdG8tbGVmdCB0aGVtZWQgYnV0dG9uIGljb25zCgoKdjEuMy4yICgyMDA5LTEwLTEzKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEJ1Z2ZpeGVzIChwbGVhc2UgdXBncmFkZSBmcm9tIDEuMy4xISkKCS0gc3F1YXNoZWQgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agd2hlbiBhZGRNb250aHMgYW5kIGFkZERheXMKCSAgaXMgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBkYXRlCgktICQuZnVsbENhbGVuZGFyLnBhcnNlRGF0ZSgpIG5vdyBjb3JyZWN0bHkgcGFyc2VzIElFVEYgZm9ybWF0CgktIHdoZW4gc3dpdGNoaW5nIHZpZXdzLCB0aGUgJ3RvZGF5JyBidXR0b24gc3RpY2tzIGluYWN0aXZlLCBmaXhlZAotIGdvdG9EYXRlIG5vdyBjYW4gYWNjZXB0IGEgc2luZ2xlIERhdGUgYXJndW1lbnQKLSBkb2N1bWVudGF0aW9uIGZvciBjaGFuZ2VzIGluIDEuMy4xIGFuZCAxLjMuMiBub3cgb24gd2Vic2l0ZQoKCnYxLjMuMSAoMjAwOS0wOS0zMCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBJbXBvcnRhbnQgQnVnZml4ZXMgKHBsZWFzZSB1cGdyYWRlIGZyb20gMS4zISkKCS0gV2hlbiBjdXJyZW50IGRhdGUgd2FzIGxhdGUgaW4gdGhlIG1vbnRoLCBmb3IgbG9uZyBtb250aHMsIGFuZCBwcmV2L25leHQgYnV0dG9ucwoJICB3ZXJlIGNsaWNrZWQgaW4gbW9udGgtdmlldywgc29tZSBtb250aHMgd291bGQgYmUgc2tpcHBlZC9yZXBlYXRlZAoJLSBJbiBjZXJ0YWluIHRpbWUgem9uZXMsIGRheWxpZ2h0IHNhdmluZ3MgdGltZSB3b3VsZCBjYXVzZSBjZXJ0YWluIGRheXMKCSAgdG8gYmUgbWlzbnVtYmVyZWQgaW4gbW9udGgtdmlldwotIFN1YnRsZSBjaGFuZ2UgaW4gd2F5IHdlZWsgaW50ZXJ2YWwgaXMgY2hvc2VuIHdoZW4gc3dpdGNoaW5nIGZyb20gbW9udGggdG8gYmFzaWNXZWVrL2Jhc2ljRGF5IHZpZXcKLSBBZGRlZCAnYWxsRGF5RGVmYXVsdCcgb3B0aW9uCi0gQWRkZWQgJ2NoYW5nZVZpZXcnIGFuZCAncmVuZGVyJyBtZXRob2RzCgoKdjEuMyAoMjAwOS0wOS0yMSkKLS0tLS0tLS0tLS0tLS0tLS0KCi0gZGlmZmVyZW50ICd2aWV3cyc6IG1vbnRoL2Jhc2ljV2Vlay9iYXNpY0RheQotIG1vcmUgZmxleGlibGUgJ2hlYWRlcicgc3lzdGVtIGZvciBidXR0b25zCi0gdGhlbWFibGUgYnkgalF1ZXJ5IFVJIHRoZW1lcwotIHJlc2l6YWJsZSBldmVudHMgKHJlcXVpcmUgalF1ZXJ5IFVJIHJlc2l6YWJsZSBwbHVnaW4pCi0gcmVzY29wZWQgJiByZXdyaXR0ZW4gQ1NTLCBlbmhhbmNlZCBkZWZhdWx0IGxvb2sKLSBjbGVhbmVyIGNzcyAmIHJlbmRlcmluZyB0ZWNobmlxdWVzIGZvciByaWdodC10by1sZWZ0Ci0gcmV3b3JrZWQgb3B0aW9ucyAmIEFQSSB0byBzdXBwb3J0IG11bHRpcGxlIHZpZXdzIC8gYmUgY29uc2lzdGVudCB3aXRoIGpRdWVyeSBVSQotIHJlZmFjdG9yaW5nIG9mIGVudGlyZSBjb2RlYmFzZQoJLSBicm9rZW4gaW50byBkaWZmZXJlbnQgSlMgJiBDU1MgZmlsZXMsIGFzc2VtYmxlZCB3LyBidWlsZCBzY3JpcHRzCgktIG5ldyB0ZXN0IHN1aXRlIGZvciBuZXcgZmVhdHVyZXMsIHVzZXMgZmlyZWJ1Zy1saXRlCi0gcmVmYWN0b3JlZCBkb2NzCi0gT3B0aW9ucwoJLSArIGRhdGUKCS0gKyBkZWZhdWx0VmlldwoJLSArIGFzcGVjdFJhdGlvCgktICsgZGlzYWJsZVJlc2l6aW5nCgktICsgbW9udGhOYW1lcyAgICAgICh1c2UgaW5zdGVhZCBvZiAkLmZ1bGxDYWxlbmRhci5tb250aE5hbWVzKQoJLSArIG1vbnRoTmFtZXNTaG9ydCAodXNlIGluc3RlYWQgb2YgJC5mdWxsQ2FsZW5kYXIubW9udGhBYmJyZXZzKQoJLSArIGRheU5hbWVzICAgICAgICAodXNlIGluc3RlYWQgb2YgJC5mdWxsQ2FsZW5kYXIuZGF5TmFtZXMpCgktICsgZGF5TmFtZXNTaG9ydCAgICh1c2UgaW5zdGVhZCBvZiAkLmZ1bGxDYWxlbmRhci5kYXlBYmJyZXZzKQoJLSArIHRoZW1lCgktICsgYnV0dG9uVGV4dAoJLSArIGJ1dHRvbkljb25zCgktIHggZHJhZ2dhYmxlICAgICAgICAgICAtPiBlZGl0YWJsZS9kaXNhYmxlRHJhZ2dpbmcKCS0geCBmaXhlZFdlZWtzICAgICAgICAgIC0+IHdlZWtNb2RlCgktIHggYWJicmV2RGF5SGVhZGluZ3MgICAtPiBjb2x1bW5Gb3JtYXQKCS0geCBidXR0b25zL3RpdGxlICAgICAgIC0+IGhlYWRlcgoJLSB4IGV2ZW50RHJhZ09wYWNpdHkgICAgLT4gZHJhZ09wYWNpdHkKCS0geCBldmVudFJldmVydER1cmF0aW9uIC0+IGRyYWdSZXZlcnREdXJhdGlvbgoJLSB4IHdlZWtTdGFydCAgICAgICAgICAgLT4gZmlyc3REYXkKCS0geCByaWdodFRvTGVmdCAgICAgICAgIC0+IGlzUlRMCgktIHggc2hvd1RpbWUgKHVzZSAnYWxsRGF5JyBDYWxFdmVudCBwcm9wZXJ0eSBpbnN0ZWFkKQotIFRyaWdnZXJlZCBBY3Rpb25zCgktICsgZXZlbnRSZXNpemVTdGFydAoJLSArIGV2ZW50UmVzaXplU3RvcAoJLSArIGV2ZW50UmVzaXplCgktIHggbW9udGhEaXNwbGF5IC0+IHZpZXdEaXNwbGF5CgktIHggcmVzaXplICAgICAgIC0+IHdpbmRvd1Jlc2l6ZQoJLSAnZXZlbnREcm9wJyBwYXJhbXMgY2hhbmdlZCwgY2FuIHJldmVydCBpZiBhamF4IGN1dHMgb3V0Ci0gQ2FsRXZlbnQgUHJvcGVydGllcwoJLSB4IHNob3dUaW1lICAtPiBhbGxEYXkKCS0geCBkcmFnZ2FibGUgLT4gZWRpdGFibGUKCS0gJ2VuZCcgaXMgbm93IElOQ0xVU0lWRSB3aGVuIGFsbERheT10cnVlCgktICd1cmwnIG5vdyBwcm9kdWNlcyBhIHJlYWwgPGE+IHRhZywgbW9yZSBuYXRpdmUgY2xpY2tpbmcvdGFiIGJlaGF2aW9yCi0gTWV0aG9kczoKCS0gKyByZW5kZXJFdmVudAoJLSB4IHByZXZNb250aCAgICAgICAgIC0+IHByZXYKCS0geCBuZXh0TW9udGggICAgICAgICAtPiBuZXh0CgktIHggcHJldlllYXIvbmV4dFllYXIgLT4gbW92ZURhdGUKCS0geCByZWZyZXNoICAgICAgICAgICAtPiByZXJlbmRlckV2ZW50cy9yZWZldGNoRXZlbnRzCgktIHggcmVtb3ZlRXZlbnQgICAgICAgLT4gcmVtb3ZlRXZlbnRzCgktIHggZ2V0RXZlbnRzQnlJRCAgICAgLT4gY2xpZW50RXZlbnRzCi0gVXRpbGl0aWVzOgoJLSAnZm9ybWF0RGF0ZScgZm9ybWF0IHN0cmluZyBjb21wbGV0ZWx5IGNoYW5nZWQgKGluc3BpcmVkIGJ5IGpRdWVyeSBVSSBkYXRlcGlja2VyICsgZGF0ZWpzKQoJLSAnZm9ybWF0RGF0ZXMnIGFkZGVkIHRvIHN1cHBvcnQgZGF0ZS1yYW5nZXMKLSBHb29nbGUgQ2FsZW5kYXIgT3B0aW9uczoKCS0geCBkcmFnZ2FibGUgLT4gZWRpdGFibGUKLSBCdWdmaXhlcwoJLSBnY2FsIGV4dGVuc2lvbiBmZXRjaGVkIDI1IHJlc3VsdHMgbWF4LCBub3cgZmV0Y2hlcyBhbGwKCgp2MS4yLjEgKDIwMDktMDYtMjkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYnVnZml4ZXMKCS0gYWxsb3dzIGFuZCBjb3JyZWN0cyBpbnZhbGlkIGVuZCBkYXRlcyBmb3IgZXZlbnRzCgktIGRvZXNuJ3QgdGhyb3cgYW4gZXJyb3IgaW4gSUUgd2hpbGUgcmVuZGVyaW5nIHdoZW4gZGlzcGxheTpub25lCgktIGZpeGVkICdsb2FkaW5nJyBjYWxsYmFjayB3aGVuIHVzZWQgdy8gbXVsdGlwbGUgYWRkRXZlbnRTb3VyY2UgY2FsbHMKCS0gZ2NhbCBjbGFzc05hbWUgY2FuIG5vdyBiZSBhbiBhcnJheQoKCnYxLjIgKDIwMDktMDUtMzEpCi0tLS0tLS0tLS0tLS0tLS0tCgotIGV4cGFuZGVkIEFQSQoJLSAnY2xhc3NOYW1lJyBDYWxFdmVudCBhdHRyaWJ1dGUKCS0gJ3NvdXJjZScgQ2FsRXZlbnQgYXR0cmlidXRlCgktIGR5bmFtaWNhbGx5IGdldC9hZGQvcmVtb3ZlL3VwZGF0ZSBldmVudHMgb2YgY3VycmVudCBtb250aAoJLSBsb2NhbGUgaW1wcm92ZW1lbnRzOiBjaGFuZ2UgbW9udGgvZGF5IG5hbWUgdGV4dAoJLSBiZXR0ZXIgZGF0ZSBmb3JtYXR0aW5nICgkLmZ1bGxDYWxlbmRhci5mb3JtYXREYXRlKQoJLSBtdWx0aXBsZSAnZXZlbnQgc291cmNlcycgYWxsb3dlZAoJCS0gZHluYW1pY2FsbHkgYWRkL3JlbW92ZSBldmVudCBzb3VyY2VzCi0gb3B0aW9ucyBmb3IgcHJldlllYXIgYW5kIG5leHRZZWFyIGJ1dHRvbnMKLSBkb2NzIGhhdmUgYmVlbiByZXdvcmtlZCAoaW5jbHVkZSBhZGRpdGlvbiBvZiBHb29nbGUgQ2FsZW5kYXIgZG9jcykKLSBjaGFuZ2VkIGJlaGF2aW9yIG9mIHBhcnNlRGF0ZSBmb3IgbnVtYmVyIHN0cmluZ3MKICAobm93IGludGVycGV0cyBhcyB1bml4IHRpbWVzdGFtcCwgbm90IE1TIHRpbWVzKQotIGJ1Z2ZpeGVzCgktIHJpZ2h0VG9MZWZ0IG1vbnRoIHN0YXJ0IGJ1ZwoJLSBvZmYtYnktb25lIGVycm9ycyB3aXRoIG1vbnRoIGZvcm1hdHRpbmcgY29tbWFuZHMKCS0gZXZlbnRzIGZyb20gcHJldmlvdXMgbW9udGhzIHN0aWNraW5nIHdoZW4gY2xpY2tpbmcgcHJldi9uZXh0IHF1aWNrbHkKLSBHb29nbGUgQ2FsZW5kYXIgQVBJIGNoYW5nZWQgdG8gd29yayB3LyBtdWx0aXBsZSBldmVudCBzb3VyY2VzCgktIGNhbiBhbHNvIHByb3ZpZGUgJ2NsYXNzTmFtZScgYW5kICdkcmFnZ2FibGUnIG9wdGlvbnMKLSBkYXRlIHV0aWx0aWVzIG1vdmVkIGZyb20gJCB0byAkLmZ1bGxDYWxlbmRhcgotIG1vcmUgZG9jdW1lbnRhdGlvbiBpbiBzb3VyY2UgY29kZQotIG1pbmlmaWVkIHZlcnNpb24gb2YgZnVsbGNhbGVuZGFyLmpzCi0gdGVzdCBzdWl0IChhdmFpbGFibGUgZnJvbSBzdm4pCi0gdG9wIGJ1dHRvbnMgbm93IHVzZSBgPGJ1dHRvbj5gIHcvIGFuIGlubmVyIGA8c3Bhbj5gIGZvciBiZXR0ZXIgY3NzIGN1c29taXphdGlvbgoJLSB0aHVzIENTUyBoYXMgY2hhbmdlZC4gSUYgVVBHUkFESU5HIEZST00gUFJFVklPVVMgVkVSU0lPTlMsCgkgIFVQR1JBREUgWU9VUiBGVUxMQ0FMRU5EQVIuQ1NTIEZJTEUKCgp2MS4xICgyMDA5LTA1LTEwKQotLS0tLS0tLS0tLS0tLS0tLQoKLSBBZGRlZCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CgktIHdlZWtTdGFydAoJLSByaWdodFRvTGVmdAoJLSB0aXRsZUZvcm1hdAoJLSB0aW1lRm9ybWF0CgktIGNhY2hlUGFyYW0KCS0gcmVzaXplCi0gRml4ZWQgcmVuZGVyaW5nIGJ1Z3MKCS0gT3BlcmEgOS4yNSAoZXZlbnRzIHBsYWNlbWVudCAmIHdpbmRvdyByZXNpemluZykKCS0gSUU2ICh3aW5kb3cgcmVzaXppbmcpCi0gT3B0aW1pemVkIHdpbmRvdyByZXNpemluZyBmb3IgQUxMIGJyb3dzZXJzCi0gRXZlbnRzIG9uIHNhbWUgZGF5IG5vdyBzb3J0ZWQgYnkgc3RhcnQgdGltZSAoYnV0IGZpcnN0IGJ5IHRpbWVzcGFuKQotIENvcnJlY3Qgei1pbmRleCB3aGVuIGRyYWdnaW5nCi0gRHJhZ2dpbmcgY29udGFpbmVkIGluIG92ZXJmbG93IERJViBmb3IgSUU2Ci0gTW9kaWZpZWQgZnVsbGNhbGVuZGFyLmNzcwoJLSBmb3IgcmlnaHQtdG8tbGVmdCBzdXBwb3J0CgktIGZvciB2YXJpYWJsZSBzdGFydC1vZi13ZWVrCgktIGZvciBJRTYgcmVzaXppbmcgYnVnCgktIGZvciBUSEVBRCBhbmQgVEJPRFkgKGluIDEuMCwganVzdCB1c2VkIFRCT0RZLCByZXN0cnVjdHVyZWQgaW4gMS4xKQoJLSBJRiBVUEdSQURJTkcgRlJPTSBGVUxMQ0FMRU5EQVIgMS4wLCBZT1UgTVVTVCBVUEdSQURFIEZVTExDQUxFTkRBUi5DU1MK]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTUgQWRhbSBTaGF3CiAqLwoKCi5mYyB7CglkaXJlY3Rpb246IGx0cjsKCXRleHQtYWxpZ246IGxlZnQ7Cn0KCi5mYy1ydGwgewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCmJvZHkgLmZjIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVyY29tZSBqcXVpICovCglmb250LXNpemU6IDFlbTsKfQoKCi8qIENvbG9ycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdW50aGVtZWQgdGgsCi5mYy11bnRoZW1lZCB0ZCwKLmZjLXVudGhlbWVkIHRoZWFkLAouZmMtdW50aGVtZWQgdGJvZHksCi5mYy11bnRoZW1lZCAuZmMtZGl2aWRlciwKLmZjLXVudGhlbWVkIC5mYy1yb3csCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7Cglib3JkZXItY29sb3I6ICNkZGQ7Cn0KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouZmMtdW50aGVtZWQgLmZjLWRpdmlkZXIsCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIHsKCWJhY2tncm91bmQ6ICNlZWU7Cn0KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7Cgljb2xvcjogIzY2NjsKfQoKLmZjLXVudGhlbWVkIC5mYy10b2RheSB7CgliYWNrZ3JvdW5kOiAjZmNmOGUzOwp9CgouZmMtaGlnaGxpZ2h0IHsgLyogd2hlbiB1c2VyIGlzIHNlbGVjdGluZyBjZWxscyAqLwoJYmFja2dyb3VuZDogI2JjZThmMTsKCW9wYWNpdHk6IC4zOwoJZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTsgLyogZm9yIElFICovCn0KCi5mYy1iZ2V2ZW50IHsgLyogZGVmYXVsdCBsb29rIGZvciBiYWNrZ3JvdW5kIGV2ZW50cyAqLwoJYmFja2dyb3VuZDogcmdiKDE0MywgMjIzLCAxMzApOwoJb3BhY2l0eTogLjM7CglmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MzApOyAvKiBmb3IgSUUgKi8KfQoKLmZjLW5vbmJ1c2luZXNzIHsgLyogZGVmYXVsdCBsb29rIGZvciBub24tYnVzaW5lc3MtaG91cnMgYXJlYXMgKi8KCS8qIHdpbGwgaW5oZXJpdCAuZmMtYmdldmVudCdzIHN0eWxlcyAqLwoJYmFja2dyb3VuZDogI2Q3ZDdkNzsKfQoKCi8qIEljb25zIChpbmxpbmUgZWxlbWVudHMgd2l0aCBzdHlsZWQgdGV4dCB0aGF0IG1vY2sgYXJyb3cgaWNvbnMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxZW07CgloZWlnaHQ6IDFlbTsKCWxpbmUtaGVpZ2h0OiAxZW07Cglmb250LXNpemU6IDFlbTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW92ZXJmbG93OiBoaWRkZW47Cglmb250LWZhbWlseTogIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlOwoKCS8qIGRvbid0IGFsbG93IGJyb3dzZXIgdGV4dC1zZWxlY3Rpb24gKi8KCS13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cgkta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLW1zLXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7Cgl9CgovKgpBY2NlcHRhYmxlIGZvbnQtZmFtaWx5IG92ZXJyaWRlcyBmb3IgaW5kaXZpZHVhbCBpY29uczoKCSJBcmlhbCIsIHNhbnMtc2VyaWYKCSJUaW1lcyBOZXcgUm9tYW4iLCBzZXJpZgoKTk9URTogdXNlIHBlcmNlbnRhZ2UgZm9udCBzaXplcyBvciBlbHNlIG9sZCBJRSBjaG9rZXMKKi8KCi5mYy1pY29uOmFmdGVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMCAtMWVtOyAvKiBlbnN1cmVzIGNoYXJhY3RlciB3aWxsIGJlIGNlbnRlcmVkLCByZWdhcmRsZXNzIG9mIHdpZHRoICovCn0KCi5mYy1pY29uLWxlZnQtc2luZ2xlLWFycm93OmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDIwMzkiOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cglmb250LXNpemU6IDIwMCU7Cgl0b3A6IC03JTsKCWxlZnQ6IDMlOwp9CgouZmMtaWNvbi1yaWdodC1zaW5nbGUtYXJyb3c6YWZ0ZXIgewoJY29udGVudDogIlwwMjAzQSI7Cglmb250LXdlaWdodDogYm9sZDsKCWZvbnQtc2l6ZTogMjAwJTsKCXRvcDogLTclOwoJbGVmdDogLTMlOwp9CgouZmMtaWNvbi1sZWZ0LWRvdWJsZS1hcnJvdzphZnRlciB7Cgljb250ZW50OiAiXDAwMEFCIjsKCWZvbnQtc2l6ZTogMTYwJTsKCXRvcDogLTclOwp9CgouZmMtaWNvbi1yaWdodC1kb3VibGUtYXJyb3c6YWZ0ZXIgewoJY29udGVudDogIlwwMDBCQiI7Cglmb250LXNpemU6IDE2MCU7Cgl0b3A6IC03JTsKfQoKLmZjLWljb24tbGVmdC10cmlhbmdsZTphZnRlciB7Cgljb250ZW50OiAiXDI1QzQiOwoJZm9udC1zaXplOiAxMjUlOwoJdG9wOiAzJTsKCWxlZnQ6IC0yJTsKfQoKLmZjLWljb24tcmlnaHQtdHJpYW5nbGU6YWZ0ZXIgewoJY29udGVudDogIlwyNUJBIjsKCWZvbnQtc2l6ZTogMTI1JTsKCXRvcDogMyU7CglsZWZ0OiAyJTsKfQoKLmZjLWljb24tZG93bi10cmlhbmdsZTphZnRlciB7Cgljb250ZW50OiAiXDI1QkMiOwoJZm9udC1zaXplOiAxMjUlOwoJdG9wOiAyJTsKfQoKLmZjLWljb24teDphZnRlciB7Cgljb250ZW50OiAiXDAwMEQ3IjsKCWZvbnQtc2l6ZTogMjAwJTsKCXRvcDogNiU7Cn0KCgovKiBCdXR0b25zIChzdHlsZWQgPGJ1dHRvbj4gdGFncywgbm9ybWFsaXplZCB0byB3b3JrIGNyb3NzLWJyb3dzZXIpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYyBidXR0b24gewoJLyogZm9yY2UgaGVpZ2h0IHRvIGluY2x1ZGUgdGhlIGJvcmRlciBhbmQgcGFkZGluZyAqLwoJLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwoJLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwoJYm94LXNpemluZzogYm9yZGVyLWJveDsKCgkvKiBkaW1lbnNpb25zICovCgltYXJnaW46IDA7CgloZWlnaHQ6IDIuMWVtOwoJcGFkZGluZzogMCAuNmVtOwoKCS8qIHRleHQgJiBjdXJzb3IgKi8KCWZvbnQtc2l6ZTogMWVtOyAvKiBub3JtYWxpemUgKi8KCXdoaXRlLXNwYWNlOiBub3dyYXA7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi8qIEZpcmVmb3ggaGFzIGFuIGFubm95aW5nIGlubmVyIGJvcmRlciAqLwouZmMgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CgkKLmZjLXN0YXRlLWRlZmF1bHQgeyAvKiBub24tdGhlbWUgKi8KCWJvcmRlcjogMXB4IHNvbGlkOwp9CgouZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItbGVmdCB7IC8qIG5vbi10aGVtZSAqLwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owp9CgouZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItcmlnaHQgeyAvKiBub24tdGhlbWUgKi8KCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4Owp9CgovKiBpY29ucyBpbiBidXR0b25zICovCgouZmMgYnV0dG9uIC5mYy1pY29uIHsgLyogbm9uLXRoZW1lICovCglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IC0wLjA1ZW07IC8qIHNlZW1zIHRvIGJlIGEgZ29vZCBhZGp1c3RtZW50IGFjcm9zcyBicm93c2VycyAqLwoJbWFyZ2luOiAwIC4yZW07Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgkKLyoKICBidXR0b24gc3RhdGVzCiAgYm9ycm93ZWQgZnJvbSB0d2l0dGVyIGJvb3RzdHJhcCAoaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvKQoqLwoKLmZjLXN0YXRlLWRlZmF1bHQgewoJYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKCWJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7CgliYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oI2ZmZmZmZiksIHRvKCNlNmU2ZTYpKTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7CgliYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTsKCWJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZmZmZmYsICNlNmU2ZTYpOwoJYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwoJYm9yZGVyLWNvbG9yOiAjZTZlNmU2ICNlNmU2ZTYgI2JmYmZiZjsKCWJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpOwoJY29sb3I6ICMzMzM7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7Cglib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KCi5mYy1zdGF0ZS1ob3ZlciwKLmZjLXN0YXRlLWRvd24sCi5mYy1zdGF0ZS1hY3RpdmUsCi5mYy1zdGF0ZS1kaXNhYmxlZCB7Cgljb2xvcjogIzMzMzMzMzsKCWJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7Cn0KCi5mYy1zdGF0ZS1ob3ZlciB7Cgljb2xvcjogIzMzMzMzMzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7Cgktd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7CgkgICAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7CgkgICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7CgkgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7Cn0KCi5mYy1zdGF0ZS1kb3duLAouZmMtc3RhdGUtYWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNjY2NjY2M7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9CgouZmMtc3RhdGUtZGlzYWJsZWQgewoJY3Vyc29yOiBkZWZhdWx0OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCW9wYWNpdHk6IDAuNjU7CglmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NjUpOwoJYm94LXNoYWRvdzogbm9uZTsKfQoKCi8qIEJ1dHRvbnMgR3JvdXBzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1idXR0b24tZ3JvdXAgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgovKgpldmVyeSBidXR0b24gdGhhdCBpcyBub3QgZmlyc3QgaW4gYSBidXR0b24gZ3JvdXAgc2hvdWxkIHNjb290Y2ggb3ZlciBvbmUgcGl4ZWwgYW5kIGNvdmVyIHRoZQpwcmV2aW91cyBidXR0b24ncyBib3JkZXIuLi4KKi8KCi5mYyAuZmMtYnV0dG9uLWdyb3VwID4gKiB7IC8qIGV4dHJhIHByZWNlZGVuY2UgYi9jIGJ1dHRvbnMgaGF2ZSBtYXJnaW4gc2V0IHRvIHplcm8gKi8KCWZsb2F0OiBsZWZ0OwoJbWFyZ2luOiAwIDAgMCAtMXB4Owp9CgouZmMgLmZjLWJ1dHRvbi1ncm91cCA+IDpmaXJzdC1jaGlsZCB7IC8qIHNhbWUgKi8KCW1hcmdpbi1sZWZ0OiAwOwp9CgoKLyogUG9wb3ZlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtcG9wb3ZlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglib3gtc2hhZG93OiAwIDJweCA2cHggcmdiYSgwLDAsMCwuMTUpOwp9CgouZmMtcG9wb3ZlciAuZmMtaGVhZGVyIHsgLyogVE9ETzogYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggZmMtaGVhZC9mYy1ib2R5ICovCglwYWRkaW5nOiAycHggNHB4Owp9CgouZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZSB7CgltYXJnaW46IDAgMnB4Owp9CgouZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5mYy1sdHIgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGUsCi5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2UgewoJZmxvYXQ6IGxlZnQ7Cn0KCi5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGUsCi5mYy1sdHIgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2UgewoJZmxvYXQ6IHJpZ2h0Owp9CgovKiB1bnRoZW1lZCAqLwoKLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIHsKCWJvcmRlci13aWR0aDogMXB4OwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoKLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3NlIHsKCWZvbnQtc2l6ZTogLjllbTsKCW1hcmdpbi10b3A6IDJweDsKfQoKLyoganF1aSB0aGVtZWQgKi8KCi5mYy1wb3BvdmVyID4gLnVpLXdpZGdldC1oZWFkZXIgKyAudWktd2lkZ2V0LWNvbnRlbnQgewoJYm9yZGVyLXRvcDogMDsgLyogd2hlcmUgdGhleSBtZWV0LCBsZXQgdGhlIGhlYWRlciBoYXZlIHRoZSBib3JkZXIgKi8KfQoKCi8qIE1pc2MgUmV1c2FibGUgQ29tcG9uZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtZGl2aWRlciB7Cglib3JkZXItc3R5bGU6IHNvbGlkOwoJYm9yZGVyLXdpZHRoOiAxcHg7Cn0KCmhyLmZjLWRpdmlkZXIgewoJaGVpZ2h0OiAwOwoJbWFyZ2luOiAwOwoJcGFkZGluZzogMCAwIDJweDsgLyogaGVpZ2h0IGlzIHVucmVsaWFibGUgYWNyb3NzIGJyb3dzZXJzLCBzbyB1c2UgcGFkZGluZyAqLwoJYm9yZGVyLXdpZHRoOiAxcHggMDsKfQoKLmZjLWNsZWFyIHsKCWNsZWFyOiBib3RoOwp9CgouZmMtYmcsCi5mYy1iZ2V2ZW50LXNrZWxldG9uLAouZmMtaGlnaGxpZ2h0LXNrZWxldG9uLAouZmMtaGVscGVyLXNrZWxldG9uIHsKCS8qIHRoZXNlIGVsZW1lbnQgc2hvdWxkIGFsd2F5cyBjbGluZyB0byB0b3AtbGVmdC9yaWdodCBjb3JuZXJzICovCglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cn0KCi5mYy1iZyB7Cglib3R0b206IDA7IC8qIHN0cmVjaCBiZyB0byBib3R0b20gZWRnZSAqLwp9CgouZmMtYmcgdGFibGUgewoJaGVpZ2h0OiAxMDAlOyAvKiBzdHJlY2ggYmcgdG8gYm90dG9tIGVkZ2UgKi8KfQoKCi8qIFRhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMgdGFibGUgewoJd2lkdGg6IDEwMCU7Cgl0YWJsZS1sYXlvdXQ6IGZpeGVkOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKCWJvcmRlci1zcGFjaW5nOiAwOwoJZm9udC1zaXplOiAxZW07IC8qIG5vcm1hbGl6ZSBjcm9zcy1icm93c2VyICovCn0KCi5mYyB0aCB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5mYyB0aCwKLmZjIHRkIHsKCWJvcmRlci1zdHlsZTogc29saWQ7Cglib3JkZXItd2lkdGg6IDFweDsKCXBhZGRpbmc6IDA7Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CgouZmMgdGQuZmMtdG9kYXkgewoJYm9yZGVyLXN0eWxlOiBkb3VibGU7IC8qIG92ZXJjb21lIG5laWdoYm9yaW5nIGJvcmRlcnMgKi8KfQoKCi8qIEZha2UgVGFibGUgUm93cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMgLmZjLXJvdyB7IC8qIGV4dHJhIHByZWNlZGVuY2UgdG8gb3ZlcmNvbWUgdGhlbWVzIHcvIC51aS13aWRnZXQtY29udGVudCBmb3JjaW5nIGEgMXB4IGJvcmRlciAqLwoJLyogbm8gdmlzaWJsZSBib3JkZXIgYnkgZGVmYXVsdC4gYnV0IG1ha2UgYXZhaWxhYmxlIGlmIG5lZWQgYmUgKHNjcm9sbGJhciB3aWR0aCBjb21wZW5zYXRpb24pICovCglib3JkZXItc3R5bGU6IHNvbGlkOwoJYm9yZGVyLXdpZHRoOiAwOwp9CgouZmMtcm93IHRhYmxlIHsKCS8qIGRvbid0IHB1dCBsZWZ0L3JpZ2h0IGJvcmRlciBvbiBhbnl0aGluZyB3aXRoaW4gYSBmYWtlIHJvdy4KCSAgIHRoZSBvdXRlciB0Ym9keSB3aWxsIHdvcnJ5IGFib3V0IHRoaXMgKi8KCWJvcmRlci1sZWZ0OiAwIGhpZGRlbiB0cmFuc3BhcmVudDsKCWJvcmRlci1yaWdodDogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7CgoJLyogbm8gYm90dG9tIGJvcmRlcnMgb24gcm93cyAqLwoJYm9yZGVyLWJvdHRvbTogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7IAp9CgouZmMtcm93OmZpcnN0LWNoaWxkIHRhYmxlIHsKCWJvcmRlci10b3A6IDAgaGlkZGVuIHRyYW5zcGFyZW50OyAvKiBubyB0b3AgYm9yZGVyIG9uIGZpcnN0IHJvdyAqLwp9CgoKLyogRGF5IFJvdyAodXNlZCB3aXRoaW4gdGhlIGhlYWRlciBhbmQgdGhlIERheUdyaWQpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1yb3cgewoJcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZmMtcm93IC5mYy1iZyB7Cgl6LWluZGV4OiAxOwp9CgovKiBoaWdobGlnaHRpbmcgY2VsbHMgJiBiYWNrZ3JvdW5kIGV2ZW50IHNrZWxldG9uICovCgouZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uLAouZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gewoJYm90dG9tOiAwOyAvKiBzdHJldGNoIHNrZWxldG9uIHRvIGJvdHRvbSBvZiByb3cgKi8KfQoKLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0YWJsZSwKLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHRhYmxlIHsKCWhlaWdodDogMTAwJTsgLyogc3RyZXRjaCBza2VsZXRvbiB0byBib3R0b20gb2Ygcm93ICovCn0KCi5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB0ZCwKLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0ZCB7Cglib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uIHsKCXotaW5kZXg6IDI7Cgp9CgouZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gewoJei1pbmRleDogMzsKfQoKLyoKcm93IGNvbnRlbnQgKHdoaWNoIGNvbnRhaW5zIGRheS93ZWVrIG51bWJlcnMgYW5kIGV2ZW50cykgYXMgd2VsbCBhcyAiaGVscGVyIiAod2hpY2ggY29udGFpbnMKdGVtcG9yYXJ5IHJlbmRlcmVkIGV2ZW50cykuCiovCgouZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDQ7CglwYWRkaW5nLWJvdHRvbTogMnB4OyAvKiBtYXRjaGVzIHRoZSBzcGFjZSBhYm92ZSB0aGUgZXZlbnRzICovCn0KCi5mYy1yb3cgLmZjLWhlbHBlci1za2VsZXRvbiB7Cgl6LWluZGV4OiA1Owp9CgouZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRkLAouZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGQgewoJLyogc2VlLXRocm91Z2ggdG8gdGhlIGJhY2tncm91bmQgYmVsb3cgKi8KCWJhY2tncm91bmQ6IG5vbmU7IC8qIGluIGNhc2UgPHRkPnMgYXJlIGdsb2JhbGx5IHN0eWxlZCAqLwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCgkvKiBkb24ndCBwdXQgYSBib3JkZXIgYmV0d2VlbiBldmVudHMgYW5kL29yIHRoZSBkYXkgbnVtYmVyICovCglib3JkZXItYm90dG9tOiAwOwp9CgouZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IHRkLCAvKiBjZWxscyB3aXRoIGV2ZW50cyBpbnNpZGUgKHNvIE5PVCB0aGUgZGF5IG51bWJlciBjZWxsKSAqLwouZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGJvZHkgdGQgewoJLyogZG9uJ3QgcHV0IGEgYm9yZGVyIGJldHdlZW4gZXZlbnQgY2VsbHMgKi8KCWJvcmRlci10b3A6IDA7Cn0KCgovKiBTY3JvbGxpbmcgQ29udGFpbmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1zY3JvbGxlciB7IC8qIHRoaXMgY2xhc3MgZ29lcyBvbiBlbGVtZW50cyBmb3IgZ3VhcmFudGVlZCB2ZXJ0aWNhbCBzY3JvbGxiYXJzICovCglvdmVyZmxvdy15OiBzY3JvbGw7CglvdmVyZmxvdy14OiBoaWRkZW47Cn0KCi5mYy1zY3JvbGxlciA+ICogeyAvKiB3ZSBleHBlY3QgYW4gaW1tZWRpYXRlIGlubmVyIGVsZW1lbnQgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsgLyogcmUtc2NvcGUgYWxsIHBvc2l0aW9ucyAqLwoJd2lkdGg6IDEwMCU7IC8qIGhhY2sgdG8gZm9yY2UgcmUtc2l6aW5nIHRoaXMgaW5uZXIgZWxlbWVudCB3aGVuIHNjcm9sbGJhcnMgYXBwZWFyL2Rpc2FwcGVhciAqLwoJb3ZlcmZsb3c6IGhpZGRlbjsgLyogZG9uJ3QgbGV0IG5lZ2F0aXZlIG1hcmdpbnMgb3IgYWJzb2x1dGUgcG9zaXRpb25pbmcgY3JlYXRlIGZ1cnRoZXIgc2Nyb2xsICovCn0KCgovKiBHbG9iYWwgRXZlbnQgU3R5bGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ldmVudCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciByZXNpemUgaGFuZGxlIGFuZCBvdGhlciBpbm5lciBwb3NpdGlvbmluZyAqLwoJZGlzcGxheTogYmxvY2s7IC8qIG1ha2UgdGhlIDxhPiB0YWcgYmxvY2sgKi8KCWZvbnQtc2l6ZTogLjg1ZW07CglsaW5lLWhlaWdodDogMS4zOwoJYm9yZGVyLXJhZGl1czogM3B4OwoJYm9yZGVyOiAxcHggc29saWQgIzNhODdhZDsgLyogZGVmYXVsdCBCT1JERVIgY29sb3IgKi8KCWJhY2tncm91bmQtY29sb3I6ICMzYTg3YWQ7IC8qIGRlZmF1bHQgQkFDS0dST1VORCBjb2xvciAqLwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsgLyogdW5kbyBqcXVpJ3MgdWktd2lkZ2V0LWhlYWRlciBib2xkICovCn0KCi8qIG92ZXJwb3dlciBzb21lIG9mIGJvb3RzdHJhcCdzIGFuZCBqcXVpJ3Mgc3R5bGVzIG9uIDxhPiB0YWdzICovCi5mYy1ldmVudCwKLmZjLWV2ZW50OmhvdmVyLAoudWktd2lkZ2V0IC5mYy1ldmVudCB7Cgljb2xvcjogI2ZmZjsgLyogZGVmYXVsdCBURVhUIGNvbG9yICovCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7IC8qIGlmIDxhPiBoYXMgYW4gaHJlZiAqLwp9CgouZmMtZXZlbnRbaHJlZl0sCi5mYy1ldmVudC5mYy1kcmFnZ2FibGUgewoJY3Vyc29yOiBwb2ludGVyOyAvKiBnaXZlIGV2ZW50cyB3aXRoIGxpbmtzIGFuZCBkcmFnZ2FibGUgZXZlbnRzIGEgaGFuZCBtb3VzZSBwb2ludGVyICovCn0KCi5mYy1ub3QtYWxsb3dlZCwgLyogY2F1c2VzIGEgIndhcm5pbmciIGN1cnNvci4gYXBwbGllZCBvbiBib2R5ICovCi5mYy1ub3QtYWxsb3dlZCAuZmMtZXZlbnQgeyAvKiB0byBvdmVycmlkZSBhbiBldmVudCdzIGN1c3RvbSBjdXJzb3IgKi8KCWN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KCi5mYy1ldmVudCAuZmMtYmcgeyAvKiB0aGUgZ2VuZXJpYyAuZmMtYmcgYWxyZWFkeSBkb2VzIHBvc2l0aW9uICovCgl6LWluZGV4OiAxOwoJYmFja2dyb3VuZDogI2ZmZjsKCW9wYWNpdHk6IC4yNTsKCWZpbHRlcjogYWxwaGEob3BhY2l0eT0yNSk7IC8qIGZvciBJRSAqLwp9CgouZmMtZXZlbnQgLmZjLWNvbnRlbnQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmZjLWV2ZW50IC5mYy1yZXNpemVyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IDM7Cn0KCgovKiBIb3Jpem9udGFsIEV2ZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBldmVudHMgdGhhdCBhcmUgY29udGludWluZyB0by9mcm9tIGFub3RoZXIgd2Vlay4ga2lsbCByb3VuZGVkIGNvcm5lcnMgYW5kIGJ1dHQgdXAgYWdhaW5zdCBlZGdlICovCgouZmMtbHRyIC5mYy1oLWV2ZW50LmZjLW5vdC1zdGFydCwKLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3QtZW5kIHsKCW1hcmdpbi1sZWZ0OiAwOwoJYm9yZGVyLWxlZnQtd2lkdGg6IDA7CglwYWRkaW5nLWxlZnQ6IDFweDsgLyogcmVwbGFjZSB0aGUgYm9yZGVyIHdpdGggcGFkZGluZyAqLwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5mYy1sdHIgLmZjLWgtZXZlbnQuZmMtbm90LWVuZCwKLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3Qtc3RhcnQgewoJbWFyZ2luLXJpZ2h0OiAwOwoJYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOwoJcGFkZGluZy1yaWdodDogMXB4OyAvKiByZXBsYWNlIHRoZSBib3JkZXIgd2l0aCBwYWRkaW5nICovCglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgovKiByZXNpemVyICovCgouZmMtaC1ldmVudCAuZmMtcmVzaXplciB7IC8qIHBvc2l0aW9uZWQgaXQgdG8gb3ZlcmNvbWUgdGhlIGV2ZW50J3MgYm9yZGVycyAqLwoJdG9wOiAtMXB4OwoJYm90dG9tOiAtMXB4OwoJbGVmdDogLTFweDsKCXJpZ2h0OiAtMXB4OwoJd2lkdGg6IDVweDsKfQoKLyogbGVmdCByZXNpemVyICAqLwouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyLAouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyOmJlZm9yZSwKLmZjLWx0ciAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplcjphZnRlciwKLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtZW5kLXJlc2l6ZXIsCi5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyOmJlZm9yZSwKLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtZW5kLXJlc2l6ZXI6YWZ0ZXIgewoJcmlnaHQ6IGF1dG87IC8qIGlnbm9yZSB0aGUgcmlnaHQgYW5kIG9ubHkgdXNlIHRoZSBsZWZ0ICovCgljdXJzb3I6IHctcmVzaXplOwp9CgovKiByaWdodCByZXNpemVyICovCi5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyLAouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplcjpiZWZvcmUsCi5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyOmFmdGVyLAouZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyLAouZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyOmJlZm9yZSwKLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplcjphZnRlciB7CglsZWZ0OiBhdXRvOyAvKiBpZ25vcmUgdGhlIGxlZnQgYW5kIG9ubHkgdXNlIHRoZSByaWdodCAqLwoJY3Vyc29yOiBlLXJlc2l6ZTsKfQoKCi8qIERheUdyaWQgZXZlbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2UgdXNlIHRoZSBmdWxsICJmYy1kYXktZ3JpZC1ldmVudCIgY2xhc3MgaW5zdGVhZCBvZiB1c2luZyBkZXNjZW5kYW50cyBiZWNhdXNlIHRoZSBldmVudCB3b24ndApiZSBhIGRlc2NlbmRhbnQgb2YgdGhlIGdyaWQgd2hlbiBpdCBpcyBiZWluZyBkcmFnZ2VkLgoqLwoKLmZjLWRheS1ncmlkLWV2ZW50IHsKCW1hcmdpbjogMXB4IDJweCAwOyAvKiBzcGFjaW5nIGJldHdlZW4gZXZlbnRzIGFuZCBlZGdlcyAqLwoJcGFkZGluZzogMCAxcHg7Cn0KCgouZmMtZGF5LWdyaWQtZXZlbnQgLmZjLWNvbnRlbnQgeyAvKiBmb3JjZSBldmVudHMgdG8gYmUgb25lLWxpbmUgdGFsbCAqLwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KCi5mYy1kYXktZ3JpZC1ldmVudCAuZmMtdGltZSB7Cglmb250LXdlaWdodDogYm9sZDsKfQoKLmZjLWRheS1ncmlkLWV2ZW50IC5mYy1yZXNpemVyIHsgLyogZW5sYXJnZSB0aGUgZGVmYXVsdCBoaXQgYXJlYSAqLwoJbGVmdDogLTNweDsKCXJpZ2h0OiAtM3B4OwoJd2lkdGg6IDdweDsKfQoKCi8qIEV2ZW50IExpbWl0aW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qICJtb3JlIiBsaW5rIHRoYXQgcmVwcmVzZW50cyBoaWRkZW4gZXZlbnRzICovCgphLmZjLW1vcmUgewoJbWFyZ2luOiAxcHggM3B4OwoJZm9udC1zaXplOiAuODVlbTsKCWN1cnNvcjogcG9pbnRlcjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYS5mYy1tb3JlOmhvdmVyIHsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgouZmMtbGltaXRlZCB7IC8qIHJvd3MgYW5kIGNlbGxzIHRoYXQgYXJlIGhpZGRlbiBiZWNhdXNlIG9mIGEgIm1vcmUiIGxpbmsgKi8KCWRpc3BsYXk6IG5vbmU7Cn0KCi8qIHBvcG92ZXIgdGhhdCBhcHBlYXJzIHdoZW4gIm1vcmUiIGxpbmsgaXMgY2xpY2tlZCAqLwoKLmZjLWRheS1ncmlkIC5mYy1yb3cgewoJei1pbmRleDogMTsgLyogbWFrZSB0aGUgIm1vcmUiIHBvcG92ZXIgb25lIGhpZ2hlciB0aGFuIHRoaXMgKi8KfQoKLmZjLW1vcmUtcG9wb3ZlciB7Cgl6LWluZGV4OiAyOwoJd2lkdGg6IDIyMHB4Owp9CgouZmMtbW9yZS1wb3BvdmVyIC5mYy1ldmVudC1jb250YWluZXIgewoJcGFkZGluZzogMTBweDsKfQoKLyogVG9vbGJhcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdG9vbGJhciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CgltYXJnaW4tYm90dG9tOiAxZW07Cn0KCi5mYy10b29sYmFyIC5mYy1sZWZ0IHsKCWZsb2F0OiBsZWZ0Owp9CgouZmMtdG9vbGJhciAuZmMtcmlnaHQgewoJZmxvYXQ6IHJpZ2h0Owp9CgouZmMtdG9vbGJhciAuZmMtY2VudGVyIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogdGhlIHRoaW5ncyB3aXRoaW4gZWFjaCBsZWZ0L3JpZ2h0L2NlbnRlciBzZWN0aW9uICovCi5mYyAuZmMtdG9vbGJhciA+ICogPiAqIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVycmlkZSBidXR0b24gYm9yZGVyIG1hcmdpbnMgKi8KCWZsb2F0OiBsZWZ0OwoJbWFyZ2luLWxlZnQ6IC43NWVtOwp9CgovKiB0aGUgZmlyc3QgdGhpbmcgd2l0aGluIGVhY2ggbGVmdC9jZW50ZXIvcmlnaHQgc2VjdGlvbiAqLwouZmMgLmZjLXRvb2xiYXIgPiAqID4gOmZpcnN0LWNoaWxkIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVycmlkZSBidXR0b24gYm9yZGVyIG1hcmdpbnMgKi8KCW1hcmdpbi1sZWZ0OiAwOwp9CgkKLyogdGl0bGUgdGV4dCAqLwoKLmZjLXRvb2xiYXIgaDIgewoJbWFyZ2luOiAwOwp9CgovKiBidXR0b24gbGF5ZXJpbmcgKGZvciBib3JkZXIgcHJlY2VkZW5jZSkgKi8KCi5mYy10b29sYmFyIGJ1dHRvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5mYy10b29sYmFyIC5mYy1zdGF0ZS1ob3ZlciwKLmZjLXRvb2xiYXIgLnVpLXN0YXRlLWhvdmVyIHsKCXotaW5kZXg6IDI7Cn0KCQouZmMtdG9vbGJhciAuZmMtc3RhdGUtZG93biB7Cgl6LWluZGV4OiAzOwp9CgouZmMtdG9vbGJhciAuZmMtc3RhdGUtYWN0aXZlLAouZmMtdG9vbGJhciAudWktc3RhdGUtYWN0aXZlIHsKCXotaW5kZXg6IDQ7Cn0KCi5mYy10b29sYmFyIGJ1dHRvbjpmb2N1cyB7Cgl6LWluZGV4OiA1Owp9CgoKLyogVmlldyBTdHJ1Y3R1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogdW5kbyB0d2l0dGVyIGJvb3RzdHJhcCdzIGJveC1zaXppbmcgcnVsZXMuIG5vcm1hbGl6ZXMgcG9zaXRpb25pbmcgdGVjaG5pcXVlcyAqLwovKiBkb24ndCBkbyB0aGlzIGZvciB0aGUgdG9vbGJhciBiZWNhdXNlIHdlJ2xsIHdhbnQgYm9vdHN0cmFwIHRvIHN0eWxlIHRob3NlIGJ1dHRvbnMgYXMgc29tZSBwdCAqLwouZmMtdmlldy1jb250YWluZXIgKiwKLmZjLXZpZXctY29udGFpbmVyICo6YmVmb3JlLAouZmMtdmlldy1jb250YWluZXIgKjphZnRlciB7Cgktd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJICAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKCSAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7Cn0KCi5mYy12aWV3LCAvKiBzY29wZSBwb3NpdGlvbmluZyBhbmQgei1pbmRleCdzIGZvciBldmVyeXRoaW5nIHdpdGhpbiB0aGUgdmlldyAqLwouZmMtdmlldyA+IHRhYmxlIHsgLyogc28gZHJhZ2dlZCBlbGVtZW50cyBjYW4gYmUgYWJvdmUgdGhlIHZpZXcncyBtYWluIGVsZW1lbnQgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDE7Cn0KCi8qIEJhc2ljVmlldwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBkYXkgcm93IHN0cnVjdHVyZSAqLwoKLmZjLWJhc2ljV2Vlay12aWV3IC5mYy1jb250ZW50LXNrZWxldG9uLAouZmMtYmFzaWNEYXktdmlldyAuZmMtY29udGVudC1za2VsZXRvbiB7CgkvKiB3ZSBhcmUgc3VyZSB0aGVyZSBhcmUgbm8gZGF5IG51bWJlcnMgaW4gdGhlc2Ugdmlld3MsIHNvLi4uICovCglwYWRkaW5nLXRvcDogMXB4OyAvKiBhZGQgYSBwaXhlbCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIDJweCBwYWRkaW5nIGFib3ZlIGV2ZW50cyAqLwoJcGFkZGluZy1ib3R0b206IDFlbTsgLyogZW5zdXJlIGEgc3BhY2UgYXQgYm90dG9tIG9mIGNlbGwgZm9yIHVzZXIgc2VsZWN0aW5nL2NsaWNraW5nICovCn0KCi5mYy1iYXNpYy12aWV3IC5mYy1ib2R5IC5mYy1yb3cgewoJbWluLWhlaWdodDogNGVtOyAvKiBlbnN1cmUgdGhhdCBhbGwgcm93cyBhcmUgYXQgbGVhc3QgdGhpcyB0YWxsICovCn0KCi8qIGEgInJpZ2lkIiByb3cgd2lsbCB0YWtlIHVwIGEgY29uc3RhbnQgYW1vdW50IG9mIGhlaWdodCBiZWNhdXNlIGNvbnRlbnQtc2tlbGV0b24gaXMgYWJzb2x1dGUgKi8KCi5mYy1yb3cuZmMtcmlnaWQgewoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmZjLXJvdy5mYy1yaWdpZCAuZmMtY29udGVudC1za2VsZXRvbiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cn0KCi8qIHdlZWsgYW5kIGRheSBudW1iZXIgc3R5bGluZyAqLwoKLmZjLWJhc2ljLXZpZXcgLmZjLXdlZWstbnVtYmVyLAouZmMtYmFzaWMtdmlldyAuZmMtZGF5LW51bWJlciB7CglwYWRkaW5nOiAwIDJweDsKfQoKLmZjLWJhc2ljLXZpZXcgdGQuZmMtd2Vlay1udW1iZXIgc3BhbiwKLmZjLWJhc2ljLXZpZXcgdGQuZmMtZGF5LW51bWJlciB7CglwYWRkaW5nLXRvcDogMnB4OwoJcGFkZGluZy1ib3R0b206IDJweDsKfQoKLmZjLWJhc2ljLXZpZXcgLmZjLXdlZWstbnVtYmVyIHsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmZjLWJhc2ljLXZpZXcgLmZjLXdlZWstbnVtYmVyIHNwYW4gewoJLyogd29yayBhcm91bmQgdGhlIHdheSB3ZSBkbyBjb2x1bW4gcmVzaXppbmcgYW5kIGVuc3VyZSBhIG1pbmltdW0gd2lkdGggKi8KCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW1pbi13aWR0aDogMS4yNWVtOwp9CgouZmMtbHRyIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktbnVtYmVyIHsKCXRleHQtYWxpZ246IHJpZ2h0Owp9CgouZmMtcnRsIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktbnVtYmVyIHsKCXRleHQtYWxpZ246IGxlZnQ7Cn0KCi5mYy1kYXktbnVtYmVyLmZjLW90aGVyLW1vbnRoIHsKCW9wYWNpdHk6IDAuMzsKCWZpbHRlcjogYWxwaGEob3BhY2l0eT0zMCk7IC8qIGZvciBJRSAqLwoJLyogb3BhY2l0eSB3aXRoIHNtYWxsIGZvbnQgY2FuIHNvbWV0aW1lcyBsb29rIHRvbyBmYWRlZAoJICAgbWlnaHQgd2FudCB0byBzZXQgdGhlICdjb2xvcicgcHJvcGVydHkgaW5zdGVhZAoJICAgbWFraW5nIGRheS1udW1iZXJzIGJvbGQgYWxzbyBmaXhlcyB0aGUgcHJvYmxlbSAqLwp9CgovKiBBZ2VuZGFWaWV3IGFsbC1kYXkgYXJlYQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtYWdlbmRhLXZpZXcgLmZjLWRheS1ncmlkIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7IC8qIHNvIHRoZSAibW9yZS4uIiBwb3BvdmVyIHdpbGwgYmUgb3ZlciB0aGUgdGltZSBncmlkICovCn0KCi5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyB7CgltaW4taGVpZ2h0OiAzZW07IC8qIGFsbC1kYXkgc2VjdGlvbiB3aWxsIG5ldmVyIGdldCBzaG9ydGVyIHRoYW4gdGhpcyAqLwp9CgouZmMtYWdlbmRhLXZpZXcgLmZjLWRheS1ncmlkIC5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gewoJcGFkZGluZy10b3A6IDFweDsgLyogYWRkIGEgcGl4ZWwgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSAycHggcGFkZGluZyBhYm92ZSBldmVudHMgKi8KCXBhZGRpbmctYm90dG9tOiAxZW07IC8qIGdpdmUgc3BhY2UgdW5kZXJuZWF0aCBldmVudHMgZm9yIGNsaWNraW5nL3NlbGVjdGluZyBkYXlzICovCn0KCgovKiBUaW1lR3JpZCBheGlzIHJ1bm5pbmcgZG93biB0aGUgc2lkZSAoZm9yIGJvdGggdGhlIGFsbC1kYXkgYXJlYSBhbmQgdGhlIHNsb3QgYXJlYSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjIC5mYy1heGlzIHsgLyogLmZjIHRvIG92ZXJjb21lIGRlZmF1bHQgY2VsbCBzdHlsZXMgKi8KCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CglwYWRkaW5nOiAwIDRweDsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5mYy1sdHIgLmZjLWF4aXMgewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi5mYy1ydGwgLmZjLWF4aXMgewoJdGV4dC1hbGlnbjogbGVmdDsKfQoKLnVpLXdpZGdldCB0ZC5mYy1heGlzIHsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7IC8qIG92ZXJjb21lIGpxdWkgdGhlbWUgbWFraW5nIGl0IGJvbGQgKi8KfQoKCi8qIFRpbWVHcmlkIFN0cnVjdHVyZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdGltZS1ncmlkLWNvbnRhaW5lciwgLyogc28gc2Nyb2xsIGNvbnRhaW5lcidzIHotaW5kZXggaXMgYmVsb3cgYWxsLWRheSAqLwouZmMtdGltZS1ncmlkIHsgLyogc28gc2xhdHMvYmcvY29udGVudC9ldGMgcG9zaXRpb25zIGdldCBzY29wZWQgd2l0aGluIGhlcmUgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDE7Cn0KCi5mYy10aW1lLWdyaWQgewoJbWluLWhlaWdodDogMTAwJTsgLyogc28gaWYgaGVpZ2h0IHNldHRpbmcgaXMgJ2F1dG8nLCAuZmMtYmcgc3RyZXRjaGVzIHRvIGZpbGwgaGVpZ2h0ICovCn0KCi5mYy10aW1lLWdyaWQgdGFibGUgeyAvKiBkb24ndCBwdXQgb3V0ZXIgYm9yZGVycyBvbiBzbGF0cy9iZy9jb250ZW50L2V0YyAqLwoJYm9yZGVyOiAwIGhpZGRlbiB0cmFuc3BhcmVudDsKfQoKLmZjLXRpbWUtZ3JpZCA+IC5mYy1iZyB7Cgl6LWluZGV4OiAxOwp9CgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cywKLmZjLXRpbWUtZ3JpZCA+IGhyIHsgLyogdGhlIDxocj4gQWdlbmRhVmlldyBpbmplY3RzIHdoZW4gZ3JpZCBpcyBzaG9ydGVyIHRoYW4gc2Nyb2xsZXIgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQtc2tlbGV0b24sCi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogMDsKCXJpZ2h0OiAwOwp9CgouZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50LXNrZWxldG9uIHsKCXotaW5kZXg6IDM7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB7Cgl6LWluZGV4OiA0Owp9CgouZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXotaW5kZXg6IDU7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWhlbHBlci1za2VsZXRvbiB7Cgl6LWluZGV4OiA2Owp9CgoKLyogVGltZUdyaWQgU2xhdHMgKGxpbmVzIHRoYXQgcnVuIGhvcml6b250YWxseSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMgdGQgewoJaGVpZ2h0OiAxLjVlbTsKCWJvcmRlci1ib3R0b206IDA7IC8qIGVhY2ggY2VsbCBpcyByZXNwb25zaWJsZSBmb3IgaXRzIHRvcCBib3JkZXIgKi8KfQoKLmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMgLmZjLW1pbm9yIHRkIHsKCWJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMgLnVpLXdpZGdldC1jb250ZW50IHsgLyogZm9yIGpxdWkgdGhlbWUgKi8KCWJhY2tncm91bmQ6IG5vbmU7IC8qIHNlZSB0aHJvdWdoIHRvIGZjLWJnICovCn0KCgovKiBUaW1lR3JpZCBIaWdobGlnaHRpbmcgU2xvdHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXRpbWUtZ3JpZCAuZmMtaGlnaGxpZ2h0LWNvbnRhaW5lciB7IC8qIGEgZGl2IHdpdGhpbiBhIGNlbGwgd2l0aGluIHRoZSBmYy1oaWdobGlnaHQtc2tlbGV0b24gKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsgLyogc2NvcGVzIHRoZSBsZWZ0L3JpZ2h0IG9mIHRoZSBmYy1oaWdobGlnaHQgdG8gYmUgaW4gdGhlIGNvbHVtbiAqLwp9CgouZmMtdGltZS1ncmlkIC5mYy1oaWdobGlnaHQgewoJcG9zaXRpb246IGFic29sdXRlOwoJbGVmdDogMDsKCXJpZ2h0OiAwOwoJLyogdG9wIGFuZCBib3R0b20gd2lsbCBiZSBpbiBieSBKUyAqLwp9CgoKLyogVGltZUdyaWQgRXZlbnQgQ29udGFpbm1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVyLCAvKiBhIGRpdiB3aXRoaW4gYSBjZWxsIHdpdGhpbiB0aGUgZmMtY29udGVudC1za2VsZXRvbiAqLwouZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50LWNvbnRhaW5lciB7IC8qIGEgZGl2IHdpdGhpbiBhIGNlbGwgd2l0aGluIHRoZSBmYy1iZ2V2ZW50LXNrZWxldG9uICovCglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5mYy1sdHIgLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVyIHsgLyogc3BhY2Ugb24gdGhlIHNpZGVzIG9mIGV2ZW50cyBmb3IgTFRSIChkZWZhdWx0KSAqLwoJbWFyZ2luOiAwIDIuNSUgMCAycHg7Cn0KCi5mYy1ydGwgLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVyIHsgLyogc3BhY2Ugb24gdGhlIHNpZGVzIG9mIGV2ZW50cyBmb3IgUlRMICovCgltYXJnaW46IDAgMnB4IDAgMi41JTsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQsCi5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQgewoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogMTsgLyogc2NvcGUgaW5uZXIgei1pbmRleCdzICovCn0KCi5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQgewoJLyogYmFja2dyb3VuZCBldmVudHMgYWx3YXlzIHNwYW4gZnVsbCB3aWR0aCAqLwoJbGVmdDogMDsKCXJpZ2h0OiAwOwp9CgoKLyogR2VuZXJpYyBWZXJ0aWNhbCBFdmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdi1ldmVudC5mYy1ub3Qtc3RhcnQgeyAvKiBldmVudHMgdGhhdCBhcmUgY29udGludWluZyBmcm9tIGFub3RoZXIgZGF5ICovCgkvKiByZXBsYWNlIHNwYWNlIG1hZGUgYnkgdGhlIHRvcCBib3JkZXIgd2l0aCBwYWRkaW5nICovCglib3JkZXItdG9wLXdpZHRoOiAwOwoJcGFkZGluZy10b3A6IDFweDsKCgkvKiByZW1vdmUgdG9wIHJvdW5kZWQgY29ybmVycyAqLwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouZmMtdi1ldmVudC5mYy1ub3QtZW5kIHsKCS8qIHJlcGxhY2Ugc3BhY2UgbWFkZSBieSB0aGUgdG9wIGJvcmRlciB3aXRoIHBhZGRpbmcgKi8KCWJvcmRlci1ib3R0b20td2lkdGg6IDA7CglwYWRkaW5nLWJvdHRvbTogMXB4OwoKCS8qIHJlbW92ZSBib3R0b20gcm91bmRlZCBjb3JuZXJzICovCglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCgovKiBUaW1lR3JpZCBFdmVudCBTdHlsaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2UgdXNlIHRoZSBmdWxsICJmYy10aW1lLWdyaWQtZXZlbnQiIGNsYXNzIGluc3RlYWQgb2YgdXNpbmcgZGVzY2VuZGFudHMgYmVjYXVzZSB0aGUgZXZlbnQgd29uJ3QKYmUgYSBkZXNjZW5kYW50IG9mIHRoZSBncmlkIHdoZW4gaXQgaXMgYmVpbmcgZHJhZ2dlZC4KKi8KCi5mYy10aW1lLWdyaWQtZXZlbnQgewoJb3ZlcmZsb3c6IGhpZGRlbjsgLyogZG9uJ3QgbGV0IHRoZSBiZyBmbG93IG92ZXIgcm91bmRlZCBjb3JuZXJzICovCn0KCi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWUsCi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpdGxlIHsKCXBhZGRpbmc6IDAgMXB4Owp9CgouZmMtdGltZS1ncmlkLWV2ZW50IC5mYy10aW1lIHsKCWZvbnQtc2l6ZTogLjg1ZW07Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgovKiBzaG9ydCBtb2RlLCB3aGVyZSB0aW1lIGFuZCB0aXRsZSBhcmUgb24gdGhlIHNhbWUgbGluZSAqLwoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtY29udGVudCB7CgkvKiBkb24ndCB3cmFwIHRvIHNlY29uZCBsaW5lIChub3cgdGhhdCBjb250ZW50cyB3aWxsIGJlIGlubGluZSkgKi8KCXdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWUsCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpdGxlIHsKCS8qIHB1dCB0aGUgdGltZSBhbmQgdGl0bGUgb24gdGhlIHNhbWUgbGluZSAqLwoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZSBzcGFuIHsKCWRpc3BsYXk6IG5vbmU7IC8qIGRvbid0IGRpc3BsYXkgdGhlIGZ1bGwgdGltZSB0ZXh0Li4uICovCn0KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWU6YmVmb3JlIHsKCWNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7IC8qIC4uLmluc3RlYWQsIGRpc3BsYXkgb25seSB0aGUgc3RhcnQgdGltZSAqLwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lOmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDAwQTAtXDAwMEEwIjsgLyogc2VwZXJhdGUgd2l0aCBhIGRhc2gsIHdyYXBwZWQgaW4gbmJzcCdzICovCn0KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpdGxlIHsKCWZvbnQtc2l6ZTogLjg1ZW07IC8qIG1ha2UgdGhlIHRpdGxlIHRleHQgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgdGltZSAqLwoJcGFkZGluZzogMDsgLyogdW5kbyBwYWRkaW5nIGZyb20gYWJvdmUgKi8KfQoKLyogcmVzaXplciAqLwoKLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtcmVzaXplciB7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cglib3R0b206IDA7CgloZWlnaHQ6IDhweDsKCW92ZXJmbG93OiBoaWRkZW47CglsaW5lLWhlaWdodDogOHB4OwoJZm9udC1zaXplOiAxMXB4OwoJZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWN1cnNvcjogcy1yZXNpemU7Cn0KCi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXJlc2l6ZXI6YWZ0ZXIgewoJY29udGVudDogIj0iOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIKICogRG9jcyAmIExpY2Vuc2U6IGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE1IEFkYW0gU2hhdwogKi8KCihmdW5jdGlvbihmYWN0b3J5KSB7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJZGVmaW5lKFsgJ2pxdWVyeScsICdtb21lbnQnIF0sIGZhY3RvcnkpOwoJfQoJZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7IC8vIE5vZGUvQ29tbW9uSlMKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JyksIHJlcXVpcmUoJ21vbWVudCcpKTsKCX0KCWVsc2UgewoJCWZhY3RvcnkoalF1ZXJ5LCBtb21lbnQpOwoJfQp9KShmdW5jdGlvbigkLCBtb21lbnQpIHsKCjs7Cgp2YXIgZmMgPSAkLmZ1bGxDYWxlbmRhciA9IHsgdmVyc2lvbjogIjIuMy4yIiB9Owp2YXIgZmNWaWV3cyA9IGZjLnZpZXdzID0ge307CgoKJC5mbi5mdWxsQ2FsZW5kYXIgPSBmdW5jdGlvbihvcHRpb25zKSB7Cgl2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGZvciBhIHBvc3NpYmxlIG1ldGhvZCBjYWxsCgl2YXIgcmVzID0gdGhpczsgLy8gd2hhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuICh0aGlzIGpRdWVyeSBvYmplY3QgYnkgZGVmYXVsdCkKCgl0aGlzLmVhY2goZnVuY3Rpb24oaSwgX2VsZW1lbnQpIHsgLy8gbG9vcCBlYWNoIERPTSBlbGVtZW50IGludm9sdmVkCgkJdmFyIGVsZW1lbnQgPSAkKF9lbGVtZW50KTsKCQl2YXIgY2FsZW5kYXIgPSBlbGVtZW50LmRhdGEoJ2Z1bGxDYWxlbmRhcicpOyAvLyBnZXQgdGhlIGV4aXN0aW5nIGNhbGVuZGFyIG9iamVjdCAoaWYgYW55KQoJCXZhciBzaW5nbGVSZXM7IC8vIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGlzIHNpbmdsZSBtZXRob2QgY2FsbAoKCQkvLyBhIG1ldGhvZCBjYWxsCgkJaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgewoJCQlpZiAoY2FsZW5kYXIgJiYgJC5pc0Z1bmN0aW9uKGNhbGVuZGFyW29wdGlvbnNdKSkgewoJCQkJc2luZ2xlUmVzID0gY2FsZW5kYXJbb3B0aW9uc10uYXBwbHkoY2FsZW5kYXIsIGFyZ3MpOwoJCQkJaWYgKCFpKSB7CgkJCQkJcmVzID0gc2luZ2xlUmVzOyAvLyByZWNvcmQgdGhlIGZpcnN0IG1ldGhvZCBjYWxsIHJlc3VsdAoJCQkJfQoJCQkJaWYgKG9wdGlvbnMgPT09ICdkZXN0cm95JykgeyAvLyBmb3IgdGhlIGRlc3Ryb3kgbWV0aG9kLCBtdXN0IHJlbW92ZSBDYWxlbmRhciBvYmplY3QgZGF0YQoJCQkJCWVsZW1lbnQucmVtb3ZlRGF0YSgnZnVsbENhbGVuZGFyJyk7CgkJCQl9CgkJCX0KCQl9CgkJLy8gYSBuZXcgY2FsZW5kYXIgaW5pdGlhbGl6YXRpb24KCQllbHNlIGlmICghY2FsZW5kYXIpIHsgLy8gZG9uJ3QgaW5pdGlhbGl6ZSB0d2ljZQoJCQljYWxlbmRhciA9IG5ldyBDYWxlbmRhcihlbGVtZW50LCBvcHRpb25zKTsKCQkJZWxlbWVudC5kYXRhKCdmdWxsQ2FsZW5kYXInLCBjYWxlbmRhcik7CgkJCWNhbGVuZGFyLnJlbmRlcigpOwoJCX0KCX0pOwoJCglyZXR1cm4gcmVzOwp9OwoKCnZhciBjb21wbGV4T3B0aW9ucyA9IFsgLy8gbmFtZXMgb2Ygb3B0aW9ucyB0aGF0IGFyZSBvYmplY3RzIHdob3NlIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvbWJpbmVkCgknaGVhZGVyJywKCSdidXR0b25UZXh0JywKCSdidXR0b25JY29ucycsCgkndGhlbWVCdXR0b25JY29ucycKXTsKCgovLyBNZXJnZXMgYW4gYXJyYXkgb2Ygb3B0aW9uIG9iamVjdHMgaW50byBhIHNpbmdsZSBvYmplY3QKZnVuY3Rpb24gbWVyZ2VPcHRpb25zKG9wdGlvbk9ianMpIHsKCXJldHVybiBtZXJnZVByb3BzKG9wdGlvbk9ianMsIGNvbXBsZXhPcHRpb25zKTsKfQoKCi8vIEdpdmVuIG9wdGlvbnMgc3BlY2lmaWVkIGZvciB0aGUgY2FsZW5kYXIncyBjb25zdHJ1Y3RvciwgbWFzc2FnZXMgYW55IGxlZ2FjeSBvcHRpb25zIGludG8gYSBub24tbGVnYWN5IGZvcm0uCi8vIENvbnZlcnRzIFZpZXctT3B0aW9uLUhhc2hlcyBpbnRvIHRoZSBWaWV3LVNwZWNpZmljLU9wdGlvbnMgZm9ybWF0LgpmdW5jdGlvbiBtYXNzYWdlT3ZlcnJpZGVzKGlucHV0KSB7Cgl2YXIgb3ZlcnJpZGVzID0geyB2aWV3czogaW5wdXQudmlld3MgfHwge30gfTsgLy8gdGhlIG91dHB1dC4gZW5zdXJlIGEgYHZpZXdzYCBoYXNoCgl2YXIgc3ViT2JqOwoKCS8vIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb3B0aW9uIG92ZXJyaWRlIHByb3BlcnRpZXMgKGV4Y2VwdCBgdmlld3NgKQoJJC5lYWNoKGlucHV0LCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQlpZiAobmFtZSAhPSAndmlld3MnKSB7CgoJCQkvLyBjb3VsZCB0aGUgdmFsdWUgYmUgYSBsZWdhY3kgVmlldy1PcHRpb24tSGFzaD8KCQkJaWYgKAoJCQkJJC5pc1BsYWluT2JqZWN0KHZhbCkgJiYKCQkJCSEvKHRpbWV8ZHVyYXRpb258aW50ZXJ2YWwpJC9pLnRlc3QobmFtZSkgJiYgLy8gZXhjbHVkZSBkdXJhdGlvbiBvcHRpb25zLiBtaWdodCBiZSBnaXZlbiBhcyBvYmplY3RzCgkJCQkkLmluQXJyYXkobmFtZSwgY29tcGxleE9wdGlvbnMpID09IC0xIC8vIGNvbXBsZXggb3B0aW9ucyBhcmVuJ3QgYWxsb3dlZCB0byBiZSBWaWV3LU9wdGlvbi1IYXNoZXMKCQkJKSB7CgkJCQlzdWJPYmogPSBudWxsOwoKCQkJCS8vIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcHJvcGVydGllcyBvZiB0aGlzIHBvc3NpYmxlIFZpZXctT3B0aW9uLUhhc2ggdmFsdWUKCQkJCSQuZWFjaCh2YWwsIGZ1bmN0aW9uKHN1Yk5hbWUsIHN1YlZhbCkgewoKCQkJCQkvLyBpcyB0aGUgcHJvcGVydHkgdGFyZ2V0aW5nIGEgdmlldz8KCQkJCQlpZiAoL14obW9udGh8d2Vla3xkYXl8ZGVmYXVsdHxiYXNpYyhXZWVrfERheSk/fGFnZW5kYShXZWVrfERheSk/KSQvLnRlc3Qoc3ViTmFtZSkpIHsKCQkJCQkJaWYgKCFvdmVycmlkZXMudmlld3Nbc3ViTmFtZV0pIHsgLy8gZW5zdXJlIHRoZSB2aWV3LXRhcmdldCBlbnRyeSBleGlzdHMKCQkJCQkJCW92ZXJyaWRlcy52aWV3c1tzdWJOYW1lXSA9IHt9OwoJCQkJCQl9CgkJCQkJCW92ZXJyaWRlcy52aWV3c1tzdWJOYW1lXVtuYW1lXSA9IHN1YlZhbDsgLy8gcmVjb3JkIHRoZSB2YWx1ZSBpbiB0aGUgYHZpZXdzYCBvYmplY3QKCQkJCQl9CgkJCQkJZWxzZSB7IC8vIGEgbm9uLVZpZXctT3B0aW9uLUhhc2ggcHJvcGVydHkKCQkJCQkJaWYgKCFzdWJPYmopIHsKCQkJCQkJCXN1Yk9iaiA9IHt9OwoJCQkJCQl9CgkJCQkJCXN1Yk9ialtzdWJOYW1lXSA9IHN1YlZhbDsgLy8gYWNjdW11bGF0ZSB0aGVzZSB1bnJlbGF0ZWQgdmFsdWVzIGZvciBsYXRlcgoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmIChzdWJPYmopIHsgLy8gbm9uLVZpZXctT3B0aW9uLUhhc2ggcHJvcGVydGllcz8gdHJhbnNmZXIgdGhlbSBhcy1pcwoJCQkJCW92ZXJyaWRlc1tuYW1lXSA9IHN1Yk9iajsKCQkJCX0KCQkJfQoJCQllbHNlIHsKCQkJCW92ZXJyaWRlc1tuYW1lXSA9IHZhbDsgLy8gdHJhbnNmZXIgbm9ybWFsIG9wdGlvbnMgYXMtaXMKCQkJfQoJCX0KCX0pOwoKCXJldHVybiBvdmVycmlkZXM7Cn0KCjs7CgovLyBleHBvcnRzCmZjLmludGVyc2VjdGlvblRvU2VnID0gaW50ZXJzZWN0aW9uVG9TZWc7CmZjLmFwcGx5QWxsID0gYXBwbHlBbGw7CmZjLmRlYm91bmNlID0gZGVib3VuY2U7CmZjLmlzSW50ID0gaXNJbnQ7CmZjLmh0bWxFc2NhcGUgPSBodG1sRXNjYXBlOwpmYy5jc3NUb1N0ciA9IGNzc1RvU3RyOwpmYy5wcm94eSA9IHByb3h5OwpmYy5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIgPSBjYXBpdGFsaXNlRmlyc3RMZXR0ZXI7CgoKLyogRnVsbENhbGVuZGFyLXNwZWNpZmljIERPTSBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKLy8gR2l2ZW4gdGhlIHNjcm9sbGJhciB3aWR0aHMgb2Ygc29tZSBvdGhlciBjb250YWluZXIsIGNyZWF0ZSBib3JkZXJzL21hcmdpbnMgb24gcm93RWxzIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBsZWZ0Ci8vIGFuZCByaWdodCBzcGFjZSB0aGF0IHdhcyBvZmZzZXQgYnkgdGhlIHNjcm9sbGJhcnMuIEEgMS1waXhlbCBib3JkZXIgZmlyc3QsIHRoZW4gbWFyZ2luIGJleW9uZCB0aGF0LgpmdW5jdGlvbiBjb21wZW5zYXRlU2Nyb2xsKHJvd0Vscywgc2Nyb2xsYmFyV2lkdGhzKSB7CglpZiAoc2Nyb2xsYmFyV2lkdGhzLmxlZnQpIHsKCQlyb3dFbHMuY3NzKHsKCQkJJ2JvcmRlci1sZWZ0LXdpZHRoJzogMSwKCQkJJ21hcmdpbi1sZWZ0Jzogc2Nyb2xsYmFyV2lkdGhzLmxlZnQgLSAxCgkJfSk7Cgl9CglpZiAoc2Nyb2xsYmFyV2lkdGhzLnJpZ2h0KSB7CgkJcm93RWxzLmNzcyh7CgkJCSdib3JkZXItcmlnaHQtd2lkdGgnOiAxLAoJCQknbWFyZ2luLXJpZ2h0Jzogc2Nyb2xsYmFyV2lkdGhzLnJpZ2h0IC0gMQoJCX0pOwoJfQp9CgoKLy8gVW5kb2VzIGNvbXBlbnNhdGVTY3JvbGwgYW5kIHJlc3RvcmVzIGFsbCBib3JkZXJzL21hcmdpbnMKZnVuY3Rpb24gdW5jb21wZW5zYXRlU2Nyb2xsKHJvd0VscykgewoJcm93RWxzLmNzcyh7CgkJJ21hcmdpbi1sZWZ0JzogJycsCgkJJ21hcmdpbi1yaWdodCc6ICcnLAoJCSdib3JkZXItbGVmdC13aWR0aCc6ICcnLAoJCSdib3JkZXItcmlnaHQtd2lkdGgnOiAnJwoJfSk7Cn0KCgovLyBNYWtlIHRoZSBtb3VzZSBjdXJzb3IgZXhwcmVzcyB0aGF0IGFuIGV2ZW50IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IGFyZWEKZnVuY3Rpb24gZGlzYWJsZUN1cnNvcigpIHsKCSQoJ2JvZHknKS5hZGRDbGFzcygnZmMtbm90LWFsbG93ZWQnKTsKfQoKCi8vIFJldHVybnMgdGhlIG1vdXNlIGN1cnNvciB0byBpdHMgb3JpZ2luYWwgbG9vawpmdW5jdGlvbiBlbmFibGVDdXJzb3IoKSB7CgkkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ2ZjLW5vdC1hbGxvd2VkJyk7Cn0KCgovLyBHaXZlbiBhIHRvdGFsIGF2YWlsYWJsZSBoZWlnaHQgdG8gZmlsbCwgaGF2ZSBgZWxzYCAoZXNzZW50aWFsbHkgY2hpbGQgcm93cykgZXhwYW5kIHRvIGFjY29tb2RhdGUuCi8vIEJ5IGRlZmF1bHQsIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gdGhlIHJlY29tbWVuZGVkIGhlaWdodCBhcmUgZXhwYW5kZWQgdW5pZm9ybWx5LCBub3QgY29uc2lkZXJpbmcKLy8gYW55IG90aGVyIGVscyB0aGF0IGFyZSBhbHJlYWR5IHRvbyB0YWxsLiBpZiBgc2hvdWxkUmVkaXN0cmlidXRlYCBpcyBvbiwgaXQgY29uc2lkZXJzIHRoZXNlIHRhbGwgcm93cyBhbmQgCi8vIHJlZHVjZXMgdGhlIGF2YWlsYWJsZSBoZWlnaHQuCmZ1bmN0aW9uIGRpc3RyaWJ1dGVIZWlnaHQoZWxzLCBhdmFpbGFibGVIZWlnaHQsIHNob3VsZFJlZGlzdHJpYnV0ZSkgewoKCS8vICpGTE9PUklORyBOT1RFKjogd2UgZmxvb3IgaW4gY2VydGFpbiBwbGFjZXMgYmVjYXVzZSB6b29tIGNhbiBnaXZlIGluYWNjdXJhdGUgZmxvYXRpbmctcG9pbnQgZGltZW5zaW9ucywKCS8vIGFuZCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2hvcnRlciB0aGFuIHRhbGxlciwgdG8gYXZvaWQgY3JlYXRpbmcgdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycy4KCgl2YXIgbWluT2Zmc2V0MSA9IE1hdGguZmxvb3IoYXZhaWxhYmxlSGVpZ2h0IC8gZWxzLmxlbmd0aCk7IC8vIGZvciBub24tbGFzdCBlbGVtZW50Cgl2YXIgbWluT2Zmc2V0MiA9IE1hdGguZmxvb3IoYXZhaWxhYmxlSGVpZ2h0IC0gbWluT2Zmc2V0MSAqIChlbHMubGVuZ3RoIC0gMSkpOyAvLyBmb3IgbGFzdCBlbGVtZW50ICpGTE9PUklORyBOT1RFKgoJdmFyIGZsZXhFbHMgPSBbXTsgLy8gZWxlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBleHBhbmQuIGFycmF5IG9mIERPTSBub2RlcwoJdmFyIGZsZXhPZmZzZXRzID0gW107IC8vIGFtb3VudCBvZiB2ZXJ0aWNhbCBzcGFjZSBpdCB0YWtlcyB1cAoJdmFyIGZsZXhIZWlnaHRzID0gW107IC8vIGFjdHVhbCBjc3MgaGVpZ2h0Cgl2YXIgdXNlZEhlaWdodCA9IDA7CgoJdW5kaXN0cmlidXRlSGVpZ2h0KGVscyk7IC8vIGdpdmUgYWxsIGVsZW1lbnRzIHRoZWlyIG5hdHVyYWwgaGVpZ2h0CgoJLy8gZmluZCBlbGVtZW50cyB0aGF0IGFyZSBiZWxvdyB0aGUgcmVjb21tZW5kZWQgaGVpZ2h0IChleHBhbmRhYmxlKS4KCS8vIGltcG9ydGFudCB0byBxdWVyeSBmb3IgaGVpZ2h0cyBpbiBhIHNpbmdsZSBmaXJzdCBwYXNzICh0byBhdm9pZCByZWZsb3cgb3NjaWxsYXRpb24pLgoJZWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHsKCQl2YXIgbWluT2Zmc2V0ID0gaSA9PT0gZWxzLmxlbmd0aCAtIDEgPyBtaW5PZmZzZXQyIDogbWluT2Zmc2V0MTsKCQl2YXIgbmF0dXJhbE9mZnNldCA9ICQoZWwpLm91dGVySGVpZ2h0KHRydWUpOwoKCQlpZiAobmF0dXJhbE9mZnNldCA8IG1pbk9mZnNldCkgewoJCQlmbGV4RWxzLnB1c2goZWwpOwoJCQlmbGV4T2Zmc2V0cy5wdXNoKG5hdHVyYWxPZmZzZXQpOwoJCQlmbGV4SGVpZ2h0cy5wdXNoKCQoZWwpLmhlaWdodCgpKTsKCQl9CgkJZWxzZSB7CgkJCS8vIHRoaXMgZWxlbWVudCBzdHJldGNoZXMgcGFzdCByZWNvbW1lbmRlZCBoZWlnaHQgKG5vbi1leHBhbmRhYmxlKS4gbWFyayB0aGUgc3BhY2UgYXMgb2NjdXBpZWQuCgkJCXVzZWRIZWlnaHQgKz0gbmF0dXJhbE9mZnNldDsKCQl9Cgl9KTsKCgkvLyByZWFkanVzdCB0aGUgcmVjb21tZW5kZWQgaGVpZ2h0IHRvIG9ubHkgY29uc2lkZXIgdGhlIGhlaWdodCBhdmFpbGFibGUgdG8gbm9uLW1heGVkLW91dCByb3dzLgoJaWYgKHNob3VsZFJlZGlzdHJpYnV0ZSkgewoJCWF2YWlsYWJsZUhlaWdodCAtPSB1c2VkSGVpZ2h0OwoJCW1pbk9mZnNldDEgPSBNYXRoLmZsb29yKGF2YWlsYWJsZUhlaWdodCAvIGZsZXhFbHMubGVuZ3RoKTsKCQltaW5PZmZzZXQyID0gTWF0aC5mbG9vcihhdmFpbGFibGVIZWlnaHQgLSBtaW5PZmZzZXQxICogKGZsZXhFbHMubGVuZ3RoIC0gMSkpOyAvLyAqRkxPT1JJTkcgTk9URSoKCX0KCgkvLyBhc3NpZ24gaGVpZ2h0cyB0byBhbGwgZXhwYW5kYWJsZSBlbGVtZW50cwoJJChmbGV4RWxzKS5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7CgkJdmFyIG1pbk9mZnNldCA9IGkgPT09IGZsZXhFbHMubGVuZ3RoIC0gMSA/IG1pbk9mZnNldDIgOiBtaW5PZmZzZXQxOwoJCXZhciBuYXR1cmFsT2Zmc2V0ID0gZmxleE9mZnNldHNbaV07CgkJdmFyIG5hdHVyYWxIZWlnaHQgPSBmbGV4SGVpZ2h0c1tpXTsKCQl2YXIgbmV3SGVpZ2h0ID0gbWluT2Zmc2V0IC0gKG5hdHVyYWxPZmZzZXQgLSBuYXR1cmFsSGVpZ2h0KTsgLy8gc3VidHJhY3QgdGhlIG1hcmdpbi9wYWRkaW5nCgoJCWlmIChuYXR1cmFsT2Zmc2V0IDwgbWluT2Zmc2V0KSB7IC8vIHdlIGNoZWNrIHRoaXMgYWdhaW4gYmVjYXVzZSByZWRpc3RyaWJ1dGlvbiBtaWdodCBoYXZlIGNoYW5nZWQgdGhpbmdzCgkJCSQoZWwpLmhlaWdodChuZXdIZWlnaHQpOwoJCX0KCX0pOwp9CgoKLy8gVW5kb2VzIGRpc3RydWJ1dGVIZWlnaHQsIHJlc3RvcmluZyBhbGwgZWxzIHRvIHRoZWlyIG5hdHVyYWwgaGVpZ2h0CmZ1bmN0aW9uIHVuZGlzdHJpYnV0ZUhlaWdodChlbHMpIHsKCWVscy5oZWlnaHQoJycpOwp9CgoKLy8gR2l2ZW4gYGVsc2AsIGEgalF1ZXJ5IHNldCBvZiA8dGQ+IGNlbGxzLCBmaW5kIHRoZSBjZWxsIHdpdGggdGhlIGxhcmdlc3QgbmF0dXJhbCB3aWR0aCBhbmQgc2V0IHRoZSB3aWR0aHMgb2YgYWxsIHRoZQovLyBjZWxscyB0byBiZSB0aGF0IHdpZHRoLgovLyBQUkVSRVFVSVNJVEU6IGlmIHlvdSB3YW50IGEgY2VsbCB0byB0YWtlIHVwIHdpZHRoLCBpdCBuZWVkcyB0byBoYXZlIGEgc2luZ2xlIGlubmVyIGVsZW1lbnQgdy8gZGlzcGxheTppbmxpbmUKZnVuY3Rpb24gbWF0Y2hDZWxsV2lkdGhzKGVscykgewoJdmFyIG1heElubmVyV2lkdGggPSAwOwoKCWVscy5maW5kKCc+IConKS5lYWNoKGZ1bmN0aW9uKGksIGlubmVyRWwpIHsKCQl2YXIgaW5uZXJXaWR0aCA9ICQoaW5uZXJFbCkub3V0ZXJXaWR0aCgpOwoJCWlmIChpbm5lcldpZHRoID4gbWF4SW5uZXJXaWR0aCkgewoJCQltYXhJbm5lcldpZHRoID0gaW5uZXJXaWR0aDsKCQl9Cgl9KTsKCgltYXhJbm5lcldpZHRoKys7IC8vIHNvbWV0aW1lcyBub3QgYWNjdXJhdGUgb2Ygd2lkdGggdGhlIHRleHQgbmVlZHMgdG8gc3RheSBvbiBvbmUgbGluZS4gaW5zdXJhbmNlCgoJZWxzLndpZHRoKG1heElubmVyV2lkdGgpOwoKCXJldHVybiBtYXhJbm5lcldpZHRoOwp9CgoKLy8gVHVybnMgYSBjb250YWluZXIgZWxlbWVudCBpbnRvIGEgc2Nyb2xsZXIgaWYgaXRzIGNvbnRlbnRzIGlzIHRhbGxlciB0aGFuIHRoZSBhbGxvdHRlZCBoZWlnaHQuCi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBub3cgYSBzY3JvbGxlciwgZmFsc2Ugb3RoZXJ3aXNlLgovLyBOT1RFOiB0aGlzIG1ldGhvZCBpcyBiZXN0IGJlY2F1c2UgaXQgdGFrZXMgd2VpcmQgem9vbWluZyBkaW1lbnNpb25zIGludG8gYWNjb3VudApmdW5jdGlvbiBzZXRQb3RlbnRpYWxTY3JvbGxlcihjb250YWluZXJFbCwgaGVpZ2h0KSB7Cgljb250YWluZXJFbC5oZWlnaHQoaGVpZ2h0KS5hZGRDbGFzcygnZmMtc2Nyb2xsZXInKTsKCgkvLyBhcmUgc2Nyb2xsYmFycyBuZWVkZWQ/CglpZiAoY29udGFpbmVyRWxbMF0uc2Nyb2xsSGVpZ2h0IC0gMSA+IGNvbnRhaW5lckVsWzBdLmNsaWVudEhlaWdodCkgeyAvLyAhISEgLTEgYmVjYXVzZSBJRSBpcyBvZnRlbiBvZmYtYnktb25lIDooCgkJcmV0dXJuIHRydWU7Cgl9CgoJdW5zZXRTY3JvbGxlcihjb250YWluZXJFbCk7IC8vIHVuZG8KCXJldHVybiBmYWxzZTsKfQoKCi8vIFRha2VzIGFuIGVsZW1lbnQgdGhhdCBtaWdodCBoYXZlIGJlZW4gYSBzY3JvbGxlciwgYW5kIHR1cm5zIGl0IGJhY2sgaW50byBhIG5vcm1hbCBlbGVtZW50LgpmdW5jdGlvbiB1bnNldFNjcm9sbGVyKGNvbnRhaW5lckVsKSB7Cgljb250YWluZXJFbC5oZWlnaHQoJycpLnJlbW92ZUNsYXNzKCdmYy1zY3JvbGxlcicpOwp9CgoKLyogR2VuZXJhbCBET00gVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKZmMuZ2V0Q2xpZW50UmVjdCA9IGdldENsaWVudFJlY3Q7CmZjLmdldENvbnRlbnRSZWN0ID0gZ2V0Q29udGVudFJlY3Q7CmZjLmdldFNjcm9sbGJhcldpZHRocyA9IGdldFNjcm9sbGJhcldpZHRoczsKCgovLyBib3Jyb3dlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5LXVpL2Jsb2IvMS4xMS4wL3VpL2NvcmUuanMjTDUxCmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChlbCkgewoJdmFyIHBvc2l0aW9uID0gZWwuY3NzKCdwb3NpdGlvbicpLAoJCXNjcm9sbFBhcmVudCA9IGVsLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CgkJCXZhciBwYXJlbnQgPSAkKHRoaXMpOwoJCQlyZXR1cm4gKC8oYXV0b3xzY3JvbGwpLykudGVzdCgKCQkJCXBhcmVudC5jc3MoJ292ZXJmbG93JykgKyBwYXJlbnQuY3NzKCdvdmVyZmxvdy15JykgKyBwYXJlbnQuY3NzKCdvdmVyZmxvdy14JykKCQkJKTsKCQl9KS5lcSgwKTsKCglyZXR1cm4gcG9zaXRpb24gPT09ICdmaXhlZCcgfHwgIXNjcm9sbFBhcmVudC5sZW5ndGggPyAkKGVsWzBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpIDogc2Nyb2xsUGFyZW50Owp9CgoKLy8gUXVlcmllcyB0aGUgb3V0ZXIgYm91bmRpbmcgYXJlYSBvZiBhIGpRdWVyeSBlbGVtZW50LgovLyBSZXR1cm5zIGEgcmVjdGFuZ2xlIHdpdGggYWJzb2x1dGUgY29vcmRpbmF0ZXM6IGxlZnQsIHJpZ2h0IChleGNsdXNpdmUpLCB0b3AsIGJvdHRvbSAoZXhjbHVzaXZlKS4KZnVuY3Rpb24gZ2V0T3V0ZXJSZWN0KGVsKSB7Cgl2YXIgb2Zmc2V0ID0gZWwub2Zmc2V0KCk7CgoJcmV0dXJuIHsKCQlsZWZ0OiBvZmZzZXQubGVmdCwKCQlyaWdodDogb2Zmc2V0LmxlZnQgKyBlbC5vdXRlcldpZHRoKCksCgkJdG9wOiBvZmZzZXQudG9wLAoJCWJvdHRvbTogb2Zmc2V0LnRvcCArIGVsLm91dGVySGVpZ2h0KCkKCX07Cn0KCgovLyBRdWVyaWVzIHRoZSBhcmVhIHdpdGhpbiB0aGUgbWFyZ2luL2JvcmRlci9zY3JvbGxiYXJzIG9mIGEgalF1ZXJ5IGVsZW1lbnQuIERvZXMgbm90IGdvIHdpdGhpbiB0aGUgcGFkZGluZy4KLy8gUmV0dXJucyBhIHJlY3RhbmdsZSB3aXRoIGFic29sdXRlIGNvb3JkaW5hdGVzOiBsZWZ0LCByaWdodCAoZXhjbHVzaXZlKSwgdG9wLCBib3R0b20gKGV4Y2x1c2l2ZSkuCi8vIE5PVEU6IHNob3VsZCB1c2UgY2xpZW50TGVmdC9jbGllbnRUb3AsIGJ1dCB2ZXJ5IHVucmVsaWFibGUgY3Jvc3MtYnJvd3Nlci4KZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdChlbCkgewoJdmFyIG9mZnNldCA9IGVsLm9mZnNldCgpOwoJdmFyIHNjcm9sbGJhcldpZHRocyA9IGdldFNjcm9sbGJhcldpZHRocyhlbCk7Cgl2YXIgbGVmdCA9IG9mZnNldC5sZWZ0ICsgZ2V0Q3NzRmxvYXQoZWwsICdib3JkZXItbGVmdC13aWR0aCcpICsgc2Nyb2xsYmFyV2lkdGhzLmxlZnQ7Cgl2YXIgdG9wID0gb2Zmc2V0LnRvcCArIGdldENzc0Zsb2F0KGVsLCAnYm9yZGVyLXRvcC13aWR0aCcpICsgc2Nyb2xsYmFyV2lkdGhzLnRvcDsKCglyZXR1cm4gewoJCWxlZnQ6IGxlZnQsCgkJcmlnaHQ6IGxlZnQgKyBlbFswXS5jbGllbnRXaWR0aCwgLy8gY2xpZW50V2lkdGggaW5jbHVkZXMgcGFkZGluZyBidXQgTk9UIHNjcm9sbGJhcnMKCQl0b3A6IHRvcCwKCQlib3R0b206IHRvcCArIGVsWzBdLmNsaWVudEhlaWdodCAvLyBjbGllbnRIZWlnaHQgaW5jbHVkZXMgcGFkZGluZyBidXQgTk9UIHNjcm9sbGJhcnMKCX07Cn0KCgovLyBRdWVyaWVzIHRoZSBhcmVhIHdpdGhpbiB0aGUgbWFyZ2luL2JvcmRlci9wYWRkaW5nIG9mIGEgalF1ZXJ5IGVsZW1lbnQuIEFzc3VtZWQgbm90IHRvIGhhdmUgc2Nyb2xsYmFycy4KLy8gUmV0dXJucyBhIHJlY3RhbmdsZSB3aXRoIGFic29sdXRlIGNvb3JkaW5hdGVzOiBsZWZ0LCByaWdodCAoZXhjbHVzaXZlKSwgdG9wLCBib3R0b20gKGV4Y2x1c2l2ZSkuCmZ1bmN0aW9uIGdldENvbnRlbnRSZWN0KGVsKSB7Cgl2YXIgb2Zmc2V0ID0gZWwub2Zmc2V0KCk7IC8vIGp1c3Qgb3V0c2lkZSBvZiBib3JkZXIsIG1hcmdpbiBub3QgaW5jbHVkZWQKCXZhciBsZWZ0ID0gb2Zmc2V0LmxlZnQgKyBnZXRDc3NGbG9hdChlbCwgJ2JvcmRlci1sZWZ0LXdpZHRoJykgKyBnZXRDc3NGbG9hdChlbCwgJ3BhZGRpbmctbGVmdCcpOwoJdmFyIHRvcCA9IG9mZnNldC50b3AgKyBnZXRDc3NGbG9hdChlbCwgJ2JvcmRlci10b3Atd2lkdGgnKSArIGdldENzc0Zsb2F0KGVsLCAncGFkZGluZy10b3AnKTsKCglyZXR1cm4gewoJCWxlZnQ6IGxlZnQsCgkJcmlnaHQ6IGxlZnQgKyBlbC53aWR0aCgpLAoJCXRvcDogdG9wLAoJCWJvdHRvbTogdG9wICsgZWwuaGVpZ2h0KCkKCX07Cn0KCgovLyBSZXR1cm5zIHRoZSBjb21wdXRlZCBsZWZ0L3JpZ2h0L3RvcC9ib3R0b20gc2Nyb2xsYmFyIHdpZHRocyBmb3IgdGhlIGdpdmVuIGpRdWVyeSBlbGVtZW50LgovLyBOT1RFOiBzaG91bGQgdXNlIGNsaWVudExlZnQvY2xpZW50VG9wLCBidXQgdmVyeSB1bnJlbGlhYmxlIGNyb3NzLWJyb3dzZXIuCmZ1bmN0aW9uIGdldFNjcm9sbGJhcldpZHRocyhlbCkgewoJdmFyIGxlZnRSaWdodFdpZHRoID0gZWwuaW5uZXJXaWR0aCgpIC0gZWxbMF0uY2xpZW50V2lkdGg7IC8vIHRoZSBwYWRkaW5ncyBjYW5jZWwgb3V0LCBsZWF2aW5nIHRoZSBzY3JvbGxiYXJzCgl2YXIgd2lkdGhzID0gewoJCWxlZnQ6IDAsCgkJcmlnaHQ6IDAsCgkJdG9wOiAwLAoJCWJvdHRvbTogZWwuaW5uZXJIZWlnaHQoKSAtIGVsWzBdLmNsaWVudEhlaWdodCAvLyB0aGUgcGFkZGluZ3MgY2FuY2VsIG91dCwgbGVhdmluZyB0aGUgYm90dG9tIHNjcm9sbGJhcgoJfTsKCglpZiAoZ2V0SXNMZWZ0UnRsU2Nyb2xsYmFycygpICYmIGVsLmNzcygnZGlyZWN0aW9uJykgPT0gJ3J0bCcpIHsgLy8gaXMgdGhlIHNjcm9sbGJhciBvbiB0aGUgbGVmdCBzaWRlPwoJCXdpZHRocy5sZWZ0ID0gbGVmdFJpZ2h0V2lkdGg7Cgl9CgllbHNlIHsKCQl3aWR0aHMucmlnaHQgPSBsZWZ0UmlnaHRXaWR0aDsKCX0KCglyZXR1cm4gd2lkdGhzOwp9CgoKLy8gTG9naWMgZm9yIGRldGVybWluaW5nIGlmLCB3aGVuIHRoZSBlbGVtZW50IGlzIHJpZ2h0LXRvLWxlZnQsIHRoZSBzY3JvbGxiYXIgYXBwZWFycyBvbiB0aGUgbGVmdCBzaWRlCgp2YXIgX2lzTGVmdFJ0bFNjcm9sbGJhcnMgPSBudWxsOwoKZnVuY3Rpb24gZ2V0SXNMZWZ0UnRsU2Nyb2xsYmFycygpIHsgLy8gcmVzcG9uc2libGUgZm9yIGNhY2hpbmcgdGhlIGNvbXB1dGF0aW9uCglpZiAoX2lzTGVmdFJ0bFNjcm9sbGJhcnMgPT09IG51bGwpIHsKCQlfaXNMZWZ0UnRsU2Nyb2xsYmFycyA9IGNvbXB1dGVJc0xlZnRSdGxTY3JvbGxiYXJzKCk7Cgl9CglyZXR1cm4gX2lzTGVmdFJ0bFNjcm9sbGJhcnM7Cn0KCmZ1bmN0aW9uIGNvbXB1dGVJc0xlZnRSdGxTY3JvbGxiYXJzKCkgeyAvLyBjcmVhdGVzIGFuIG9mZnNjcmVlbiB0ZXN0IGVsZW1lbnQsIHRoZW4gcmVtb3ZlcyBpdAoJdmFyIGVsID0gJCgnPGRpdj48ZGl2Lz48L2Rpdj4nKQoJCS5jc3MoewoJCQlwb3NpdGlvbjogJ2Fic29sdXRlJywKCQkJdG9wOiAtMTAwMCwKCQkJbGVmdDogMCwKCQkJYm9yZGVyOiAwLAoJCQlwYWRkaW5nOiAwLAoJCQlvdmVyZmxvdzogJ3Njcm9sbCcsCgkJCWRpcmVjdGlvbjogJ3J0bCcKCQl9KQoJCS5hcHBlbmRUbygnYm9keScpOwoJdmFyIGlubmVyRWwgPSBlbC5jaGlsZHJlbigpOwoJdmFyIHJlcyA9IGlubmVyRWwub2Zmc2V0KCkubGVmdCA+IGVsLm9mZnNldCgpLmxlZnQ7IC8vIGlzIHRoZSBpbm5lciBkaXYgc2hpZnRlZCB0byBhY2NvbW1vZGF0ZSBhIGxlZnQgc2Nyb2xsYmFyPwoJZWwucmVtb3ZlKCk7CglyZXR1cm4gcmVzOwp9CgoKLy8gUmV0cmlldmVzIGEgalF1ZXJ5IGVsZW1lbnQncyBjb21wdXRlZCBDU1MgdmFsdWUgYXMgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuCi8vIElmIHRoZSBxdWVyaWVkIHZhbHVlIGlzIG5vbi1udW1lcmljIChleDogSUUgY2FuIHJldHVybiAibWVkaXVtIiBmb3IgYm9yZGVyIHdpZHRoKSwgd2lsbCBqdXN0IHJldHVybiB6ZXJvLgpmdW5jdGlvbiBnZXRDc3NGbG9hdChlbCwgcHJvcCkgewoJcmV0dXJuIHBhcnNlRmxvYXQoZWwuY3NzKHByb3ApKSB8fCAwOwp9CgoKLy8gUmV0dXJucyBhIGJvb2xlYW4gd2hldGhlciB0aGlzIHdhcyBhIGxlZnQgbW91c2UgY2xpY2sgYW5kIG5vIGN0cmwga2V5ICh3aGljaCBtZWFucyByaWdodCBjbGljayBvbiBNYWMpCmZ1bmN0aW9uIGlzUHJpbWFyeU1vdXNlQnV0dG9uKGV2KSB7CglyZXR1cm4gZXYud2hpY2ggPT0gMSAmJiAhZXYuY3RybEtleTsKfQoKCi8qIEdlb21ldHJ5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCi8vIFJldHVybnMgYSBuZXcgcmVjdGFuZ2xlIHRoYXQgaXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgdHdvIHJlY3RhbmdsZXMuIElmIHRoZXkgZG9uJ3QgaW50ZXJzZWN0LCByZXR1cm5zIGZhbHNlCmZ1bmN0aW9uIGludGVyc2VjdFJlY3RzKHJlY3QxLCByZWN0MikgewoJdmFyIHJlcyA9IHsKCQlsZWZ0OiBNYXRoLm1heChyZWN0MS5sZWZ0LCByZWN0Mi5sZWZ0KSwKCQlyaWdodDogTWF0aC5taW4ocmVjdDEucmlnaHQsIHJlY3QyLnJpZ2h0KSwKCQl0b3A6IE1hdGgubWF4KHJlY3QxLnRvcCwgcmVjdDIudG9wKSwKCQlib3R0b206IE1hdGgubWluKHJlY3QxLmJvdHRvbSwgcmVjdDIuYm90dG9tKQoJfTsKCglpZiAocmVzLmxlZnQgPCByZXMucmlnaHQgJiYgcmVzLnRvcCA8IHJlcy5ib3R0b20pIHsKCQlyZXR1cm4gcmVzOwoJfQoJcmV0dXJuIGZhbHNlOwp9CgoKLy8gUmV0dXJucyBhIG5ldyBwb2ludCB0aGF0IHdpbGwgaGF2ZSBiZWVuIG1vdmVkIHRvIHJlc2lkZSB3aXRoaW4gdGhlIGdpdmVuIHJlY3RhbmdsZQpmdW5jdGlvbiBjb25zdHJhaW5Qb2ludChwb2ludCwgcmVjdCkgewoJcmV0dXJuIHsKCQlsZWZ0OiBNYXRoLm1pbihNYXRoLm1heChwb2ludC5sZWZ0LCByZWN0LmxlZnQpLCByZWN0LnJpZ2h0KSwKCQl0b3A6IE1hdGgubWluKE1hdGgubWF4KHBvaW50LnRvcCwgcmVjdC50b3ApLCByZWN0LmJvdHRvbSkKCX07Cn0KCgovLyBSZXR1cm5zIGEgcG9pbnQgdGhhdCBpcyB0aGUgY2VudGVyIG9mIHRoZSBnaXZlbiByZWN0YW5nbGUKZnVuY3Rpb24gZ2V0UmVjdENlbnRlcihyZWN0KSB7CglyZXR1cm4gewoJCWxlZnQ6IChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KSAvIDIsCgkJdG9wOiAocmVjdC50b3AgKyByZWN0LmJvdHRvbSkgLyAyCgl9Owp9CgoKLy8gU3VidHJhY3RzIHBvaW50MidzIGNvb3JkaW5hdGVzIGZyb20gcG9pbnQxJ3MgY29vcmRpbmF0ZXMsIHJldHVybmluZyBhIGRlbHRhCmZ1bmN0aW9uIGRpZmZQb2ludHMocG9pbnQxLCBwb2ludDIpIHsKCXJldHVybiB7CgkJbGVmdDogcG9pbnQxLmxlZnQgLSBwb2ludDIubGVmdCwKCQl0b3A6IHBvaW50MS50b3AgLSBwb2ludDIudG9wCgl9Owp9CgoKLyogRnVsbENhbGVuZGFyLXNwZWNpZmljIE1pc2MgVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCi8vIENyZWF0ZXMgYSBiYXNpYyBzZWdtZW50IHdpdGggdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgdHdvIHJhbmdlcy4gUmV0dXJucyB1bmRlZmluZWQgaWYgbm8gaW50ZXJzZWN0aW9uLgovLyBFeHBlY3RzIGFsbCBkYXRlcyB0byBiZSBub3JtYWxpemVkIHRvIHRoZSBzYW1lIHRpbWV6b25lIGJlZm9yZWhhbmQuCi8vIFRPRE86IG1vdmUgdG8gZGF0ZSBzZWN0aW9uPwpmdW5jdGlvbiBpbnRlcnNlY3Rpb25Ub1NlZyhzdWJqZWN0UmFuZ2UsIGNvbnN0cmFpbnRSYW5nZSkgewoJdmFyIHN1YmplY3RTdGFydCA9IHN1YmplY3RSYW5nZS5zdGFydDsKCXZhciBzdWJqZWN0RW5kID0gc3ViamVjdFJhbmdlLmVuZDsKCXZhciBjb25zdHJhaW50U3RhcnQgPSBjb25zdHJhaW50UmFuZ2Uuc3RhcnQ7Cgl2YXIgY29uc3RyYWludEVuZCA9IGNvbnN0cmFpbnRSYW5nZS5lbmQ7Cgl2YXIgc2VnU3RhcnQsIHNlZ0VuZDsKCXZhciBpc1N0YXJ0LCBpc0VuZDsKCglpZiAoc3ViamVjdEVuZCA+IGNvbnN0cmFpbnRTdGFydCAmJiBzdWJqZWN0U3RhcnQgPCBjb25zdHJhaW50RW5kKSB7IC8vIGluIGJvdW5kcyBhdCBhbGw/CgoJCWlmIChzdWJqZWN0U3RhcnQgPj0gY29uc3RyYWludFN0YXJ0KSB7CgkJCXNlZ1N0YXJ0ID0gc3ViamVjdFN0YXJ0LmNsb25lKCk7CgkJCWlzU3RhcnQgPSB0cnVlOwoJCX0KCQllbHNlIHsKCQkJc2VnU3RhcnQgPSBjb25zdHJhaW50U3RhcnQuY2xvbmUoKTsKCQkJaXNTdGFydCA9ICBmYWxzZTsKCQl9CgoJCWlmIChzdWJqZWN0RW5kIDw9IGNvbnN0cmFpbnRFbmQpIHsKCQkJc2VnRW5kID0gc3ViamVjdEVuZC5jbG9uZSgpOwoJCQlpc0VuZCA9IHRydWU7CgkJfQoJCWVsc2UgewoJCQlzZWdFbmQgPSBjb25zdHJhaW50RW5kLmNsb25lKCk7CgkJCWlzRW5kID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gewoJCQlzdGFydDogc2VnU3RhcnQsCgkJCWVuZDogc2VnRW5kLAoJCQlpc1N0YXJ0OiBpc1N0YXJ0LAoJCQlpc0VuZDogaXNFbmQKCQl9OwoJfQp9CgoKLyogRGF0ZSBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpmYy5jb21wdXRlSW50ZXJ2YWxVbml0ID0gY29tcHV0ZUludGVydmFsVW5pdDsKZmMuZHVyYXRpb25IYXNUaW1lID0gZHVyYXRpb25IYXNUaW1lOwoKdmFyIGRheUlEcyA9IFsgJ3N1bicsICdtb24nLCAndHVlJywgJ3dlZCcsICd0aHUnLCAnZnJpJywgJ3NhdCcgXTsKdmFyIGludGVydmFsVW5pdHMgPSBbICd5ZWFyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdtaWxsaXNlY29uZCcgXTsKCgovLyBEaWZmcyB0aGUgdHdvIG1vbWVudHMgaW50byBhIER1cmF0aW9uIHdoZXJlIGZ1bGwtZGF5cyBhcmUgcmVjb3JkZWQgZmlyc3QsIHRoZW4gdGhlIHJlbWFpbmluZyB0aW1lLgovLyBNb21lbnRzIHdpbGwgaGF2ZSB0aGVpciB0aW1lem9uZXMgbm9ybWFsaXplZC4KZnVuY3Rpb24gZGlmZkRheVRpbWUoYSwgYikgewoJcmV0dXJuIG1vbWVudC5kdXJhdGlvbih7CgkJZGF5czogYS5jbG9uZSgpLnN0cmlwVGltZSgpLmRpZmYoYi5jbG9uZSgpLnN0cmlwVGltZSgpLCAnZGF5cycpLAoJCW1zOiBhLnRpbWUoKSAtIGIudGltZSgpIC8vIHRpbWUtb2YtZGF5IGZyb20gZGF5IHN0YXJ0LiBkaXNyZWdhcmRzIHRpbWV6b25lCgl9KTsKfQoKCi8vIERpZmZzIHRoZSB0d28gbW9tZW50cyB2aWEgdGhlaXIgc3RhcnQtb2YtZGF5IChyZWdhcmRsZXNzIG9mIHRpbWV6b25lKS4gUHJvZHVjZXMgd2hvbGUtZGF5IGR1cmF0aW9ucy4KZnVuY3Rpb24gZGlmZkRheShhLCBiKSB7CglyZXR1cm4gbW9tZW50LmR1cmF0aW9uKHsKCQlkYXlzOiBhLmNsb25lKCkuc3RyaXBUaW1lKCkuZGlmZihiLmNsb25lKCkuc3RyaXBUaW1lKCksICdkYXlzJykKCX0pOwp9CgoKLy8gRGlmZnMgdHdvIG1vbWVudHMsIHByb2R1Y2luZyBhIGR1cmF0aW9uLCBtYWRlIG9mIGEgd2hvbGUtdW5pdC1pbmNyZW1lbnQgb2YgdGhlIGdpdmVuIHVuaXQuIFVzZXMgcm91bmRpbmcuCmZ1bmN0aW9uIGRpZmZCeVVuaXQoYSwgYiwgdW5pdCkgewoJcmV0dXJuIG1vbWVudC5kdXJhdGlvbigKCQlNYXRoLnJvdW5kKGEuZGlmZihiLCB1bml0LCB0cnVlKSksIC8vIHJldHVybkZsb2F0PXRydWUKCQl1bml0CgkpOwp9CgoKLy8gQ29tcHV0ZXMgdGhlIHVuaXQgbmFtZSBvZiB0aGUgbGFyZ2VzdCB3aG9sZS11bml0IHBlcmlvZCBvZiB0aW1lLgovLyBGb3IgZXhhbXBsZSwgNDggaG91cnMgd2lsbCBiZSAiZGF5cyIgd2hlcmVhcyA0OSBob3VycyB3aWxsIGJlICJob3VycyIuCi8vIEFjY2VwdHMgc3RhcnQvZW5kLCBhIHJhbmdlIG9iamVjdCwgb3IgYW4gb3JpZ2luYWwgZHVyYXRpb24gb2JqZWN0LgpmdW5jdGlvbiBjb21wdXRlSW50ZXJ2YWxVbml0KHN0YXJ0LCBlbmQpIHsKCXZhciBpLCB1bml0OwoJdmFyIHZhbDsKCglmb3IgKGkgPSAwOyBpIDwgaW50ZXJ2YWxVbml0cy5sZW5ndGg7IGkrKykgewoJCXVuaXQgPSBpbnRlcnZhbFVuaXRzW2ldOwoJCXZhbCA9IGNvbXB1dGVSYW5nZUFzKHVuaXQsIHN0YXJ0LCBlbmQpOwoKCQlpZiAodmFsID49IDEgJiYgaXNJbnQodmFsKSkgewoJCQlicmVhazsKCQl9Cgl9CgoJcmV0dXJuIHVuaXQ7IC8vIHdpbGwgYmUgIm1pbGxpc2Vjb25kcyIgaWYgbm90aGluZyBlbHNlIG1hdGNoZXMKfQoKCi8vIENvbXB1dGVzIHRoZSBudW1iZXIgb2YgdW5pdHMgKGxpa2UgImhvdXJzIikgaW4gdGhlIGdpdmVuIHJhbmdlLgovLyBSYW5nZSBjYW4gYmUgYSB7c3RhcnQsZW5kfSBvYmplY3QsIHNlcGFyYXRlIHN0YXJ0L2VuZCBhcmdzLCBvciBhIER1cmF0aW9uLgovLyBSZXN1bHRzIGFyZSBiYXNlZCBvbiBNb21lbnQncyAuYXMoKSBhbmQgLmRpZmYoKSBtZXRob2RzLCBzbyByZXN1bHRzIGNhbiBkZXBlbmQgb24gaW50ZXJuYWwgaGFuZGxpbmcKLy8gb2YgbW9udGgtZGlmZmluZyBsb2dpYyAod2hpY2ggdGVuZHMgdG8gdmFyeSBmcm9tIHZlcnNpb24gdG8gdmVyc2lvbikuCmZ1bmN0aW9uIGNvbXB1dGVSYW5nZUFzKHVuaXQsIHN0YXJ0LCBlbmQpIHsKCglpZiAoZW5kICE9IG51bGwpIHsgLy8gZ2l2ZW4gc3RhcnQsIGVuZAoJCXJldHVybiBlbmQuZGlmZihzdGFydCwgdW5pdCwgdHJ1ZSk7Cgl9CgllbHNlIGlmIChtb21lbnQuaXNEdXJhdGlvbihzdGFydCkpIHsgLy8gZ2l2ZW4gZHVyYXRpb24KCQlyZXR1cm4gc3RhcnQuYXModW5pdCk7Cgl9CgllbHNlIHsgLy8gZ2l2ZW4geyBzdGFydCwgZW5kIH0gcmFuZ2Ugb2JqZWN0CgkJcmV0dXJuIHN0YXJ0LmVuZC5kaWZmKHN0YXJ0LnN0YXJ0LCB1bml0LCB0cnVlKTsKCX0KfQoKCi8vIFJldHVybnMgYSBib29sZWFuIGFib3V0IHdoZXRoZXIgdGhlIGdpdmVuIGR1cmF0aW9uIGhhcyBhbnkgdGltZSBwYXJ0cyAoaG91cnMvbWludXRlcy9zZWNvbmRzL21zKQpmdW5jdGlvbiBkdXJhdGlvbkhhc1RpbWUoZHVyKSB7CglyZXR1cm4gQm9vbGVhbihkdXIuaG91cnMoKSB8fCBkdXIubWludXRlcygpIHx8IGR1ci5zZWNvbmRzKCkgfHwgZHVyLm1pbGxpc2Vjb25kcygpKTsKfQoKCmZ1bmN0aW9uIGlzTmF0aXZlRGF0ZShpbnB1dCkgewoJcmV0dXJuICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXScgfHwgaW5wdXQgaW5zdGFuY2VvZiBEYXRlOwp9CgoKLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSB0aW1lIHN0cmluZywgbGlrZSAiMDY6NDA6MDAiIG9yICIwNjowMCIKZnVuY3Rpb24gaXNUaW1lU3RyaW5nKHN0cikgewoJcmV0dXJuIC9eXGQrXDpcZCsoPzpcOlxkK1wuPyg/OlxkezN9KT8pPyQvLnRlc3Qoc3RyKTsKfQoKCi8qIEdlbmVyYWwgVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIGhhc093blByb3BNZXRob2QgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCgovLyBNZXJnZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpbnRvIGEgc2luZ2xlIG9iamVjdC4KLy8gVGhlIHNlY29uZCBhcmd1bWVudCBhbGxvd3MgZm9yIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIHdobydzIG9iamVjdCB2YWx1ZXMgd2lsbCBiZSBtZXJnZWQgdG9nZXRoZXIuCmZ1bmN0aW9uIG1lcmdlUHJvcHMocHJvcE9ianMsIGNvbXBsZXhQcm9wcykgewoJdmFyIGRlc3QgPSB7fTsKCXZhciBpLCBuYW1lOwoJdmFyIGNvbXBsZXhPYmpzOwoJdmFyIGosIHZhbDsKCXZhciBwcm9wczsKCglpZiAoY29tcGxleFByb3BzKSB7CgkJZm9yIChpID0gMDsgaSA8IGNvbXBsZXhQcm9wcy5sZW5ndGg7IGkrKykgewoJCQluYW1lID0gY29tcGxleFByb3BzW2ldOwoJCQljb21wbGV4T2JqcyA9IFtdOwoKCQkJLy8gY29sbGVjdCB0aGUgdHJhaWxpbmcgb2JqZWN0IHZhbHVlcywgc3RvcHBpbmcgd2hlbiBhIG5vbi1vYmplY3QgaXMgZGlzY292ZXJlZAoJCQlmb3IgKGogPSBwcm9wT2Jqcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkgewoJCQkJdmFsID0gcHJvcE9ianNbal1bbmFtZV07CgoJCQkJaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7CgkJCQkJY29tcGxleE9ianMudW5zaGlmdCh2YWwpOwoJCQkJfQoJCQkJZWxzZSBpZiAodmFsICE9PSB1bmRlZmluZWQpIHsKCQkJCQlkZXN0W25hbWVdID0gdmFsOyAvLyBpZiB0aGVyZSB3ZXJlIG5vIG9iamVjdHMsIHRoaXMgdmFsdWUgd2lsbCBiZSB1c2VkCgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCgkJCS8vIGlmIHRoZSB0cmFpbGluZyB2YWx1ZXMgd2VyZSBvYmplY3RzLCB1c2UgdGhlIG1lcmdlZCB2YWx1ZQoJCQlpZiAoY29tcGxleE9ianMubGVuZ3RoKSB7CgkJCQlkZXN0W25hbWVdID0gbWVyZ2VQcm9wcyhjb21wbGV4T2Jqcyk7CgkJCX0KCQl9Cgl9CgoJLy8gY29weSB2YWx1ZXMgaW50byB0aGUgZGVzdGluYXRpb24sIGdvaW5nIGZyb20gbGFzdCB0byBmaXJzdAoJZm9yIChpID0gcHJvcE9ianMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKCQlwcm9wcyA9IHByb3BPYmpzW2ldOwoKCQlmb3IgKG5hbWUgaW4gcHJvcHMpIHsKCQkJaWYgKCEobmFtZSBpbiBkZXN0KSkgeyAvLyBpZiBhbHJlYWR5IGFzc2lnbmVkIGJ5IHByZXZpb3VzIHByb3BzIG9yIGNvbXBsZXggcHJvcHMsIGRvbid0IHJlYXNzaWduCgkJCQlkZXN0W25hbWVdID0gcHJvcHNbbmFtZV07CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIGRlc3Q7Cn0KCgovLyBDcmVhdGUgYW4gb2JqZWN0IHRoYXQgaGFzIHRoZSBnaXZlbiBwcm90b3R5cGUuIEp1c3QgbGlrZSBPYmplY3QuY3JlYXRlCmZ1bmN0aW9uIGNyZWF0ZU9iamVjdChwcm90bykgewoJdmFyIGYgPSBmdW5jdGlvbigpIHt9OwoJZi5wcm90b3R5cGUgPSBwcm90bzsKCXJldHVybiBuZXcgZigpOwp9CgoKZnVuY3Rpb24gY29weU93blByb3BzKHNyYywgZGVzdCkgewoJZm9yICh2YXIgbmFtZSBpbiBzcmMpIHsKCQlpZiAoaGFzT3duUHJvcChzcmMsIG5hbWUpKSB7CgkJCWRlc3RbbmFtZV0gPSBzcmNbbmFtZV07CgkJfQoJfQp9CgoKLy8gQ29waWVzIG92ZXIgY2VydGFpbiBtZXRob2RzIHdpdGggdGhlIHNhbWUgbmFtZXMgYXMgT2JqZWN0LnByb3RvdHlwZSBtZXRob2RzLiBPdmVyY29tZXMgYW4gSUU8PTggYnVnOgovLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0VDTUFTY3JpcHRfRG9udEVudW1fYXR0cmlidXRlI0pTY3JpcHRfRG9udEVudW1fQnVnCmZ1bmN0aW9uIGNvcHlOYXRpdmVNZXRob2RzKHNyYywgZGVzdCkgewoJdmFyIG5hbWVzID0gWyAnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZicgXTsKCXZhciBpLCBuYW1lOwoKCWZvciAoaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgewoJCW5hbWUgPSBuYW1lc1tpXTsKCgkJaWYgKHNyY1tuYW1lXSAhPT0gT2JqZWN0LnByb3RvdHlwZVtuYW1lXSkgewoJCQlkZXN0W25hbWVdID0gc3JjW25hbWVdOwoJCX0KCX0KfQoKCmZ1bmN0aW9uIGhhc093blByb3Aob2JqLCBuYW1lKSB7CglyZXR1cm4gaGFzT3duUHJvcE1ldGhvZC5jYWxsKG9iaiwgbmFtZSk7Cn0KCgovLyBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBub24tb2JqZWN0IG5vbi1mdW5jdGlvbiB2YWx1ZT8KZnVuY3Rpb24gaXNBdG9taWModmFsKSB7CglyZXR1cm4gL3VuZGVmaW5lZHxudWxsfGJvb2xlYW58bnVtYmVyfHN0cmluZy8udGVzdCgkLnR5cGUodmFsKSk7Cn0KCgpmdW5jdGlvbiBhcHBseUFsbChmdW5jdGlvbnMsIHRoaXNPYmosIGFyZ3MpIHsKCWlmICgkLmlzRnVuY3Rpb24oZnVuY3Rpb25zKSkgewoJCWZ1bmN0aW9ucyA9IFsgZnVuY3Rpb25zIF07Cgl9CglpZiAoZnVuY3Rpb25zKSB7CgkJdmFyIGk7CgkJdmFyIHJldDsKCQlmb3IgKGk9MDsgaTxmdW5jdGlvbnMubGVuZ3RoOyBpKyspIHsKCQkJcmV0ID0gZnVuY3Rpb25zW2ldLmFwcGx5KHRoaXNPYmosIGFyZ3MpIHx8IHJldDsKCQl9CgkJcmV0dXJuIHJldDsKCX0KfQoKCmZ1bmN0aW9uIGZpcnN0RGVmaW5lZCgpIHsKCWZvciAodmFyIGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKCQlpZiAoYXJndW1lbnRzW2ldICE9PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIGFyZ3VtZW50c1tpXTsKCQl9Cgl9Cn0KCgpmdW5jdGlvbiBodG1sRXNjYXBlKHMpIHsKCXJldHVybiAocyArICcnKS5yZXBsYWNlKC8mL2csICcmYW1wOycpCgkJLnJlcGxhY2UoLzwvZywgJyZsdDsnKQoJCS5yZXBsYWNlKC8+L2csICcmZ3Q7JykKCQkucmVwbGFjZSgvJy9nLCAnJiMwMzk7JykKCQkucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykKCQkucmVwbGFjZSgvXG4vZywgJzxiciAvPicpOwp9CgoKZnVuY3Rpb24gc3RyaXBIdG1sRW50aXRpZXModGV4dCkgewoJcmV0dXJuIHRleHQucmVwbGFjZSgvJi4qPzsvZywgJycpOwp9CgoKLy8gR2l2ZW4gYSBoYXNoIG9mIENTUyBwcm9wZXJ0aWVzLCByZXR1cm5zIGEgc3RyaW5nIG9mIENTUy4KLy8gVXNlcyBwcm9wZXJ0eSBuYW1lcyBhcy1pcyAobm8gY2FtZWwtY2FzZSBjb252ZXJzaW9uKS4gV2lsbCBub3QgbWFrZSBzdGF0ZW1lbnRzIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXMuCmZ1bmN0aW9uIGNzc1RvU3RyKGNzc1Byb3BzKSB7Cgl2YXIgc3RhdGVtZW50cyA9IFtdOwoKCSQuZWFjaChjc3NQcm9wcywgZnVuY3Rpb24obmFtZSwgdmFsKSB7CgkJaWYgKHZhbCAhPSBudWxsKSB7CgkJCXN0YXRlbWVudHMucHVzaChuYW1lICsgJzonICsgdmFsKTsKCQl9Cgl9KTsKCglyZXR1cm4gc3RhdGVtZW50cy5qb2luKCc7Jyk7Cn0KCgpmdW5jdGlvbiBjYXBpdGFsaXNlRmlyc3RMZXR0ZXIoc3RyKSB7CglyZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpOwp9CgoKZnVuY3Rpb24gY29tcGFyZU51bWJlcnMoYSwgYikgeyAvLyBmb3IgLnNvcnQoKQoJcmV0dXJuIGEgLSBiOwp9CgoKZnVuY3Rpb24gaXNJbnQobikgewoJcmV0dXJuIG4gJSAxID09PSAwOwp9CgoKLy8gUmV0dXJucyBhIG1ldGhvZCBib3VuZCB0byB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnRleHQuCi8vIEp1c3QgbGlrZSBvbmUgb2YgdGhlIGpRdWVyeS5wcm94eSBzaWduYXR1cmVzLCBidXQgd2l0aG91dCB0aGUgdW5kZXNpcmVkIGJlaGF2aW9yIG9mIHRyZWF0aW5nIHRoZSBzYW1lIG1ldGhvZCB3aXRoCi8vIGRpZmZlcmVudCBjb250ZXh0cyBhcyBpZGVudGljYWwgd2hlbiBiaW5kaW5nL3VuYmluZGluZyBldmVudHMuCmZ1bmN0aW9uIHByb3h5KG9iaiwgbWV0aG9kTmFtZSkgewoJdmFyIG1ldGhvZCA9IG9ialttZXRob2ROYW1lXTsKCglyZXR1cm4gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIG1ldGhvZC5hcHBseShvYmosIGFyZ3VtZW50cyk7Cgl9Owp9CgoKLy8gUmV0dXJucyBhIGZ1bmN0aW9uLCB0aGF0LCBhcyBsb25nIGFzIGl0IGNvbnRpbnVlcyB0byBiZSBpbnZva2VkLCB3aWxsIG5vdAovLyBiZSB0cmlnZ2VyZWQuIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhZnRlciBpdCBzdG9wcyBiZWluZyBjYWxsZWQgZm9yCi8vIE4gbWlsbGlzZWNvbmRzLgovLyBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvYmxvYi8xLjYuMC91bmRlcnNjb3JlLmpzI0w3MTQKZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCkgewoJdmFyIHRpbWVvdXRJZDsKCXZhciBhcmdzOwoJdmFyIGNvbnRleHQ7Cgl2YXIgdGltZXN0YW1wOyAvLyBvZiBtb3N0IHJlY2VudCBjYWxsCgl2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgbGFzdCA9ICtuZXcgRGF0ZSgpIC0gdGltZXN0YW1wOwoJCWlmIChsYXN0IDwgd2FpdCAmJiBsYXN0ID4gMCkgewoJCQl0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0IC0gbGFzdCk7CgkJfQoJCWVsc2UgewoJCQl0aW1lb3V0SWQgPSBudWxsOwoJCQlmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwoJCQlpZiAoIXRpbWVvdXRJZCkgewoJCQkJY29udGV4dCA9IGFyZ3MgPSBudWxsOwoJCQl9CgkJfQoJfTsKCglyZXR1cm4gZnVuY3Rpb24oKSB7CgkJY29udGV4dCA9IHRoaXM7CgkJYXJncyA9IGFyZ3VtZW50czsKCQl0aW1lc3RhbXAgPSArbmV3IERhdGUoKTsKCQlpZiAoIXRpbWVvdXRJZCkgewoJCQl0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTsKCQl9Cgl9Owp9Cgo7OwoKdmFyIGFtYmlnRGF0ZU9mTW9udGhSZWdleCA9IC9eXHMqXGR7NH0tXGRcZCQvOwp2YXIgYW1iaWdUaW1lT3Jab25lUmVnZXggPQoJL15ccypcZHs0fS0oPzooXGRcZC1cZFxkKXwoV1xkXGQkKXwoV1xkXGQtXGQpfChcZFxkXGQpKSgoVHwgKShcZFxkKDpcZFxkKDpcZFxkKFwuXGQrKT8pPyk/KT8pPyQvOwp2YXIgbmV3TW9tZW50UHJvdG8gPSBtb21lbnQuZm47IC8vIHdoZXJlIHdlIHdpbGwgYXR0YWNoIG91ciBuZXcgbWV0aG9kcwp2YXIgb2xkTW9tZW50UHJvdG8gPSAkLmV4dGVuZCh7fSwgbmV3TW9tZW50UHJvdG8pOyAvLyBjb3B5IG9mIG9yaWdpbmFsIG1vbWVudCBtZXRob2RzCnZhciBhbGxvd1ZhbHVlT3B0aW1pemF0aW9uOwp2YXIgc2V0VVRDVmFsdWVzOyAvLyBmdW5jdGlvbiBkZWZpbmVkIGJlbG93CnZhciBzZXRMb2NhbFZhbHVlczsgLy8gZnVuY3Rpb24gZGVmaW5lZCBiZWxvdwoKCi8vIENyZWF0aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENyZWF0ZXMgYSBuZXcgbW9tZW50LCBzaW1pbGFyIHRvIHRoZSB2YW5pbGxhIG1vbWVudCguLi4pIGNvbnN0cnVjdG9yLCBidXQgd2l0aAovLyBleHRyYSBmZWF0dXJlcyAoYW1iaWd1b3VzIHRpbWUsIGVuaGFuY2VkIGZvcm1hdHRpbmcpLiBXaGVuIGdpdmVuIGFuIGV4aXN0aW5nIG1vbWVudCwKLy8gaXQgd2lsbCBmdW5jdGlvbiBhcyBhIGNsb25lIChhbmQgcmV0YWluIHRoZSB6b25lIG9mIHRoZSBtb21lbnQpLiBBbnl0aGluZyBlbHNlIHdpbGwKLy8gcmVzdWx0IGluIGEgbW9tZW50IGluIHRoZSBsb2NhbCB6b25lLgpmYy5tb21lbnQgPSBmdW5jdGlvbigpIHsKCXJldHVybiBtYWtlTW9tZW50KGFyZ3VtZW50cyk7Cn07CgovLyBTYW1lcyBhcyBmYy5tb21lbnQsIGJ1dCBmb3JjZXMgdGhlIHJlc3VsdGluZyBtb21lbnQgdG8gYmUgaW4gdGhlIFVUQyB0aW1lem9uZS4KZmMubW9tZW50LnV0YyA9IGZ1bmN0aW9uKCkgewoJdmFyIG1vbSA9IG1ha2VNb21lbnQoYXJndW1lbnRzLCB0cnVlKTsKCgkvLyBGb3JjZSBpdCBpbnRvIFVUQyBiZWNhdXNlIG1ha2VNb21lbnQgZG9lc24ndCBndWFyYW50ZWUgaXQKCS8vIChpZiBnaXZlbiBhIHByZS1leGlzdGluZyBtb21lbnQgZm9yIGV4YW1wbGUpCglpZiAobW9tLmhhc1RpbWUoKSkgeyAvLyBkb24ndCBnaXZlIGFtYmlndW91c2x5LXRpbWVkIG1vbWVudHMgYSBVVEMgem9uZQoJCW1vbS51dGMoKTsKCX0KCglyZXR1cm4gbW9tOwp9OwoKLy8gU2FtZSBhcyBmYy5tb21lbnQsIGJ1dCB3aGVuIGdpdmVuIGFuIElTTzg2MDEgc3RyaW5nLCB0aGUgdGltZXpvbmUgb2Zmc2V0IGlzIHByZXNlcnZlZC4KLy8gSVNPODYwMSBzdHJpbmdzIHdpdGggbm8gdGltZXpvbmUgb2Zmc2V0IHdpbGwgYmVjb21lIGFtYmlndW91c2x5IHpvbmVkLgpmYy5tb21lbnQucGFyc2Vab25lID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gbWFrZU1vbWVudChhcmd1bWVudHMsIHRydWUsIHRydWUpOwp9OwoKLy8gQnVpbGRzIGFuIGVuaGFuY2VkIG1vbWVudCBmcm9tIGFyZ3MuIFdoZW4gZ2l2ZW4gYW4gZXhpc3RpbmcgbW9tZW50LCBpdCBjbG9uZXMuIFdoZW4gZ2l2ZW4gYQovLyBuYXRpdmUgRGF0ZSwgb3IgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzICh0aGUgY3VycmVudCB0aW1lKSwgdGhlIHJlc3VsdGluZyBtb21lbnQgd2lsbCBiZSBsb2NhbC4KLy8gQW55dGhpbmcgZWxzZSBuZWVkcyB0byBiZSAicGFyc2VkIiAoYSBzdHJpbmcgb3IgYW4gYXJyYXkpLCBhbmQgd2lsbCBiZSBhZmZlY3RlZCBieToKLy8gICAgcGFyc2VBc1VUQyAtIGlmIHRoZXJlIGlzIG5vIHpvbmUgaW5mb3JtYXRpb24sIHNob3VsZCB3ZSBwYXJzZSB0aGUgaW5wdXQgaW4gVVRDPwovLyAgICBwYXJzZVpvbmUgLSBpZiB0aGVyZSBpcyB6b25lIGluZm9ybWF0aW9uLCBzaG91bGQgd2UgZm9yY2UgdGhlIHpvbmUgb2YgdGhlIG1vbWVudD8KZnVuY3Rpb24gbWFrZU1vbWVudChhcmdzLCBwYXJzZUFzVVRDLCBwYXJzZVpvbmUpIHsKCXZhciBpbnB1dCA9IGFyZ3NbMF07Cgl2YXIgaXNTaW5nbGVTdHJpbmcgPSBhcmdzLmxlbmd0aCA9PSAxICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZyc7Cgl2YXIgaXNBbWJpZ1RpbWU7Cgl2YXIgaXNBbWJpZ1pvbmU7Cgl2YXIgYW1iaWdNYXRjaDsKCXZhciBtb207CgoJaWYgKG1vbWVudC5pc01vbWVudChpbnB1dCkpIHsKCQltb20gPSBtb21lbnQuYXBwbHkobnVsbCwgYXJncyk7IC8vIGNsb25lIGl0CgkJdHJhbnNmZXJBbWJpZ3MoaW5wdXQsIG1vbSk7IC8vIHRoZSBhbWJpZyBmbGFncyB3ZXJlbid0IHRyYW5zZmVyZWQgd2l0aCB0aGUgY2xvbmUKCX0KCWVsc2UgaWYgKGlzTmF0aXZlRGF0ZShpbnB1dCkgfHwgaW5wdXQgPT09IHVuZGVmaW5lZCkgewoJCW1vbSA9IG1vbWVudC5hcHBseShudWxsLCBhcmdzKTsgLy8gd2lsbCBiZSBsb2NhbAoJfQoJZWxzZSB7IC8vICJwYXJzaW5nIiBpcyByZXF1aXJlZAoJCWlzQW1iaWdUaW1lID0gZmFsc2U7CgkJaXNBbWJpZ1pvbmUgPSBmYWxzZTsKCgkJaWYgKGlzU2luZ2xlU3RyaW5nKSB7CgkJCWlmIChhbWJpZ0RhdGVPZk1vbnRoUmVnZXgudGVzdChpbnB1dCkpIHsKCQkJCS8vIGFjY2VwdCBzdHJpbmdzIGxpa2UgJzIwMTQtMDUnLCBidXQgY29udmVydCB0byB0aGUgZmlyc3Qgb2YgdGhlIG1vbnRoCgkJCQlpbnB1dCArPSAnLTAxJzsKCQkJCWFyZ3MgPSBbIGlucHV0IF07IC8vIGZvciB3aGVuIHdlIHBhc3MgaXQgb24gdG8gbW9tZW50J3MgY29uc3RydWN0b3IKCQkJCWlzQW1iaWdUaW1lID0gdHJ1ZTsKCQkJCWlzQW1iaWdab25lID0gdHJ1ZTsKCQkJfQoJCQllbHNlIGlmICgoYW1iaWdNYXRjaCA9IGFtYmlnVGltZU9yWm9uZVJlZ2V4LmV4ZWMoaW5wdXQpKSkgewoJCQkJaXNBbWJpZ1RpbWUgPSAhYW1iaWdNYXRjaFs1XTsgLy8gbm8gdGltZSBwYXJ0PwoJCQkJaXNBbWJpZ1pvbmUgPSB0cnVlOwoJCQl9CgkJfQoJCWVsc2UgaWYgKCQuaXNBcnJheShpbnB1dCkpIHsKCQkJLy8gYXJyYXlzIGhhdmUgbm8gdGltZXpvbmUgaW5mb3JtYXRpb24sIHNvIGFzc3VtZSBhbWJpZ3VvdXMgem9uZQoJCQlpc0FtYmlnWm9uZSA9IHRydWU7CgkJfQoJCS8vIG90aGVyd2lzZSwgcHJvYmFibHkgYSBzdHJpbmcgd2l0aCBhIGZvcm1hdAoKCQlpZiAocGFyc2VBc1VUQyB8fCBpc0FtYmlnVGltZSkgewoJCQltb20gPSBtb21lbnQudXRjLmFwcGx5KG1vbWVudCwgYXJncyk7CgkJfQoJCWVsc2UgewoJCQltb20gPSBtb21lbnQuYXBwbHkobnVsbCwgYXJncyk7CgkJfQoKCQlpZiAoaXNBbWJpZ1RpbWUpIHsKCQkJbW9tLl9hbWJpZ1RpbWUgPSB0cnVlOwoJCQltb20uX2FtYmlnWm9uZSA9IHRydWU7IC8vIGFtYmlndW91cyB0aW1lIGFsd2F5cyBtZWFucyBhbWJpZ3VvdXMgem9uZQoJCX0KCQllbHNlIGlmIChwYXJzZVpvbmUpIHsgLy8gbGV0J3MgcmVjb3JkIHRoZSBpbnB1dHRlZCB6b25lIHNvbWVob3cKCQkJaWYgKGlzQW1iaWdab25lKSB7CgkJCQltb20uX2FtYmlnWm9uZSA9IHRydWU7CgkJCX0KCQkJZWxzZSBpZiAoaXNTaW5nbGVTdHJpbmcpIHsKCQkJCWlmIChtb20udXRjT2Zmc2V0KSB7CgkJCQkJbW9tLnV0Y09mZnNldChpbnB1dCk7IC8vIGlmIG5vdCBhIHZhbGlkIHpvbmUsIHdpbGwgYXNzaWduIFVUQwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJbW9tLnpvbmUoaW5wdXQpOyAvLyBmb3IgbW9tZW50LXByZS0yLjkKCQkJCX0KCQkJfQoJCX0KCX0KCgltb20uX2Z1bGxDYWxlbmRhciA9IHRydWU7IC8vIGZsYWcgZm9yIGV4dGVuZGVkIGZ1bmN0aW9uYWxpdHkKCglyZXR1cm4gbW9tOwp9CgoKLy8gQSBjbG9uZSBtZXRob2QgdGhhdCB3b3JrcyB3aXRoIHRoZSBmbGFncyByZWxhdGVkIHRvIG91ciBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5LgovLyBJbiB0aGUgZnV0dXJlLCB1c2UgbW9tZW50Lm1vbWVudFByb3BlcnRpZXMKbmV3TW9tZW50UHJvdG8uY2xvbmUgPSBmdW5jdGlvbigpIHsKCXZhciBtb20gPSBvbGRNb21lbnRQcm90by5jbG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoKCS8vIHRoZXNlIGZsYWdzIHdlcmVuJ3QgdHJhbnNmZXJlZCB3aXRoIHRoZSBjbG9uZQoJdHJhbnNmZXJBbWJpZ3ModGhpcywgbW9tKTsKCWlmICh0aGlzLl9mdWxsQ2FsZW5kYXIpIHsKCQltb20uX2Z1bGxDYWxlbmRhciA9IHRydWU7Cgl9CgoJcmV0dXJuIG1vbTsKfTsKCgovLyBXZWVrIE51bWJlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gUmV0dXJucyB0aGUgd2VlayBudW1iZXIsIGNvbnNpZGVyaW5nIHRoZSBsb2NhbGUncyBjdXN0b20gd2VlayBudW1iZXIgY2FsY3VhdGlvbgovLyBgd2Vla3NgIGlzIGFuIGFsaWFzIGZvciBgd2Vla2AKbmV3TW9tZW50UHJvdG8ud2VlayA9IG5ld01vbWVudFByb3RvLndlZWtzID0gZnVuY3Rpb24oaW5wdXQpIHsKCXZhciB3ZWVrQ2FsYyA9ICh0aGlzLl9sb2NhbGUgfHwgdGhpcy5fbGFuZykgLy8gd29ya3MgcHJlLW1vbWVudC0yLjgKCQkuX2Z1bGxDYWxlbmRhcl93ZWVrQ2FsYzsKCglpZiAoaW5wdXQgPT0gbnVsbCAmJiB0eXBlb2Ygd2Vla0NhbGMgPT09ICdmdW5jdGlvbicpIHsgLy8gY3VzdG9tIGZ1bmN0aW9uIG9ubHkgd29ya3MgZm9yIGdldHRlcgoJCXJldHVybiB3ZWVrQ2FsYyh0aGlzKTsKCX0KCWVsc2UgaWYgKHdlZWtDYWxjID09PSAnSVNPJykgewoJCXJldHVybiBvbGRNb21lbnRQcm90by5pc29XZWVrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIElTTyBnZXR0ZXIvc2V0dGVyCgl9CgoJcmV0dXJuIG9sZE1vbWVudFByb3RvLndlZWsuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gbG9jYWwgZ2V0dGVyL3NldHRlcgp9OwoKCi8vIFRpbWUtb2YtZGF5Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIEdFVFRFUgovLyBSZXR1cm5zIGEgRHVyYXRpb24gd2l0aCB0aGUgaG91cnMvbWludXRlcy9zZWNvbmRzL21zIHZhbHVlcyBvZiB0aGUgbW9tZW50LgovLyBJZiB0aGUgbW9tZW50IGhhcyBhbiBhbWJpZ3VvdXMgdGltZSwgYSBkdXJhdGlvbiBvZiAwMDowMCB3aWxsIGJlIHJldHVybmVkLgovLwovLyBTRVRURVIKLy8gWW91IGNhbiBzdXBwbHkgYSBEdXJhdGlvbiwgYSBNb21lbnQsIG9yIGEgRHVyYXRpb24tbGlrZSBhcmd1bWVudC4KLy8gV2hlbiBzZXR0aW5nIHRoZSB0aW1lLCBhbmQgdGhlIG1vbWVudCBoYXMgYW4gYW1iaWd1b3VzIHRpbWUsIGl0IHRoZW4gYmVjb21lcyB1bmFtYmlndW91cy4KbmV3TW9tZW50UHJvdG8udGltZSA9IGZ1bmN0aW9uKHRpbWUpIHsKCgkvLyBGYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgbWV0aG9kIChpZiB0aGVyZSBpcyBvbmUpIGlmIHRoaXMgbW9tZW50IHdhc24ndCBjcmVhdGVkIHZpYSBGdWxsQ2FsZW5kYXIuCgkvLyBgdGltZWAgaXMgYSBnZW5lcmljIGVub3VnaCBtZXRob2QgbmFtZSB3aGVyZSB0aGlzIHByZWNhdXRpb24gaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGNvbGxpc2lvbnMgdy8gb3RoZXIgcGx1Z2lucy4KCWlmICghdGhpcy5fZnVsbENhbGVuZGFyKSB7CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvLnRpbWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCX0KCglpZiAodGltZSA9PSBudWxsKSB7IC8vIGdldHRlcgoJCXJldHVybiBtb21lbnQuZHVyYXRpb24oewoJCQlob3VyczogdGhpcy5ob3VycygpLAoJCQltaW51dGVzOiB0aGlzLm1pbnV0ZXMoKSwKCQkJc2Vjb25kczogdGhpcy5zZWNvbmRzKCksCgkJCW1pbGxpc2Vjb25kczogdGhpcy5taWxsaXNlY29uZHMoKQoJCX0pOwoJfQoJZWxzZSB7IC8vIHNldHRlcgoKCQl0aGlzLl9hbWJpZ1RpbWUgPSBmYWxzZTsgLy8gbWFyayB0aGF0IHRoZSBtb21lbnQgbm93IGhhcyBhIHRpbWUKCgkJaWYgKCFtb21lbnQuaXNEdXJhdGlvbih0aW1lKSAmJiAhbW9tZW50LmlzTW9tZW50KHRpbWUpKSB7CgkJCXRpbWUgPSBtb21lbnQuZHVyYXRpb24odGltZSk7CgkJfQoKCQkvLyBUaGUgZGF5IHZhbHVlIHNob3VsZCBjYXVzZSBvdmVyZmxvdyAoc28gMjQgaG91cnMgYmVjb21lcyAwMDowMDowMCBvZiBuZXh0IGRheSkuCgkJLy8gT25seSBmb3IgRHVyYXRpb24gdGltZXMsIG5vdCBNb21lbnQgdGltZXMuCgkJdmFyIGRheUhvdXJzID0gMDsKCQlpZiAobW9tZW50LmlzRHVyYXRpb24odGltZSkpIHsKCQkJZGF5SG91cnMgPSBNYXRoLmZsb29yKHRpbWUuYXNEYXlzKCkpICogMjQ7CgkJfQoKCQkvLyBXZSBuZWVkIHRvIHNldCB0aGUgaW5kaXZpZHVhbCBmaWVsZHMuCgkJLy8gQ2FuJ3QgdXNlIHN0YXJ0T2YoJ2RheScpIHRoZW4gYWRkIGR1cmF0aW9uLiBJbiBjYXNlIG9mIERTVCBhdCBzdGFydCBvZiBkYXkuCgkJcmV0dXJuIHRoaXMuaG91cnMoZGF5SG91cnMgKyB0aW1lLmhvdXJzKCkpCgkJCS5taW51dGVzKHRpbWUubWludXRlcygpKQoJCQkuc2Vjb25kcyh0aW1lLnNlY29uZHMoKSkKCQkJLm1pbGxpc2Vjb25kcyh0aW1lLm1pbGxpc2Vjb25kcygpKTsKCX0KfTsKCi8vIENvbnZlcnRzIHRoZSBtb21lbnQgdG8gVVRDLCBzdHJpcHBpbmcgb3V0IGl0cyB0aW1lLW9mLWRheSBhbmQgdGltZXpvbmUgb2Zmc2V0LAovLyBidXQgcHJlc2VydmluZyBpdHMgWU1ELiBBIG1vbWVudCB3aXRoIGEgc3RyaXBwZWQgdGltZSB3aWxsIGRpc3BsYXkgbm8gdGltZQovLyBub3IgdGltZXpvbmUgb2Zmc2V0IHdoZW4gLmZvcm1hdCgpIGlzIGNhbGxlZC4KbmV3TW9tZW50UHJvdG8uc3RyaXBUaW1lID0gZnVuY3Rpb24oKSB7Cgl2YXIgYTsKCglpZiAoIXRoaXMuX2FtYmlnVGltZSkgewoKCQkvLyBnZXQgdGhlIHZhbHVlcyBiZWZvcmUgYW55IGNvbnZlcnNpb24gaGFwcGVucwoJCWEgPSB0aGlzLnRvQXJyYXkoKTsgLy8gYXJyYXkgb2YgeS9tL2QvaC9tL3MvbXMKCgkJLy8gVE9ETzogdXNlIGtlZXBMb2NhbFRpbWUgaW4gdGhlIGZ1dHVyZQoJCXRoaXMudXRjKCk7IC8vIHNldCB0aGUgaW50ZXJuYWwgVVRDIGZsYWcgKHdpbGwgY2xlYXIgdGhlIGFtYmlnIGZsYWdzKQoJCXNldFVUQ1ZhbHVlcyh0aGlzLCBhLnNsaWNlKDAsIDMpKTsgLy8gc2V0IHRoZSB5ZWFyL21vbnRoL2RhdGUuIHRpbWUgd2lsbCBiZSB6ZXJvCgoJCS8vIE1hcmsgdGhlIHRpbWUgYXMgYW1iaWd1b3VzLiBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgLnV0YygpIGNhbGwsIHdoaWNoIG1pZ2h0IGNhbGwgLnV0Y09mZnNldCgpLAoJCS8vIHdoaWNoIGNsZWFycyBhbGwgYW1iaWcgZmxhZ3MuIFNhbWUgd2l0aCBzZXRVVENWYWx1ZXMgd2l0aCBtb21lbnQtdGltZXpvbmUuCgkJdGhpcy5fYW1iaWdUaW1lID0gdHJ1ZTsKCQl0aGlzLl9hbWJpZ1pvbmUgPSB0cnVlOyAvLyBpZiBhbWJpZ3VvdXMgdGltZSwgYWxzbyBhbWJpZ3VvdXMgdGltZXpvbmUgb2Zmc2V0Cgl9CgoJcmV0dXJuIHRoaXM7IC8vIGZvciBjaGFpbmluZwp9OwoKLy8gUmV0dXJucyBpZiB0aGUgbW9tZW50IGhhcyBhIG5vbi1hbWJpZ3VvdXMgdGltZSAoYm9vbGVhbikKbmV3TW9tZW50UHJvdG8uaGFzVGltZSA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuICF0aGlzLl9hbWJpZ1RpbWU7Cn07CgoKLy8gVGltZXpvbmUKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gQ29udmVydHMgdGhlIG1vbWVudCB0byBVVEMsIHN0cmlwcGluZyBvdXQgaXRzIHRpbWV6b25lIG9mZnNldCwgYnV0IHByZXNlcnZpbmcgaXRzCi8vIFlNRCBhbmQgdGltZS1vZi1kYXkuIEEgbW9tZW50IHdpdGggYSBzdHJpcHBlZCB0aW1lem9uZSBvZmZzZXQgd2lsbCBkaXNwbGF5IG5vCi8vIHRpbWV6b25lIG9mZnNldCB3aGVuIC5mb3JtYXQoKSBpcyBjYWxsZWQuCi8vIFRPRE86IGxvb2sgaW50byBNb21lbnQncyBrZWVwTG9jYWxUaW1lIGZ1bmN0aW9uYWxpdHkKbmV3TW9tZW50UHJvdG8uc3RyaXBab25lID0gZnVuY3Rpb24oKSB7Cgl2YXIgYSwgd2FzQW1iaWdUaW1lOwoKCWlmICghdGhpcy5fYW1iaWdab25lKSB7CgoJCS8vIGdldCB0aGUgdmFsdWVzIGJlZm9yZSBhbnkgY29udmVyc2lvbiBoYXBwZW5zCgkJYSA9IHRoaXMudG9BcnJheSgpOyAvLyBhcnJheSBvZiB5L20vZC9oL20vcy9tcwoJCXdhc0FtYmlnVGltZSA9IHRoaXMuX2FtYmlnVGltZTsKCgkJdGhpcy51dGMoKTsgLy8gc2V0IHRoZSBpbnRlcm5hbCBVVEMgZmxhZyAobWlnaHQgY2xlYXIgdGhlIGFtYmlnIGZsYWdzLCBkZXBlbmRpbmcgb24gTW9tZW50IGludGVybmFscykKCQlzZXRVVENWYWx1ZXModGhpcywgYSk7IC8vIHdpbGwgc2V0IHRoZSB5ZWFyL21vbnRoL2RhdGUvaG91cnMvbWludXRlcy9zZWNvbmRzL21zCgoJCS8vIHRoZSBhYm92ZSBjYWxsIHRvIC51dGMoKS8udXRjT2Zmc2V0KCkgdW5mb3J0dW5hdGVseSBtaWdodCBjbGVhciB0aGUgYW1iaWcgZmxhZ3MsIHNvIHJlc3RvcmUKCQl0aGlzLl9hbWJpZ1RpbWUgPSB3YXNBbWJpZ1RpbWUgfHwgZmFsc2U7CgoJCS8vIE1hcmsgdGhlIHpvbmUgYXMgYW1iaWd1b3VzLiBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgLnV0YygpIGNhbGwsIHdoaWNoIG1pZ2h0IGNhbGwgLnV0Y09mZnNldCgpLAoJCS8vIHdoaWNoIGNsZWFycyB0aGUgYW1iaWcgZmxhZ3MuIFNhbWUgd2l0aCBzZXRVVENWYWx1ZXMgd2l0aCBtb21lbnQtdGltZXpvbmUuCgkJdGhpcy5fYW1iaWdab25lID0gdHJ1ZTsKCX0KCglyZXR1cm4gdGhpczsgLy8gZm9yIGNoYWluaW5nCn07CgovLyBSZXR1cm5zIG9mIHRoZSBtb21lbnQgaGFzIGEgbm9uLWFtYmlndW91cyB0aW1lem9uZSBvZmZzZXQgKGJvb2xlYW4pCm5ld01vbWVudFByb3RvLmhhc1pvbmUgPSBmdW5jdGlvbigpIHsKCXJldHVybiAhdGhpcy5fYW1iaWdab25lOwp9OwoKCi8vIHRoaXMgbWV0aG9kIGltcGxpY2l0bHkgbWFya3MgYSB6b25lCm5ld01vbWVudFByb3RvLmxvY2FsID0gZnVuY3Rpb24oKSB7Cgl2YXIgYSA9IHRoaXMudG9BcnJheSgpOyAvLyB5ZWFyLG1vbnRoLGRhdGUsaG91cnMsbWludXRlcyxzZWNvbmRzLG1zIGFzIGFuIGFycmF5Cgl2YXIgd2FzQW1iaWdab25lID0gdGhpcy5fYW1iaWdab25lOwoKCW9sZE1vbWVudFByb3RvLmxvY2FsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgoJLy8gZW5zdXJlIG5vbi1hbWJpZ3VvdXMKCS8vIHRoaXMgcHJvYmFibHkgYWxyZWFkeSBoYXBwZW5lZCB2aWEgbG9jYWwoKSAtPiB1dGNPZmZzZXQoKSwgYnV0IGRvbid0IHJlbHkgb24gTW9tZW50J3MgaW50ZXJuYWxzCgl0aGlzLl9hbWJpZ1RpbWUgPSBmYWxzZTsKCXRoaXMuX2FtYmlnWm9uZSA9IGZhbHNlOwoKCWlmICh3YXNBbWJpZ1pvbmUpIHsKCQkvLyBJZiB0aGUgbW9tZW50IHdhcyBhbWJpZ3VvdXNseSB6b25lZCwgdGhlIGRhdGUgZmllbGRzIHdlcmUgc3RvcmVkIGFzIFVUQy4KCQkvLyBXZSB3YW50IHRvIHByZXNlcnZlIHRoZXNlLCBidXQgaW4gbG9jYWwgdGltZS4KCQkvLyBUT0RPOiBsb29rIGludG8gTW9tZW50J3Mga2VlcExvY2FsVGltZSBmdW5jdGlvbmFsaXR5CgkJc2V0TG9jYWxWYWx1ZXModGhpcywgYSk7Cgl9CgoJcmV0dXJuIHRoaXM7IC8vIGZvciBjaGFpbmluZwp9OwoKCi8vIGltcGxpY2l0bHkgbWFya3MgYSB6b25lCm5ld01vbWVudFByb3RvLnV0YyA9IGZ1bmN0aW9uKCkgewoJb2xkTW9tZW50UHJvdG8udXRjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgoJLy8gZW5zdXJlIG5vbi1hbWJpZ3VvdXMKCS8vIHRoaXMgcHJvYmFibHkgYWxyZWFkeSBoYXBwZW5lZCB2aWEgdXRjKCkgLT4gdXRjT2Zmc2V0KCksIGJ1dCBkb24ndCByZWx5IG9uIE1vbWVudCdzIGludGVybmFscwoJdGhpcy5fYW1iaWdUaW1lID0gZmFsc2U7Cgl0aGlzLl9hbWJpZ1pvbmUgPSBmYWxzZTsKCglyZXR1cm4gdGhpczsKfTsKCgovLyBtZXRob2RzIGZvciBhcmJpdHJhcmlseSBtYW5pcHVsYXRpbmcgdGltZXpvbmUgb2Zmc2V0LgovLyBzaG91bGQgY2xlYXIgdGltZS96b25lIGFtYmlndWl0eSB3aGVuIGNhbGxlZC4KJC5lYWNoKFsKCSd6b25lJywgLy8gb25seSBpbiBtb21lbnQtcHJlLTIuOS4gZGVwcmVjYXRlZCBhZnRlcndhcmRzCgkndXRjT2Zmc2V0JwpdLCBmdW5jdGlvbihpLCBuYW1lKSB7CglpZiAob2xkTW9tZW50UHJvdG9bbmFtZV0pIHsgLy8gb3JpZ2luYWwgbWV0aG9kIGV4aXN0cz8KCgkJLy8gdGhpcyBtZXRob2QgaW1wbGljaXRseSBtYXJrcyBhIHpvbmUgKHdpbGwgcHJvYmFibHkgZ2V0IGNhbGxlZCB1cG9uIC51dGMoKSBhbmQgLmxvY2FsKCkpCgkJbmV3TW9tZW50UHJvdG9bbmFtZV0gPSBmdW5jdGlvbih0em8pIHsKCgkJCWlmICh0em8gIT0gbnVsbCkgeyAvLyBzZXR0ZXIKCQkJCS8vIHRoZXNlIGFzc2lnbm1lbnRzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgdGhlIG9yaWdpbmFsIHpvbmUgbWV0aG9kIGlzIGNhbGxlZC4KCQkJCS8vIEkgZm9yZ2V0IHdoeSwgc29tZXRoaW5nIHRvIGRvIHdpdGggYSBicm93c2VyIGNyYXNoLgoJCQkJdGhpcy5fYW1iaWdUaW1lID0gZmFsc2U7CgkJCQl0aGlzLl9hbWJpZ1pvbmUgPSBmYWxzZTsKCQkJfQoKCQkJcmV0dXJuIG9sZE1vbWVudFByb3RvW25hbWVdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgkJfTsKCX0KfSk7CgoKLy8gRm9ybWF0dGluZwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpuZXdNb21lbnRQcm90by5mb3JtYXQgPSBmdW5jdGlvbigpIHsKCWlmICh0aGlzLl9mdWxsQ2FsZW5kYXIgJiYgYXJndW1lbnRzWzBdKSB7IC8vIGFuIGVuaGFuY2VkIG1vbWVudD8gYW5kIGEgZm9ybWF0IHN0cmluZyBwcm92aWRlZD8KCQlyZXR1cm4gZm9ybWF0RGF0ZSh0aGlzLCBhcmd1bWVudHNbMF0pOyAvLyBvdXIgZXh0ZW5kZWQgZm9ybWF0dGluZwoJfQoJaWYgKHRoaXMuX2FtYmlnVGltZSkgewoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQodGhpcywgJ1lZWVktTU0tREQnKTsKCX0KCWlmICh0aGlzLl9hbWJpZ1pvbmUpIHsKCQlyZXR1cm4gb2xkTW9tZW50Rm9ybWF0KHRoaXMsICdZWVlZLU1NLUREW1RdSEg6bW06c3MnKTsKCX0KCXJldHVybiBvbGRNb21lbnRQcm90by5mb3JtYXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfTsKCm5ld01vbWVudFByb3RvLnRvSVNPU3RyaW5nID0gZnVuY3Rpb24oKSB7CglpZiAodGhpcy5fYW1iaWdUaW1lKSB7CgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdCh0aGlzLCAnWVlZWS1NTS1ERCcpOwoJfQoJaWYgKHRoaXMuX2FtYmlnWm9uZSkgewoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQodGhpcywgJ1lZWVktTU0tRERbVF1ISDptbTpzcycpOwoJfQoJcmV0dXJuIG9sZE1vbWVudFByb3RvLnRvSVNPU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cn07CgoKLy8gUXVlcnlpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gSXMgdGhlIG1vbWVudCB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZT8gYGVuZGAgaXMgZXhjbHVzaXZlLgovLyBGWUksIHRoaXMgbWV0aG9kIGlzIG5vdCBhIHN0YW5kYXJkIE1vbWVudCBtZXRob2QsIHNvIGFsd2F5cyBkbyBvdXIgZW5oYW5jZWQgbG9naWMuCm5ld01vbWVudFByb3RvLmlzV2l0aGluID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkgewoJdmFyIGEgPSBjb21tb25seUFtYmlndWF0ZShbIHRoaXMsIHN0YXJ0LCBlbmQgXSk7CglyZXR1cm4gYVswXSA+PSBhWzFdICYmIGFbMF0gPCBhWzJdOwp9OwoKLy8gV2hlbiBpc1NhbWUgaXMgY2FsbGVkIHdpdGggdW5pdHMsIHRpbWV6b25lIGFtYmlndWl0eSBpcyBub3JtYWxpemVkIGJlZm9yZSB0aGUgY29tcGFyaXNvbiBoYXBwZW5zLgovLyBJZiBubyB1bml0cyBzcGVjaWZpZWQsIHRoZSB0d28gbW9tZW50cyBtdXN0IGJlIGlkZW50aWNhbGx5IHRoZSBzYW1lLCB3aXRoIG1hdGNoaW5nIGFtYmlnIGZsYWdzLgpuZXdNb21lbnRQcm90by5pc1NhbWUgPSBmdW5jdGlvbihpbnB1dCwgdW5pdHMpIHsKCXZhciBhOwoKCS8vIG9ubHkgZG8gY3VzdG9tIGxvZ2ljIGlmIHRoaXMgaXMgYW4gZW5oYW5jZWQgbW9tZW50CglpZiAoIXRoaXMuX2Z1bGxDYWxlbmRhcikgewoJCXJldHVybiBvbGRNb21lbnRQcm90by5pc1NhbWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCX0KCglpZiAodW5pdHMpIHsKCQlhID0gY29tbW9ubHlBbWJpZ3VhdGUoWyB0aGlzLCBpbnB1dCBdLCB0cnVlKTsgLy8gbm9ybWFsaXplIHRpbWV6b25lcyBidXQgZG9uJ3QgZXJhc2UgdGltZXMKCQlyZXR1cm4gb2xkTW9tZW50UHJvdG8uaXNTYW1lLmNhbGwoYVswXSwgYVsxXSwgdW5pdHMpOwoJfQoJZWxzZSB7CgkJaW5wdXQgPSBmYy5tb21lbnQucGFyc2Vab25lKGlucHV0KTsgLy8gbm9ybWFsaXplIGlucHV0CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvLmlzU2FtZS5jYWxsKHRoaXMsIGlucHV0KSAmJgoJCQlCb29sZWFuKHRoaXMuX2FtYmlnVGltZSkgPT09IEJvb2xlYW4oaW5wdXQuX2FtYmlnVGltZSkgJiYKCQkJQm9vbGVhbih0aGlzLl9hbWJpZ1pvbmUpID09PSBCb29sZWFuKGlucHV0Ll9hbWJpZ1pvbmUpOwoJfQp9OwoKLy8gTWFrZSB0aGVzZSBxdWVyeSBtZXRob2RzIHdvcmsgd2l0aCBhbWJpZ3VvdXMgbW9tZW50cwokLmVhY2goWwoJJ2lzQmVmb3JlJywKCSdpc0FmdGVyJwpdLCBmdW5jdGlvbihpLCBtZXRob2ROYW1lKSB7CgluZXdNb21lbnRQcm90b1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKGlucHV0LCB1bml0cykgewoJCXZhciBhOwoKCQkvLyBvbmx5IGRvIGN1c3RvbSBsb2dpYyBpZiB0aGlzIGlzIGFuIGVuaGFuY2VkIG1vbWVudAoJCWlmICghdGhpcy5fZnVsbENhbGVuZGFyKSB7CgkJCXJldHVybiBvbGRNb21lbnRQcm90b1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCX0KCgkJYSA9IGNvbW1vbmx5QW1iaWd1YXRlKFsgdGhpcywgaW5wdXQgXSk7CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvW21ldGhvZE5hbWVdLmNhbGwoYVswXSwgYVsxXSwgdW5pdHMpOwoJfTsKfSk7CgoKLy8gTWlzYyBJbnRlcm5hbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gZ2l2ZW4gYW4gYXJyYXkgb2YgbW9tZW50LWxpa2UgaW5wdXRzLCByZXR1cm4gYSBwYXJhbGxlbCBhcnJheSB3LyBtb21lbnRzIHNpbWlsYXJseSBhbWJpZ3VhdGVkLgovLyBmb3IgZXhhbXBsZSwgb2Ygb25lIG1vbWVudCBoYXMgYW1iaWcgdGltZSwgYnV0IG5vdCBvdGhlcnMsIGFsbCBtb21lbnRzIHdpbGwgaGF2ZSB0aGVpciB0aW1lIHN0cmlwcGVkLgovLyBzZXQgYHByZXNlcnZlVGltZWAgdG8gYHRydWVgIHRvIGtlZXAgdGltZXMsIGJ1dCBvbmx5IG5vcm1hbGl6ZSB6b25lIGFtYmlndWl0eS4KLy8gcmV0dXJucyB0aGUgb3JpZ2luYWwgbW9tZW50cyBpZiBubyBtb2RpZmljYXRpb25zIGFyZSBuZWNlc3NhcnkuCmZ1bmN0aW9uIGNvbW1vbmx5QW1iaWd1YXRlKGlucHV0cywgcHJlc2VydmVUaW1lKSB7Cgl2YXIgYW55QW1iaWdUaW1lID0gZmFsc2U7Cgl2YXIgYW55QW1iaWdab25lID0gZmFsc2U7Cgl2YXIgbGVuID0gaW5wdXRzLmxlbmd0aDsKCXZhciBtb21zID0gW107Cgl2YXIgaSwgbW9tOwoKCS8vIHBhcnNlIGlucHV0cyBpbnRvIHJlYWwgbW9tZW50cyBhbmQgcXVlcnkgdGhlaXIgYW1iaWcgZmxhZ3MKCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewoJCW1vbSA9IGlucHV0c1tpXTsKCQlpZiAoIW1vbWVudC5pc01vbWVudChtb20pKSB7CgkJCW1vbSA9IGZjLm1vbWVudC5wYXJzZVpvbmUobW9tKTsKCQl9CgkJYW55QW1iaWdUaW1lID0gYW55QW1iaWdUaW1lIHx8IG1vbS5fYW1iaWdUaW1lOwoJCWFueUFtYmlnWm9uZSA9IGFueUFtYmlnWm9uZSB8fCBtb20uX2FtYmlnWm9uZTsKCQltb21zLnB1c2gobW9tKTsKCX0KCgkvLyBzdHJpcCBlYWNoIG1vbWVudCBkb3duIHRvIGxvd2VzdCBjb21tb24gYW1iaWd1aXR5CgkvLyB1c2UgY2xvbmVzIHRvIGF2b2lkIG1vZGlmeWluZyB0aGUgb3JpZ2luYWwgbW9tZW50cwoJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJbW9tID0gbW9tc1tpXTsKCQlpZiAoIXByZXNlcnZlVGltZSAmJiBhbnlBbWJpZ1RpbWUgJiYgIW1vbS5fYW1iaWdUaW1lKSB7CgkJCW1vbXNbaV0gPSBtb20uY2xvbmUoKS5zdHJpcFRpbWUoKTsKCQl9CgkJZWxzZSBpZiAoYW55QW1iaWdab25lICYmICFtb20uX2FtYmlnWm9uZSkgewoJCQltb21zW2ldID0gbW9tLmNsb25lKCkuc3RyaXBab25lKCk7CgkJfQoJfQoKCXJldHVybiBtb21zOwp9CgovLyBUcmFuc2ZlcnMgYWxsIHRoZSBmbGFncyByZWxhdGVkIHRvIGFtYmlndW91cyB0aW1lL3pvbmUgZnJvbSB0aGUgYHNyY2AgbW9tZW50IHRvIHRoZSBgZGVzdGAgbW9tZW50Ci8vIFRPRE86IGxvb2sgaW50byBtb21lbnQubW9tZW50UHJvcGVydGllcyBmb3IgdGhpcy4KZnVuY3Rpb24gdHJhbnNmZXJBbWJpZ3Moc3JjLCBkZXN0KSB7CglpZiAoc3JjLl9hbWJpZ1RpbWUpIHsKCQlkZXN0Ll9hbWJpZ1RpbWUgPSB0cnVlOwoJfQoJZWxzZSBpZiAoZGVzdC5fYW1iaWdUaW1lKSB7CgkJZGVzdC5fYW1iaWdUaW1lID0gZmFsc2U7Cgl9CgoJaWYgKHNyYy5fYW1iaWdab25lKSB7CgkJZGVzdC5fYW1iaWdab25lID0gdHJ1ZTsKCX0KCWVsc2UgaWYgKGRlc3QuX2FtYmlnWm9uZSkgewoJCWRlc3QuX2FtYmlnWm9uZSA9IGZhbHNlOwoJfQp9CgoKLy8gU2V0cyB0aGUgeWVhci9tb250aC9kYXRlL2V0YyB2YWx1ZXMgb2YgdGhlIG1vbWVudCBmcm9tIHRoZSBnaXZlbiBhcnJheS4KLy8gSW5lZmZpY2llbnQgYmVjYXVzZSBpdCBjYWxscyBlYWNoIGluZGl2aWR1YWwgc2V0dGVyLgpmdW5jdGlvbiBzZXRNb21lbnRWYWx1ZXMobW9tLCBhKSB7Cgltb20ueWVhcihhWzBdIHx8IDApCgkJLm1vbnRoKGFbMV0gfHwgMCkKCQkuZGF0ZShhWzJdIHx8IDApCgkJLmhvdXJzKGFbM10gfHwgMCkKCQkubWludXRlcyhhWzRdIHx8IDApCgkJLnNlY29uZHMoYVs1XSB8fCAwKQoJCS5taWxsaXNlY29uZHMoYVs2XSB8fCAwKTsKfQoKLy8gQ2FuIHdlIHNldCB0aGUgbW9tZW50J3MgaW50ZXJuYWwgZGF0ZSBkaXJlY3RseT8KYWxsb3dWYWx1ZU9wdGltaXphdGlvbiA9ICdfZCcgaW4gbW9tZW50KCkgJiYgJ3VwZGF0ZU9mZnNldCcgaW4gbW9tZW50OwoKLy8gVXRpbGl0eSBmdW5jdGlvbi4gQWNjZXB0cyBhIG1vbWVudCBhbmQgYW4gYXJyYXkgb2YgdGhlIFVUQyB5ZWFyL21vbnRoL2RhdGUvZXRjIHZhbHVlcyB0byBzZXQuCi8vIEFzc3VtZXMgdGhlIGdpdmVuIG1vbWVudCBpcyBhbHJlYWR5IGluIFVUQyBtb2RlLgpzZXRVVENWYWx1ZXMgPSBhbGxvd1ZhbHVlT3B0aW1pemF0aW9uID8gZnVuY3Rpb24obW9tLCBhKSB7CgkvLyBzaW1sYXRlIHdoYXQgbW9tZW50J3MgYWNjZXNzb3JzIGRvCgltb20uX2Quc2V0VGltZShEYXRlLlVUQy5hcHBseShEYXRlLCBhKSk7Cgltb21lbnQudXBkYXRlT2Zmc2V0KG1vbSwgZmFsc2UpOyAvLyBrZWVwVGltZT1mYWxzZQp9IDogc2V0TW9tZW50VmFsdWVzOwoKLy8gVXRpbGl0eSBmdW5jdGlvbi4gQWNjZXB0cyBhIG1vbWVudCBhbmQgYW4gYXJyYXkgb2YgdGhlIGxvY2FsIHllYXIvbW9udGgvZGF0ZS9ldGMgdmFsdWVzIHRvIHNldC4KLy8gQXNzdW1lcyB0aGUgZ2l2ZW4gbW9tZW50IGlzIGFscmVhZHkgaW4gbG9jYWwgbW9kZS4Kc2V0TG9jYWxWYWx1ZXMgPSBhbGxvd1ZhbHVlT3B0aW1pemF0aW9uID8gZnVuY3Rpb24obW9tLCBhKSB7CgkvLyBzaW1sYXRlIHdoYXQgbW9tZW50J3MgYWNjZXNzb3JzIGRvCgltb20uX2Quc2V0VGltZSgrbmV3IERhdGUoIC8vIEZZSSwgdGhlcmUgaXMgbm93IHdheSB0byBhcHBseSBhbiBhcnJheSBvZiBhcmdzIHRvIGEgY29uc3RydWN0b3IKCQlhWzBdIHx8IDAsCgkJYVsxXSB8fCAwLAoJCWFbMl0gfHwgMCwKCQlhWzNdIHx8IDAsCgkJYVs0XSB8fCAwLAoJCWFbNV0gfHwgMCwKCQlhWzZdIHx8IDAKCSkpOwoJbW9tZW50LnVwZGF0ZU9mZnNldChtb20sIGZhbHNlKTsgLy8ga2VlcFRpbWU9ZmFsc2UKfSA6IHNldE1vbWVudFZhbHVlczsKCjs7CgovLyBTaW5nbGUgRGF0ZSBGb3JtYXR0aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyBjYWxsIHRoaXMgaWYgeW91IHdhbnQgTW9tZW50J3Mgb3JpZ2luYWwgZm9ybWF0IG1ldGhvZCB0byBiZSB1c2VkCmZ1bmN0aW9uIG9sZE1vbWVudEZvcm1hdChtb20sIGZvcm1hdFN0cikgewoJcmV0dXJuIG9sZE1vbWVudFByb3RvLmZvcm1hdC5jYWxsKG1vbSwgZm9ybWF0U3RyKTsgLy8gb2xkTW9tZW50UHJvdG8gZGVmaW5lZCBpbiBtb21lbnQtZXh0LmpzCn0KCgovLyBGb3JtYXRzIGBkYXRlYCB3aXRoIGEgTW9tZW50IGZvcm1hdHRpbmcgc3RyaW5nLCBidXQgYWxsb3cgb3VyIG5vbi16ZXJvIGFyZWFzIGFuZAovLyBhZGRpdGlvbmFsIHRva2VuLgpmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdFN0cikgewoJcmV0dXJuIGZvcm1hdERhdGVXaXRoQ2h1bmtzKGRhdGUsIGdldEZvcm1hdFN0cmluZ0NodW5rcyhmb3JtYXRTdHIpKTsKfQoKCmZ1bmN0aW9uIGZvcm1hdERhdGVXaXRoQ2h1bmtzKGRhdGUsIGNodW5rcykgewoJdmFyIHMgPSAnJzsKCXZhciBpOwoKCWZvciAoaT0wOyBpPGNodW5rcy5sZW5ndGg7IGkrKykgewoJCXMgKz0gZm9ybWF0RGF0ZVdpdGhDaHVuayhkYXRlLCBjaHVua3NbaV0pOwoJfQoKCXJldHVybiBzOwp9CgoKLy8gYWRkaXRpb24gZm9ybWF0dGluZyB0b2tlbnMgd2Ugd2FudCByZWNvZ25pemVkCnZhciB0b2tlbk92ZXJyaWRlcyA9IHsKCXQ6IGZ1bmN0aW9uKGRhdGUpIHsgLy8gImEiIG9yICJwIgoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQoZGF0ZSwgJ2EnKS5jaGFyQXQoMCk7Cgl9LAoJVDogZnVuY3Rpb24oZGF0ZSkgeyAvLyAiQSIgb3IgIlAiCgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdChkYXRlLCAnQScpLmNoYXJBdCgwKTsKCX0KfTsKCgpmdW5jdGlvbiBmb3JtYXREYXRlV2l0aENodW5rKGRhdGUsIGNodW5rKSB7Cgl2YXIgdG9rZW47Cgl2YXIgbWF5YmVTdHI7CgoJaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsgLy8gYSBsaXRlcmFsIHN0cmluZwoJCXJldHVybiBjaHVuazsKCX0KCWVsc2UgaWYgKCh0b2tlbiA9IGNodW5rLnRva2VuKSkgeyAvLyBhIHRva2VuLCBsaWtlICJZWVlZIgoJCWlmICh0b2tlbk92ZXJyaWRlc1t0b2tlbl0pIHsKCQkJcmV0dXJuIHRva2VuT3ZlcnJpZGVzW3Rva2VuXShkYXRlKTsgLy8gdXNlIG91ciBjdXN0b20gdG9rZW4KCQl9CgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdChkYXRlLCB0b2tlbik7Cgl9CgllbHNlIGlmIChjaHVuay5tYXliZSkgeyAvLyBhIGdyb3VwaW5nIG9mIG90aGVyIGNodW5rcyB0aGF0IG11c3QgYmUgbm9uLXplcm8KCQltYXliZVN0ciA9IGZvcm1hdERhdGVXaXRoQ2h1bmtzKGRhdGUsIGNodW5rLm1heWJlKTsKCQlpZiAobWF5YmVTdHIubWF0Y2goL1sxLTldLykpIHsKCQkJcmV0dXJuIG1heWJlU3RyOwoJCX0KCX0KCglyZXR1cm4gJyc7Cn0KCgovLyBEYXRlIFJhbmdlIEZvcm1hdHRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBUT0RPOiBtYWtlIGl0IHdvcmsgd2l0aCB0aW1lem9uZSBvZmZzZXQKCi8vIFVzaW5nIGEgZm9ybWF0dGluZyBzdHJpbmcgbWVhbnQgZm9yIGEgc2luZ2xlIGRhdGUsIGdlbmVyYXRlIGEgcmFuZ2Ugc3RyaW5nLCBsaWtlCi8vICJTZXAgMiAtIDkgMjAxMyIsIHRoYXQgaW50ZWxsaWdlbnRseSBpbnNlcnRzIGEgc2VwYXJhdG9yIHdoZXJlIHRoZSBkYXRlcyBkaWZmZXIuCi8vIElmIHRoZSBkYXRlcyBhcmUgdGhlIHNhbWUgYXMgZmFyIGFzIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGNvbmNlcm5lZCwganVzdCByZXR1cm4gYSBzaW5nbGUKLy8gcmVuZGVyaW5nIG9mIG9uZSBkYXRlLCB3aXRob3V0IGFueSBzZXBhcmF0b3IuCmZ1bmN0aW9uIGZvcm1hdFJhbmdlKGRhdGUxLCBkYXRlMiwgZm9ybWF0U3RyLCBzZXBhcmF0b3IsIGlzUlRMKSB7Cgl2YXIgbG9jYWxlRGF0YTsKCglkYXRlMSA9IGZjLm1vbWVudC5wYXJzZVpvbmUoZGF0ZTEpOwoJZGF0ZTIgPSBmYy5tb21lbnQucGFyc2Vab25lKGRhdGUyKTsKCglsb2NhbGVEYXRhID0gKGRhdGUxLmxvY2FsZURhdGEgfHwgZGF0ZTEubGFuZykuY2FsbChkYXRlMSk7IC8vIHdvcmtzIHdpdGggbW9tZW50LXByZS0yLjgKCgkvLyBFeHBhbmQgbG9jYWxpemVkIGZvcm1hdCBzdHJpbmdzLCBsaWtlICJMTCIgLT4gIk1NTU0gRCBZWVlZIgoJZm9ybWF0U3RyID0gbG9jYWxlRGF0YS5sb25nRGF0ZUZvcm1hdChmb3JtYXRTdHIpIHx8IGZvcm1hdFN0cjsKCS8vIEJUVywgdGhpcyBpcyBub3QgaW1wb3J0YW50IGZvciBgZm9ybWF0RGF0ZWAgYmVjYXVzZSBpdCBpcyBpbXBvc3NpYmxlIHRvIHB1dCBjdXN0b20gdG9rZW5zCgkvLyBvciBub24temVybyBhcmVhcyBpbiBNb21lbnQncyBsb2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MuCgoJc2VwYXJhdG9yID0gc2VwYXJhdG9yIHx8ICcgLSAnOwoKCXJldHVybiBmb3JtYXRSYW5nZVdpdGhDaHVua3MoCgkJZGF0ZTEsCgkJZGF0ZTIsCgkJZ2V0Rm9ybWF0U3RyaW5nQ2h1bmtzKGZvcm1hdFN0ciksCgkJc2VwYXJhdG9yLAoJCWlzUlRMCgkpOwp9CmZjLmZvcm1hdFJhbmdlID0gZm9ybWF0UmFuZ2U7IC8vIGV4cG9zZQoKCmZ1bmN0aW9uIGZvcm1hdFJhbmdlV2l0aENodW5rcyhkYXRlMSwgZGF0ZTIsIGNodW5rcywgc2VwYXJhdG9yLCBpc1JUTCkgewoJdmFyIGNodW5rU3RyOyAvLyB0aGUgcmVuZGVyaW5nIG9mIHRoZSBjaHVuawoJdmFyIGxlZnRJOwoJdmFyIGxlZnRTdHIgPSAnJzsKCXZhciByaWdodEk7Cgl2YXIgcmlnaHRTdHIgPSAnJzsKCXZhciBtaWRkbGVJOwoJdmFyIG1pZGRsZVN0cjEgPSAnJzsKCXZhciBtaWRkbGVTdHIyID0gJyc7Cgl2YXIgbWlkZGxlU3RyID0gJyc7CgoJLy8gU3RhcnQgYXQgdGhlIGxlZnRtb3N0IHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIGFuZCBjb250aW51ZSB1bnRpbCB5b3UgaGl0IGEgdG9rZW4KCS8vIHRoYXQgaXMgbm90IHRoZSBzYW1lIGJldHdlZW4gZGF0ZXMuCglmb3IgKGxlZnRJPTA7IGxlZnRJPGNodW5rcy5sZW5ndGg7IGxlZnRJKyspIHsKCQljaHVua1N0ciA9IGZvcm1hdFNpbWlsYXJDaHVuayhkYXRlMSwgZGF0ZTIsIGNodW5rc1tsZWZ0SV0pOwoJCWlmIChjaHVua1N0ciA9PT0gZmFsc2UpIHsKCQkJYnJlYWs7CgkJfQoJCWxlZnRTdHIgKz0gY2h1bmtTdHI7Cgl9CgoJLy8gU2ltaWxhcmx5LCBzdGFydCBhdCB0aGUgcmlnaHRtb3N0IHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIGFuZCBtb3ZlIGxlZnQKCWZvciAocmlnaHRJPWNodW5rcy5sZW5ndGgtMTsgcmlnaHRJPmxlZnRJOyByaWdodEktLSkgewoJCWNodW5rU3RyID0gZm9ybWF0U2ltaWxhckNodW5rKGRhdGUxLCBkYXRlMiwgY2h1bmtzW3JpZ2h0SV0pOwoJCWlmIChjaHVua1N0ciA9PT0gZmFsc2UpIHsKCQkJYnJlYWs7CgkJfQoJCXJpZ2h0U3RyID0gY2h1bmtTdHIgKyByaWdodFN0cjsKCX0KCgkvLyBUaGUgYXJlYSBpbiB0aGUgbWlkZGxlIGlzIGRpZmZlcmVudCBmb3IgYm90aCBvZiB0aGUgZGF0ZXMuCgkvLyBDb2xsZWN0IHRoZW0gZGlzdGluY3RseSBzbyB3ZSBjYW4gamFtIHRoZW0gdG9nZXRoZXIgbGF0ZXIuCglmb3IgKG1pZGRsZUk9bGVmdEk7IG1pZGRsZUk8PXJpZ2h0STsgbWlkZGxlSSsrKSB7CgkJbWlkZGxlU3RyMSArPSBmb3JtYXREYXRlV2l0aENodW5rKGRhdGUxLCBjaHVua3NbbWlkZGxlSV0pOwoJCW1pZGRsZVN0cjIgKz0gZm9ybWF0RGF0ZVdpdGhDaHVuayhkYXRlMiwgY2h1bmtzW21pZGRsZUldKTsKCX0KCglpZiAobWlkZGxlU3RyMSB8fCBtaWRkbGVTdHIyKSB7CgkJaWYgKGlzUlRMKSB7CgkJCW1pZGRsZVN0ciA9IG1pZGRsZVN0cjIgKyBzZXBhcmF0b3IgKyBtaWRkbGVTdHIxOwoJCX0KCQllbHNlIHsKCQkJbWlkZGxlU3RyID0gbWlkZGxlU3RyMSArIHNlcGFyYXRvciArIG1pZGRsZVN0cjI7CgkJfQoJfQoKCXJldHVybiBsZWZ0U3RyICsgbWlkZGxlU3RyICsgcmlnaHRTdHI7Cn0KCgp2YXIgc2ltaWxhclVuaXRNYXAgPSB7CglZOiAneWVhcicsCglNOiAnbW9udGgnLAoJRDogJ2RheScsIC8vIGRheSBvZiBtb250aAoJZDogJ2RheScsIC8vIGRheSBvZiB3ZWVrCgkvLyBwcmV2ZW50cyBhIHNlcGFyYXRvciBiZXR3ZWVuIGFueXRoaW5nIHRpbWUtcmVsYXRlZC4uLgoJQTogJ3NlY29uZCcsIC8vIEFNL1BNCglhOiAnc2Vjb25kJywgLy8gYW0vcG0KCVQ6ICdzZWNvbmQnLCAvLyBBL1AKCXQ6ICdzZWNvbmQnLCAvLyBhL3AKCUg6ICdzZWNvbmQnLCAvLyBob3VyICgyNCkKCWg6ICdzZWNvbmQnLCAvLyBob3VyICgxMikKCW06ICdzZWNvbmQnLCAvLyBtaW51dGUKCXM6ICdzZWNvbmQnIC8vIHNlY29uZAp9OwovLyBUT0RPOiB3ZWVrIG1heWJlPwoKCi8vIEdpdmVuIGEgZm9ybWF0dGluZyBjaHVuaywgYW5kIGdpdmVuIHRoYXQgYm90aCBkYXRlcyBhcmUgc2ltaWxhciBpbiB0aGUgcmVnYXJkIHRoZQovLyBmb3JtYXR0aW5nIGNodW5rIGlzIGNvbmNlcm5lZCwgZm9ybWF0IGRhdGUxIGFnYWluc3QgYGNodW5rYC4gT3RoZXJ3aXNlLCByZXR1cm4gYGZhbHNlYC4KZnVuY3Rpb24gZm9ybWF0U2ltaWxhckNodW5rKGRhdGUxLCBkYXRlMiwgY2h1bmspIHsKCXZhciB0b2tlbjsKCXZhciB1bml0OwoKCWlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7IC8vIGEgbGl0ZXJhbCBzdHJpbmcKCQlyZXR1cm4gY2h1bms7Cgl9CgllbHNlIGlmICgodG9rZW4gPSBjaHVuay50b2tlbikpIHsKCQl1bml0ID0gc2ltaWxhclVuaXRNYXBbdG9rZW4uY2hhckF0KDApXTsKCQkvLyBhcmUgdGhlIGRhdGVzIHRoZSBzYW1lIGZvciB0aGlzIHVuaXQgb2YgbWVhc3VyZW1lbnQ/CgkJaWYgKHVuaXQgJiYgZGF0ZTEuaXNTYW1lKGRhdGUyLCB1bml0KSkgewoJCQlyZXR1cm4gb2xkTW9tZW50Rm9ybWF0KGRhdGUxLCB0b2tlbik7IC8vIHdvdWxkIGJlIHRoZSBzYW1lIGlmIHdlIHVzZWQgYGRhdGUyYAoJCQkvLyBCVFcsIGRvbid0IHN1cHBvcnQgY3VzdG9tIHRva2VucwoJCX0KCX0KCglyZXR1cm4gZmFsc2U7IC8vIHRoZSBjaHVuayBpcyBOT1QgdGhlIHNhbWUgZm9yIHRoZSB0d28gZGF0ZXMKCS8vIEJUVywgZG9uJ3Qgc3VwcG9ydCBzcGxpdHRpbmcgb24gbm9uLXplcm8gYXJlYXMKfQoKCi8vIENodW5raW5nIFV0aWxzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgp2YXIgZm9ybWF0U3RyaW5nQ2h1bmtDYWNoZSA9IHt9OwoKCmZ1bmN0aW9uIGdldEZvcm1hdFN0cmluZ0NodW5rcyhmb3JtYXRTdHIpIHsKCWlmIChmb3JtYXRTdHIgaW4gZm9ybWF0U3RyaW5nQ2h1bmtDYWNoZSkgewoJCXJldHVybiBmb3JtYXRTdHJpbmdDaHVua0NhY2hlW2Zvcm1hdFN0cl07Cgl9CglyZXR1cm4gKGZvcm1hdFN0cmluZ0NodW5rQ2FjaGVbZm9ybWF0U3RyXSA9IGNodW5rRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikpOwp9CgoKLy8gQnJlYWsgdGhlIGZvcm1hdHRpbmcgc3RyaW5nIGludG8gYW4gYXJyYXkgb2YgY2h1bmtzCmZ1bmN0aW9uIGNodW5rRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikgewoJdmFyIGNodW5rcyA9IFtdOwoJdmFyIGNodW5rZXIgPSAvXFsoW15cXV0qKVxdfFwoKFteXCldKilcKXwoTFRTfExUfChcdylcNCpvPyl8KFteXHdcW1woXSspL2c7IC8vIFRPRE86IG1vcmUgZGVzY3JpbWluYXRpb24KCXZhciBtYXRjaDsKCgl3aGlsZSAoKG1hdGNoID0gY2h1bmtlci5leGVjKGZvcm1hdFN0cikpKSB7CgkJaWYgKG1hdGNoWzFdKSB7IC8vIGEgbGl0ZXJhbCBzdHJpbmcgaW5zaWRlIFsgLi4uIF0KCQkJY2h1bmtzLnB1c2gobWF0Y2hbMV0pOwoJCX0KCQllbHNlIGlmIChtYXRjaFsyXSkgeyAvLyBub24temVybyBmb3JtYXR0aW5nIGluc2lkZSAoIC4uLiApCgkJCWNodW5rcy5wdXNoKHsgbWF5YmU6IGNodW5rRm9ybWF0U3RyaW5nKG1hdGNoWzJdKSB9KTsKCQl9CgkJZWxzZSBpZiAobWF0Y2hbM10pIHsgLy8gYSBmb3JtYXR0aW5nIHRva2VuCgkJCWNodW5rcy5wdXNoKHsgdG9rZW46IG1hdGNoWzNdIH0pOwoJCX0KCQllbHNlIGlmIChtYXRjaFs1XSkgeyAvLyBhbiB1bmVuY2xvc2VkIGxpdGVyYWwgc3RyaW5nCgkJCWNodW5rcy5wdXNoKG1hdGNoWzVdKTsKCQl9Cgl9CgoJcmV0dXJuIGNodW5rczsKfQoKOzsKCmZjLkNsYXNzID0gQ2xhc3M7IC8vIGV4cG9ydAoKLy8gY2xhc3MgdGhhdCBhbGwgb3RoZXIgY2xhc3NlcyB3aWxsIGluaGVyaXQgZnJvbQpmdW5jdGlvbiBDbGFzcygpIHsgfQoKLy8gY2FsbGVkIHVwb24gYSBjbGFzcyB0byBjcmVhdGUgYSBzdWJjbGFzcwpDbGFzcy5leHRlbmQgPSBmdW5jdGlvbihtZW1iZXJzKSB7Cgl2YXIgc3VwZXJDbGFzcyA9IHRoaXM7Cgl2YXIgc3ViQ2xhc3M7CgoJbWVtYmVycyA9IG1lbWJlcnMgfHwge307CgoJLy8gZW5zdXJlIGEgY29uc3RydWN0b3IgZm9yIHRoZSBzdWJjbGFzcywgZm9yd2FyZGluZyBhbGwgYXJndW1lbnRzIHRvIHRoZSBzdXBlci1jb25zdHJ1Y3RvciBpZiBpdCBkb2Vzbid0IGV4aXN0CglpZiAoaGFzT3duUHJvcChtZW1iZXJzLCAnY29uc3RydWN0b3InKSkgewoJCXN1YkNsYXNzID0gbWVtYmVycy5jb25zdHJ1Y3RvcjsKCX0KCWlmICh0eXBlb2Ygc3ViQ2xhc3MgIT09ICdmdW5jdGlvbicpIHsKCQlzdWJDbGFzcyA9IG1lbWJlcnMuY29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHsKCQkJc3VwZXJDbGFzcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCX07Cgl9CgoJLy8gYnVpbGQgdGhlIGJhc2UgcHJvdG90eXBlIGZvciB0aGUgc3ViY2xhc3MsIHdoaWNoIGlzIGFuIG5ldyBvYmplY3QgY2hhaW5lZCB0byB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZQoJc3ViQ2xhc3MucHJvdG90eXBlID0gY3JlYXRlT2JqZWN0KHN1cGVyQ2xhc3MucHJvdG90eXBlKTsKCgkvLyBjb3B5IGVhY2ggbWVtYmVyIHZhcmlhYmxlL21ldGhvZCBvbnRvIHRoZSB0aGUgc3ViY2xhc3MncyBwcm90b3R5cGUKCWNvcHlPd25Qcm9wcyhtZW1iZXJzLCBzdWJDbGFzcy5wcm90b3R5cGUpOwoJY29weU5hdGl2ZU1ldGhvZHMobWVtYmVycywgc3ViQ2xhc3MucHJvdG90eXBlKTsgLy8gaGFjayBmb3IgSUU4CgoJLy8gY29weSBvdmVyIGFsbCBjbGFzcyB2YXJpYWJsZXMvbWV0aG9kcyB0byB0aGUgc3ViY2xhc3MsIHN1Y2ggYXMgYGV4dGVuZGAgYW5kIGBtaXhpbmAKCWNvcHlPd25Qcm9wcyhzdXBlckNsYXNzLCBzdWJDbGFzcyk7CgoJcmV0dXJuIHN1YkNsYXNzOwp9OwoKLy8gYWRkcyBuZXcgbWVtYmVyIHZhcmlhYmxlcy9tZXRob2RzIHRvIHRoZSBjbGFzcydzIHByb3RvdHlwZS4KLy8gY2FuIGJlIGNhbGxlZCB3aXRoIGFub3RoZXIgY2xhc3MsIG9yIGEgcGxhaW4gb2JqZWN0IGhhc2ggY29udGFpbmluZyBuZXcgbWVtYmVycy4KQ2xhc3MubWl4aW4gPSBmdW5jdGlvbihtZW1iZXJzKSB7Cgljb3B5T3duUHJvcHMobWVtYmVycy5wcm90b3R5cGUgfHwgbWVtYmVycywgdGhpcy5wcm90b3R5cGUpOyAvLyBUT0RPOiBjb3B5TmF0aXZlTWV0aG9kcz8KfTsKOzsKCi8qIEEgcmVjdGFuZ3VsYXIgcGFuZWwgdGhhdCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb3ZlciBvdGhlciBjb250ZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpPcHRpb25zOgoJLSBjbGFzc05hbWUgKHN0cmluZykKCS0gY29udGVudCAoSFRNTCBzdHJpbmcgb3IgalF1ZXJ5IGVsZW1lbnQgc2V0KQoJLSBwYXJlbnRFbAoJLSB0b3AKCS0gbGVmdAoJLSByaWdodCAodGhlIHggY29vcmQgb2Ygd2hlcmUgdGhlIHJpZ2h0IGVkZ2Ugc2hvdWxkIGJlLiBub3QgYSAiQ1NTIiByaWdodCkKCS0gYXV0b0hpZGUgKGJvb2xlYW4pCgktIHNob3cgKGNhbGxiYWNrKQoJLSBoaWRlIChjYWxsYmFjaykKKi8KCnZhciBQb3BvdmVyID0gQ2xhc3MuZXh0ZW5kKHsKCglpc0hpZGRlbjogdHJ1ZSwKCW9wdGlvbnM6IG51bGwsCgllbDogbnVsbCwgLy8gdGhlIGNvbnRhaW5lciBlbGVtZW50IGZvciB0aGUgcG9wb3Zlci4gZ2VuZXJhdGVkIGJ5IHRoaXMgb2JqZWN0Cglkb2N1bWVudE1vdXNlZG93blByb3h5OiBudWxsLCAvLyBkb2N1bWVudCBtb3VzZWRvd24gaGFuZGxlciBib3VuZCB0byBgdGhpc2AKCW1hcmdpbjogMTAsIC8vIHRoZSBzcGFjZSByZXF1aXJlZCBiZXR3ZWVuIHRoZSBwb3BvdmVyIGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJfSwKCgoJLy8gU2hvd3MgdGhlIHBvcG92ZXIgb24gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gUmVuZGVycyBpdCBpZiBub3QgYWxyZWFkeQoJc2hvdzogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaXNIaWRkZW4pIHsKCQkJaWYgKCF0aGlzLmVsKSB7CgkJCQl0aGlzLnJlbmRlcigpOwoJCQl9CgkJCXRoaXMuZWwuc2hvdygpOwoJCQl0aGlzLnBvc2l0aW9uKCk7CgkJCXRoaXMuaXNIaWRkZW4gPSBmYWxzZTsKCQkJdGhpcy50cmlnZ2VyKCdzaG93Jyk7CgkJfQoJfSwKCgoJLy8gSGlkZXMgdGhlIHBvcG92ZXIsIHRocm91Z2ggQ1NTLCBidXQgZG9lcyBub3QgcmVtb3ZlIGl0IGZyb20gdGhlIERPTQoJaGlkZTogZnVuY3Rpb24oKSB7CgkJaWYgKCF0aGlzLmlzSGlkZGVuKSB7CgkJCXRoaXMuZWwuaGlkZSgpOwoJCQl0aGlzLmlzSGlkZGVuID0gdHJ1ZTsKCQkJdGhpcy50cmlnZ2VyKCdoaWRlJyk7CgkJfQoJfSwKCgoJLy8gQ3JlYXRlcyBgdGhpcy5lbGAgYW5kIHJlbmRlcnMgY29udGVudCBpbnNpZGUgb2YgaXQKCXJlbmRlcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKCgkJdGhpcy5lbCA9ICQoJzxkaXYgY2xhc3M9ImZjLXBvcG92ZXIiLz4nKQoJCQkuYWRkQ2xhc3Mob3B0aW9ucy5jbGFzc05hbWUgfHwgJycpCgkJCS5jc3MoewoJCQkJLy8gcG9zaXRpb24gaW5pdGlhbGx5IHRvIHRoZSB0b3AgbGVmdCB0byBhdm9pZCBjcmVhdGluZyBzY3JvbGxiYXJzCgkJCQl0b3A6IDAsCgkJCQlsZWZ0OiAwCgkJCX0pCgkJCS5hcHBlbmQob3B0aW9ucy5jb250ZW50KQoJCQkuYXBwZW5kVG8ob3B0aW9ucy5wYXJlbnRFbCk7CgoJCS8vIHdoZW4gYSBjbGljayBoYXBwZW5zIG9uIGFueXRoaW5nIGluc2lkZSB3aXRoIGEgJ2ZjLWNsb3NlJyBjbGFzc05hbWUsIGhpZGUgdGhlIHBvcG92ZXIKCQl0aGlzLmVsLm9uKCdjbGljaycsICcuZmMtY2xvc2UnLCBmdW5jdGlvbigpIHsKCQkJX3RoaXMuaGlkZSgpOwoJCX0pOwoKCQlpZiAob3B0aW9ucy5hdXRvSGlkZSkgewoJCQkkKGRvY3VtZW50KS5vbignbW91c2Vkb3duJywgdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5ID0gcHJveHkodGhpcywgJ2RvY3VtZW50TW91c2Vkb3duJykpOwoJCX0KCX0sCgoKCS8vIFRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyAqYW55d2hlcmUqIGluIHRoZSBkb2N1bWVudCwgZm9yIHRoZSBhdXRvSGlkZSBmZWF0dXJlCglkb2N1bWVudE1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQkvLyBvbmx5IGhpZGUgdGhlIHBvcG92ZXIgaWYgdGhlIGNsaWNrIGhhcHBlbmVkIG91dHNpZGUgdGhlIHBvcG92ZXIKCQlpZiAodGhpcy5lbCAmJiAhJChldi50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbCkubGVuZ3RoKSB7CgkJCXRoaXMuaGlkZSgpOwoJCX0KCX0sCgoKCS8vIEhpZGVzIGFuZCB1bnJlZ2lzdGVycyBhbnkgaGFuZGxlcnMKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMuaGlkZSgpOwoKCQlpZiAodGhpcy5lbCkgewoJCQl0aGlzLmVsLnJlbW92ZSgpOwoJCQl0aGlzLmVsID0gbnVsbDsKCQl9CgoJCSQoZG9jdW1lbnQpLm9mZignbW91c2Vkb3duJywgdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KTsKCX0sCgoKCS8vIFBvc2l0aW9ucyB0aGUgcG9wb3ZlciBvcHRpbWFsbHksIHVzaW5nIHRoZSB0b3AvbGVmdC9yaWdodCBvcHRpb25zCglwb3NpdGlvbjogZnVuY3Rpb24oKSB7CgkJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgkJdmFyIG9yaWdpbiA9IHRoaXMuZWwub2Zmc2V0UGFyZW50KCkub2Zmc2V0KCk7CgkJdmFyIHdpZHRoID0gdGhpcy5lbC5vdXRlcldpZHRoKCk7CgkJdmFyIGhlaWdodCA9IHRoaXMuZWwub3V0ZXJIZWlnaHQoKTsKCQl2YXIgd2luZG93RWwgPSAkKHdpbmRvdyk7CgkJdmFyIHZpZXdwb3J0RWwgPSBnZXRTY3JvbGxQYXJlbnQodGhpcy5lbCk7CgkJdmFyIHZpZXdwb3J0VG9wOwoJCXZhciB2aWV3cG9ydExlZnQ7CgkJdmFyIHZpZXdwb3J0T2Zmc2V0OwoJCXZhciB0b3A7IC8vIHRoZSAicG9zaXRpb24iIChub3QgIm9mZnNldCIpIHZhbHVlcyBmb3IgdGhlIHBvcG92ZXIKCQl2YXIgbGVmdDsgLy8KCgkJLy8gY29tcHV0ZSB0b3AgYW5kIGxlZnQKCQl0b3AgPSBvcHRpb25zLnRvcCB8fCAwOwoJCWlmIChvcHRpb25zLmxlZnQgIT09IHVuZGVmaW5lZCkgewoJCQlsZWZ0ID0gb3B0aW9ucy5sZWZ0OwoJCX0KCQllbHNlIGlmIChvcHRpb25zLnJpZ2h0ICE9PSB1bmRlZmluZWQpIHsKCQkJbGVmdCA9IG9wdGlvbnMucmlnaHQgLSB3aWR0aDsgLy8gZGVyaXZlIHRoZSBsZWZ0IHZhbHVlIGZyb20gdGhlIHJpZ2h0IHZhbHVlCgkJfQoJCWVsc2UgewoJCQlsZWZ0ID0gMDsKCQl9CgoJCWlmICh2aWV3cG9ydEVsLmlzKHdpbmRvdykgfHwgdmlld3BvcnRFbC5pcyhkb2N1bWVudCkpIHsgLy8gbm9ybWFsaXplIGdldFNjcm9sbFBhcmVudCdzIHJlc3VsdAoJCQl2aWV3cG9ydEVsID0gd2luZG93RWw7CgkJCXZpZXdwb3J0VG9wID0gMDsgLy8gdGhlIHdpbmRvdyBpcyBhbHdheXMgYXQgdGhlIHRvcCBsZWZ0CgkJCXZpZXdwb3J0TGVmdCA9IDA7IC8vIChhbmQgLm9mZnNldCgpIHdvbid0IHdvcmsgaWYgY2FsbGVkIGhlcmUpCgkJfQoJCWVsc2UgewoJCQl2aWV3cG9ydE9mZnNldCA9IHZpZXdwb3J0RWwub2Zmc2V0KCk7CgkJCXZpZXdwb3J0VG9wID0gdmlld3BvcnRPZmZzZXQudG9wOwoJCQl2aWV3cG9ydExlZnQgPSB2aWV3cG9ydE9mZnNldC5sZWZ0OwoJCX0KCgkJLy8gaWYgdGhlIHdpbmRvdyBpcyBzY3JvbGxlZCwgaXQgY2F1c2VzIHRoZSB2aXNpYmxlIGFyZWEgdG8gYmUgZnVydGhlciBkb3duCgkJdmlld3BvcnRUb3AgKz0gd2luZG93RWwuc2Nyb2xsVG9wKCk7CgkJdmlld3BvcnRMZWZ0ICs9IHdpbmRvd0VsLnNjcm9sbExlZnQoKTsKCgkJLy8gY29uc3RyYWluIHRvIHRoZSB2aWV3IHBvcnQuIGlmIGNvbnN0cmFpbmVkIGJ5IHR3byBlZGdlcywgZ2l2ZSBwcmVjZWRlbmNlIHRvIHRvcC9sZWZ0CgkJaWYgKG9wdGlvbnMudmlld3BvcnRDb25zdHJhaW4gIT09IGZhbHNlKSB7CgkJCXRvcCA9IE1hdGgubWluKHRvcCwgdmlld3BvcnRUb3AgKyB2aWV3cG9ydEVsLm91dGVySGVpZ2h0KCkgLSBoZWlnaHQgLSB0aGlzLm1hcmdpbik7CgkJCXRvcCA9IE1hdGgubWF4KHRvcCwgdmlld3BvcnRUb3AgKyB0aGlzLm1hcmdpbik7CgkJCWxlZnQgPSBNYXRoLm1pbihsZWZ0LCB2aWV3cG9ydExlZnQgKyB2aWV3cG9ydEVsLm91dGVyV2lkdGgoKSAtIHdpZHRoIC0gdGhpcy5tYXJnaW4pOwoJCQlsZWZ0ID0gTWF0aC5tYXgobGVmdCwgdmlld3BvcnRMZWZ0ICsgdGhpcy5tYXJnaW4pOwoJCX0KCgkJdGhpcy5lbC5jc3MoewoJCQl0b3A6IHRvcCAtIG9yaWdpbi50b3AsCgkJCWxlZnQ6IGxlZnQgLSBvcmlnaW4ubGVmdAoJCX0pOwoJfSwKCgoJLy8gVHJpZ2dlcnMgYSBjYWxsYmFjay4gQ2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUgb3B0aW9uIGhhc2ggb2YgdGhlIHNhbWUgbmFtZS4KCS8vIEFyZ3VtZW50cyBiZXlvbmQgdGhlIGZpcnN0IGBuYW1lYCBhcmUgZm9yd2FyZGVkIG9uLgoJLy8gVE9ETzogYmV0dGVyIGNvZGUgcmV1c2UgZm9yIHRoaXMuIFJlcGVhdCBjb2RlCgl0cmlnZ2VyOiBmdW5jdGlvbihuYW1lKSB7CgkJaWYgKHRoaXMub3B0aW9uc1tuYW1lXSkgewoJCQl0aGlzLm9wdGlvbnNbbmFtZV0uYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CgkJfQoJfQoKfSk7Cgo7OwoKLyogQSAiY29vcmRpbmF0ZSBtYXAiIGNvbnZlcnRzIHBpeGVsIGNvb3JkaW5hdGVzIGludG8gYW4gYXNzb2NpYXRlZCBjZWxsLCB3aGljaCBoYXMgYW4gYXNzb2NpYXRlZCBkYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDb21tb24gaW50ZXJmYWNlOgoKCUNvb3JkTWFwLnByb3RvdHlwZSA9IHsKCQlidWlsZDogZnVuY3Rpb24oKSB7fSwKCQlnZXRDZWxsOiBmdW5jdGlvbih4LCB5KSB7fQoJfTsKCiovCgovKiBDb29yZGluYXRlIG1hcCBmb3IgYSBncmlkIGNvbXBvbmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBHcmlkQ29vcmRNYXAgPSBDbGFzcy5leHRlbmQoewoKCWdyaWQ6IG51bGwsIC8vIHJlZmVyZW5jZSB0byB0aGUgR3JpZAoJcm93Q29vcmRzOiBudWxsLCAvLyBhcnJheSBvZiB7dG9wLGJvdHRvbX0gb2JqZWN0cwoJY29sQ29vcmRzOiBudWxsLCAvLyBhcnJheSBvZiB7bGVmdCxyaWdodH0gb2JqZWN0cwoKCWNvbnRhaW5lckVsOiBudWxsLCAvLyBjb250YWluZXIgZWxlbWVudCB0aGF0IGFsbCBjb29yZGluYXRlcyBhcmUgY29uc3RyYWluZWQgdG8uIG9wdGlvbmFsbHkgYXNzaWduZWQKCWJvdW5kczogbnVsbCwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKGdyaWQpIHsKCQl0aGlzLmdyaWQgPSBncmlkOwoJfSwKCgoJLy8gUXVlcmllcyB0aGUgZ3JpZCBmb3IgdGhlIGNvb3JkaW5hdGVzIG9mIGFsbCB0aGUgY2VsbHMKCWJ1aWxkOiBmdW5jdGlvbigpIHsKCQl0aGlzLmdyaWQuYnVpbGQoKTsKCQl0aGlzLnJvd0Nvb3JkcyA9IHRoaXMuZ3JpZC5jb21wdXRlUm93Q29vcmRzKCk7CgkJdGhpcy5jb2xDb29yZHMgPSB0aGlzLmdyaWQuY29tcHV0ZUNvbENvb3JkcygpOwoJCXRoaXMuY29tcHV0ZUJvdW5kcygpOwoJfSwKCgoJLy8gQ2xlYXJzIHRoZSBjb29yZGluYXRlcyBkYXRhIHRvIGZyZWUgdXAgbWVtb3J5CgljbGVhcjogZnVuY3Rpb24oKSB7CgkJdGhpcy5ncmlkLmNsZWFyKCk7CgkJdGhpcy5yb3dDb29yZHMgPSBudWxsOwoJCXRoaXMuY29sQ29vcmRzID0gbnVsbDsKCX0sCgoKCS8vIEdpdmVuIGEgY29vcmRpbmF0ZSBvZiB0aGUgZG9jdW1lbnQsIGdldHMgdGhlIGFzc29jaWF0ZWQgY2VsbC4gSWYgbm8gY2VsbCBpcyB1bmRlcm5lYXRoLCByZXR1cm5zIG51bGwKCWdldENlbGw6IGZ1bmN0aW9uKHgsIHkpIHsKCQl2YXIgcm93Q29vcmRzID0gdGhpcy5yb3dDb29yZHM7CgkJdmFyIHJvd0NudCA9IHJvd0Nvb3Jkcy5sZW5ndGg7CgkJdmFyIGNvbENvb3JkcyA9IHRoaXMuY29sQ29vcmRzOwoJCXZhciBjb2xDbnQgPSBjb2xDb29yZHMubGVuZ3RoOwoJCXZhciBoaXRSb3cgPSBudWxsOwoJCXZhciBoaXRDb2wgPSBudWxsOwoJCXZhciBpLCBjb29yZHM7CgkJdmFyIGNlbGw7CgoJCWlmICh0aGlzLmluQm91bmRzKHgsIHkpKSB7CgoJCQlmb3IgKGkgPSAwOyBpIDwgcm93Q250OyBpKyspIHsKCQkJCWNvb3JkcyA9IHJvd0Nvb3Jkc1tpXTsKCQkJCWlmICh5ID49IGNvb3Jkcy50b3AgJiYgeSA8IGNvb3Jkcy5ib3R0b20pIHsKCQkJCQloaXRSb3cgPSBpOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQlmb3IgKGkgPSAwOyBpIDwgY29sQ250OyBpKyspIHsKCQkJCWNvb3JkcyA9IGNvbENvb3Jkc1tpXTsKCQkJCWlmICh4ID49IGNvb3Jkcy5sZWZ0ICYmIHggPCBjb29yZHMucmlnaHQpIHsKCQkJCQloaXRDb2wgPSBpOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQlpZiAoaGl0Um93ICE9PSBudWxsICYmIGhpdENvbCAhPT0gbnVsbCkgewoKCQkJCWNlbGwgPSB0aGlzLmdyaWQuZ2V0Q2VsbChoaXRSb3csIGhpdENvbCk7IC8vIGV4cGVjdGVkIHRvIHJldHVybiBhIGZyZXNoIG9iamVjdCB3ZSBjYW4gbW9kaWZ5CgkJCQljZWxsLmdyaWQgPSB0aGlzLmdyaWQ7IC8vIGZvciBDZWxsRHJhZ0xpc3RlbmVyJ3MgaXNDZWxsc0VxdWFsLiBkcmFnZ2luZyBiZXR3ZWVuIGdyaWRzCgoJCQkJLy8gbWFrZSB0aGUgY29vcmRpbmF0ZXMgYXZhaWxhYmxlIG9uIHRoZSBjZWxsIG9iamVjdAoJCQkJJC5leHRlbmQoY2VsbCwgcm93Q29vcmRzW2hpdFJvd10sIGNvbENvb3Jkc1toaXRDb2xdKTsKCgkJCQlyZXR1cm4gY2VsbDsKCQkJfQoJCX0KCgkJcmV0dXJuIG51bGw7Cgl9LAoKCgkvLyBJZiB0aGVyZSBpcyBhIGNvbnRhaW5lckVsLCBjb21wdXRlIHRoZSBib3VuZHMgaW50byBtaW4vbWF4IHZhbHVlcwoJY29tcHV0ZUJvdW5kczogZnVuY3Rpb24oKSB7CgkJdGhpcy5ib3VuZHMgPSB0aGlzLmNvbnRhaW5lckVsID8KCQkJZ2V0Q2xpZW50UmVjdCh0aGlzLmNvbnRhaW5lckVsKSA6IC8vIGFyZWEgd2l0aGluIHNjcm9sbGJhcnMKCQkJbnVsbDsKCX0sCgoKCS8vIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIGFyZSBpbiBib3VuZHMuIElmIG5vIGBjb250YWluZXJFbGAsIGFsd2F5cyB0cnVlCglpbkJvdW5kczogZnVuY3Rpb24oeCwgeSkgewoJCXZhciBib3VuZHMgPSB0aGlzLmJvdW5kczsKCgkJaWYgKGJvdW5kcykgewoJCQlyZXR1cm4geCA+PSBib3VuZHMubGVmdCAmJiB4IDwgYm91bmRzLnJpZ2h0ICYmIHkgPj0gYm91bmRzLnRvcCAmJiB5IDwgYm91bmRzLmJvdHRvbTsKCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKfSk7CgoKLyogQ29vcmRpbmF0ZSBtYXAgdGhhdCBpcyBhIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIG90aGVyIGNvb3JkaW5hdGUgbWFwcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBDb21ib0Nvb3JkTWFwID0gQ2xhc3MuZXh0ZW5kKHsKCgljb29yZE1hcHM6IG51bGwsIC8vIGFuIGFycmF5IG9mIENvb3JkTWFwcwoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY29vcmRNYXBzKSB7CgkJdGhpcy5jb29yZE1hcHMgPSBjb29yZE1hcHM7Cgl9LAoKCgkvLyBCdWlsZHMgYWxsIGNvb3JkTWFwcwoJYnVpbGQ6IGZ1bmN0aW9uKCkgewoJCXZhciBjb29yZE1hcHMgPSB0aGlzLmNvb3JkTWFwczsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGNvb3JkTWFwcy5sZW5ndGg7IGkrKykgewoJCQljb29yZE1hcHNbaV0uYnVpbGQoKTsKCQl9Cgl9LAoKCgkvLyBRdWVyaWVzIGFsbCBjb29yZE1hcHMgZm9yIHRoZSBjZWxsIHVuZGVybmVhdGggdGhlIGdpdmVuIGNvb3JkaW5hdGVzLCByZXR1cm5pbmcgdGhlIGZpcnN0IHJlc3VsdAoJZ2V0Q2VsbDogZnVuY3Rpb24oeCwgeSkgewoJCXZhciBjb29yZE1hcHMgPSB0aGlzLmNvb3JkTWFwczsKCQl2YXIgY2VsbCA9IG51bGw7CgkJdmFyIGk7CgoJCWZvciAoaSA9IDA7IGkgPCBjb29yZE1hcHMubGVuZ3RoICYmICFjZWxsOyBpKyspIHsKCQkJY2VsbCA9IGNvb3JkTWFwc1tpXS5nZXRDZWxsKHgsIHkpOwoJCX0KCgkJcmV0dXJuIGNlbGw7Cgl9LAoKCgkvLyBDbGVhcnMgYWxsIGNvb3JkTWFwcwoJY2xlYXI6IGZ1bmN0aW9uKCkgewoJCXZhciBjb29yZE1hcHMgPSB0aGlzLmNvb3JkTWFwczsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGNvb3JkTWFwcy5sZW5ndGg7IGkrKykgewoJCQljb29yZE1hcHNbaV0uY2xlYXIoKTsKCQl9Cgl9Cgp9KTsKCjs7CgovKiBUcmFja3MgYSBkcmFnJ3MgbW91c2UgbW92ZW1lbnQsIGZpcmluZyB2YXJpb3VzIGhhbmRsZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIERyYWdMaXN0ZW5lciA9IGZjLkRyYWdMaXN0ZW5lciA9IENsYXNzLmV4dGVuZCh7CgoJb3B0aW9uczogbnVsbCwKCglpc0xpc3RlbmluZzogZmFsc2UsCglpc0RyYWdnaW5nOiBmYWxzZSwKCgkvLyBjb29yZGluYXRlcyBvZiB0aGUgaW5pdGlhbCBtb3VzZWRvd24KCW9yaWdpblg6IG51bGwsCglvcmlnaW5ZOiBudWxsLAoKCS8vIGhhbmRsZXIgYXR0YWNoZWQgdG8gdGhlIGRvY3VtZW50LCBib3VuZCB0byB0aGUgRHJhZ0xpc3RlbmVyJ3MgYHRoaXNgCgltb3VzZW1vdmVQcm94eTogbnVsbCwKCW1vdXNldXBQcm94eTogbnVsbCwKCgkvLyBmb3IgSUU4IGJ1Zy1maWdodGluZyBiZWhhdmlvciwgZm9yIG5vdwoJc3ViamVjdEVsOiBudWxsLCAvLyB0aGUgZWxlbWVudCBiZWluZyBkcmFnZWQuIG9wdGlvbmFsCglzdWJqZWN0SHJlZjogbnVsbCwKCglzY3JvbGxFbDogbnVsbCwKCXNjcm9sbEJvdW5kczogbnVsbCwgLy8geyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfQoJc2Nyb2xsVG9wVmVsOiBudWxsLCAvLyBwaXhlbHMgcGVyIHNlY29uZAoJc2Nyb2xsTGVmdFZlbDogbnVsbCwgLy8gcGl4ZWxzIHBlciBzZWNvbmQKCXNjcm9sbEludGVydmFsSWQ6IG51bGwsIC8vIElEIG9mIHNldFRpbWVvdXQgZm9yIHNjcm9sbGluZyBhbmltYXRpb24gbG9vcAoJc2Nyb2xsSGFuZGxlclByb3h5OiBudWxsLCAvLyB0aGlzLXNjb3BlZCBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgd2hlbiBzY3JvbGxFbCBpcyBzY3JvbGxlZAoKCXNjcm9sbFNlbnNpdGl2aXR5OiAzMCwgLy8gcGl4ZWxzIGZyb20gZWRnZSBmb3Igc2Nyb2xsaW5nIHRvIHN0YXJ0CglzY3JvbGxTcGVlZDogMjAwLCAvLyBwaXhlbHMgcGVyIHNlY29uZCwgYXQgbWF4aW11bSBzcGVlZAoJc2Nyb2xsSW50ZXJ2YWxNczogNTAsIC8vIG1pbGxpc2Vjb25kIHdhaXQgYmV0d2VlbiBzY3JvbGwgaW5jcmVtZW50CgoKCWNvbnN0cnVjdG9yOiBmdW5jdGlvbihvcHRpb25zKSB7CgkJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgkJdGhpcy5vcHRpb25zID0gb3B0aW9uczsKCQl0aGlzLnN1YmplY3RFbCA9IG9wdGlvbnMuc3ViamVjdEVsOwoJfSwKCgoJLy8gQ2FsbCB0aGlzIHdoZW4gdGhlIHVzZXIgZG9lcyBhIG1vdXNlZG93bi4gV2lsbCBwcm9iYWJseSBsZWFkIHRvIHN0YXJ0TGlzdGVuaW5nCgltb3VzZWRvd246IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKGlzUHJpbWFyeU1vdXNlQnV0dG9uKGV2KSkgewoKCQkJZXYucHJldmVudERlZmF1bHQoKTsgLy8gcHJldmVudHMgbmF0aXZlIHNlbGVjdGlvbiBpbiBtb3N0IGJyb3dzZXJzCgoJCQl0aGlzLnN0YXJ0TGlzdGVuaW5nKGV2KTsKCgkJCS8vIHN0YXJ0IHRoZSBkcmFnIGltbWVkaWF0ZWx5IGlmIHRoZXJlIGlzIG5vIG1pbmltdW0gZGlzdGFuY2UgZm9yIGEgZHJhZyBzdGFydAoJCQlpZiAoIXRoaXMub3B0aW9ucy5kaXN0YW5jZSkgewoJCQkJdGhpcy5zdGFydERyYWcoZXYpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ2FsbCB0aGlzIHRvIHN0YXJ0IHRyYWNraW5nIG1vdXNlIG1vdmVtZW50cwoJc3RhcnRMaXN0ZW5pbmc6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHNjcm9sbFBhcmVudDsKCgkJaWYgKCF0aGlzLmlzTGlzdGVuaW5nKSB7CgoJCQkvLyBncmFiIHNjcm9sbCBjb250YWluZXIgYW5kIGF0dGFjaCBoYW5kbGVyCgkJCWlmIChldiAmJiB0aGlzLm9wdGlvbnMuc2Nyb2xsKSB7CgkJCQlzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoJChldi50YXJnZXQpKTsKCQkJCWlmICghc2Nyb2xsUGFyZW50LmlzKHdpbmRvdykgJiYgIXNjcm9sbFBhcmVudC5pcyhkb2N1bWVudCkpIHsKCQkJCQl0aGlzLnNjcm9sbEVsID0gc2Nyb2xsUGFyZW50OwoKCQkJCQkvLyBzY29wZSB0byBgdGhpc2AsIGFuZCB1c2UgYGRlYm91bmNlYCB0byBtYWtlIHN1cmUgcmFwaWQgY2FsbHMgZG9uJ3QgaGFwcGVuCgkJCQkJdGhpcy5zY3JvbGxIYW5kbGVyUHJveHkgPSBkZWJvdW5jZShwcm94eSh0aGlzLCAnc2Nyb2xsSGFuZGxlcicpLCAxMDApOwoJCQkJCXRoaXMuc2Nyb2xsRWwub24oJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsSGFuZGxlclByb3h5KTsKCQkJCX0KCQkJfQoKCQkJJChkb2N1bWVudCkKCQkJCS5vbignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmVQcm94eSA9IHByb3h5KHRoaXMsICdtb3VzZW1vdmUnKSkKCQkJCS5vbignbW91c2V1cCcsIHRoaXMubW91c2V1cFByb3h5ID0gcHJveHkodGhpcywgJ21vdXNldXAnKSkKCQkJCS5vbignc2VsZWN0c3RhcnQnLCB0aGlzLnByZXZlbnREZWZhdWx0KTsgLy8gcHJldmVudHMgbmF0aXZlIHNlbGVjdGlvbiBpbiBJRTw9OAoKCQkJaWYgKGV2KSB7CgkJCQl0aGlzLm9yaWdpblggPSBldi5wYWdlWDsKCQkJCXRoaXMub3JpZ2luWSA9IGV2LnBhZ2VZOwoJCQl9CgkJCWVsc2UgewoJCQkJLy8gaWYgbm8gc3RhcnRpbmcgaW5mb3JtYXRpb24gd2FzIGdpdmVuLCBvcmlnaW4gd2lsbCBiZSB0aGUgdG9wbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbi4KCQkJCS8vIGlmIHNvLCBkeC9keSBpbiB0aGUgZnV0dXJlIHdpbGwgYmUgdGhlIGFic29sdXRlIGNvb3JkaW5hdGVzLgoJCQkJdGhpcy5vcmlnaW5YID0gMDsKCQkJCXRoaXMub3JpZ2luWSA9IDA7CgkJCX0KCgkJCXRoaXMuaXNMaXN0ZW5pbmcgPSB0cnVlOwoJCQl0aGlzLmxpc3RlblN0YXJ0KGV2KTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBkcmFnIGxpc3RlbmluZyBoYXMgc3RhcnRlZCAoYnV0IGEgcmVhbCBkcmFnIGhhcyBub3QgbmVjZXNzYXJpbHkgYmVnYW4pCglsaXN0ZW5TdGFydDogZnVuY3Rpb24oZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2xpc3RlblN0YXJ0JywgZXYpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNlCgltb3VzZW1vdmU6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIGR4ID0gZXYucGFnZVggLSB0aGlzLm9yaWdpblg7CgkJdmFyIGR5ID0gZXYucGFnZVkgLSB0aGlzLm9yaWdpblk7CgkJdmFyIG1pbkRpc3RhbmNlOwoJCXZhciBkaXN0YW5jZVNxOyAvLyBjdXJyZW50IGRpc3RhbmNlIGZyb20gdGhlIG9yaWdpbiwgc3F1YXJlZAoKCQlpZiAoIXRoaXMuaXNEcmFnZ2luZykgeyAvLyBpZiBub3QgYWxyZWFkeSBkcmFnZ2luZy4uLgoJCQkvLyB0aGVuIHN0YXJ0IHRoZSBkcmFnIGlmIHRoZSBtaW5pbXVtIGRpc3RhbmNlIGNyaXRlcmlhIGlzIG1ldAoJCQltaW5EaXN0YW5jZSA9IHRoaXMub3B0aW9ucy5kaXN0YW5jZSB8fCAxOwoJCQlkaXN0YW5jZVNxID0gZHggKiBkeCArIGR5ICogZHk7CgkJCWlmIChkaXN0YW5jZVNxID49IG1pbkRpc3RhbmNlICogbWluRGlzdGFuY2UpIHsgLy8gdXNlIHB5dGhhZ29yZWFuIHRoZW9yZW0KCQkJCXRoaXMuc3RhcnREcmFnKGV2KTsKCQkJfQoJCX0KCgkJaWYgKHRoaXMuaXNEcmFnZ2luZykgewoJCQl0aGlzLmRyYWcoZHgsIGR5LCBldik7IC8vIHJlcG9ydCBhIGRyYWcsIGV2ZW4gaWYgdGhpcyBtb3VzZW1vdmUgaW5pdGlhdGVkIHRoZSBkcmFnCgkJfQoJfSwKCgoJLy8gQ2FsbCB0aGlzIHRvIGluaXRpYXRlIGEgbGVnaXRpbWF0ZSBkcmFnLgoJLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW50ZXJuYWxseSBmcm9tIHRoaXMgY2xhc3MsIGJ1dCBjYW4gYWxzbyBiZSBjYWxsZWQgZXhwbGljaXRseSBmcm9tIG91dHNpZGUKCXN0YXJ0RHJhZzogZnVuY3Rpb24oZXYpIHsKCgkJaWYgKCF0aGlzLmlzTGlzdGVuaW5nKSB7IC8vIHN0YXJ0RHJhZyBtdXN0IGhhdmUgbWFudWFsbHkgaW5pdGlhdGVkCgkJCXRoaXMuc3RhcnRMaXN0ZW5pbmcoKTsKCQl9CgoJCWlmICghdGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuaXNEcmFnZ2luZyA9IHRydWU7CgkJCXRoaXMuZHJhZ1N0YXJ0KGV2KTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgYWN0dWFsIGRyYWcgaGFzIHN0YXJ0ZWQgKHdlbnQgYmV5b25kIG1pbkRpc3RhbmNlKQoJZHJhZ1N0YXJ0OiBmdW5jdGlvbihldikgewoJCXZhciBzdWJqZWN0RWwgPSB0aGlzLnN1YmplY3RFbDsKCgkJdGhpcy50cmlnZ2VyKCdkcmFnU3RhcnQnLCBldik7CgoJCS8vIHJlbW92ZSBhIG1vdXNlZG93bidkIDxhPidzIGhyZWYgc28gaXQgaXMgbm90IHZpc2l0ZWQgKElFOCBidWcpCgkJaWYgKCh0aGlzLnN1YmplY3RIcmVmID0gc3ViamVjdEVsID8gc3ViamVjdEVsLmF0dHIoJ2hyZWYnKSA6IG51bGwpKSB7CgkJCXN1YmplY3RFbC5yZW1vdmVBdHRyKCdocmVmJyk7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoaWxlIHRoZSBtb3VzZSBpcyBiZWluZyBtb3ZlZCBhbmQgd2hlbiB3ZSBrbm93IGEgbGVnaXRpbWF0ZSBkcmFnIGlzIHRha2luZyBwbGFjZQoJZHJhZzogZnVuY3Rpb24oZHgsIGR5LCBldikgewoJCXRoaXMudHJpZ2dlcignZHJhZycsIGR4LCBkeSwgZXYpOwoJCXRoaXMudXBkYXRlU2Nyb2xsKGV2KTsgLy8gd2lsbCBwb3NzaWJseSBjYXVzZSBzY3JvbGxpbmcKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSB1c2VyIGRvZXMgYSBtb3VzZXVwCgltb3VzZXVwOiBmdW5jdGlvbihldikgewoJCXRoaXMuc3RvcExpc3RlbmluZyhldik7Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgZHJhZyBpcyBvdmVyLiBXaWxsIG5vdCBjYXVzZSBsaXN0ZW5pbmcgdG8gc3RvcCBob3dldmVyLgoJLy8gQSBjb25jbHVkaW5nICdjZWxsT3V0JyBldmVudCB3aWxsIE5PVCBiZSB0cmlnZ2VyZWQuCglzdG9wRHJhZzogZnVuY3Rpb24oZXYpIHsKCQlpZiAodGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuc3RvcFNjcm9sbGluZygpOwoJCQl0aGlzLmRyYWdTdG9wKGV2KTsKCQkJdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gZHJhZ2dpbmcgaGFzIGJlZW4gc3RvcHBlZAoJZHJhZ1N0b3A6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIF90aGlzID0gdGhpczsKCgkJdGhpcy50cmlnZ2VyKCdkcmFnU3RvcCcsIGV2KTsKCgkJLy8gcmVzdG9yZSBhIG1vdXNlZG93bidkIDxhPidzIGhyZWYgKGZvciBJRTggYnVnKQoJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IC8vIG11c3QgYmUgb3V0c2lkZSBvZiB0aGUgY2xpY2sncyBleGVjdXRpb24KCQkJaWYgKF90aGlzLnN1YmplY3RIcmVmKSB7CgkJCQlfdGhpcy5zdWJqZWN0RWwuYXR0cignaHJlZicsIF90aGlzLnN1YmplY3RIcmVmKTsKCQkJfQoJCX0sIDApOwoJfSwKCgoJLy8gQ2FsbCB0aGlzIHRvIHN0b3AgbGlzdGVuaW5nIHRvIHRoZSB1c2VyJ3MgbW91c2UgZXZlbnRzCglzdG9wTGlzdGVuaW5nOiBmdW5jdGlvbihldikgewoJCXRoaXMuc3RvcERyYWcoZXYpOyAvLyBpZiB0aGVyZSdzIGEgY3VycmVudCBkcmFnLCBraWxsIGl0CgoJCWlmICh0aGlzLmlzTGlzdGVuaW5nKSB7CgoJCQkvLyByZW1vdmUgdGhlIHNjcm9sbCBoYW5kbGVyIGlmIHRoZXJlIGlzIGEgc2Nyb2xsRWwKCQkJaWYgKHRoaXMuc2Nyb2xsRWwpIHsKCQkJCXRoaXMuc2Nyb2xsRWwub2ZmKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXJQcm94eSk7CgkJCQl0aGlzLnNjcm9sbEhhbmRsZXJQcm94eSA9IG51bGw7CgkJCX0KCgkJCSQoZG9jdW1lbnQpCgkJCQkub2ZmKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlbW92ZVByb3h5KQoJCQkJLm9mZignbW91c2V1cCcsIHRoaXMubW91c2V1cFByb3h5KQoJCQkJLm9mZignc2VsZWN0c3RhcnQnLCB0aGlzLnByZXZlbnREZWZhdWx0KTsKCgkJCXRoaXMubW91c2Vtb3ZlUHJveHkgPSBudWxsOwoJCQl0aGlzLm1vdXNldXBQcm94eSA9IG51bGw7CgoJCQl0aGlzLmlzTGlzdGVuaW5nID0gZmFsc2U7CgkJCXRoaXMubGlzdGVuU3RvcChldik7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gZHJhZyBsaXN0ZW5pbmcgaGFzIHN0b3BwZWQKCWxpc3RlblN0b3A6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdsaXN0ZW5TdG9wJywgZXYpOwoJfSwKCgoJLy8gVHJpZ2dlcnMgYSBjYWxsYmFjay4gQ2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUgb3B0aW9uIGhhc2ggb2YgdGhlIHNhbWUgbmFtZS4KCS8vIEFyZ3VtZW50cyBiZXlvbmQgdGhlIGZpcnN0IGBuYW1lYCBhcmUgZm9yd2FyZGVkIG9uLgoJdHJpZ2dlcjogZnVuY3Rpb24obmFtZSkgewoJCWlmICh0aGlzLm9wdGlvbnNbbmFtZV0pIHsKCQkJdGhpcy5vcHRpb25zW25hbWVdLmFwcGx5KHRoaXMsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwoJCX0KCX0sCgoKCS8vIFN0b3BzIGEgZ2l2ZW4gbW91c2UgZXZlbnQgZnJvbSBkb2luZyBpdCdzIG5hdGl2ZSBicm93c2VyIGFjdGlvbi4gSW4gb3VyIGNhc2UsIHRleHQgc2VsZWN0aW9uLgoJcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uKGV2KSB7CgkJZXYucHJldmVudERlZmF1bHQoKTsKCX0sCgoKCS8qIFNjcm9sbGluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgYW5kIHN0b3JlcyB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHNjcm9sbEVsCgljb21wdXRlU2Nyb2xsQm91bmRzOiBmdW5jdGlvbigpIHsKCQl2YXIgZWwgPSB0aGlzLnNjcm9sbEVsOwoKCQl0aGlzLnNjcm9sbEJvdW5kcyA9IGVsID8gZ2V0T3V0ZXJSZWN0KGVsKSA6IG51bGw7CgkJCS8vIFRPRE86IHVzZSBnZXRDbGllbnRSZWN0IGluIGZ1dHVyZS4gYnV0IHByZXZlbnRzIGF1dG8gc2Nyb2xsaW5nIHdoZW4gb24gdG9wIG9mIHNjcm9sbGJhcnMKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSBkcmFnZ2luZyBpcyBpbiBwcm9ncmVzcyBhbmQgc2Nyb2xsaW5nIHNob3VsZCBiZSB1cGRhdGVkCgl1cGRhdGVTY3JvbGw6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHNlbnNpdGl2aXR5ID0gdGhpcy5zY3JvbGxTZW5zaXRpdml0eTsKCQl2YXIgYm91bmRzID0gdGhpcy5zY3JvbGxCb3VuZHM7CgkJdmFyIHRvcENsb3NlbmVzcywgYm90dG9tQ2xvc2VuZXNzOwoJCXZhciBsZWZ0Q2xvc2VuZXNzLCByaWdodENsb3NlbmVzczsKCQl2YXIgdG9wVmVsID0gMDsKCQl2YXIgbGVmdFZlbCA9IDA7CgoJCWlmIChib3VuZHMpIHsgLy8gb25seSBzY3JvbGwgaWYgc2Nyb2xsRWwgZXhpc3RzCgoJCQkvLyBjb21wdXRlIGNsb3NlbmVzcyB0byBlZGdlcy4gdmFsaWQgcmFuZ2UgaXMgZnJvbSAwLjAgLSAxLjAKCQkJdG9wQ2xvc2VuZXNzID0gKHNlbnNpdGl2aXR5IC0gKGV2LnBhZ2VZIC0gYm91bmRzLnRvcCkpIC8gc2Vuc2l0aXZpdHk7CgkJCWJvdHRvbUNsb3NlbmVzcyA9IChzZW5zaXRpdml0eSAtIChib3VuZHMuYm90dG9tIC0gZXYucGFnZVkpKSAvIHNlbnNpdGl2aXR5OwoJCQlsZWZ0Q2xvc2VuZXNzID0gKHNlbnNpdGl2aXR5IC0gKGV2LnBhZ2VYIC0gYm91bmRzLmxlZnQpKSAvIHNlbnNpdGl2aXR5OwoJCQlyaWdodENsb3NlbmVzcyA9IChzZW5zaXRpdml0eSAtIChib3VuZHMucmlnaHQgLSBldi5wYWdlWCkpIC8gc2Vuc2l0aXZpdHk7CgoJCQkvLyB0cmFuc2xhdGUgdmVydGljYWwgY2xvc2VuZXNzIGludG8gdmVsb2NpdHkuCgkJCS8vIG1vdXNlIG11c3QgYmUgY29tcGxldGVseSBpbiBib3VuZHMgZm9yIHZlbG9jaXR5IHRvIGhhcHBlbi4KCQkJaWYgKHRvcENsb3NlbmVzcyA+PSAwICYmIHRvcENsb3NlbmVzcyA8PSAxKSB7CgkJCQl0b3BWZWwgPSB0b3BDbG9zZW5lc3MgKiB0aGlzLnNjcm9sbFNwZWVkICogLTE7IC8vIG5lZ2F0aXZlLiBmb3Igc2Nyb2xsaW5nIHVwCgkJCX0KCQkJZWxzZSBpZiAoYm90dG9tQ2xvc2VuZXNzID49IDAgJiYgYm90dG9tQ2xvc2VuZXNzIDw9IDEpIHsKCQkJCXRvcFZlbCA9IGJvdHRvbUNsb3NlbmVzcyAqIHRoaXMuc2Nyb2xsU3BlZWQ7CgkJCX0KCgkJCS8vIHRyYW5zbGF0ZSBob3Jpem9udGFsIGNsb3NlbmVzcyBpbnRvIHZlbG9jaXR5CgkJCWlmIChsZWZ0Q2xvc2VuZXNzID49IDAgJiYgbGVmdENsb3NlbmVzcyA8PSAxKSB7CgkJCQlsZWZ0VmVsID0gbGVmdENsb3NlbmVzcyAqIHRoaXMuc2Nyb2xsU3BlZWQgKiAtMTsgLy8gbmVnYXRpdmUuIGZvciBzY3JvbGxpbmcgbGVmdAoJCQl9CgkJCWVsc2UgaWYgKHJpZ2h0Q2xvc2VuZXNzID49IDAgJiYgcmlnaHRDbG9zZW5lc3MgPD0gMSkgewoJCQkJbGVmdFZlbCA9IHJpZ2h0Q2xvc2VuZXNzICogdGhpcy5zY3JvbGxTcGVlZDsKCQkJfQoJCX0KCgkJdGhpcy5zZXRTY3JvbGxWZWwodG9wVmVsLCBsZWZ0VmVsKTsKCX0sCgoKCS8vIFNldHMgdGhlIHNwZWVkLW9mLXNjcm9sbGluZyBmb3IgdGhlIHNjcm9sbEVsCglzZXRTY3JvbGxWZWw6IGZ1bmN0aW9uKHRvcFZlbCwgbGVmdFZlbCkgewoKCQl0aGlzLnNjcm9sbFRvcFZlbCA9IHRvcFZlbDsKCQl0aGlzLnNjcm9sbExlZnRWZWwgPSBsZWZ0VmVsOwoKCQl0aGlzLmNvbnN0cmFpblNjcm9sbFZlbCgpOyAvLyBtYXNzYWdlcyBpbnRvIHJlYWxpc3RpYyB2YWx1ZXMKCgkJLy8gaWYgdGhlcmUgaXMgbm9uLXplcm8gdmVsb2NpdHksIGFuZCBhbiBhbmltYXRpb24gbG9vcCBoYXNuJ3QgYWxyZWFkeSBzdGFydGVkLCB0aGVuIFNUQVJUCgkJaWYgKCh0aGlzLnNjcm9sbFRvcFZlbCB8fCB0aGlzLnNjcm9sbExlZnRWZWwpICYmICF0aGlzLnNjcm9sbEludGVydmFsSWQpIHsKCQkJdGhpcy5zY3JvbGxJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoCgkJCQlwcm94eSh0aGlzLCAnc2Nyb2xsSW50ZXJ2YWxGdW5jJyksIC8vIHNjb3BlIHRvIGB0aGlzYAoJCQkJdGhpcy5zY3JvbGxJbnRlcnZhbE1zCgkJCSk7CgkJfQoJfSwKCgoJLy8gRm9yY2VzIHNjcm9sbFRvcFZlbCBhbmQgc2Nyb2xsTGVmdFZlbCB0byBiZSB6ZXJvIGlmIHNjcm9sbGluZyBoYXMgYWxyZWFkeSBnb25lIGFsbCB0aGUgd2F5Cgljb25zdHJhaW5TY3JvbGxWZWw6IGZ1bmN0aW9uKCkgewoJCXZhciBlbCA9IHRoaXMuc2Nyb2xsRWw7CgoJCWlmICh0aGlzLnNjcm9sbFRvcFZlbCA8IDApIHsgLy8gc2Nyb2xsaW5nIHVwPwoJCQlpZiAoZWwuc2Nyb2xsVG9wKCkgPD0gMCkgeyAvLyBhbHJlYWR5IHNjcm9sbGVkIGFsbCB0aGUgd2F5IHVwPwoJCQkJdGhpcy5zY3JvbGxUb3BWZWwgPSAwOwoJCQl9CgkJfQoJCWVsc2UgaWYgKHRoaXMuc2Nyb2xsVG9wVmVsID4gMCkgeyAvLyBzY3JvbGxpbmcgZG93bj8KCQkJaWYgKGVsLnNjcm9sbFRvcCgpICsgZWxbMF0uY2xpZW50SGVpZ2h0ID49IGVsWzBdLnNjcm9sbEhlaWdodCkgeyAvLyBhbHJlYWR5IHNjcm9sbGVkIGFsbCB0aGUgd2F5IGRvd24/CgkJCQl0aGlzLnNjcm9sbFRvcFZlbCA9IDA7CgkJCX0KCQl9CgoJCWlmICh0aGlzLnNjcm9sbExlZnRWZWwgPCAwKSB7IC8vIHNjcm9sbGluZyBsZWZ0PwoJCQlpZiAoZWwuc2Nyb2xsTGVmdCgpIDw9IDApIHsgLy8gYWxyZWFkeSBzY3JvbGxlZCBhbGwgdGhlIGxlZnQ/CgkJCQl0aGlzLnNjcm9sbExlZnRWZWwgPSAwOwoJCQl9CgkJfQoJCWVsc2UgaWYgKHRoaXMuc2Nyb2xsTGVmdFZlbCA+IDApIHsgLy8gc2Nyb2xsaW5nIHJpZ2h0PwoJCQlpZiAoZWwuc2Nyb2xsTGVmdCgpICsgZWxbMF0uY2xpZW50V2lkdGggPj0gZWxbMF0uc2Nyb2xsV2lkdGgpIHsgLy8gYWxyZWFkeSBzY3JvbGxlZCBhbGwgdGhlIHdheSByaWdodD8KCQkJCXRoaXMuc2Nyb2xsTGVmdFZlbCA9IDA7CgkJCX0KCQl9Cgl9LAoKCgkvLyBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGR1cmluZyBldmVyeSBpdGVyYXRpb24gb2YgdGhlIHNjcm9sbGluZyBhbmltYXRpb24gbG9vcAoJc2Nyb2xsSW50ZXJ2YWxGdW5jOiBmdW5jdGlvbigpIHsKCQl2YXIgZWwgPSB0aGlzLnNjcm9sbEVsOwoJCXZhciBmcmFjID0gdGhpcy5zY3JvbGxJbnRlcnZhbE1zIC8gMTAwMDsgLy8gY29uc2lkZXJpbmcgYW5pbWF0aW9uIGZyZXF1ZW5jeSwgd2hhdCB0aGUgdmVsIHNob3VsZCBiZSBtdWx0J2QgYnkKCgkJLy8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBzY3JvbGxFbCdzIHNjcm9sbAoJCWlmICh0aGlzLnNjcm9sbFRvcFZlbCkgewoJCQllbC5zY3JvbGxUb3AoZWwuc2Nyb2xsVG9wKCkgKyB0aGlzLnNjcm9sbFRvcFZlbCAqIGZyYWMpOwoJCX0KCQlpZiAodGhpcy5zY3JvbGxMZWZ0VmVsKSB7CgkJCWVsLnNjcm9sbExlZnQoZWwuc2Nyb2xsTGVmdCgpICsgdGhpcy5zY3JvbGxMZWZ0VmVsICogZnJhYyk7CgkJfQoKCQl0aGlzLmNvbnN0cmFpblNjcm9sbFZlbCgpOyAvLyBzaW5jZSB0aGUgc2Nyb2xsIHZhbHVlcyBjaGFuZ2VkLCByZWNvbXB1dGUgdGhlIHZlbG9jaXRpZXMKCgkJLy8gaWYgc2Nyb2xsZWQgYWxsIHRoZSB3YXksIHdoaWNoIGNhdXNlcyB0aGUgdmVscyB0byBiZSB6ZXJvLCBzdG9wIHRoZSBhbmltYXRpb24gbG9vcAoJCWlmICghdGhpcy5zY3JvbGxUb3BWZWwgJiYgIXRoaXMuc2Nyb2xsTGVmdFZlbCkgewoJCQl0aGlzLnN0b3BTY3JvbGxpbmcoKTsKCQl9Cgl9LAoKCgkvLyBLaWxscyBhbnkgZXhpc3Rpbmcgc2Nyb2xsaW5nIGFuaW1hdGlvbiBsb29wCglzdG9wU2Nyb2xsaW5nOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5zY3JvbGxJbnRlcnZhbElkKSB7CgkJCWNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbElkKTsKCQkJdGhpcy5zY3JvbGxJbnRlcnZhbElkID0gbnVsbDsKCgkJCS8vIHdoZW4gYWxsIGRvbmUgd2l0aCBzY3JvbGxpbmcsIHJlY29tcHV0ZSBwb3NpdGlvbnMgc2luY2UgdGhleSBwcm9iYWJseSBjaGFuZ2VkCgkJCXRoaXMuc2Nyb2xsU3RvcCgpOwoJCX0KCX0sCgoKCS8vIEdldCBjYWxsZWQgd2hlbiB0aGUgc2Nyb2xsRWwgaXMgc2Nyb2xsZWQgKE5PVEU6IHRoaXMgaXMgZGVsYXllZCB2aWEgZGVib3VuY2UpCglzY3JvbGxIYW5kbGVyOiBmdW5jdGlvbigpIHsKCQkvLyByZWNvbXB1dGUgYWxsIGNvb3JkaW5hdGVzLCBidXQgKm9ubHkqIGlmIHRoaXMgaXMgKm5vdCogcGFydCBvZiBvdXIgc2Nyb2xsaW5nIGFuaW1hdGlvbgoJCWlmICghdGhpcy5zY3JvbGxJbnRlcnZhbElkKSB7CgkJCXRoaXMuc2Nyb2xsU3RvcCgpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIHNjcm9sbGluZyBoYXMgc3RvcHBlZCwgd2hldGhlciB0aHJvdWdoIGF1dG8gc2Nyb2xsLCBvciB0aGUgdXNlciBzY3JvbGxpbmcKCXNjcm9sbFN0b3A6IGZ1bmN0aW9uKCkgewoJfQoKfSk7Cgo7OwoKLyogVHJhY2tzIG1vdXNlIG1vdmVtZW50cyBvdmVyIGEgQ29vcmRNYXAgYW5kIHJhaXNlcyBldmVudHMgYWJvdXQgd2hpY2ggY2VsbCB0aGUgbW91c2UgaXMgb3Zlci4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm9wdGlvbnM6Ci0gc3ViamVjdEVsCi0gc3ViamVjdENlbnRlcgoqLwoKdmFyIENlbGxEcmFnTGlzdGVuZXIgPSBEcmFnTGlzdGVuZXIuZXh0ZW5kKHsKCgljb29yZE1hcDogbnVsbCwgLy8gY29udmVydHMgY29vcmRpbmF0ZXMgdG8gZGF0ZSBjZWxscwoJb3JpZ0NlbGw6IG51bGwsIC8vIHRoZSBjZWxsIHRoZSBtb3VzZSB3YXMgb3ZlciB3aGVuIGxpc3RlbmluZyBzdGFydGVkCgljZWxsOiBudWxsLCAvLyB0aGUgY2VsbCB0aGUgbW91c2UgaXMgb3ZlcgoJY29vcmRBZGp1c3Q6IG51bGwsIC8vIGRlbHRhIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbW91c2UgY29vcmRpbmF0ZXMgd2hlbiBjb21wdXRpbmcgY29sbGlzaW9ucwoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY29vcmRNYXAsIG9wdGlvbnMpIHsKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgb3B0aW9ucyk7IC8vIGNhbGwgdGhlIHN1cGVyLWNvbnN0cnVjdG9yCgoJCXRoaXMuY29vcmRNYXAgPSBjb29yZE1hcDsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIGRyYWcgbGlzdGVuaW5nIHN0YXJ0cyAoYnV0IGEgcmVhbCBkcmFnIGhhcyBub3QgbmVjZXNzYXJpbHkgYmVnYW4pLgoJLy8gZXYgbWlnaHQgYmUgdW5kZWZpbmVkIGlmIGRyYWdnaW5nIHdhcyBzdGFydGVkIG1hbnVhbGx5LgoJbGlzdGVuU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHN1YmplY3RFbCA9IHRoaXMuc3ViamVjdEVsOwoJCXZhciBzdWJqZWN0UmVjdDsKCQl2YXIgb3JpZ1BvaW50OwoJCXZhciBwb2ludDsKCgkJRHJhZ0xpc3RlbmVyLnByb3RvdHlwZS5saXN0ZW5TdGFydC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJdGhpcy5jb21wdXRlQ29vcmRzKCk7CgoJCWlmIChldikgewoJCQlvcmlnUG9pbnQgPSB7IGxlZnQ6IGV2LnBhZ2VYLCB0b3A6IGV2LnBhZ2VZIH07CgkJCXBvaW50ID0gb3JpZ1BvaW50OwoKCQkJLy8gY29uc3RyYWluIHRoZSBwb2ludCB0byBib3VuZHMgb2YgdGhlIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZAoJCQlpZiAoc3ViamVjdEVsKSB7CgkJCQlzdWJqZWN0UmVjdCA9IGdldE91dGVyUmVjdChzdWJqZWN0RWwpOyAvLyB1c2VkIGZvciBjZW50ZXJpbmcgYXMgd2VsbAoJCQkJcG9pbnQgPSBjb25zdHJhaW5Qb2ludChwb2ludCwgc3ViamVjdFJlY3QpOwoJCQl9CgoJCQl0aGlzLm9yaWdDZWxsID0gdGhpcy5nZXRDZWxsKHBvaW50LmxlZnQsIHBvaW50LnRvcCk7CgoJCQkvLyB0cmVhdCB0aGUgY2VudGVyIG9mIHRoZSBzdWJqZWN0IGFzIHRoZSBjb2xsaXNpb24gcG9pbnQ/CgkJCWlmIChzdWJqZWN0RWwgJiYgdGhpcy5vcHRpb25zLnN1YmplY3RDZW50ZXIpIHsKCgkJCQkvLyBvbmx5IGNvbnNpZGVyIHRoZSBhcmVhIHRoZSBzdWJqZWN0IG92ZXJsYXBzIHRoZSBjZWxsLiBiZXN0IGZvciBsYXJnZSBzdWJqZWN0cwoJCQkJaWYgKHRoaXMub3JpZ0NlbGwpIHsKCQkJCQlzdWJqZWN0UmVjdCA9IGludGVyc2VjdFJlY3RzKHRoaXMub3JpZ0NlbGwsIHN1YmplY3RSZWN0KSB8fAoJCQkJCQlzdWJqZWN0UmVjdDsgLy8gaW4gY2FzZSB0aGVyZSBpcyBubyBpbnRlcnNlY3Rpb24KCQkJCX0KCgkJCQlwb2ludCA9IGdldFJlY3RDZW50ZXIoc3ViamVjdFJlY3QpOwoJCQl9CgoJCQl0aGlzLmNvb3JkQWRqdXN0ID0gZGlmZlBvaW50cyhwb2ludCwgb3JpZ1BvaW50KTsgLy8gcG9pbnQgLSBvcmlnUG9pbnQKCQl9CgkJZWxzZSB7CgkJCXRoaXMub3JpZ0NlbGwgPSBudWxsOwoJCQl0aGlzLmNvb3JkQWRqdXN0ID0gbnVsbDsKCQl9Cgl9LAoKCgkvLyBSZWNvbXB1dGVzIHRoZSBkcmFnLWNyaXRpY2FsIHBvc2l0aW9ucyBvZiBlbGVtZW50cwoJY29tcHV0ZUNvb3JkczogZnVuY3Rpb24oKSB7CgkJdGhpcy5jb29yZE1hcC5idWlsZCgpOwoJCXRoaXMuY29tcHV0ZVNjcm9sbEJvdW5kcygpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIGFjdHVhbCBkcmFnIGhhcyBzdGFydGVkCglkcmFnU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIGNlbGw7CgoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuZHJhZ1N0YXJ0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoKCQljZWxsID0gdGhpcy5nZXRDZWxsKGV2LnBhZ2VYLCBldi5wYWdlWSk7IC8vIG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoaXMub3JpZ0NlbGwgaWYgdGhlIG1pbi1kaXN0YW5jZSBpcyBsYXJnZQoKCQkvLyByZXBvcnQgdGhlIGluaXRpYWwgY2VsbCB0aGUgbW91c2UgaXMgb3ZlcgoJCS8vIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIG5vIG1pbi1kaXN0YW5jZSBhbmQgZHJhZyBzdGFydHMgaW1tZWRpYXRlbHkKCQlpZiAoY2VsbCkgewoJCQl0aGlzLmNlbGxPdmVyKGNlbGwpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSBkcmFnIG1vdmVzCglkcmFnOiBmdW5jdGlvbihkeCwgZHksIGV2KSB7CgkJdmFyIGNlbGw7CgoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuZHJhZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJY2VsbCA9IHRoaXMuZ2V0Q2VsbChldi5wYWdlWCwgZXYucGFnZVkpOwoKCQlpZiAoIWlzQ2VsbHNFcXVhbChjZWxsLCB0aGlzLmNlbGwpKSB7IC8vIGEgZGlmZmVyZW50IGNlbGwgdGhhbiBiZWZvcmU/CgkJCWlmICh0aGlzLmNlbGwpIHsKCQkJCXRoaXMuY2VsbE91dCgpOwoJCQl9CgkJCWlmIChjZWxsKSB7CgkJCQl0aGlzLmNlbGxPdmVyKGNlbGwpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gZHJhZ2dpbmcgaGFzIGJlZW4gc3RvcHBlZAoJZHJhZ1N0b3A6IGZ1bmN0aW9uKCkgewoJCXRoaXMuY2VsbERvbmUoKTsKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmRyYWdTdG9wLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gYSB0aGUgbW91c2UgaGFzIGp1c3QgbW92ZWQgb3ZlciBhIG5ldyBjZWxsCgljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCkgewoJCXRoaXMuY2VsbCA9IGNlbGw7CgkJdGhpcy50cmlnZ2VyKCdjZWxsT3ZlcicsIGNlbGwsIGlzQ2VsbHNFcXVhbChjZWxsLCB0aGlzLm9yaWdDZWxsKSwgdGhpcy5vcmlnQ2VsbCk7Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgbW91c2UgaGFzIGp1c3QgbW92ZWQgb3V0IG9mIGEgY2VsbAoJY2VsbE91dDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuY2VsbCkgewoJCQl0aGlzLnRyaWdnZXIoJ2NlbGxPdXQnLCB0aGlzLmNlbGwpOwoJCQl0aGlzLmNlbGxEb25lKCk7CgkJCXRoaXMuY2VsbCA9IG51bGw7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIGFmdGVyIGEgY2VsbE91dC4gQWxzbyBjYWxsZWQgYmVmb3JlIGEgZHJhZ1N0b3AKCWNlbGxEb25lOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5jZWxsKSB7CgkJCXRoaXMudHJpZ2dlcignY2VsbERvbmUnLCB0aGlzLmNlbGwpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIGRyYWcgbGlzdGVuaW5nIGhhcyBzdG9wcGVkCglsaXN0ZW5TdG9wOiBmdW5jdGlvbigpIHsKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmxpc3RlblN0b3AuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCXRoaXMub3JpZ0NlbGwgPSB0aGlzLmNlbGwgPSBudWxsOwoJCXRoaXMuY29vcmRNYXAuY2xlYXIoKTsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHNjcm9sbGluZyBoYXMgc3RvcHBlZCwgd2hldGhlciB0aHJvdWdoIGF1dG8gc2Nyb2xsLCBvciB0aGUgdXNlciBzY3JvbGxpbmcKCXNjcm9sbFN0b3A6IGZ1bmN0aW9uKCkgewoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuc2Nyb2xsU3RvcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJdGhpcy5jb21wdXRlQ29vcmRzKCk7IC8vIGNlbGxzJyBhYnNvbHV0ZSBwb3NpdGlvbnMgd2lsbCBiZSBpbiBuZXcgcGxhY2VzLiByZWNvbXB1dGUKCX0sCgoKCS8vIEdldHMgdGhlIGNlbGwgdW5kZXJuZWF0aCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBnaXZlbiBtb3VzZSBldmVudAoJZ2V0Q2VsbDogZnVuY3Rpb24obGVmdCwgdG9wKSB7CgoJCWlmICh0aGlzLmNvb3JkQWRqdXN0KSB7CgkJCWxlZnQgKz0gdGhpcy5jb29yZEFkanVzdC5sZWZ0OwoJCQl0b3AgKz0gdGhpcy5jb29yZEFkanVzdC50b3A7CgkJfQoKCQlyZXR1cm4gdGhpcy5jb29yZE1hcC5nZXRDZWxsKGxlZnQsIHRvcCk7Cgl9Cgp9KTsKCgovLyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgY2VsbHMgYXJlIGlkZW50aWNhbGx5IGVxdWFsLiBgZmFsc2VgIG90aGVyd2lzZS4KLy8gVGhleSBtdXN0IGhhdmUgdGhlIHNhbWUgcm93LCBjb2wsIGFuZCBiZSBmcm9tIHRoZSBzYW1lIGdyaWQuCi8vIFR3byBudWxsIHZhbHVlcyB3aWxsIGJlIGNvbnNpZGVyZWQgZXF1YWwsIGFzIHR3byAib3V0IG9mIHRoZSBncmlkIiBzdGF0ZXMgYXJlIHRoZSBzYW1lLgpmdW5jdGlvbiBpc0NlbGxzRXF1YWwoY2VsbDEsIGNlbGwyKSB7CgoJaWYgKCFjZWxsMSAmJiAhY2VsbDIpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglpZiAoY2VsbDEgJiYgY2VsbDIpIHsKCQlyZXR1cm4gY2VsbDEuZ3JpZCA9PT0gY2VsbDIuZ3JpZCAmJgoJCQljZWxsMS5yb3cgPT09IGNlbGwyLnJvdyAmJgoJCQljZWxsMS5jb2wgPT09IGNlbGwyLmNvbDsKCX0KCglyZXR1cm4gZmFsc2U7Cn0KCjs7CgovKiBDcmVhdGVzIGEgY2xvbmUgb2YgYW4gZWxlbWVudCBhbmQgbGV0cyBpdCB0cmFjayB0aGUgbW91c2UgYXMgaXQgbW92ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgTW91c2VGb2xsb3dlciA9IENsYXNzLmV4dGVuZCh7CgoJb3B0aW9uczogbnVsbCwKCglzb3VyY2VFbDogbnVsbCwgLy8gdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIGNsb25lZCBhbmQgbWFkZSB0byBsb29rIGxpa2UgaXQgaXMgZHJhZ2dpbmcKCWVsOiBudWxsLCAvLyB0aGUgY2xvbmUgb2YgYHNvdXJjZUVsYCB0aGF0IHdpbGwgdHJhY2sgdGhlIG1vdXNlCglwYXJlbnRFbDogbnVsbCwgLy8gdGhlIGVsZW1lbnQgdGhhdCBgZWxgICh0aGUgY2xvbmUpIHdpbGwgYmUgYXR0YWNoZWQgdG8KCgkvLyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiBlbCwgcmVsYXRpdmUgdG8gdGhlIG9mZnNldCBwYXJlbnQuIG1hZGUgdG8gbWF0Y2ggdGhlIGluaXRpYWwgb2Zmc2V0IG9mIHNvdXJjZUVsCgl0b3AwOiBudWxsLAoJbGVmdDA6IG51bGwsCgoJLy8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIG1vdXNlCgltb3VzZVkwOiBudWxsLAoJbW91c2VYMDogbnVsbCwKCgkvLyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGUgbW91c2UgaGFzIG1vdmVkIGZyb20gaXRzIGluaXRpYWwgcG9zaXRpb24KCXRvcERlbHRhOiBudWxsLAoJbGVmdERlbHRhOiBudWxsLAoKCW1vdXNlbW92ZVByb3h5OiBudWxsLCAvLyBkb2N1bWVudCBtb3VzZW1vdmUgaGFuZGxlciwgYm91bmQgdG8gdGhlIE1vdXNlRm9sbG93ZXIncyBgdGhpc2AKCglpc0ZvbGxvd2luZzogZmFsc2UsCglpc0hpZGRlbjogZmFsc2UsCglpc0FuaW1hdGluZzogZmFsc2UsIC8vIGRvaW5nIHRoZSByZXZlcnQgYW5pbWF0aW9uPwoKCWNvbnN0cnVjdG9yOiBmdW5jdGlvbihzb3VyY2VFbCwgb3B0aW9ucykgewoJCXRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJCXRoaXMuc291cmNlRWwgPSBzb3VyY2VFbDsKCQl0aGlzLnBhcmVudEVsID0gb3B0aW9ucy5wYXJlbnRFbCA/ICQob3B0aW9ucy5wYXJlbnRFbCkgOiBzb3VyY2VFbC5wYXJlbnQoKTsgLy8gZGVmYXVsdCB0byBzb3VyY2VFbCdzIHBhcmVudAoJfSwKCgoJLy8gQ2F1c2VzIHRoZSBlbGVtZW50IHRvIHN0YXJ0IGZvbGxvd2luZyB0aGUgbW91c2UKCXN0YXJ0OiBmdW5jdGlvbihldikgewoJCWlmICghdGhpcy5pc0ZvbGxvd2luZykgewoJCQl0aGlzLmlzRm9sbG93aW5nID0gdHJ1ZTsKCgkJCXRoaXMubW91c2VZMCA9IGV2LnBhZ2VZOwoJCQl0aGlzLm1vdXNlWDAgPSBldi5wYWdlWDsKCQkJdGhpcy50b3BEZWx0YSA9IDA7CgkJCXRoaXMubGVmdERlbHRhID0gMDsKCgkJCWlmICghdGhpcy5pc0hpZGRlbikgewoJCQkJdGhpcy51cGRhdGVQb3NpdGlvbigpOwoJCQl9CgoJCQkkKGRvY3VtZW50KS5vbignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmVQcm94eSA9IHByb3h5KHRoaXMsICdtb3VzZW1vdmUnKSk7CgkJfQoJfSwKCgoJLy8gQ2F1c2VzIHRoZSBlbGVtZW50IHRvIHN0b3AgZm9sbG93aW5nIHRoZSBtb3VzZS4gSWYgc2hvdWxkUmV2ZXJ0IGlzIHRydWUsIHdpbGwgYW5pbWF0ZSBiYWNrIHRvIG9yaWdpbmFsIHBvc2l0aW9uLgoJLy8gYGNhbGxiYWNrYCBnZXRzIGludm9rZWQgd2hlbiB0aGUgYW5pbWF0aW9uIGlzIGNvbXBsZXRlLiBJZiBubyBhbmltYXRpb24sIGl0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkuCglzdG9wOiBmdW5jdGlvbihzaG91bGRSZXZlcnQsIGNhbGxiYWNrKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgcmV2ZXJ0RHVyYXRpb24gPSB0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb247CgoJCWZ1bmN0aW9uIGNvbXBsZXRlKCkgewoJCQl0aGlzLmlzQW5pbWF0aW5nID0gZmFsc2U7CgkJCV90aGlzLnJlbW92ZUVsZW1lbnQoKTsKCgkJCXRoaXMudG9wMCA9IHRoaXMubGVmdDAgPSBudWxsOyAvLyByZXNldCBzdGF0ZSBmb3IgZnV0dXJlIHVwZGF0ZVBvc2l0aW9uIGNhbGxzCgoJCQlpZiAoY2FsbGJhY2spIHsKCQkJCWNhbGxiYWNrKCk7CgkJCX0KCQl9CgoJCWlmICh0aGlzLmlzRm9sbG93aW5nICYmICF0aGlzLmlzQW5pbWF0aW5nKSB7IC8vIGRpc2FsbG93IG1vcmUgdGhhbiBvbmUgc3RvcCBhbmltYXRpb24gYXQgYSB0aW1lCgkJCXRoaXMuaXNGb2xsb3dpbmcgPSBmYWxzZTsKCgkJCSQoZG9jdW1lbnQpLm9mZignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZW1vdmVQcm94eSk7CgoJCQlpZiAoc2hvdWxkUmV2ZXJ0ICYmIHJldmVydER1cmF0aW9uICYmICF0aGlzLmlzSGlkZGVuKSB7IC8vIGRvIGEgcmV2ZXJ0IGFuaW1hdGlvbj8KCQkJCXRoaXMuaXNBbmltYXRpbmcgPSB0cnVlOwoJCQkJdGhpcy5lbC5hbmltYXRlKHsKCQkJCQl0b3A6IHRoaXMudG9wMCwKCQkJCQlsZWZ0OiB0aGlzLmxlZnQwCgkJCQl9LCB7CgkJCQkJZHVyYXRpb246IHJldmVydER1cmF0aW9uLAoJCQkJCWNvbXBsZXRlOiBjb21wbGV0ZQoJCQkJfSk7CgkJCX0KCQkJZWxzZSB7CgkJCQljb21wbGV0ZSgpOwoJCQl9CgkJfQoJfSwKCgoJLy8gR2V0cyB0aGUgdHJhY2tpbmcgZWxlbWVudC4gQ3JlYXRlIGl0IGlmIG5lY2Vzc2FyeQoJZ2V0RWw6IGZ1bmN0aW9uKCkgewoJCXZhciBlbCA9IHRoaXMuZWw7CgoJCWlmICghZWwpIHsKCQkJdGhpcy5zb3VyY2VFbC53aWR0aCgpOyAvLyBoYWNrIHRvIGZvcmNlIElFOCB0byBjb21wdXRlIGNvcnJlY3QgYm91bmRpbmcgYm94CgkJCWVsID0gdGhpcy5lbCA9IHRoaXMuc291cmNlRWwuY2xvbmUoKQoJCQkJLmNzcyh7CgkJCQkJcG9zaXRpb246ICdhYnNvbHV0ZScsCgkJCQkJdmlzaWJpbGl0eTogJycsIC8vIGluIGNhc2Ugb3JpZ2luYWwgZWxlbWVudCB3YXMgaGlkZGVuIChjb21tb25seSB0aHJvdWdoIGhpZGVFdmVudHMoKSkKCQkJCQlkaXNwbGF5OiB0aGlzLmlzSGlkZGVuID8gJ25vbmUnIDogJycsIC8vIGZvciB3aGVuIGluaXRpYWxseSBoaWRkZW4KCQkJCQltYXJnaW46IDAsCgkJCQkJcmlnaHQ6ICdhdXRvJywgLy8gZXJhc2UgYW5kIHNldCB3aWR0aCBpbnN0ZWFkCgkJCQkJYm90dG9tOiAnYXV0bycsIC8vIGVyYXNlIGFuZCBzZXQgaGVpZ2h0IGluc3RlYWQKCQkJCQl3aWR0aDogdGhpcy5zb3VyY2VFbC53aWR0aCgpLCAvLyBleHBsaWNpdCBoZWlnaHQgaW4gY2FzZSB0aGVyZSB3YXMgYSAncmlnaHQnIHZhbHVlCgkJCQkJaGVpZ2h0OiB0aGlzLnNvdXJjZUVsLmhlaWdodCgpLCAvLyBleHBsaWNpdCB3aWR0aCBpbiBjYXNlIHRoZXJlIHdhcyBhICdib3R0b20nIHZhbHVlCgkJCQkJb3BhY2l0eTogdGhpcy5vcHRpb25zLm9wYWNpdHkgfHwgJycsCgkJCQkJekluZGV4OiB0aGlzLm9wdGlvbnMuekluZGV4CgkJCQl9KQoJCQkJLmFwcGVuZFRvKHRoaXMucGFyZW50RWwpOwoJCX0KCgkJcmV0dXJuIGVsOwoJfSwKCgoJLy8gUmVtb3ZlcyB0aGUgdHJhY2tpbmcgZWxlbWVudCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmVsKSB7CgkJCXRoaXMuZWwucmVtb3ZlKCk7CgkJCXRoaXMuZWwgPSBudWxsOwoJCX0KCX0sCgoKCS8vIFVwZGF0ZSB0aGUgQ1NTIHBvc2l0aW9uIG9mIHRoZSB0cmFja2luZyBlbGVtZW50Cgl1cGRhdGVQb3NpdGlvbjogZnVuY3Rpb24oKSB7CgkJdmFyIHNvdXJjZU9mZnNldDsKCQl2YXIgb3JpZ2luOwoKCQl0aGlzLmdldEVsKCk7IC8vIGVuc3VyZSB0aGlzLmVsCgoJCS8vIG1ha2Ugc3VyZSBvcmlnaW4gaW5mbyB3YXMgY29tcHV0ZWQKCQlpZiAodGhpcy50b3AwID09PSBudWxsKSB7CgkJCXRoaXMuc291cmNlRWwud2lkdGgoKTsgLy8gaGFjayB0byBmb3JjZSBJRTggdG8gY29tcHV0ZSBjb3JyZWN0IGJvdW5kaW5nIGJveAoJCQlzb3VyY2VPZmZzZXQgPSB0aGlzLnNvdXJjZUVsLm9mZnNldCgpOwoJCQlvcmlnaW4gPSB0aGlzLmVsLm9mZnNldFBhcmVudCgpLm9mZnNldCgpOwoJCQl0aGlzLnRvcDAgPSBzb3VyY2VPZmZzZXQudG9wIC0gb3JpZ2luLnRvcDsKCQkJdGhpcy5sZWZ0MCA9IHNvdXJjZU9mZnNldC5sZWZ0IC0gb3JpZ2luLmxlZnQ7CgkJfQoKCQl0aGlzLmVsLmNzcyh7CgkJCXRvcDogdGhpcy50b3AwICsgdGhpcy50b3BEZWx0YSwKCQkJbGVmdDogdGhpcy5sZWZ0MCArIHRoaXMubGVmdERlbHRhCgkJfSk7Cgl9LAoKCgkvLyBHZXRzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZQoJbW91c2Vtb3ZlOiBmdW5jdGlvbihldikgewoJCXRoaXMudG9wRGVsdGEgPSBldi5wYWdlWSAtIHRoaXMubW91c2VZMDsKCQl0aGlzLmxlZnREZWx0YSA9IGV2LnBhZ2VYIC0gdGhpcy5tb3VzZVgwOwoKCQlpZiAoIXRoaXMuaXNIaWRkZW4pIHsKCQkJdGhpcy51cGRhdGVQb3NpdGlvbigpOwoJCX0KCX0sCgoKCS8vIFRlbXBvcmFyaWx5IG1ha2VzIHRoZSB0cmFja2luZyBlbGVtZW50IGludmlzaWJsZS4gQ2FuIGJlIGNhbGxlZCBiZWZvcmUgZm9sbG93aW5nIHN0YXJ0cwoJaGlkZTogZnVuY3Rpb24oKSB7CgkJaWYgKCF0aGlzLmlzSGlkZGVuKSB7CgkJCXRoaXMuaXNIaWRkZW4gPSB0cnVlOwoJCQlpZiAodGhpcy5lbCkgewoJCQkJdGhpcy5lbC5oaWRlKCk7CgkJCX0KCQl9Cgl9LAoKCgkvLyBTaG93IHRoZSB0cmFja2luZyBlbGVtZW50IGFmdGVyIGl0IGhhcyBiZWVuIHRlbXBvcmFyaWx5IGhpZGRlbgoJc2hvdzogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaXNIaWRkZW4pIHsKCQkJdGhpcy5pc0hpZGRlbiA9IGZhbHNlOwoJCQl0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7CgkJCXRoaXMuZ2V0RWwoKS5zaG93KCk7CgkJfQoJfQoKfSk7Cgo7OwoKLyogQSB1dGlsaXR5IGNsYXNzIGZvciByZW5kZXJpbmcgPHRyPiByb3dzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLy8gSXQgbGV2ZXJhZ2VzIG1ldGhvZHMgb2YgdGhlIHN1YmNsYXNzIGFuZCB0aGUgVmlldyB0byBkZXRlcm1pbmUgY3VzdG9tIHJlbmRlcmluZyBiZWhhdmlvciBmb3IgZWFjaCByb3cgInR5cGUiCi8vIChzdWNoIGFzIGhpZ2hsaWdodCByb3dzLCBkYXkgcm93cywgaGVscGVyIHJvd3MsIGV0YykuCgp2YXIgUm93UmVuZGVyZXIgPSBDbGFzcy5leHRlbmQoewoKCXZpZXc6IG51bGwsIC8vIGEgVmlldyBvYmplY3QKCWlzUlRMOiBudWxsLCAvLyBzaG9ydGN1dCB0byB0aGUgdmlldydzIGlzUlRMIG9wdGlvbgoJY2VsbEh0bWw6ICc8dGQvPicsIC8vIHBsYWluIGRlZmF1bHQgSFRNTCB1c2VkIGZvciBhIGNlbGwgd2hlbiBubyBvdGhlciBpcyBhdmFpbGFibGUKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKHZpZXcpIHsKCQl0aGlzLnZpZXcgPSB2aWV3OwoJCXRoaXMuaXNSVEwgPSB2aWV3Lm9wdCgnaXNSVEwnKTsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgcm93LCBsZXZlcmFnaW5nIGN1c3RvbSBjZWxsLUhUTUwtcmVuZGVyZXJzIGJhc2VkIG9uIHRoZSBgcm93VHlwZWAuCgkvLyBBbHNvIGFwcGxpZXMgdGhlICJpbnRybyIgYW5kICJvdXRybyIgY2VsbHMsIHdoaWNoIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHN1YmNsYXNzIGFuZCB2aWV3cy4KCS8vIGByb3dgIGlzIGFuIG9wdGlvbmFsIHJvdyBudW1iZXIuCglyb3dIdG1sOiBmdW5jdGlvbihyb3dUeXBlLCByb3cpIHsKCQl2YXIgcmVuZGVyQ2VsbCA9IHRoaXMuZ2V0SHRtbFJlbmRlcmVyKCdjZWxsJywgcm93VHlwZSk7CgkJdmFyIHJvd0NlbGxIdG1sID0gJyc7CgkJdmFyIGNvbDsKCQl2YXIgY2VsbDsKCgkJcm93ID0gcm93IHx8IDA7CgoJCWZvciAoY29sID0gMDsgY29sIDwgdGhpcy5jb2xDbnQ7IGNvbCsrKSB7CgkJCWNlbGwgPSB0aGlzLmdldENlbGwocm93LCBjb2wpOwoJCQlyb3dDZWxsSHRtbCArPSByZW5kZXJDZWxsKGNlbGwpOwoJCX0KCgkJcm93Q2VsbEh0bWwgPSB0aGlzLmJvb2tlbmRDZWxscyhyb3dDZWxsSHRtbCwgcm93VHlwZSwgcm93KTsgLy8gYXBwbHkgaW50cm8gYW5kIG91dHJvCgoJCXJldHVybiAnPHRyPicgKyByb3dDZWxsSHRtbCArICc8L3RyPic7Cgl9LAoKCgkvLyBBcHBsaWVzIHRoZSAiaW50cm8iIGFuZCAib3V0cm8iIEhUTUwgdG8gdGhlIGdpdmVuIGNlbGxzLgoJLy8gSW50cm8gbWVhbnMgdGhlIGxlZnRtb3N0IGNlbGwgd2hlbiB0aGUgY2FsZW5kYXIgaXMgTFRSIGFuZCB0aGUgcmlnaHRtb3N0IGNlbGwgd2hlbiBSVEwuIFZpY2UtdmVyc2EgZm9yIG91dHJvLgoJLy8gYGNlbGxzYCBjYW4gYmUgYW4gSFRNTCBzdHJpbmcgb2YgPHRkPidzIG9yIGEgalF1ZXJ5IDx0cj4gZWxlbWVudAoJLy8gYHJvd2AgaXMgYW4gb3B0aW9uYWwgcm93IG51bWJlci4KCWJvb2tlbmRDZWxsczogZnVuY3Rpb24oY2VsbHMsIHJvd1R5cGUsIHJvdykgewoJCXZhciBpbnRybyA9IHRoaXMuZ2V0SHRtbFJlbmRlcmVyKCdpbnRybycsIHJvd1R5cGUpKHJvdyB8fCAwKTsKCQl2YXIgb3V0cm8gPSB0aGlzLmdldEh0bWxSZW5kZXJlcignb3V0cm8nLCByb3dUeXBlKShyb3cgfHwgMCk7CgkJdmFyIHByZXBlbmRIdG1sID0gdGhpcy5pc1JUTCA/IG91dHJvIDogaW50cm87CgkJdmFyIGFwcGVuZEh0bWwgPSB0aGlzLmlzUlRMID8gaW50cm8gOiBvdXRybzsKCgkJaWYgKHR5cGVvZiBjZWxscyA9PT0gJ3N0cmluZycpIHsKCQkJcmV0dXJuIHByZXBlbmRIdG1sICsgY2VsbHMgKyBhcHBlbmRIdG1sOwoJCX0KCQllbHNlIHsgLy8gYSBqUXVlcnkgPHRyPiBlbGVtZW50CgkJCXJldHVybiBjZWxscy5wcmVwZW5kKHByZXBlbmRIdG1sKS5hcHBlbmQoYXBwZW5kSHRtbCk7CgkJfQoJfSwKCgoJLy8gUmV0dXJucyBhbiBIVE1MLXJlbmRlcmluZyBmdW5jdGlvbiBnaXZlbiBhIHNwZWNpZmljIGByZW5kZXJlck5hbWVgIChsaWtlIGNlbGwsIGludHJvLCBvciBvdXRybykgYW5kIGEgc3BlY2lmaWMKCS8vIGByb3dUeXBlYCAobGlrZSBkYXksIGV2ZW50U2tlbGV0b24sIGhlbHBlclNrZWxldG9uKSwgd2hpY2ggaXMgb3B0aW9uYWwuCgkvLyBJZiBhIHJlbmRlcmVyIGZvciB0aGUgc3BlY2lmaWMgcm93VHlwZSBkb2Vzbid0IGV4aXN0LCBpdCB3aWxsIGZhbGwgYmFjayB0byBhIGdlbmVyaWMgcmVuZGVyZXIuCgkvLyBXZSB3aWxsIHF1ZXJ5IHRoZSBWaWV3IG9iamVjdCBmaXJzdCBmb3IgYW55IGN1c3RvbSByZW5kZXJpbmcgZnVuY3Rpb25zLCB0aGVuIHRoZSBtZXRob2RzIG9mIHRoZSBzdWJjbGFzcy4KCWdldEh0bWxSZW5kZXJlcjogZnVuY3Rpb24ocmVuZGVyZXJOYW1lLCByb3dUeXBlKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGdlbmVyYWxOYW1lOyAvLyBsaWtlICJjZWxsSHRtbCIKCQl2YXIgc3BlY2lmaWNOYW1lOyAvLyBsaWtlICJkYXlDZWxsSHRtbCIuIGJhc2VkIG9uIHJvd1R5cGUKCQl2YXIgcHJvdmlkZXI7IC8vIGVpdGhlciB0aGUgVmlldyBvciB0aGUgUm93UmVuZGVyZXIgc3ViY2xhc3MsIHdoaWNoZXZlciBwcm92aWRlZCB0aGUgbWV0aG9kCgkJdmFyIHJlbmRlcmVyOwoKCQlnZW5lcmFsTmFtZSA9IHJlbmRlcmVyTmFtZSArICdIdG1sJzsKCQlpZiAocm93VHlwZSkgewoJCQlzcGVjaWZpY05hbWUgPSByb3dUeXBlICsgY2FwaXRhbGlzZUZpcnN0TGV0dGVyKHJlbmRlcmVyTmFtZSkgKyAnSHRtbCc7CgkJfQoKCQlpZiAoc3BlY2lmaWNOYW1lICYmIChyZW5kZXJlciA9IHZpZXdbc3BlY2lmaWNOYW1lXSkpIHsKCQkJcHJvdmlkZXIgPSB2aWV3OwoJCX0KCQllbHNlIGlmIChzcGVjaWZpY05hbWUgJiYgKHJlbmRlcmVyID0gdGhpc1tzcGVjaWZpY05hbWVdKSkgewoJCQlwcm92aWRlciA9IHRoaXM7CgkJfQoJCWVsc2UgaWYgKChyZW5kZXJlciA9IHZpZXdbZ2VuZXJhbE5hbWVdKSkgewoJCQlwcm92aWRlciA9IHZpZXc7CgkJfQoJCWVsc2UgaWYgKChyZW5kZXJlciA9IHRoaXNbZ2VuZXJhbE5hbWVdKSkgewoJCQlwcm92aWRlciA9IHRoaXM7CgkJfQoKCQlpZiAodHlwZW9mIHJlbmRlcmVyID09PSAnZnVuY3Rpb24nKSB7CgkJCXJldHVybiBmdW5jdGlvbigpIHsKCQkJCXJldHVybiByZW5kZXJlci5hcHBseShwcm92aWRlciwgYXJndW1lbnRzKSB8fCAnJzsgLy8gdXNlIGNvcnJlY3QgYHRoaXNgIGFuZCBhbHdheXMgcmV0dXJuIGEgc3RyaW5nCgkJCX07CgkJfQoKCQkvLyB0aGUgcmVuZGVyZWQgY2FuIGJlIGEgcGxhaW4gc3RyaW5nIGFzIHdlbGwuIGlmIG5vdCBzcGVjaWZpZWQsIGFsd2F5cyBhbiBlbXB0eSBzdHJpbmcuCgkJcmV0dXJuIGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gcmVuZGVyZXIgfHwgJyc7CgkJfTsKCX0KCn0pOwoKOzsKCi8qIEFuIGFic3RyYWN0IGNsYXNzIGNvbXByaXNlZCBvZiBhICJncmlkIiBvZiBjZWxscyB0aGF0IGVhY2ggcmVwcmVzZW50IGEgc3BlY2lmaWMgZGF0ZXRpbWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgR3JpZCA9IGZjLkdyaWQgPSBSb3dSZW5kZXJlci5leHRlbmQoewoKCXN0YXJ0OiBudWxsLCAvLyB0aGUgZGF0ZSBvZiB0aGUgZmlyc3QgY2VsbAoJZW5kOiBudWxsLCAvLyB0aGUgZGF0ZSBhZnRlciB0aGUgbGFzdCBjZWxsCgoJcm93Q250OiAwLCAvLyBudW1iZXIgb2Ygcm93cwoJY29sQ250OiAwLCAvLyBudW1iZXIgb2YgY29scwoKCWVsOiBudWxsLCAvLyB0aGUgY29udGFpbmluZyBlbGVtZW50Cgljb29yZE1hcDogbnVsbCwgLy8gYSBHcmlkQ29vcmRNYXAgdGhhdCBjb252ZXJ0cyBwaXhlbCB2YWx1ZXMgdG8gZGF0ZXRpbWVzCgllbHNCeUZpbGw6IG51bGwsIC8vIGEgaGFzaCBvZiBqUXVlcnkgZWxlbWVudCBzZXRzIHVzZWQgZm9yIHJlbmRlcmluZyBlYWNoIGZpbGwuIEtleWVkIGJ5IGZpbGwgbmFtZS4KCglleHRlcm5hbERyYWdTdGFydFByb3h5OiBudWxsLCAvLyBiaW5kcyB0aGUgR3JpZCdzIHNjb3BlIHRvIGV4dGVybmFsRHJhZ1N0YXJ0IChpbiBEYXlHcmlkLmV2ZW50cykKCgkvLyBkZXJpdmVkIGZyb20gb3B0aW9ucwoJY29sSGVhZEZvcm1hdDogbnVsbCwgLy8gVE9ETzogbW92ZSB0byBhbm90aGVyIGNsYXNzLiBub3QgYXBwbGljYWJsZSB0byBhbGwgR3JpZHMKCWV2ZW50VGltZUZvcm1hdDogbnVsbCwKCWRpc3BsYXlFdmVudFRpbWU6IG51bGwsCglkaXNwbGF5RXZlbnRFbmQ6IG51bGwsCgoJLy8gaWYgYWxsIGNlbGxzIGFyZSB0aGUgc2FtZSBsZW5ndGggb2YgdGltZSwgdGhlIGR1cmF0aW9uIHRoZXkgYWxsIHNoYXJlLiBvcHRpb25hbC4KCS8vIHdoZW4gZGVmaW5lZCwgYWxsb3dzIHRoZSBjb21wdXRlQ2VsbFJhbmdlIHNob3J0Y3V0LCBhcyB3ZWxsIGFzIGltcHJvdmVkIHJlc2l6aW5nIGJlaGF2aW9yLgoJY2VsbER1cmF0aW9uOiBudWxsLAoKCS8vIGlmIGRlZmluZWQsIGhvbGRzIHRoZSB1bml0IGlkZW50aWZpZWQgKGV4OiAieWVhciIgb3IgIm1vbnRoIikgdGhhdCBkZXRlcm1pbmVzIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eQoJLy8gb2YgdGhlIGRhdGUgY2VsbHMuIGlmIG5vdCBkZWZpbmVkLCBhc3N1bWVzIHRvIGJlIGRheSBhbmQgdGltZSBncmFudWxhcml0eS4KCWxhcmdlVW5pdDogbnVsbCwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKCkgewoJCVJvd1JlbmRlcmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLWNvbnN0cnVjdG9yCgoJCXRoaXMuY29vcmRNYXAgPSBuZXcgR3JpZENvb3JkTWFwKHRoaXMpOwoJCXRoaXMuZWxzQnlGaWxsID0ge307CgkJdGhpcy5leHRlcm5hbERyYWdTdGFydFByb3h5ID0gcHJveHkodGhpcywgJ2V4dGVybmFsRHJhZ1N0YXJ0Jyk7Cgl9LAoKCgkvKiBPcHRpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHZW5lcmF0ZXMgdGhlIGZvcm1hdCBzdHJpbmcgdXNlZCBmb3IgdGhlIHRleHQgaW4gY29sdW1uIGhlYWRlcnMsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ2NvbHVtbkZvcm1hdCcKCS8vIFRPRE86IG1vdmUgdG8gYW5vdGhlciBjbGFzcy4gbm90IGFwcGxpY2FibGUgdG8gYWxsIEdyaWRzCgljb21wdXRlQ29sSGVhZEZvcm1hdDogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBpZiB0aGV5IHdhbnQgdG8gdXNlIGhlYWRIdG1sKCkKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgZm9ybWF0IHN0cmluZyB1c2VkIGZvciBldmVudCB0aW1lIHRleHQsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ3RpbWVGb3JtYXQnCgljb21wdXRlRXZlbnRUaW1lRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnc21hbGxUaW1lRm9ybWF0Jyk7Cgl9LAoKCgkvLyBEZXRlcm1pbmVzIHdoZXRoZXIgZXZlbnRzIHNob3VsZCBoYXZlIHRoZWlyIGVuZCB0aW1lcyBkaXNwbGF5ZWQsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ2Rpc3BsYXlFdmVudFRpbWUnLgoJLy8gT25seSBhcHBsaWVzIHRvIG5vbi1hbGwtZGF5IGV2ZW50cy4KCWNvbXB1dGVEaXNwbGF5RXZlbnRUaW1lOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0sCgoKCS8vIERldGVybWluZXMgd2hldGhlciBldmVudHMgc2hvdWxkIGhhdmUgdGhlaXIgZW5kIHRpbWVzIGRpc3BsYXllZCwgaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBieSAnZGlzcGxheUV2ZW50RW5kJwoJY29tcHV0ZURpc3BsYXlFdmVudEVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRydWU7Cgl9LAoKCgkvKiBEYXRlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gVGVsbHMgdGhlIGdyaWQgYWJvdXQgd2hhdCBwZXJpb2Qgb2YgdGltZSB0byBkaXNwbGF5LgoJLy8gQW55IGRhdGUtcmVsYXRlZCBjZWxsIHN5c3RlbSBpbnRlcm5hbCBkYXRhIHNob3VsZCBiZSBnZW5lcmF0ZWQuCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQl0aGlzLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKTsKCQl0aGlzLmVuZCA9IHJhbmdlLmVuZC5jbG9uZSgpOwoKCQl0aGlzLnJhbmdlVXBkYXRlZCgpOwoJCXRoaXMucHJvY2Vzc1JhbmdlT3B0aW9ucygpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gaW50ZXJuYWwgdmFyaWFibGVzIHRoYXQgcmVseSBvbiB0aGUgcmFuZ2Ugc2hvdWxkIGJlIHVwZGF0ZWQKCXJhbmdlVXBkYXRlZDogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBVcGRhdGVzIHZhbHVlcyB0aGF0IHJlbHkgb24gb3B0aW9ucyBhbmQgYWxzbyByZWxhdGUgdG8gcmFuZ2UKCXByb2Nlc3NSYW5nZU9wdGlvbnM6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBkaXNwbGF5RXZlbnRUaW1lOwoJCXZhciBkaXNwbGF5RXZlbnRFbmQ7CgoJCS8vIFBvcHVsYXRlIG9wdGlvbi1kZXJpdmVkIHNldHRpbmdzLiBMb29rIGZvciBvdmVycmlkZSBmaXJzdCwgdGhlbiBjb21wdXRlIGlmIG5lY2Vzc2FyeS4KCQl0aGlzLmNvbEhlYWRGb3JtYXQgPSB2aWV3Lm9wdCgnY29sdW1uRm9ybWF0JykgfHwgdGhpcy5jb21wdXRlQ29sSGVhZEZvcm1hdCgpOwoKCQl0aGlzLmV2ZW50VGltZUZvcm1hdCA9CgkJCXZpZXcub3B0KCdldmVudFRpbWVGb3JtYXQnKSB8fAoJCQl2aWV3Lm9wdCgndGltZUZvcm1hdCcpIHx8IC8vIGRlcHJlY2F0ZWQKCQkJdGhpcy5jb21wdXRlRXZlbnRUaW1lRm9ybWF0KCk7CgoJCWRpc3BsYXlFdmVudFRpbWUgPSB2aWV3Lm9wdCgnZGlzcGxheUV2ZW50VGltZScpOwoJCWlmIChkaXNwbGF5RXZlbnRUaW1lID09IG51bGwpIHsKCQkJZGlzcGxheUV2ZW50VGltZSA9IHRoaXMuY29tcHV0ZURpc3BsYXlFdmVudFRpbWUoKTsgLy8gbWlnaHQgYmUgYmFzZWQgb2ZmIG9mIHJhbmdlCgkJfQoKCQlkaXNwbGF5RXZlbnRFbmQgPSB2aWV3Lm9wdCgnZGlzcGxheUV2ZW50RW5kJyk7CgkJaWYgKGRpc3BsYXlFdmVudEVuZCA9PSBudWxsKSB7CgkJCWRpc3BsYXlFdmVudEVuZCA9IHRoaXMuY29tcHV0ZURpc3BsYXlFdmVudEVuZCgpOyAvLyBtaWdodCBiZSBiYXNlZCBvZmYgb2YgcmFuZ2UKCQl9CgoJCXRoaXMuZGlzcGxheUV2ZW50VGltZSA9IGRpc3BsYXlFdmVudFRpbWU7CgkJdGhpcy5kaXNwbGF5RXZlbnRFbmQgPSBkaXNwbGF5RXZlbnRFbmQ7Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIHRoZSBncmlkJ3MgY29vcmRpbmF0ZXMgd2lsbCBuZWVkIHRvIGJlIHF1ZXJpZWQgZm9yIGNlbGxzLgoJLy8gQW55IG5vbi1kYXRlLXJlbGF0ZWQgY2VsbCBzeXN0ZW0gaW50ZXJuYWwgZGF0YSBzaG91bGQgYmUgYnVpbHQuCglidWlsZDogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBDYWxsZWQgYWZ0ZXIgdGhlIGdyaWQncyBjb29yZGluYXRlcyBhcmUgZG9uZSBiZWluZyByZWxpZWQgdXBvbi4KCS8vIEFueSBub24tZGF0ZS1yZWxhdGVkIGNlbGwgc3lzdGVtIGludGVybmFsIGRhdGEgc2hvdWxkIGJlIGNsZWFyZWQuCgljbGVhcjogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBDb252ZXJ0cyBhIHJhbmdlIHdpdGggYW4gaW5jbHVzaXZlIGBzdGFydGAgYW5kIGFuIGV4Y2x1c2l2ZSBgZW5kYCBpbnRvIGFuIGFycmF5IG9mIHNlZ21lbnQgb2JqZWN0cwoJcmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gRGlmZnMgdGhlIHR3byBkYXRlcywgcmV0dXJuaW5nIGEgZHVyYXRpb24sIGJhc2VkIG9uIGdyYW51bGFyaXR5IG9mIHRoZSBncmlkCglkaWZmRGF0ZXM6IGZ1bmN0aW9uKGEsIGIpIHsKCQlpZiAodGhpcy5sYXJnZVVuaXQpIHsKCQkJcmV0dXJuIGRpZmZCeVVuaXQoYSwgYiwgdGhpcy5sYXJnZVVuaXQpOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGRpZmZEYXlUaW1lKGEsIGIpOwoJCX0KCX0sCgoKCS8qIENlbGxzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJLy8gTk9URTogY29sdW1ucyBhcmUgb3JkZXJlZCBsZWZ0LXRvLXJpZ2h0CgoKCS8vIEdldHMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgcm93L2NvbCBudW1iZXIsIG1pc2MgZGF0YSwgYW5kIHJhbmdlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjZWxsLgoJLy8gQWNjZXB0cyByb3cvY29sIHZhbHVlcywgYW4gb2JqZWN0IHdpdGggcm93L2NvbCBwcm9wZXJ0aWVzLCBvciBhIHNpbmdsZS1udW1iZXIgb2Zmc2V0IGZyb20gdGhlIGZpcnN0IGNlbGwuCglnZXRDZWxsOiBmdW5jdGlvbihyb3csIGNvbCkgewoJCXZhciBjZWxsOwoKCQlpZiAoY29sID09IG51bGwpIHsKCQkJaWYgKHR5cGVvZiByb3cgPT09ICdudW1iZXInKSB7IC8vIGEgc2luZ2xlLW51bWJlciBvZmZzZXQKCQkJCWNvbCA9IHJvdyAlIHRoaXMuY29sQ250OwoJCQkJcm93ID0gTWF0aC5mbG9vcihyb3cgLyB0aGlzLmNvbENudCk7CgkJCX0KCQkJZWxzZSB7IC8vIGFuIG9iamVjdCB3aXRoIHJvdy9jb2wgcHJvcGVydGllcwoJCQkJY29sID0gcm93LmNvbDsKCQkJCXJvdyA9IHJvdy5yb3c7CgkJCX0KCQl9CgoJCWNlbGwgPSB7IHJvdzogcm93LCBjb2w6IGNvbCB9OwoKCQkkLmV4dGVuZChjZWxsLCB0aGlzLmdldFJvd0RhdGEocm93KSwgdGhpcy5nZXRDb2xEYXRhKGNvbCkpOwoJCSQuZXh0ZW5kKGNlbGwsIHRoaXMuY29tcHV0ZUNlbGxSYW5nZShjZWxsKSk7CgoJCXJldHVybiBjZWxsOwoJfSwKCgoJLy8gR2l2ZW4gYSBjZWxsIG9iamVjdCB3aXRoIGluZGV4IGFuZCBtaXNjIGRhdGEsIGdlbmVyYXRlcyBhIHJhbmdlIG9iamVjdAoJLy8gSWYgdGhlIGdyaWQgaXMgbGV2ZXJhZ2luZyBjZWxsRHVyYXRpb24sIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGRlZmluZWQuIE9ubHkgY29tcHV0ZUNlbGxEYXRlIGRvZXMuCgkvLyBJZiBiZWluZyBvdmVycmlkZGVuLCBzaG91bGQgcmV0dXJuIGEgcmFuZ2Ugd2l0aCByZWZlcmVuY2UtZnJlZSBkYXRlIGNvcGllcy4KCWNvbXB1dGVDZWxsUmFuZ2U6IGZ1bmN0aW9uKGNlbGwpIHsKCQl2YXIgZGF0ZSA9IHRoaXMuY29tcHV0ZUNlbGxEYXRlKGNlbGwpOwoKCQlyZXR1cm4gewoJCQlzdGFydDogZGF0ZSwKCQkJZW5kOiBkYXRlLmNsb25lKCkuYWRkKHRoaXMuY2VsbER1cmF0aW9uKQoJCX07Cgl9LAoKCgkvLyBHaXZlbiBhIGNlbGwsIHJldHVybnMgaXRzIHN0YXJ0IGRhdGUuIFNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UtZnJlZSBkYXRlIGNvcHkuCgljb21wdXRlQ2VsbERhdGU6IGZ1bmN0aW9uKGNlbGwpIHsKCQkvLyBzdWJjbGFzc2VzIGNhbiBpbXBsZW1lbnQKCX0sCgoKCS8vIFJldHJpZXZlcyBtaXNjIGRhdGEgYWJvdXQgdGhlIGdpdmVuIHJvdwoJZ2V0Um93RGF0YTogZnVuY3Rpb24ocm93KSB7CgkJcmV0dXJuIHt9OwoJfSwKCgoJLy8gUmV0cmlldmVzIG1pc2MgZGF0YSBiYW91dCB0aGUgZ2l2ZW4gY29sdW1uCglnZXRDb2xEYXRhOiBmdW5jdGlvbihjb2wpIHsKCQlyZXR1cm4ge307Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgdGhlIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiByb3cKCWdldFJvd0VsOiBmdW5jdGlvbihyb3cpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgaWYgbGV2ZXJhZ2luZyB0aGUgZGVmYXVsdCBnZXRDZWxsRGF5RWwoKSBvciBjb21wdXRlUm93Q29vcmRzKCkKCX0sCgoKCS8vIFJldHJpZXZlcyB0aGUgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIGNvbHVtbgoJZ2V0Q29sRWw6IGZ1bmN0aW9uKGNvbCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBpZiBsZXZlcmFnaW5nIHRoZSBkZWZhdWx0IGdldENlbGxEYXlFbCgpIG9yIGNvbXB1dGVDb2xDb29yZHMoKQoJfSwKCgoJLy8gR2l2ZW4gYSBjZWxsIG9iamVjdCwgcmV0dXJucyB0aGUgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgdGhlIGNlbGwncyB3aG9sZS1kYXkKCWdldENlbGxEYXlFbDogZnVuY3Rpb24oY2VsbCkgewoJCXJldHVybiB0aGlzLmdldENvbEVsKGNlbGwuY29sKSB8fCB0aGlzLmdldFJvd0VsKGNlbGwucm93KTsKCX0sCgoKCS8qIENlbGwgQ29vcmRpbmF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENvbXB1dGVzIHRoZSB0b3AvYm90dG9tIGNvb3JkaW5hdGVzIG9mIGFsbCByb3dzLgoJLy8gQnkgZGVmYXVsdCwgcXVlcmllcyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZWxlbWVudCBwcm92aWRlZCBieSBnZXRSb3dFbCgpLgoJY29tcHV0ZVJvd0Nvb3JkczogZnVuY3Rpb24oKSB7CgkJdmFyIGl0ZW1zID0gW107CgkJdmFyIGksIGVsOwoJCXZhciB0b3A7CgoJCWZvciAoaSA9IDA7IGkgPCB0aGlzLnJvd0NudDsgaSsrKSB7CgkJCWVsID0gdGhpcy5nZXRSb3dFbChpKTsKCQkJdG9wID0gZWwub2Zmc2V0KCkudG9wOwoJCQlpdGVtcy5wdXNoKHsKCQkJCXRvcDogdG9wLAoJCQkJYm90dG9tOiB0b3AgKyBlbC5vdXRlckhlaWdodCgpCgkJCX0pOwoJCX0KCgkJcmV0dXJuIGl0ZW1zOwoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGxlZnQvcmlnaHQgY29vcmRpbmF0ZXMgb2YgYWxsIHJvd3MuCgkvLyBCeSBkZWZhdWx0LCBxdWVyaWVzIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBlbGVtZW50IHByb3ZpZGVkIGJ5IGdldENvbEVsKCkuIENvbHVtbnMgY2FuIGJlIExUUiBvciBSVEwuCgljb21wdXRlQ29sQ29vcmRzOiBmdW5jdGlvbigpIHsKCQl2YXIgaXRlbXMgPSBbXTsKCQl2YXIgaSwgZWw7CgkJdmFyIGxlZnQ7CgoJCWZvciAoaSA9IDA7IGkgPCB0aGlzLmNvbENudDsgaSsrKSB7CgkJCWVsID0gdGhpcy5nZXRDb2xFbChpKTsKCQkJbGVmdCA9IGVsLm9mZnNldCgpLmxlZnQ7CgkJCWl0ZW1zLnB1c2goewoJCQkJbGVmdDogbGVmdCwKCQkJCXJpZ2h0OiBsZWZ0ICsgZWwub3V0ZXJXaWR0aCgpCgkJCX0pOwoJCX0KCgkJcmV0dXJuIGl0ZW1zOwoJfSwKCgoJLyogUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBTZXRzIHRoZSBjb250YWluZXIgZWxlbWVudCB0aGF0IHRoZSBncmlkIHNob3VsZCByZW5kZXIgaW5zaWRlIG9mLgoJLy8gRG9lcyBvdGhlciBET00tcmVsYXRlZCBpbml0aWFsaXphdGlvbnMuCglzZXRFbGVtZW50OiBmdW5jdGlvbihlbCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCXRoaXMuZWwgPSBlbDsKCgkJLy8gYXR0YWNoIGEgaGFuZGxlciB0byB0aGUgZ3JpZCdzIHJvb3QgZWxlbWVudC4KCQkvLyBqUXVlcnkgd2lsbCB0YWtlIGNhcmUgb2YgdW5yZWdpc3RlcmluZyB0aGVtIHdoZW4gcmVtb3ZlRWxlbWVudCBnZXRzIGNhbGxlZC4KCQllbC5vbignbW91c2Vkb3duJywgZnVuY3Rpb24oZXYpIHsKCQkJaWYgKAoJCQkJISQoZXYudGFyZ2V0KS5pcygnLmZjLWV2ZW50LWNvbnRhaW5lciAqLCAuZmMtbW9yZScpICYmIC8vIG5vdCBhbiBhbiBldmVudCBlbGVtZW50LCBvciAibW9yZS4uIiBsaW5rCgkJCQkhJChldi50YXJnZXQpLmNsb3Nlc3QoJy5mYy1wb3BvdmVyJykubGVuZ3RoIC8vIG5vdCBvbiBhIHBvcG92ZXIgKGxpa2UgdGhlICJtb3JlLi4iIGV2ZW50cyBvbmUpCgkJCSkgewoJCQkJX3RoaXMuZGF5TW91c2Vkb3duKGV2KTsKCQkJfQoJCX0pOwoKCQkvLyBhdHRhY2ggZXZlbnQtZWxlbWVudC1yZWxhdGVkIGhhbmRsZXJzLiBpbiBHcmlkLmV2ZW50cwoJCS8vIHNhbWUgZ2FyYmFnZSBjb2xsZWN0aW9uIG5vdGUgYXMgYWJvdmUuCgkJdGhpcy5iaW5kU2VnSGFuZGxlcnMoKTsKCgkJdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCX0sCgoKCS8vIFJlbW92ZXMgdGhlIGdyaWQncyBjb250YWluZXIgZWxlbWVudCBmcm9tIHRoZSBET00uIFVuZG9lcyBhbnkgb3RoZXIgRE9NLXJlbGF0ZWQgYXR0YWNobWVudHMuCgkvLyBET0VTIE5PVCByZW1vdmUgYW55IGNvbnRlbnQgYmVmb3JlaGFuZCAoZG9lc24ndCBjbGVhciBldmVudHMgb3IgY2FsbCB1bnJlbmRlckRhdGVzKSwgdW5saWtlIFZpZXcKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCgkJdGhpcy5lbC5yZW1vdmUoKTsKCgkJLy8gTk9URTogd2UgZG9uJ3QgbnVsbC1vdXQgdGhpcy5lbCBmb3IgdGhlIHNhbWUgcmVhc29ucyB3ZSBkb24ndCBkbyBpdCB3aXRoaW4gVmlldzo6cmVtb3ZlRWxlbWVudAoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIGdyaWQgdmlldyBiZWZvcmUgYW55IGNvbnRlbnQgaXMgcmVuZGVyZWQKCXJlbmRlclNrZWxldG9uOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIGdyaWQncyBkYXRlLXJlbGF0ZWQgY29udGVudCAobGlrZSBjZWxscyB0aGF0IHJlcHJlc2VudCBkYXlzL3RpbWVzKS4KCS8vIEFzc3VtZXMgc2V0UmFuZ2UgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgYW5kIHRoZSBza2VsZXRvbiBoYXMgYWxyZWFkeSBiZWVuIHJlbmRlcmVkLgoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBncmlkJ3MgZGF0ZS1yZWxhdGVkIGNvbnRlbnQKCXVucmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLyogSGFuZGxlcnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEJpbmRzIERPTSBoYW5kbGVycyB0byBlbGVtZW50cyB0aGF0IHJlc2lkZSBvdXRzaWRlIHRoZSBncmlkLCBzdWNoIGFzIHRoZSBkb2N1bWVudAoJYmluZEdsb2JhbEhhbmRsZXJzOiBmdW5jdGlvbigpIHsKCQkkKGRvY3VtZW50KS5vbignZHJhZ3N0YXJ0IHNvcnRzdGFydCcsIHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eSk7IC8vIGpxdWkKCX0sCgoKCS8vIFVuYmluZHMgRE9NIGhhbmRsZXJzIGZyb20gZWxlbWVudHMgdGhhdCByZXNpZGUgb3V0c2lkZSB0aGUgZ3JpZAoJdW5iaW5kR2xvYmFsSGFuZGxlcnM6IGZ1bmN0aW9uKCkgewoJCSQoZG9jdW1lbnQpLm9mZignZHJhZ3N0YXJ0IHNvcnRzdGFydCcsIHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eSk7IC8vIGpxdWkKCX0sCgoKCS8vIFByb2Nlc3MgYSBtb3VzZWRvd24gb24gYW4gZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgYSBkYXkuIEZvciBkYXkgY2xpY2tpbmcgYW5kIHNlbGVjdGluZy4KCWRheU1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBpc1NlbGVjdGFibGUgPSB2aWV3Lm9wdCgnc2VsZWN0YWJsZScpOwoJCXZhciBkYXlDbGlja0NlbGw7IC8vIG51bGwgaWYgaW52YWxpZCBkYXlDbGljawoJCXZhciBzZWxlY3Rpb25SYW5nZTsgLy8gbnVsbCBpZiBpbnZhbGlkIHNlbGVjdGlvbgoKCQkvLyB0aGlzIGxpc3RlbmVyIHRyYWNrcyBhIG1vdXNlZG93biBvbiBhIGRheSBlbGVtZW50LCBhbmQgYSBzdWJzZXF1ZW50IGRyYWcuCgkJLy8gaWYgdGhlIGRyYWcgZW5kcyBvbiB0aGUgc2FtZSBkYXksIGl0IGlzIGEgJ2RheUNsaWNrJy4KCQkvLyBpZiAnc2VsZWN0YWJsZScgaXMgZW5hYmxlZCwgdGhpcyBsaXN0ZW5lciBhbHNvIGRldGVjdHMgc2VsZWN0aW9ucy4KCQl2YXIgZHJhZ0xpc3RlbmVyID0gbmV3IENlbGxEcmFnTGlzdGVuZXIodGhpcy5jb29yZE1hcCwgewoJCQkvL2Rpc3RhbmNlOiA1LCAvLyBuZWVkcyBtb3JlIHdvcmsgaWYgd2Ugd2FudCBkYXlDbGljayB0byBmaXJlIGNvcnJlY3RseQoJCQlzY3JvbGw6IHZpZXcub3B0KCdkcmFnU2Nyb2xsJyksCgkJCWRyYWdTdGFydDogZnVuY3Rpb24oKSB7CgkJCQl2aWV3LnVuc2VsZWN0KCk7IC8vIHNpbmNlIHdlIGNvdWxkIGJlIHJlbmRlcmluZyBhIG5ldyBzZWxlY3Rpb24sIHdlIHdhbnQgdG8gY2xlYXIgYW55IG9sZCBvbmUKCQkJfSwKCQkJY2VsbE92ZXI6IGZ1bmN0aW9uKGNlbGwsIGlzT3JpZywgb3JpZ0NlbGwpIHsKCQkJCWlmIChvcmlnQ2VsbCkgeyAvLyBjbGljayBuZWVkcyB0byBoYXZlIHN0YXJ0ZWQgb24gYSBjZWxsCgkJCQkJZGF5Q2xpY2tDZWxsID0gaXNPcmlnID8gY2VsbCA6IG51bGw7IC8vIHNpbmdsZS1jZWxsIHNlbGVjdGlvbiBpcyBhIGRheSBjbGljawoJCQkJCWlmIChpc1NlbGVjdGFibGUpIHsKCQkJCQkJc2VsZWN0aW9uUmFuZ2UgPSBfdGhpcy5jb21wdXRlU2VsZWN0aW9uKG9yaWdDZWxsLCBjZWxsKTsKCQkJCQkJaWYgKHNlbGVjdGlvblJhbmdlKSB7CgkJCQkJCQlfdGhpcy5yZW5kZXJTZWxlY3Rpb24oc2VsZWN0aW9uUmFuZ2UpOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJZGlzYWJsZUN1cnNvcigpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbihjZWxsKSB7CgkJCQlkYXlDbGlja0NlbGwgPSBudWxsOwoJCQkJc2VsZWN0aW9uUmFuZ2UgPSBudWxsOwoJCQkJX3RoaXMudW5yZW5kZXJTZWxlY3Rpb24oKTsKCQkJCWVuYWJsZUN1cnNvcigpOwoJCQl9LAoJCQlsaXN0ZW5TdG9wOiBmdW5jdGlvbihldikgewoJCQkJaWYgKGRheUNsaWNrQ2VsbCkgewoJCQkJCXZpZXcudHJpZ2dlckRheUNsaWNrKGRheUNsaWNrQ2VsbCwgX3RoaXMuZ2V0Q2VsbERheUVsKGRheUNsaWNrQ2VsbCksIGV2KTsKCQkJCX0KCQkJCWlmIChzZWxlY3Rpb25SYW5nZSkgewoJCQkJCS8vIHRoZSBzZWxlY3Rpb24gd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiByZW5kZXJlZC4ganVzdCByZXBvcnQgaXQKCQkJCQl2aWV3LnJlcG9ydFNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZSwgZXYpOwoJCQkJfQoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0KCQl9KTsKCgkJZHJhZ0xpc3RlbmVyLm1vdXNlZG93bihldik7IC8vIHN0YXJ0IGxpc3RlbmluZywgd2hpY2ggd2lsbCBldmVudHVhbGx5IGluaXRpYXRlIGEgZHJhZ1N0YXJ0Cgl9LAoKCgkvKiBFdmVudCBIZWxwZXIKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBzaG91bGQgcHJvYmFibHkgbW92ZSB0aGlzIHRvIEdyaWQuZXZlbnRzLCBsaWtlIHdlIGRpZCBldmVudCBkcmFnZ2luZyAvIHJlc2l6aW5nCgoKCS8vIFJlbmRlcnMgYSBtb2NrIGV2ZW50IG92ZXIgdGhlIGdpdmVuIHJhbmdlCglyZW5kZXJSYW5nZUhlbHBlcjogZnVuY3Rpb24ocmFuZ2UsIHNvdXJjZVNlZykgewoJCXZhciBmYWtlRXZlbnQgPSB0aGlzLmZhYnJpY2F0ZUhlbHBlckV2ZW50KHJhbmdlLCBzb3VyY2VTZWcpOwoKCQl0aGlzLnJlbmRlckhlbHBlcihmYWtlRXZlbnQsIHNvdXJjZVNlZyk7IC8vIGRvIHRoZSBhY3R1YWwgcmVuZGVyaW5nCgl9LAoKCgkvLyBCdWlsZHMgYSBmYWtlIGV2ZW50IGdpdmVuIGEgZGF0ZSByYW5nZSBpdCBzaG91bGQgY292ZXIsIGFuZCBhIHNlZ21lbnQgaXMgc2hvdWxkIGJlIGluc3BpcmVkIGZyb20uCgkvLyBUaGUgcmFuZ2UncyBlbmQgY2FuIGJlIG51bGwsIGluIHdoaWNoIGNhc2UgdGhlIG1vY2sgZXZlbnQgdGhhdCBpcyByZW5kZXJlZCB3aWxsIGhhdmUgYSBudWxsIGVuZCB0aW1lLgoJLy8gYHNvdXJjZVNlZ2AgaXMgdGhlIGludGVybmFsIHNlZ21lbnQgb2JqZWN0IGludm9sdmVkIGluIHRoZSBkcmFnLiBJZiBudWxsLCBzb21ldGhpbmcgZXh0ZXJuYWwgaXMgZHJhZ2dpbmcuCglmYWJyaWNhdGVIZWxwZXJFdmVudDogZnVuY3Rpb24ocmFuZ2UsIHNvdXJjZVNlZykgewoJCXZhciBmYWtlRXZlbnQgPSBzb3VyY2VTZWcgPyBjcmVhdGVPYmplY3Qoc291cmNlU2VnLmV2ZW50KSA6IHt9OyAvLyBtYXNrIHRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QgaWYgcG9zc2libGUKCgkJZmFrZUV2ZW50LnN0YXJ0ID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKTsKCQlmYWtlRXZlbnQuZW5kID0gcmFuZ2UuZW5kID8gcmFuZ2UuZW5kLmNsb25lKCkgOiBudWxsOwoJCWZha2VFdmVudC5hbGxEYXkgPSBudWxsOyAvLyBmb3JjZSBpdCB0byBiZSBmcmVzaGx5IGNvbXB1dGVkIGJ5IG5vcm1hbGl6ZUV2ZW50UmFuZ2UKCQl0aGlzLnZpZXcuY2FsZW5kYXIubm9ybWFsaXplRXZlbnRSYW5nZShmYWtlRXZlbnQpOwoKCQkvLyB0aGlzIGV4dHJhIGNsYXNzTmFtZSB3aWxsIGJlIHVzZWZ1bCBmb3IgZGlmZmVyZW50aWF0aW5nIHJlYWwgZXZlbnRzIGZyb20gbW9jayBldmVudHMgaW4gQ1NTCgkJZmFrZUV2ZW50LmNsYXNzTmFtZSA9IChmYWtlRXZlbnQuY2xhc3NOYW1lIHx8IFtdKS5jb25jYXQoJ2ZjLWhlbHBlcicpOwoKCQkvLyBpZiBzb21ldGhpbmcgZXh0ZXJuYWwgaXMgYmVpbmcgZHJhZ2dlZCBpbiwgZG9uJ3QgcmVuZGVyIGEgcmVzaXplcgoJCWlmICghc291cmNlU2VnKSB7CgkJCWZha2VFdmVudC5lZGl0YWJsZSA9IGZhbHNlOwoJCX0KCgkJcmV0dXJuIGZha2VFdmVudDsKCX0sCgoKCS8vIFJlbmRlcnMgYSBtb2NrIGV2ZW50CglyZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKGV2ZW50LCBzb3VyY2VTZWcpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSBtb2NrIGV2ZW50Cgl1bnJlbmRlckhlbHBlcjogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLyogU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYSBzZWxlY3Rpb24uIFdpbGwgaGlnaGxpZ2h0IGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5zZWxlY3Rpb25SYW5nZVRvU2VncyhyYW5nZSkpOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbnMgb2YgYSBzZWxlY3Rpb24uIFdpbGwgdW5yZW5kZXIgYSBoaWdobGlnaHQgYnkgZGVmYXVsdC4KCXVucmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvLyBHaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgY2VsbHMgb2YgYSBzZWxlY3Rpb24sIHJldHVybnMgYSByYW5nZSBvYmplY3QuCgkvLyBXaWxsIHJldHVybiBzb21ldGhpbmcgZmFsc3kgaWYgdGhlIHNlbGVjdGlvbiBpcyBpbnZhbGlkICh3aGVuIG91dHNpZGUgb2Ygc2VsZWN0aW9uQ29uc3RyYWludCBmb3IgZXhhbXBsZSkuCgkvLyBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlIHJhbmdlIG9iamVjdC4gV2lsbCBiZSBwYXNzZWQgdG8gcmVuZGVyU2VsZWN0aW9uKCkuCgljb21wdXRlU2VsZWN0aW9uOiBmdW5jdGlvbihmaXJzdENlbGwsIGxhc3RDZWxsKSB7CgkJdmFyIGRhdGVzID0gWwoJCQlmaXJzdENlbGwuc3RhcnQsCgkJCWZpcnN0Q2VsbC5lbmQsCgkJCWxhc3RDZWxsLnN0YXJ0LAoJCQlsYXN0Q2VsbC5lbmQKCQldOwoJCXZhciByYW5nZTsKCgkJZGF0ZXMuc29ydChjb21wYXJlTnVtYmVycyk7IC8vIHNvcnRzIGNocm9ub2xvZ2ljYWxseS4gd29ya3Mgd2l0aCBNb21lbnRzCgoJCXJhbmdlID0gewoJCQlzdGFydDogZGF0ZXNbMF0uY2xvbmUoKSwKCQkJZW5kOiBkYXRlc1szXS5jbG9uZSgpCgkJfTsKCgkJaWYgKCF0aGlzLnZpZXcuY2FsZW5kYXIuaXNTZWxlY3Rpb25SYW5nZUFsbG93ZWQocmFuZ2UpKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJcmV0dXJuIHJhbmdlOwoJfSwKCgoJc2VsZWN0aW9uUmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJcmV0dXJuIHRoaXMucmFuZ2VUb1NlZ3MocmFuZ2UpOwoJfSwKCgoJLyogSGlnaGxpZ2h0CgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGFuIGVtcGhhc2lzIG9uIHRoZSBnaXZlbiBkYXRlIHJhbmdlLiBHaXZlbiBhbiBhcnJheSBvZiBzZWdtZW50cy4KCXJlbmRlckhpZ2hsaWdodDogZnVuY3Rpb24oc2VncykgewoJCXRoaXMucmVuZGVyRmlsbCgnaGlnaGxpZ2h0Jywgc2Vncyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIGVtcGhhc2lzIG9uIGEgZGF0ZSByYW5nZQoJdW5yZW5kZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJGaWxsKCdoaWdobGlnaHQnKTsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBhcnJheSBvZiBjbGFzc05hbWVzIGZvciByZW5kZXJpbmcgdGhlIGhpZ2hsaWdodC4gVXNlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCgloaWdobGlnaHRTZWdDbGFzc2VzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gWyAnZmMtaGlnaGxpZ2h0JyBdOwoJfSwKCgoJLyogRmlsbCBTeXN0ZW0gKGhpZ2hsaWdodCwgYmFja2dyb3VuZCBldmVudHMsIGJ1c2luZXNzIGhvdXJzKQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHNldCBvZiByZWN0YW5nbGVzIG92ZXIgdGhlIGdpdmVuIHNlZ21lbnRzIG9mIHRpbWUuCgkvLyBNVVNUIFJFVFVSTiBhIHN1YnNldCBvZiBzZWdzLCB0aGUgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCgkvLyBSZXNwb25zaWJsZSBmb3IgcG9wdWxhdGluZyB0aGlzLmVsc0J5RmlsbC4gVE9ETzogYmV0dGVyIEFQSSBmb3IgZXhwcmVzc2luZyB0aGlzIHJlcXVpcmVtZW50CglyZW5kZXJGaWxsOiBmdW5jdGlvbih0eXBlLCBzZWdzKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgc3BlY2lmaWMgdHlwZSBvZiBmaWxsIHRoYXQgaXMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCgl1bnJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUpIHsKCQl2YXIgZWwgPSB0aGlzLmVsc0J5RmlsbFt0eXBlXTsKCgkJaWYgKGVsKSB7CgkJCWVsLnJlbW92ZSgpOwoJCQlkZWxldGUgdGhpcy5lbHNCeUZpbGxbdHlwZV07CgkJfQoJfSwKCgoJLy8gUmVuZGVycyBhbmQgYXNzaWducyBhbiBgZWxgIHByb3BlcnR5IGZvciBlYWNoIGZpbGwgc2VnbWVudC4gR2VuZXJpYyBlbm91Z2ggdG8gd29yayB3aXRoIGRpZmZlcmVudCB0eXBlcy4KCS8vIE9ubHkgcmV0dXJucyBzZWdtZW50cyB0aGF0IHN1Y2Nlc3NmdWxseSByZW5kZXJlZC4KCS8vIFRvIGJlIGhhcm5lc3NlZCBieSByZW5kZXJGaWxsIChpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzKS4KCS8vIEFuYWxhZ291cyB0byByZW5kZXJGZ1NlZ0Vscy4KCXJlbmRlckZpbGxTZWdFbHM6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciBzZWdFbE1ldGhvZCA9IHRoaXNbdHlwZSArICdTZWdFbCddOwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHJlbmRlcmVkU2VncyA9IFtdOwoJCXZhciBpOwoKCQlpZiAoc2Vncy5sZW5ndGgpIHsKCgkJCS8vIGJ1aWxkIGEgbGFyZ2UgY29uY2F0ZW5hdGlvbiBvZiBzZWdtZW50IEhUTUwKCQkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCWh0bWwgKz0gdGhpcy5maWxsU2VnSHRtbCh0eXBlLCBzZWdzW2ldKTsKCQkJfQoKCQkJLy8gR3JhYiBpbmRpdmlkdWFsIGVsZW1lbnRzIGZyb20gdGhlIGNvbWJpbmVkIEhUTUwgc3RyaW5nLiBVc2UgZWFjaCBhcyB0aGUgZGVmYXVsdCByZW5kZXJpbmcuCgkJCS8vIFRoZW4sIGNvbXB1dGUgdGhlICdlbCcgZm9yIGVhY2ggc2VnbWVudC4KCQkJJChodG1sKS5lYWNoKGZ1bmN0aW9uKGksIG5vZGUpIHsKCQkJCXZhciBzZWcgPSBzZWdzW2ldOwoJCQkJdmFyIGVsID0gJChub2RlKTsKCgkJCQkvLyBhbGxvdyBjdXN0b20gZmlsdGVyIG1ldGhvZHMgcGVyLXR5cGUKCQkJCWlmIChzZWdFbE1ldGhvZCkgewoJCQkJCWVsID0gc2VnRWxNZXRob2QuY2FsbChfdGhpcywgc2VnLCBlbCk7CgkJCQl9CgoJCQkJaWYgKGVsKSB7IC8vIGN1c3RvbSBmaWx0ZXJzIGRpZCBub3QgY2FuY2VsIHRoZSByZW5kZXIKCQkJCQllbCA9ICQoZWwpOyAvLyBhbGxvdyBjdXN0b20gZmlsdGVyIHRvIHJldHVybiByYXcgRE9NIG5vZGUKCgkJCQkJLy8gY29ycmVjdCBlbGVtZW50IHR5cGU/ICh3b3VsZCBiZSBiYWQgaWYgYSBub24tVEQgd2VyZSBpbnNlcnRlZCBpbnRvIGEgdGFibGUgZm9yIGV4YW1wbGUpCgkJCQkJaWYgKGVsLmlzKF90aGlzLmZpbGxTZWdUYWcpKSB7CgkJCQkJCXNlZy5lbCA9IGVsOwoJCQkJCQlyZW5kZXJlZFNlZ3MucHVzaChzZWcpOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmVuZGVyZWRTZWdzOwoJfSwKCgoJZmlsbFNlZ1RhZzogJ2RpdicsIC8vIHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlCgoKCS8vIEJ1aWxkcyB0aGUgSFRNTCBuZWVkZWQgZm9yIG9uZSBmaWxsIHNlZ21lbnQuIEdlbmVyaWMgZW5vdWdodCBvIHdvcmsgd2l0aCBkaWZmZXJlbnQgdHlwZXMuCglmaWxsU2VnSHRtbDogZnVuY3Rpb24odHlwZSwgc2VnKSB7CgoJCS8vIGN1c3RvbSBob29rcyBwZXItdHlwZQoJCXZhciBjbGFzc2VzTWV0aG9kID0gdGhpc1t0eXBlICsgJ1NlZ0NsYXNzZXMnXTsKCQl2YXIgY3NzTWV0aG9kID0gdGhpc1t0eXBlICsgJ1NlZ0NzcyddOwoKCQl2YXIgY2xhc3NlcyA9IGNsYXNzZXNNZXRob2QgPyBjbGFzc2VzTWV0aG9kLmNhbGwodGhpcywgc2VnKSA6IFtdOwoJCXZhciBjc3MgPSBjc3NUb1N0cihjc3NNZXRob2QgPyBjc3NNZXRob2QuY2FsbCh0aGlzLCBzZWcpIDoge30pOwoKCQlyZXR1cm4gJzwnICsgdGhpcy5maWxsU2VnVGFnICsKCQkJKGNsYXNzZXMubGVuZ3RoID8gJyBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInIDogJycpICsKCQkJKGNzcyA/ICcgc3R5bGU9IicgKyBjc3MgKyAnIicgOiAnJykgKwoJCQknIC8+JzsKCX0sCgoKCS8qIEdlbmVyaWMgcmVuZGVyaW5nIHV0aWxpdGllcyBmb3Igc3ViY2xhc3NlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIGRheS1vZi13ZWVrIGhlYWRlciByb3cuCgkvLyBUT0RPOiBtb3ZlIHRvIGFub3RoZXIgY2xhc3MuIG5vdCBhcHBsaWNhYmxlIHRvIGFsbCBHcmlkcwoJaGVhZEh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1yb3cgJyArIHRoaXMudmlldy53aWRnZXRIZWFkZXJDbGFzcyArICciPicgKwoJCQkJJzx0YWJsZT4nICsKCQkJCQknPHRoZWFkPicgKwoJCQkJCQl0aGlzLnJvd0h0bWwoJ2hlYWQnKSArIC8vIGxldmVyYWdlcyBSb3dSZW5kZXJlcgoJCQkJCSc8L3RoZWFkPicgKwoJCQkJJzwvdGFibGU+JyArCgkJCSc8L2Rpdj4nOwoJfSwKCgoJLy8gVXNlZCBieSB0aGUgYGhlYWRIdG1sYCBtZXRob2QsIHZpYSBSb3dSZW5kZXJlciwgZm9yIHJlbmRlcmluZyB0aGUgSFRNTCBvZiBhIGRheS1vZi13ZWVrIGhlYWRlciBjZWxsCgkvLyBUT0RPOiBtb3ZlIHRvIGFub3RoZXIgY2xhc3MuIG5vdCBhcHBsaWNhYmxlIHRvIGFsbCBHcmlkcwoJaGVhZENlbGxIdG1sOiBmdW5jdGlvbihjZWxsKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGRhdGUgPSBjZWxsLnN0YXJ0OwoKCQlyZXR1cm4gJycgKwoJCQknPHRoIGNsYXNzPSJmYy1kYXktaGVhZGVyICcgKyB2aWV3LndpZGdldEhlYWRlckNsYXNzICsgJyBmYy0nICsgZGF5SURzW2RhdGUuZGF5KCldICsgJyI+JyArCgkJCQlodG1sRXNjYXBlKGRhdGUuZm9ybWF0KHRoaXMuY29sSGVhZEZvcm1hdCkpICsKCQkJJzwvdGg+JzsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgc2luZ2xlLWRheSBiYWNrZ3JvdW5kIGNlbGwKCWJnQ2VsbEh0bWw6IGZ1bmN0aW9uKGNlbGwpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZGF0ZSA9IGNlbGwuc3RhcnQ7CgkJdmFyIGNsYXNzZXMgPSB0aGlzLmdldERheUNsYXNzZXMoZGF0ZSk7CgoJCWNsYXNzZXMudW5zaGlmdCgnZmMtZGF5Jywgdmlldy53aWRnZXRDb250ZW50Q2xhc3MpOwoKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInICsKCQkJJyBkYXRhLWRhdGU9IicgKyBkYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgJyInICsgLy8gaWYgZGF0ZSBoYXMgYSB0aW1lLCB3b24ndCBmb3JtYXQgaXQKCQkJJz48L3RkPic7Cgl9LAoKCgkvLyBDb21wdXRlcyBIVE1MIGNsYXNzTmFtZXMgZm9yIGEgc2luZ2xlLWRheSBjZWxsCglnZXREYXlDbGFzc2VzOiBmdW5jdGlvbihkYXRlKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIHRvZGF5ID0gdmlldy5jYWxlbmRhci5nZXROb3coKS5zdHJpcFRpbWUoKTsKCQl2YXIgY2xhc3NlcyA9IFsgJ2ZjLScgKyBkYXlJRHNbZGF0ZS5kYXkoKV0gXTsKCgkJaWYgKAoJCQl2aWV3LmludGVydmFsRHVyYXRpb24uYXMoJ21vbnRocycpID09IDEgJiYKCQkJZGF0ZS5tb250aCgpICE9IHZpZXcuaW50ZXJ2YWxTdGFydC5tb250aCgpCgkJKSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtb3RoZXItbW9udGgnKTsKCQl9CgoJCWlmIChkYXRlLmlzU2FtZSh0b2RheSwgJ2RheScpKSB7CgkJCWNsYXNzZXMucHVzaCgKCQkJCSdmYy10b2RheScsCgkJCQl2aWV3LmhpZ2hsaWdodFN0YXRlQ2xhc3MKCQkJKTsKCQl9CgkJZWxzZSBpZiAoZGF0ZSA8IHRvZGF5KSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtcGFzdCcpOwoJCX0KCQllbHNlIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1mdXR1cmUnKTsKCQl9CgoJCXJldHVybiBjbGFzc2VzOwoJfQoKfSk7Cgo7OwoKLyogRXZlbnQtcmVuZGVyaW5nIGFuZCBldmVudC1pbnRlcmFjdGlvbiBtZXRob2RzIGZvciB0aGUgYWJzdHJhY3QgR3JpZCBjbGFzcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkdyaWQubWl4aW4oewoKCW1vdXNlZE92ZXJTZWc6IG51bGwsIC8vIHRoZSBzZWdtZW50IG9iamVjdCB0aGUgdXNlcidzIG1vdXNlIGlzIG92ZXIuIG51bGwgaWYgb3ZlciBub3RoaW5nCglpc0RyYWdnaW5nU2VnOiBmYWxzZSwgLy8gaXMgYSBzZWdtZW50IGJlaW5nIGRyYWdnZWQ/IGJvb2xlYW4KCWlzUmVzaXppbmdTZWc6IGZhbHNlLCAvLyBpcyBhIHNlZ21lbnQgYmVpbmcgcmVzaXplZD8gYm9vbGVhbgoJaXNEcmFnZ2luZ0V4dGVybmFsOiBmYWxzZSwgLy8ganF1aS1kcmFnZ2luZyBhbiBleHRlcm5hbCBlbGVtZW50PyBib29sZWFuCglzZWdzOiBudWxsLCAvLyB0aGUgZXZlbnQgc2VnbWVudHMgY3VycmVudGx5IHJlbmRlcmVkIGluIHRoZSBncmlkCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGV2ZW50cyBvbnRvIHRoZSBncmlkCglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoZXZlbnRzKTsKCQl2YXIgYmdTZWdzID0gW107CgkJdmFyIGZnU2VncyA9IFtdOwoJCXZhciBpLCBzZWc7CgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgoJCQlpZiAoaXNCZ0V2ZW50KHNlZy5ldmVudCkpIHsKCQkJCWJnU2Vncy5wdXNoKHNlZyk7CgkJCX0KCQkJZWxzZSB7CgkJCQlmZ1NlZ3MucHVzaChzZWcpOwoJCQl9CgkJfQoKCQkvLyBSZW5kZXIgZWFjaCBkaWZmZXJlbnQgdHlwZSBvZiBzZWdtZW50LgoJCS8vIEVhY2ggZnVuY3Rpb24gbWF5IHJldHVybiBhIHN1YnNldCBvZiB0aGUgc2Vncywgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCgkJYmdTZWdzID0gdGhpcy5yZW5kZXJCZ1NlZ3MoYmdTZWdzKSB8fCBiZ1NlZ3M7CgkJZmdTZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ3MoZmdTZWdzKSB8fCBmZ1NlZ3M7CgoJCXRoaXMuc2VncyA9IGJnU2Vncy5jb25jYXQoZmdTZWdzKTsKCX0sCgoKCS8vIFVucmVuZGVycyBhbGwgZXZlbnRzIGN1cnJlbnRseSByZW5kZXJlZCBvbiB0aGUgZ3JpZAoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMudHJpZ2dlclNlZ01vdXNlb3V0KCk7IC8vIHRyaWdnZXIgYW4gZXZlbnRNb3VzZW91dCBpZiB1c2VyJ3MgbW91c2UgaXMgb3ZlciBhbiBldmVudAoKCQl0aGlzLnVucmVuZGVyRmdTZWdzKCk7CgkJdGhpcy51bnJlbmRlckJnU2VncygpOwoKCQl0aGlzLnNlZ3MgPSBudWxsOwoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCByZW5kZXJlZCBzZWdtZW50IG9iamVjdHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCglnZXRFdmVudFNlZ3M6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnNlZ3MgfHwgW107Cgl9LAoKCgkvKiBGb3JlZ3JvdW5kIFNlZ21lbnQgUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGZvcmVncm91bmQgZXZlbnQgc2VnbWVudHMgb250byB0aGUgZ3JpZC4gTWF5IHJldHVybiBhIHN1YnNldCBvZiBzZWdzIHRoYXQgd2VyZSByZW5kZXJlZC4KCXJlbmRlckZnU2VnczogZnVuY3Rpb24oc2VncykgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8vIFVucmVuZGVycyBhbGwgY3VycmVudGx5IHJlbmRlcmVkIGZvcmVncm91bmQgc2VnbWVudHMKCXVucmVuZGVyRmdTZWdzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBSZW5kZXJzIGFuZCBhc3NpZ25zIGFuIGBlbGAgcHJvcGVydHkgZm9yIGVhY2ggZm9yZWdyb3VuZCBldmVudCBzZWdtZW50LgoJLy8gT25seSByZXR1cm5zIHNlZ21lbnRzIHRoYXQgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkLgoJLy8gQSB1dGlsaXR5IHRoYXQgc3ViY2xhc3NlcyBtYXkgdXNlLgoJcmVuZGVyRmdTZWdFbHM6IGZ1bmN0aW9uKHNlZ3MsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHJlbmRlcmVkU2VncyA9IFtdOwoJCXZhciBpOwoKCQlpZiAoc2Vncy5sZW5ndGgpIHsgLy8gZG9uJ3QgYnVpbGQgYW4gZW1wdHkgaHRtbCBzdHJpbmcKCgkJCS8vIGJ1aWxkIGEgbGFyZ2UgY29uY2F0ZW5hdGlvbiBvZiBldmVudCBzZWdtZW50IEhUTUwKCQkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCWh0bWwgKz0gdGhpcy5mZ1NlZ0h0bWwoc2Vnc1tpXSwgZGlzYWJsZVJlc2l6aW5nKTsKCQkJfQoKCQkJLy8gR3JhYiBpbmRpdmlkdWFsIGVsZW1lbnRzIGZyb20gdGhlIGNvbWJpbmVkIEhUTUwgc3RyaW5nLiBVc2UgZWFjaCBhcyB0aGUgZGVmYXVsdCByZW5kZXJpbmcuCgkJCS8vIFRoZW4sIGNvbXB1dGUgdGhlICdlbCcgZm9yIGVhY2ggc2VnbWVudC4gQW4gZWwgbWlnaHQgYmUgbnVsbCBpZiB0aGUgZXZlbnRSZW5kZXIgY2FsbGJhY2sgcmV0dXJuZWQgZmFsc2UuCgkJCSQoaHRtbCkuZWFjaChmdW5jdGlvbihpLCBub2RlKSB7CgkJCQl2YXIgc2VnID0gc2Vnc1tpXTsKCQkJCXZhciBlbCA9IHZpZXcucmVzb2x2ZUV2ZW50RWwoc2VnLmV2ZW50LCAkKG5vZGUpKTsKCgkJCQlpZiAoZWwpIHsKCQkJCQllbC5kYXRhKCdmYy1zZWcnLCBzZWcpOyAvLyB1c2VkIGJ5IGhhbmRsZXJzCgkJCQkJc2VnLmVsID0gZWw7CgkJCQkJcmVuZGVyZWRTZWdzLnB1c2goc2VnKTsKCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmVuZGVyZWRTZWdzOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgZGVmYXVsdCByZW5kZXJpbmcgb2YgYSBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnQuIFVzZWQgYnkgcmVuZGVyRmdTZWdFbHMoKQoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLyogQmFja2dyb3VuZCBTZWdtZW50IFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyB0aGUgZ2l2ZW4gYmFja2dyb3VuZCBldmVudCBzZWdtZW50cyBvbnRvIHRoZSBncmlkLgoJLy8gUmV0dXJucyBhIHN1YnNldCBvZiB0aGUgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCglyZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlyZXR1cm4gdGhpcy5yZW5kZXJGaWxsKCdiZ0V2ZW50Jywgc2Vncyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIHRoZSBjdXJyZW50bHkgcmVuZGVyZWQgYmFja2dyb3VuZCBldmVudCBzZWdtZW50cwoJdW5yZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJGaWxsKCdiZ0V2ZW50Jyk7Cgl9LAoKCgkvLyBSZW5kZXJzIGEgYmFja2dyb3VuZCBldmVudCBlbGVtZW50LCBnaXZlbiB0aGUgZGVmYXVsdCByZW5kZXJpbmcuIENhbGxlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCgliZ0V2ZW50U2VnRWw6IGZ1bmN0aW9uKHNlZywgZWwpIHsKCQlyZXR1cm4gdGhpcy52aWV3LnJlc29sdmVFdmVudEVsKHNlZy5ldmVudCwgZWwpOyAvLyB3aWxsIGZpbHRlciB0aHJvdWdoIGV2ZW50UmVuZGVyCgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgY2xhc3NOYW1lcyB0byBiZSB1c2VkIGZvciB0aGUgZGVmYXVsdCByZW5kZXJpbmcgb2YgYSBiYWNrZ3JvdW5kIGV2ZW50LgoJLy8gQ2FsbGVkIGJ5IHRoZSBmaWxsIHN5c3RlbS4KCWJnRXZlbnRTZWdDbGFzc2VzOiBmdW5jdGlvbihzZWcpIHsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIHNvdXJjZSA9IGV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIFsgJ2ZjLWJnZXZlbnQnIF0uY29uY2F0KAoJCQlldmVudC5jbGFzc05hbWUsCgkJCXNvdXJjZS5jbGFzc05hbWUgfHwgW10KCQkpOwoJfSwKCgoJLy8gR2VuZXJhdGVzIGEgc2VtaWNvbG9uLXNlcGFyYXRlZCBDU1Mgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBkZWZhdWx0IHJlbmRlcmluZyBvZiBhIGJhY2tncm91bmQgZXZlbnQuCgkvLyBDYWxsZWQgYnkgdGhlIGZpbGwgc3lzdGVtLgoJLy8gVE9ETzogY29uc29saWRhdGUgd2l0aCBnZXRFdmVudFNraW5Dc3M/CgliZ0V2ZW50U2VnQ3NzOiBmdW5jdGlvbihzZWcpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIHNvdXJjZSA9IGV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIHsKCQkJJ2JhY2tncm91bmQtY29sb3InOgoJCQkJZXZlbnQuYmFja2dyb3VuZENvbG9yIHx8CgkJCQlldmVudC5jb2xvciB8fAoJCQkJc291cmNlLmJhY2tncm91bmRDb2xvciB8fAoJCQkJc291cmNlLmNvbG9yIHx8CgkJCQl2aWV3Lm9wdCgnZXZlbnRCYWNrZ3JvdW5kQ29sb3InKSB8fAoJCQkJdmlldy5vcHQoJ2V2ZW50Q29sb3InKQoJCX07Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgY2xhc3NOYW1lcyB0byBiZSB1c2VkIGZvciB0aGUgcmVuZGVyaW5nIGJ1c2luZXNzIGhvdXJzIG92ZXJsYXkuIENhbGxlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCglidXNpbmVzc0hvdXJzU2VnQ2xhc3NlczogZnVuY3Rpb24oc2VnKSB7CgkJcmV0dXJuIFsgJ2ZjLW5vbmJ1c2luZXNzJywgJ2ZjLWJnZXZlbnQnIF07Cgl9LAoKCgkvKiBIYW5kbGVycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQXR0YWNoZXMgZXZlbnQtZWxlbWVudC1yZWxhdGVkIGhhbmRsZXJzIHRvIHRoZSBjb250YWluZXIgZWxlbWVudCBhbmQgbGV2ZXJhZ2UgYnViYmxpbmcKCWJpbmRTZWdIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCgkJJC5lYWNoKAoJCQl7CgkJCQltb3VzZWVudGVyOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJX3RoaXMudHJpZ2dlclNlZ01vdXNlb3ZlcihzZWcsIGV2KTsKCQkJCX0sCgkJCQltb3VzZWxlYXZlOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJX3RoaXMudHJpZ2dlclNlZ01vdXNlb3V0KHNlZywgZXYpOwoJCQkJfSwKCQkJCWNsaWNrOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJcmV0dXJuIHZpZXcudHJpZ2dlcignZXZlbnRDbGljaycsIHRoaXMsIHNlZy5ldmVudCwgZXYpOyAvLyBjYW4gcmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsCgkJCQl9LAoJCQkJbW91c2Vkb3duOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJCQkJaWYgKCQoZXYudGFyZ2V0KS5pcygnLmZjLXJlc2l6ZXInKSAmJiB2aWV3LmlzRXZlbnRSZXNpemFibGUoc2VnLmV2ZW50KSkgewoJCQkJCQlfdGhpcy5zZWdSZXNpemVNb3VzZWRvd24oc2VnLCBldiwgJChldi50YXJnZXQpLmlzKCcuZmMtc3RhcnQtcmVzaXplcicpKTsKCQkJCQl9CgkJCQkJZWxzZSBpZiAodmlldy5pc0V2ZW50RHJhZ2dhYmxlKHNlZy5ldmVudCkpIHsKCQkJCQkJX3RoaXMuc2VnRHJhZ01vdXNlZG93bihzZWcsIGV2KTsKCQkJCQl9CgkJCQl9CgkJCX0sCgkJCWZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKCQkJCS8vIGF0dGFjaCB0aGUgaGFuZGxlciB0byB0aGUgY29udGFpbmVyIGVsZW1lbnQgYW5kIG9ubHkgbGlzdGVuIGZvciByZWFsIGV2ZW50IGVsZW1lbnRzIHZpYSBidWJibGluZwoJCQkJX3RoaXMuZWwub24obmFtZSwgJy5mYy1ldmVudC1jb250YWluZXIgPiAqJywgZnVuY3Rpb24oZXYpIHsKCQkJCQl2YXIgc2VnID0gJCh0aGlzKS5kYXRhKCdmYy1zZWcnKTsgLy8gZ3JhYiBzZWdtZW50IGRhdGEuIHB1dCB0aGVyZSBieSBWaWV3OjpyZW5kZXJFdmVudHMKCgkJCQkJLy8gb25seSBjYWxsIHRoZSBoYW5kbGVycyBpZiB0aGVyZSBpcyBub3QgYSBkcmFnL3Jlc2l6ZSBpbiBwcm9ncmVzcwoJCQkJCWlmIChzZWcgJiYgIV90aGlzLmlzRHJhZ2dpbmdTZWcgJiYgIV90aGlzLmlzUmVzaXppbmdTZWcpIHsKCQkJCQkJcmV0dXJuIGZ1bmMuY2FsbCh0aGlzLCBzZWcsIGV2KTsgLy8gYHRoaXNgIHdpbGwgYmUgdGhlIGV2ZW50IGVsZW1lbnQKCQkJCQl9CgkJCQl9KTsKCQkJfQoJCSk7Cgl9LAoKCgkvLyBVcGRhdGVzIGludGVybmFsIHN0YXRlIGFuZCB0cmlnZ2VycyBoYW5kbGVycyBmb3Igd2hlbiBhbiBldmVudCBlbGVtZW50IGlzIG1vdXNlZCBvdmVyCgl0cmlnZ2VyU2VnTW91c2VvdmVyOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJaWYgKCF0aGlzLm1vdXNlZE92ZXJTZWcpIHsKCQkJdGhpcy5tb3VzZWRPdmVyU2VnID0gc2VnOwoJCQl0aGlzLnZpZXcudHJpZ2dlcignZXZlbnRNb3VzZW92ZXInLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYpOwoJCX0KCX0sCgoKCS8vIFVwZGF0ZXMgaW50ZXJuYWwgc3RhdGUgYW5kIHRyaWdnZXJzIGhhbmRsZXJzIGZvciB3aGVuIGFuIGV2ZW50IGVsZW1lbnQgaXMgbW91c2VkIG91dC4KCS8vIENhbiBiZSBnaXZlbiBubyBhcmd1bWVudHMsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBtb3VzZW91dCB0aGUgc2VnbWVudCB0aGF0IHdhcyBwcmV2aW91c2x5IG1vdXNlZCBvdmVyLgoJdHJpZ2dlclNlZ01vdXNlb3V0OiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJZXYgPSBldiB8fCB7fTsgLy8gaWYgZ2l2ZW4gbm8gYXJncywgbWFrZSBhIG1vY2sgbW91c2UgZXZlbnQKCgkJaWYgKHRoaXMubW91c2VkT3ZlclNlZykgewoJCQlzZWcgPSBzZWcgfHwgdGhpcy5tb3VzZWRPdmVyU2VnOyAvLyBpZiBnaXZlbiBubyBhcmdzLCB1c2UgdGhlIGN1cnJlbnRseSBtb3VzZWQtb3ZlciBzZWdtZW50CgkJCXRoaXMubW91c2VkT3ZlclNlZyA9IG51bGw7CgkJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudE1vdXNlb3V0Jywgc2VnLmVsWzBdLCBzZWcuZXZlbnQsIGV2KTsKCQl9Cgl9LAoKCgkvKiBFdmVudCBEcmFnZ2luZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIHVzZXIgZG9lcyBhIG1vdXNlZG93biBvbiBhbiBldmVudCwgd2hpY2ggbWlnaHQgbGVhZCB0byBkcmFnZ2luZy4KCS8vIEdlbmVyaWMgZW5vdWdoIHRvIHdvcmsgd2l0aCBhbnkgdHlwZSBvZiBHcmlkLgoJc2VnRHJhZ01vdXNlZG93bjogZnVuY3Rpb24oc2VnLCBldikgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGNhbGVuZGFyID0gdmlldy5jYWxlbmRhcjsKCQl2YXIgZWwgPSBzZWcuZWw7CgkJdmFyIGV2ZW50ID0gc2VnLmV2ZW50OwoJCXZhciBkcm9wTG9jYXRpb247CgoJCS8vIEEgY2xvbmUgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnQgdGhhdCB3aWxsIG1vdmUgd2l0aCB0aGUgbW91c2UKCQl2YXIgbW91c2VGb2xsb3dlciA9IG5ldyBNb3VzZUZvbGxvd2VyKHNlZy5lbCwgewoJCQlwYXJlbnRFbDogdmlldy5lbCwKCQkJb3BhY2l0eTogdmlldy5vcHQoJ2RyYWdPcGFjaXR5JyksCgkJCXJldmVydER1cmF0aW9uOiB2aWV3Lm9wdCgnZHJhZ1JldmVydER1cmF0aW9uJyksCgkJCXpJbmRleDogMiAvLyBvbmUgYWJvdmUgdGhlIC5mYy12aWV3CgkJfSk7CgoJCS8vIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSAqdmlldydzKiBjb29yZGluYXRlIG1hcC4gQWxsb3dzIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBiZXR3ZWVuIHN1YmNvbXBvbmVudHMKCQkvLyBvZiB0aGUgdmlldy4KCQl2YXIgZHJhZ0xpc3RlbmVyID0gbmV3IENlbGxEcmFnTGlzdGVuZXIodmlldy5jb29yZE1hcCwgewoJCQlkaXN0YW5jZTogNSwKCQkJc2Nyb2xsOiB2aWV3Lm9wdCgnZHJhZ1Njcm9sbCcpLAoJCQlzdWJqZWN0RWw6IGVsLAoJCQlzdWJqZWN0Q2VudGVyOiB0cnVlLAoJCQlsaXN0ZW5TdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCW1vdXNlRm9sbG93ZXIuaGlkZSgpOyAvLyBkb24ndCBzaG93IHVudGlsIHdlIGtub3cgdGhpcyBpcyBhIHJlYWwgZHJhZwoJCQkJbW91c2VGb2xsb3dlci5zdGFydChldik7CgkJCX0sCgkJCWRyYWdTdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCV90aGlzLnRyaWdnZXJTZWdNb3VzZW91dChzZWcsIGV2KTsgLy8gZW5zdXJlIGEgbW91c2VvdXQgb24gdGhlIG1hbmlwdWxhdGVkIGV2ZW50IGhhcyBiZWVuIHJlcG9ydGVkCgkJCQlfdGhpcy5zZWdEcmFnU3RhcnQoc2VnLCBldik7CgkJCQl2aWV3LmhpZGVFdmVudChldmVudCk7IC8vIGhpZGUgYWxsIGV2ZW50IHNlZ21lbnRzLiBvdXIgbW91c2VGb2xsb3dlciB3aWxsIHRha2Ugb3ZlcgoJCQl9LAoJCQljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCwgaXNPcmlnLCBvcmlnQ2VsbCkgewoKCQkJCS8vIHN0YXJ0aW5nIGNlbGwgY291bGQgYmUgZm9yY2VkIChEYXlHcmlkLmxpbWl0KQoJCQkJaWYgKHNlZy5jZWxsKSB7CgkJCQkJb3JpZ0NlbGwgPSBzZWcuY2VsbDsKCQkJCX0KCgkJCQlkcm9wTG9jYXRpb24gPSBfdGhpcy5jb21wdXRlRXZlbnREcm9wKG9yaWdDZWxsLCBjZWxsLCBldmVudCk7CgoJCQkJaWYgKGRyb3BMb2NhdGlvbiAmJiAhY2FsZW5kYXIuaXNFdmVudFJhbmdlQWxsb3dlZChkcm9wTG9jYXRpb24sIGV2ZW50KSkgewoJCQkJCWRpc2FibGVDdXJzb3IoKTsKCQkJCQlkcm9wTG9jYXRpb24gPSBudWxsOwoJCQkJfQoKCQkJCS8vIGlmIGEgdmFsaWQgZHJvcCBsb2NhdGlvbiwgaGF2ZSB0aGUgc3ViY2xhc3MgcmVuZGVyIGEgdmlzdWFsIGluZGljYXRpb24KCQkJCWlmIChkcm9wTG9jYXRpb24gJiYgdmlldy5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbiwgc2VnKSkgewoJCQkJCW1vdXNlRm9sbG93ZXIuaGlkZSgpOyAvLyBpZiB0aGUgc3ViY2xhc3MgaXMgYWxyZWFkeSB1c2luZyBhIG1vY2sgZXZlbnQgImhlbHBlciIsIGhpZGUgb3VyIG93bgoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJbW91c2VGb2xsb3dlci5zaG93KCk7IC8vIG90aGVyd2lzZSwgaGF2ZSB0aGUgaGVscGVyIGZvbGxvdyB0aGUgbW91c2UgKG5vIHNuYXBwaW5nKQoJCQkJfQoKCQkJCWlmIChpc09yaWcpIHsKCQkJCQlkcm9wTG9jYXRpb24gPSBudWxsOyAvLyBuZWVkcyB0byBoYXZlIG1vdmVkIGNlbGxzIHRvIGJlIGEgdmFsaWQgZHJvcAoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbigpIHsgLy8gY2FsbGVkIGJlZm9yZSBtb3VzZSBtb3ZlcyB0byBhIGRpZmZlcmVudCBjZWxsIE9SIG1vdmVkIG91dCBvZiBhbGwgY2VsbHMKCQkJCXZpZXcudW5yZW5kZXJEcmFnKCk7IC8vIHVucmVuZGVyIHdoYXRldmVyIHdhcyBkb25lIGluIHJlbmRlckRyYWcKCQkJCW1vdXNlRm9sbG93ZXIuc2hvdygpOyAvLyBzaG93IGluIGNhc2Ugd2UgYXJlIG1vdmluZyBvdXQgb2YgYWxsIGNlbGxzCgkJCQlkcm9wTG9jYXRpb24gPSBudWxsOwoJCQl9LAoJCQljZWxsRG9uZTogZnVuY3Rpb24oKSB7IC8vIENhbGxlZCBhZnRlciBhIGNlbGxPdXQgT1IgYmVmb3JlIGEgZHJhZ1N0b3AKCQkJCWVuYWJsZUN1cnNvcigpOwoJCQl9LAoJCQlkcmFnU3RvcDogZnVuY3Rpb24oZXYpIHsKCQkJCS8vIGRvIHJldmVydCBhbmltYXRpb24gaWYgaGFzbid0IGNoYW5nZWQuIGNhbGxzIGEgY2FsbGJhY2sgd2hlbiBmaW5pc2hlZCAod2hldGhlciBhbmltYXRpb24gb3Igbm90KQoJCQkJbW91c2VGb2xsb3dlci5zdG9wKCFkcm9wTG9jYXRpb24sIGZ1bmN0aW9uKCkgewoJCQkJCXZpZXcudW5yZW5kZXJEcmFnKCk7CgkJCQkJdmlldy5zaG93RXZlbnQoZXZlbnQpOwoJCQkJCV90aGlzLnNlZ0RyYWdTdG9wKHNlZywgZXYpOwoKCQkJCQlpZiAoZHJvcExvY2F0aW9uKSB7CgkJCQkJCXZpZXcucmVwb3J0RXZlbnREcm9wKGV2ZW50LCBkcm9wTG9jYXRpb24sIHRoaXMubGFyZ2VVbml0LCBlbCwgZXYpOwoJCQkJCX0KCQkJCX0pOwoJCQl9LAoJCQlsaXN0ZW5TdG9wOiBmdW5jdGlvbigpIHsKCQkJCW1vdXNlRm9sbG93ZXIuc3RvcCgpOyAvLyBwdXQgaW4gbGlzdGVuU3RvcCBpbiBjYXNlIHRoZXJlIHdhcyBhIG1vdXNlZG93biBidXQgdGhlIGRyYWcgbmV2ZXIgc3RhcnRlZAoJCQl9CgkJfSk7CgoJCWRyYWdMaXN0ZW5lci5tb3VzZWRvd24oZXYpOyAvLyBzdGFydCBsaXN0ZW5pbmcsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBsZWFkIHRvIGEgZHJhZ1N0YXJ0Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIGV2ZW50IHNlZ21lbnQgZHJhZ2dpbmcgc3RhcnRzCglzZWdEcmFnU3RhcnQ6IGZ1bmN0aW9uKHNlZywgZXYpIHsKCQl0aGlzLmlzRHJhZ2dpbmdTZWcgPSB0cnVlOwoJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudERyYWdTdGFydCcsIHNlZy5lbFswXSwgc2VnLmV2ZW50LCBldiwge30pOyAvLyBsYXN0IGFyZ3VtZW50IGlzIGpxdWkgZHVtbXkKCX0sCgoKCS8vIENhbGxlZCBhZnRlciBldmVudCBzZWdtZW50IGRyYWdnaW5nIHN0b3BzCglzZWdEcmFnU3RvcDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNEcmFnZ2luZ1NlZyA9IGZhbHNlOwoJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudERyYWdTdG9wJywgc2VnLmVsWzBdLCBzZWcuZXZlbnQsIGV2LCB7fSk7IC8vIGxhc3QgYXJndW1lbnQgaXMganF1aSBkdW1teQoJfSwKCgoJLy8gR2l2ZW4gdGhlIGNlbGwgYW4gZXZlbnQgZHJhZyBiZWdhbiwgYW5kIHRoZSBjZWxsIGV2ZW50IHdhcyBkcm9wcGVkLCBjYWxjdWxhdGVzIHRoZSBuZXcgc3RhcnQvZW5kL2FsbERheQoJLy8gdmFsdWVzIGZvciB0aGUgZXZlbnQuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIGFuZCBzZXQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGJlIHVzZWQgYnkgcmVuZGVyRHJhZy4KCS8vIEEgZmFsc3kgcmV0dXJuZWQgdmFsdWUgaW5kaWNhdGVzIGFuIGludmFsaWQgZHJvcC4KCWNvbXB1dGVFdmVudERyb3A6IGZ1bmN0aW9uKHN0YXJ0Q2VsbCwgZW5kQ2VsbCwgZXZlbnQpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLnZpZXcuY2FsZW5kYXI7CgkJdmFyIGRyYWdTdGFydCA9IHN0YXJ0Q2VsbC5zdGFydDsKCQl2YXIgZHJhZ0VuZCA9IGVuZENlbGwuc3RhcnQ7CgkJdmFyIGRlbHRhOwoJCXZhciBkcm9wTG9jYXRpb247CgoJCWlmIChkcmFnU3RhcnQuaGFzVGltZSgpID09PSBkcmFnRW5kLmhhc1RpbWUoKSkgewoJCQlkZWx0YSA9IHRoaXMuZGlmZkRhdGVzKGRyYWdFbmQsIGRyYWdTdGFydCk7CgoJCQkvLyBpZiBhbiBhbGwtZGF5IGV2ZW50IHdhcyBpbiBhIHRpbWVkIGFyZWEgYW5kIGl0IHdhcyBkcmFnZ2VkIHRvIGEgZGlmZmVyZW50IHRpbWUsCgkJCS8vIGd1YXJhbnRlZSBhbiBlbmQgYW5kIGFkanVzdCBzdGFydC9lbmQgdG8gaGF2ZSB0aW1lcwoJCQlpZiAoZXZlbnQuYWxsRGF5ICYmIGR1cmF0aW9uSGFzVGltZShkZWx0YSkpIHsKCQkJCWRyb3BMb2NhdGlvbiA9IHsKCQkJCQlzdGFydDogZXZlbnQuc3RhcnQuY2xvbmUoKSwKCQkJCQllbmQ6IGNhbGVuZGFyLmdldEV2ZW50RW5kKGV2ZW50KSwgLy8gd2lsbCBiZSBhbiBhbWJpZyBkYXkKCQkJCQlhbGxEYXk6IGZhbHNlIC8vIGZvciBub3JtYWxpemVFdmVudFJhbmdlVGltZXMKCQkJCX07CgkJCQljYWxlbmRhci5ub3JtYWxpemVFdmVudFJhbmdlVGltZXMoZHJvcExvY2F0aW9uKTsKCQkJfQoJCQkvLyBvdGhld2lzZSwgd29yayBvZmYgZXhpc3RpbmcgdmFsdWVzCgkJCWVsc2UgewoJCQkJZHJvcExvY2F0aW9uID0gewoJCQkJCXN0YXJ0OiBldmVudC5zdGFydC5jbG9uZSgpLAoJCQkJCWVuZDogZXZlbnQuZW5kID8gZXZlbnQuZW5kLmNsb25lKCkgOiBudWxsLAoJCQkJCWFsbERheTogZXZlbnQuYWxsRGF5IC8vIGtlZXAgaXQgdGhlIHNhbWUKCQkJCX07CgkJCX0KCgkJCWRyb3BMb2NhdGlvbi5zdGFydC5hZGQoZGVsdGEpOwoJCQlpZiAoZHJvcExvY2F0aW9uLmVuZCkgewoJCQkJZHJvcExvY2F0aW9uLmVuZC5hZGQoZGVsdGEpOwoJCQl9CgkJfQoJCWVsc2UgewoJCQkvLyBpZiBzd2l0Y2hpbmcgZnJvbSBkYXkgPC0+IHRpbWVkLCBzdGFydCBzaG91bGQgYmUgcmVzZXQgdG8gdGhlIGRyb3BwZWQgZGF0ZSwgYW5kIHRoZSBlbmQgY2xlYXJlZAoJCQlkcm9wTG9jYXRpb24gPSB7CgkJCQlzdGFydDogZHJhZ0VuZC5jbG9uZSgpLAoJCQkJZW5kOiBudWxsLCAvLyBlbmQgc2hvdWxkIGJlIGNsZWFyZWQKCQkJCWFsbERheTogIWRyYWdFbmQuaGFzVGltZSgpCgkJCX07CgkJfQoKCQlyZXR1cm4gZHJvcExvY2F0aW9uOwoJfSwKCgoJLy8gVXRpbGl0eSBmb3IgYXBwbHkgZHJhZ09wYWNpdHkgdG8gYSBqUXVlcnkgc2V0CglhcHBseURyYWdPcGFjaXR5OiBmdW5jdGlvbihlbHMpIHsKCQl2YXIgb3BhY2l0eSA9IHRoaXMudmlldy5vcHQoJ2RyYWdPcGFjaXR5Jyk7CgoJCWlmIChvcGFjaXR5ICE9IG51bGwpIHsKCQkJZWxzLmVhY2goZnVuY3Rpb24oaSwgbm9kZSkgewoJCQkJLy8gRG9uJ3QgdXNlIGpRdWVyeSAod2lsbCBzZXQgYW4gSUUgZmlsdGVyKSwgZG8gaXQgdGhlIG9sZCBmYXNoaW9uZWQgd2F5LgoJCQkJLy8gSW4gSUU4LCBhIGhlbHBlciBlbGVtZW50IHdpbGwgZGlzYXBwZWFycyBpZiB0aGVyZSdzIGEgZmlsdGVyLgoJCQkJbm9kZS5zdHlsZS5vcGFjaXR5ID0gb3BhY2l0eTsKCQkJfSk7CgkJfQoJfSwKCgoJLyogRXh0ZXJuYWwgRWxlbWVudCBEcmFnZ2luZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ2FsbGVkIHdoZW4gYSBqUXVlcnkgVUkgZHJhZyBpcyBpbml0aWF0ZWQgYW55d2hlcmUgaW4gdGhlIERPTQoJZXh0ZXJuYWxEcmFnU3RhcnQ6IGZ1bmN0aW9uKGV2LCB1aSkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBlbDsKCQl2YXIgYWNjZXB0OwoKCQlpZiAodmlldy5vcHQoJ2Ryb3BwYWJsZScpKSB7IC8vIG9ubHkgbGlzdGVuIGlmIHRoaXMgc2V0dGluZyBpcyBvbgoJCQllbCA9ICQoKHVpID8gdWkuaXRlbSA6IG51bGwpIHx8IGV2LnRhcmdldCk7CgoJCQkvLyBUZXN0IHRoYXQgdGhlIGRyYWdnZWQgZWxlbWVudCBwYXNzZXMgdGhlIGRyb3BBY2NlcHQgc2VsZWN0b3Igb3IgZmlsdGVyIGZ1bmN0aW9uLgoJCQkvLyBGWUksIHRoZSBkZWZhdWx0IGlzICIqIiAobWF0Y2hlcyBhbGwpCgkJCWFjY2VwdCA9IHZpZXcub3B0KCdkcm9wQWNjZXB0Jyk7CgkJCWlmICgkLmlzRnVuY3Rpb24oYWNjZXB0KSA/IGFjY2VwdC5jYWxsKGVsWzBdLCBlbCkgOiBlbC5pcyhhY2NlcHQpKSB7CgkJCQlpZiAoIXRoaXMuaXNEcmFnZ2luZ0V4dGVybmFsKSB7IC8vIHByZXZlbnQgZG91YmxlLWxpc3RlbmluZyBpZiBmaXJlZCB0d2ljZQoJCQkJCXRoaXMubGlzdGVuVG9FeHRlcm5hbERyYWcoZWwsIGV2LCB1aSk7CgkJCQl9CgkJCX0KCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBhIGpRdWVyeSBVSSBkcmFnIHN0YXJ0cyBhbmQgaXQgbmVlZHMgdG8gYmUgbW9uaXRvcmVkIGZvciBjZWxsIGRyb3BwaW5nCglsaXN0ZW5Ub0V4dGVybmFsRHJhZzogZnVuY3Rpb24oZWwsIGV2LCB1aSkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIG1ldGEgPSBnZXREcmFnZ2VkRWxNZXRhKGVsKTsgLy8gZXh0cmEgZGF0YSBhYm91dCBldmVudCBkcm9wLCBpbmNsdWRpbmcgcG9zc2libGUgZXZlbnQgdG8gY3JlYXRlCgkJdmFyIGRyYWdMaXN0ZW5lcjsKCQl2YXIgZHJvcExvY2F0aW9uOyAvLyBhIG51bGwgdmFsdWUgc2lnbmFscyBhbiB1bnN1Y2Nlc3NmdWwgZHJhZwoKCQkvLyBsaXN0ZW5lciB0aGF0IHRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIGRhdGUtYXNzb2NpYXRlZCBwaXhlbCByZWdpb25zCgkJZHJhZ0xpc3RlbmVyID0gbmV3IENlbGxEcmFnTGlzdGVuZXIodGhpcy5jb29yZE1hcCwgewoJCQlsaXN0ZW5TdGFydDogZnVuY3Rpb24oKSB7CgkJCQlfdGhpcy5pc0RyYWdnaW5nRXh0ZXJuYWwgPSB0cnVlOwoJCQl9LAoJCQljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCkgewoJCQkJZHJvcExvY2F0aW9uID0gX3RoaXMuY29tcHV0ZUV4dGVybmFsRHJvcChjZWxsLCBtZXRhKTsKCQkJCWlmIChkcm9wTG9jYXRpb24pIHsKCQkJCQlfdGhpcy5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbik7IC8vIGNhbGxlZCB3aXRob3V0IGEgc2VnIHBhcmFtZXRlcgoJCQkJfQoJCQkJZWxzZSB7IC8vIGludmFsaWQgZHJvcCBjZWxsCgkJCQkJZGlzYWJsZUN1cnNvcigpOwoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbigpIHsKCQkJCWRyb3BMb2NhdGlvbiA9IG51bGw7IC8vIHNpZ25hbCB1bnN1Y2Nlc3NmdWwKCQkJCV90aGlzLnVucmVuZGVyRHJhZygpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWRyYWdTdG9wOiBmdW5jdGlvbigpIHsKCQkJCV90aGlzLnVucmVuZGVyRHJhZygpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgoJCQkJaWYgKGRyb3BMb2NhdGlvbikgeyAvLyBlbGVtZW50IHdhcyBkcm9wcGVkIG9uIGEgdmFsaWQgZGF0ZS90aW1lIGNlbGwKCQkJCQlfdGhpcy52aWV3LnJlcG9ydEV4dGVybmFsRHJvcChtZXRhLCBkcm9wTG9jYXRpb24sIGVsLCBldiwgdWkpOwoJCQkJfQoJCQl9LAoJCQlsaXN0ZW5TdG9wOiBmdW5jdGlvbigpIHsKCQkJCV90aGlzLmlzRHJhZ2dpbmdFeHRlcm5hbCA9IGZhbHNlOwoJCQl9CgkJfSk7CgoJCWRyYWdMaXN0ZW5lci5zdGFydERyYWcoZXYpOyAvLyBzdGFydCBsaXN0ZW5pbmcgaW1tZWRpYXRlbHkKCX0sCgoKCS8vIEdpdmVuIGEgY2VsbCB0byBiZSBkcm9wcGVkIHVwb24sIGFuZCBtaXNjIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBqcXVpIGRyYWcgKGd1YXJhbnRlZWQgdG8gYmUgYSBwbGFpbiBvYmplY3QpLAoJLy8gcmV0dXJucyBzdGFydC9lbmQgZGF0ZXMgZm9yIHRoZSBldmVudCB0aGF0IHdvdWxkIHJlc3VsdCBmcm9tIHRoZSBoeXBvdGhldGljYWwgZHJvcC4gZW5kIG1pZ2h0IGJlIG51bGwuCgkvLyBSZXR1cm5pbmcgYSBudWxsIHZhbHVlIHNpZ25hbHMgYW4gaW52YWxpZCBkcm9wIGNlbGwuCgljb21wdXRlRXh0ZXJuYWxEcm9wOiBmdW5jdGlvbihjZWxsLCBtZXRhKSB7CgkJdmFyIGRyb3BMb2NhdGlvbiA9IHsKCQkJc3RhcnQ6IGNlbGwuc3RhcnQuY2xvbmUoKSwKCQkJZW5kOiBudWxsCgkJfTsKCgkJLy8gaWYgZHJvcHBlZCBvbiBhbiBhbGwtZGF5IGNlbGwsIGFuZCBlbGVtZW50J3MgbWV0YWRhdGEgc3BlY2lmaWVkIGEgdGltZSwgc2V0IGl0CgkJaWYgKG1ldGEuc3RhcnRUaW1lICYmICFkcm9wTG9jYXRpb24uc3RhcnQuaGFzVGltZSgpKSB7CgkJCWRyb3BMb2NhdGlvbi5zdGFydC50aW1lKG1ldGEuc3RhcnRUaW1lKTsKCQl9CgoJCWlmIChtZXRhLmR1cmF0aW9uKSB7CgkJCWRyb3BMb2NhdGlvbi5lbmQgPSBkcm9wTG9jYXRpb24uc3RhcnQuY2xvbmUoKS5hZGQobWV0YS5kdXJhdGlvbik7CgkJfQoKCQlpZiAoIXRoaXMudmlldy5jYWxlbmRhci5pc0V4dGVybmFsRHJvcFJhbmdlQWxsb3dlZChkcm9wTG9jYXRpb24sIG1ldGEuZXZlbnRQcm9wcykpIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQlyZXR1cm4gZHJvcExvY2F0aW9uOwoJfSwKCgoKCS8qIERyYWcgUmVuZGVyaW5nIChmb3IgYm90aCBldmVudHMgYW5kIGFuIGV4dGVybmFsIGVsZW1lbnRzKQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IG9yIGV4dGVybmFsIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC4KCS8vIGBkcm9wTG9jYXRpb25gIGNvbnRhaW5zIGh5cG90aGV0aWNhbCBzdGFydC9lbmQvYWxsRGF5IHZhbHVlcyB0aGUgZXZlbnQgd291bGQgaGF2ZSBpZiBkcm9wcGVkLiBlbmQgY2FuIGJlIG51bGwuCgkvLyBgc2VnYCBpcyB0aGUgaW50ZXJuYWwgc2VnbWVudCBvYmplY3QgdGhhdCBpcyBiZWluZyBkcmFnZ2VkLiBJZiBkcmFnZ2luZyBhbiBleHRlcm5hbCBlbGVtZW50LCBgc2VnYCBpcyBudWxsLgoJLy8gQSB0cnV0aHkgcmV0dXJuZWQgdmFsdWUgaW5kaWNhdGVzIHRoaXMgbWV0aG9kIGhhcyByZW5kZXJlZCBhIGhlbHBlciBlbGVtZW50LgoJcmVuZGVyRHJhZzogZnVuY3Rpb24oZHJvcExvY2F0aW9uLCBzZWcpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBvciBleHRlcm5hbCBlbGVtZW50IGJlaW5nIGRyYWdnZWQKCXVucmVuZGVyRHJhZzogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLyogUmVzaXppbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENhbGxlZCB3aGVuIHRoZSB1c2VyIGRvZXMgYSBtb3VzZWRvd24gb24gYW4gZXZlbnQncyByZXNpemVyLCB3aGljaCBtaWdodCBsZWFkIHRvIHJlc2l6aW5nLgoJLy8gR2VuZXJpYyBlbm91Z2ggdG8gd29yayB3aXRoIGFueSB0eXBlIG9mIEdyaWQuCglzZWdSZXNpemVNb3VzZWRvd246IGZ1bmN0aW9uKHNlZywgZXYsIGlzU3RhcnQpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjYWxlbmRhciA9IHZpZXcuY2FsZW5kYXI7CgkJdmFyIGVsID0gc2VnLmVsOwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgZXZlbnRFbmQgPSBjYWxlbmRhci5nZXRFdmVudEVuZChldmVudCk7CgkJdmFyIGRyYWdMaXN0ZW5lcjsKCQl2YXIgcmVzaXplTG9jYXRpb247IC8vIGZhbHN5IGlmIGludmFsaWQgcmVzaXplCgoJCS8vIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSAqZ3JpZCdzKiBjb29yZGluYXRlIG1hcAoJCWRyYWdMaXN0ZW5lciA9IG5ldyBDZWxsRHJhZ0xpc3RlbmVyKHRoaXMuY29vcmRNYXAsIHsKCQkJZGlzdGFuY2U6IDUsCgkJCXNjcm9sbDogdmlldy5vcHQoJ2RyYWdTY3JvbGwnKSwKCQkJc3ViamVjdEVsOiBlbCwKCQkJZHJhZ1N0YXJ0OiBmdW5jdGlvbihldikgewoJCQkJX3RoaXMudHJpZ2dlclNlZ01vdXNlb3V0KHNlZywgZXYpOyAvLyBlbnN1cmUgYSBtb3VzZW91dCBvbiB0aGUgbWFuaXB1bGF0ZWQgZXZlbnQgaGFzIGJlZW4gcmVwb3J0ZWQKCQkJCV90aGlzLnNlZ1Jlc2l6ZVN0YXJ0KHNlZywgZXYpOwoJCQl9LAoJCQljZWxsT3ZlcjogZnVuY3Rpb24oY2VsbCwgaXNPcmlnLCBvcmlnQ2VsbCkgewoJCQkJcmVzaXplTG9jYXRpb24gPSBpc1N0YXJ0ID8KCQkJCQlfdGhpcy5jb21wdXRlRXZlbnRTdGFydFJlc2l6ZShvcmlnQ2VsbCwgY2VsbCwgZXZlbnQpIDoKCQkJCQlfdGhpcy5jb21wdXRlRXZlbnRFbmRSZXNpemUob3JpZ0NlbGwsIGNlbGwsIGV2ZW50KTsKCgkJCQlpZiAocmVzaXplTG9jYXRpb24pIHsKCQkJCQlpZiAoIWNhbGVuZGFyLmlzRXZlbnRSYW5nZUFsbG93ZWQocmVzaXplTG9jYXRpb24sIGV2ZW50KSkgewoJCQkJCQlkaXNhYmxlQ3Vyc29yKCk7CgkJCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJCQl9CgkJCQkJLy8gbm8gY2hhbmdlPyAoVE9ETzogaG93IGRvZXMgdGhpcyB3b3JrIHdpdGggdGltZXpvbmVzPykKCQkJCQllbHNlIGlmIChyZXNpemVMb2NhdGlvbi5zdGFydC5pc1NhbWUoZXZlbnQuc3RhcnQpICYmIHJlc2l6ZUxvY2F0aW9uLmVuZC5pc1NhbWUoZXZlbnRFbmQpKSB7CgkJCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKHJlc2l6ZUxvY2F0aW9uKSB7CgkJCQkJdmlldy5oaWRlRXZlbnQoZXZlbnQpOwoJCQkJCV90aGlzLnJlbmRlckV2ZW50UmVzaXplKHJlc2l6ZUxvY2F0aW9uLCBzZWcpOwoJCQkJfQoJCQl9LAoJCQljZWxsT3V0OiBmdW5jdGlvbigpIHsgLy8gY2FsbGVkIGJlZm9yZSBtb3VzZSBtb3ZlcyB0byBhIGRpZmZlcmVudCBjZWxsIE9SIG1vdmVkIG91dCBvZiBhbGwgY2VsbHMKCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJfSwKCQkJY2VsbERvbmU6IGZ1bmN0aW9uKCkgeyAvLyByZXNldHMgdGhlIHJlbmRlcmluZyB0byBzaG93IHRoZSBvcmlnaW5hbCBldmVudAoJCQkJX3RoaXMudW5yZW5kZXJFdmVudFJlc2l6ZSgpOwoJCQkJdmlldy5zaG93RXZlbnQoZXZlbnQpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWRyYWdTdG9wOiBmdW5jdGlvbihldikgewoJCQkJX3RoaXMuc2VnUmVzaXplU3RvcChzZWcsIGV2KTsKCgkJCQlpZiAocmVzaXplTG9jYXRpb24pIHsgLy8gdmFsaWQgZGF0ZSB0byByZXNpemUgdG8/CgkJCQkJdmlldy5yZXBvcnRFdmVudFJlc2l6ZShldmVudCwgcmVzaXplTG9jYXRpb24sIHRoaXMubGFyZ2VVbml0LCBlbCwgZXYpOwoJCQkJfQoJCQl9CgkJfSk7CgoJCWRyYWdMaXN0ZW5lci5tb3VzZWRvd24oZXYpOyAvLyBzdGFydCBsaXN0ZW5pbmcsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBsZWFkIHRvIGEgZHJhZ1N0YXJ0Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIGV2ZW50IHNlZ21lbnQgcmVzaXppbmcgc3RhcnRzCglzZWdSZXNpemVTdGFydDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNSZXNpemluZ1NlZyA9IHRydWU7CgkJdGhpcy52aWV3LnRyaWdnZXIoJ2V2ZW50UmVzaXplU3RhcnQnLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYsIHt9KTsgLy8gbGFzdCBhcmd1bWVudCBpcyBqcXVpIGR1bW15Cgl9LAoKCgkvLyBDYWxsZWQgYWZ0ZXIgZXZlbnQgc2VnbWVudCByZXNpemluZyBzdG9wcwoJc2VnUmVzaXplU3RvcDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNSZXNpemluZ1NlZyA9IGZhbHNlOwoJCXRoaXMudmlldy50cmlnZ2VyKCdldmVudFJlc2l6ZVN0b3AnLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYsIHt9KTsgLy8gbGFzdCBhcmd1bWVudCBpcyBqcXVpIGR1bW15Cgl9LAoKCgkvLyBSZXR1cm5zIG5ldyBkYXRlLWluZm9ybWF0aW9uIGZvciBhbiBldmVudCBzZWdtZW50IGJlaW5nIHJlc2l6ZWQgZnJvbSBpdHMgc3RhcnQKCWNvbXB1dGVFdmVudFN0YXJ0UmVzaXplOiBmdW5jdGlvbihzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCdzdGFydCcsIHN0YXJ0Q2VsbCwgZW5kQ2VsbCwgZXZlbnQpOwoJfSwKCgoJLy8gUmV0dXJucyBuZXcgZGF0ZS1pbmZvcm1hdGlvbiBmb3IgYW4gZXZlbnQgc2VnbWVudCBiZWluZyByZXNpemVkIGZyb20gaXRzIGVuZAoJY29tcHV0ZUV2ZW50RW5kUmVzaXplOiBmdW5jdGlvbihzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCdlbmQnLCBzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KTsKCX0sCgoKCS8vIFJldHVybnMgbmV3IGRhdGUtaW5mb3JtYXRpb24gZm9yIGFuIGV2ZW50IHNlZ21lbnQgYmVpbmcgcmVzaXplZCBmcm9tIGl0cyBzdGFydCBPUiBlbmQKCS8vIGB0eXBlYCBpcyBlaXRoZXIgJ3N0YXJ0JyBvciAnZW5kJwoJY29tcHV0ZUV2ZW50UmVzaXplOiBmdW5jdGlvbih0eXBlLCBzdGFydENlbGwsIGVuZENlbGwsIGV2ZW50KSB7CgkJdmFyIGNhbGVuZGFyID0gdGhpcy52aWV3LmNhbGVuZGFyOwoJCXZhciBkZWx0YSA9IHRoaXMuZGlmZkRhdGVzKGVuZENlbGxbdHlwZV0sIHN0YXJ0Q2VsbFt0eXBlXSk7CgkJdmFyIHJhbmdlOwoJCXZhciBkZWZhdWx0RHVyYXRpb247CgoJCS8vIGJ1aWxkIG9yaWdpbmFsIHZhbHVlcyB0byB3b3JrIGZyb20sIGd1YXJhbnRlZWluZyBhIHN0YXJ0IGFuZCBlbmQKCQlyYW5nZSA9IHsKCQkJc3RhcnQ6IGV2ZW50LnN0YXJ0LmNsb25lKCksCgkJCWVuZDogY2FsZW5kYXIuZ2V0RXZlbnRFbmQoZXZlbnQpLAoJCQlhbGxEYXk6IGV2ZW50LmFsbERheQoJCX07CgoJCS8vIGlmIGFuIGFsbC1kYXkgZXZlbnQgd2FzIGluIGEgdGltZWQgYXJlYSBhbmQgd2FzIHJlc2l6ZWQgdG8gYSB0aW1lLCBhZGp1c3Qgc3RhcnQvZW5kIHRvIGhhdmUgdGltZXMKCQlpZiAocmFuZ2UuYWxsRGF5ICYmIGR1cmF0aW9uSGFzVGltZShkZWx0YSkpIHsKCQkJcmFuZ2UuYWxsRGF5ID0gZmFsc2U7CgkJCWNhbGVuZGFyLm5vcm1hbGl6ZUV2ZW50UmFuZ2VUaW1lcyhyYW5nZSk7CgkJfQoKCQlyYW5nZVt0eXBlXS5hZGQoZGVsdGEpOyAvLyBhcHBseSBkZWx0YSB0byBzdGFydCBvciBlbmQKCgkJLy8gaWYgdGhlIGV2ZW50IHdhcyBjb21wcmVzc2VkIHRvbyBzbWFsbCwgZmluZCBhIG5ldyByZWFzb25hYmxlIGR1cmF0aW9uIGZvciBpdAoJCWlmICghcmFuZ2Uuc3RhcnQuaXNCZWZvcmUocmFuZ2UuZW5kKSkgewoKCQkJZGVmYXVsdER1cmF0aW9uID0gZXZlbnQuYWxsRGF5ID8KCQkJCWNhbGVuZGFyLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uIDoKCQkJCWNhbGVuZGFyLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb247CgoJCQkvLyBiZXR3ZWVuIHRoZSBjZWxsJ3MgZHVyYXRpb24gYW5kIHRoZSBldmVudCdzIGRlZmF1bHQgZHVyYXRpb24sIHVzZSB0aGUgc21hbGxlciBvZiB0aGUgdHdvLgoJCQkvLyBleGFtcGxlOiBpZiB5ZWFyLWxlbmd0aCBzbG90cywgYW5kIGNvbXByZXNzZWQgdG8gb25lIHNsb3QsIHdlIGRvbid0IHdhbnQgdGhlIGV2ZW50IHRvIGJlIGEgeWVhciBsb25nCgkJCWlmICh0aGlzLmNlbGxEdXJhdGlvbiAmJiB0aGlzLmNlbGxEdXJhdGlvbiA8IGRlZmF1bHREdXJhdGlvbikgewoJCQkJZGVmYXVsdER1cmF0aW9uID0gdGhpcy5jZWxsRHVyYXRpb247CgkJCX0KCgkJCWlmICh0eXBlID09ICdzdGFydCcpIHsgLy8gcmVzaXppbmcgdGhlIHN0YXJ0PwoJCQkJcmFuZ2Uuc3RhcnQgPSByYW5nZS5lbmQuY2xvbmUoKS5zdWJ0cmFjdChkZWZhdWx0RHVyYXRpb24pOwoJCQl9CgkJCWVsc2UgeyAvLyByZXNpemluZyB0aGUgZW5kPwoJCQkJcmFuZ2UuZW5kID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKS5hZGQoZGVmYXVsdER1cmF0aW9uKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHJhbmdlOwoJfSwKCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQuCgkvLyBgcmFuZ2VgIGhhcyB0aGUgdXBkYXRlZCBkYXRlcyBvZiB0aGUgZXZlbnQuIGBzZWdgIGlzIHRoZSBvcmlnaW5hbCBzZWdtZW50IG9iamVjdCBpbnZvbHZlZCBpbiB0aGUgZHJhZy4KCXJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbihyYW5nZSwgc2VnKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgcmVzaXplZC4KCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8qIFJlbmRlcmluZyBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZSB0aGUgdGV4dCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gYW4gZXZlbnQncyBlbGVtZW50LgoJLy8gYHJhbmdlYCBjYW4gYmUgdGhlIEV2ZW50IG9iamVjdCBpdHNlbGYsIG9yIHNvbWV0aGluZyByYW5nZS1saWtlLCB3aXRoIGF0IGxlYXN0IGEgYHN0YXJ0YC4KCS8vIElmIGV2ZW50IHRpbWVzIGFyZSBkaXNhYmxlZCwgb3IgdGhlIGV2ZW50IGhhcyBubyB0aW1lLCB3aWxsIHJldHVybiBhIGJsYW5rIHN0cmluZy4KCS8vIElmIG5vdCBzcGVjaWZpZWQsIGZvcm1hdFN0ciB3aWxsIGRlZmF1bHQgdG8gdGhlIGV2ZW50VGltZUZvcm1hdCBzZXR0aW5nLAoJLy8gYW5kIGRpc3BsYXlFbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBkaXNwbGF5RXZlbnRFbmQgc2V0dGluZy4KCWdldEV2ZW50VGltZVRleHQ6IGZ1bmN0aW9uKHJhbmdlLCBmb3JtYXRTdHIsIGRpc3BsYXlFbmQpIHsKCgkJaWYgKGZvcm1hdFN0ciA9PSBudWxsKSB7CgkJCWZvcm1hdFN0ciA9IHRoaXMuZXZlbnRUaW1lRm9ybWF0OwoJCX0KCgkJaWYgKGRpc3BsYXlFbmQgPT0gbnVsbCkgewoJCQlkaXNwbGF5RW5kID0gdGhpcy5kaXNwbGF5RXZlbnRFbmQ7CgkJfQoKCQlpZiAodGhpcy5kaXNwbGF5RXZlbnRUaW1lICYmIHJhbmdlLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQlpZiAoZGlzcGxheUVuZCAmJiByYW5nZS5lbmQpIHsKCQkJCXJldHVybiB0aGlzLnZpZXcuZm9ybWF0UmFuZ2UocmFuZ2UsIGZvcm1hdFN0cik7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gcmFuZ2Uuc3RhcnQuZm9ybWF0KGZvcm1hdFN0cik7CgkJCX0KCQl9CgoJCXJldHVybiAnJzsKCX0sCgoKCS8vIEdlbmVyaWMgdXRpbGl0eSBmb3IgZ2VuZXJhdGluZyB0aGUgSFRNTCBjbGFzc05hbWVzIGZvciBhbiBldmVudCBzZWdtZW50J3MgZWxlbWVudAoJZ2V0U2VnQ2xhc3NlczogZnVuY3Rpb24oc2VnLCBpc0RyYWdnYWJsZSwgaXNSZXNpemFibGUpIHsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIGNsYXNzZXMgPSBbCgkJCSdmYy1ldmVudCcsCgkJCXNlZy5pc1N0YXJ0ID8gJ2ZjLXN0YXJ0JyA6ICdmYy1ub3Qtc3RhcnQnLAoJCQlzZWcuaXNFbmQgPyAnZmMtZW5kJyA6ICdmYy1ub3QtZW5kJwoJCV0uY29uY2F0KAoJCQlldmVudC5jbGFzc05hbWUsCgkJCWV2ZW50LnNvdXJjZSA/IGV2ZW50LnNvdXJjZS5jbGFzc05hbWUgOiBbXQoJCSk7CgoJCWlmIChpc0RyYWdnYWJsZSkgewoJCQljbGFzc2VzLnB1c2goJ2ZjLWRyYWdnYWJsZScpOwoJCX0KCQlpZiAoaXNSZXNpemFibGUpIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1yZXNpemFibGUnKTsKCQl9CgoJCXJldHVybiBjbGFzc2VzOwoJfSwKCgoJLy8gVXRpbGl0eSBmb3IgZ2VuZXJhdGluZyBldmVudCBza2luLXJlbGF0ZWQgQ1NTIHByb3BlcnRpZXMKCWdldEV2ZW50U2tpbkNzczogZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgc291cmNlID0gZXZlbnQuc291cmNlIHx8IHt9OwoJCXZhciBldmVudENvbG9yID0gZXZlbnQuY29sb3I7CgkJdmFyIHNvdXJjZUNvbG9yID0gc291cmNlLmNvbG9yOwoJCXZhciBvcHRpb25Db2xvciA9IHZpZXcub3B0KCdldmVudENvbG9yJyk7CgoJCXJldHVybiB7CgkJCSdiYWNrZ3JvdW5kLWNvbG9yJzoKCQkJCWV2ZW50LmJhY2tncm91bmRDb2xvciB8fAoJCQkJZXZlbnRDb2xvciB8fAoJCQkJc291cmNlLmJhY2tncm91bmRDb2xvciB8fAoJCQkJc291cmNlQ29sb3IgfHwKCQkJCXZpZXcub3B0KCdldmVudEJhY2tncm91bmRDb2xvcicpIHx8CgkJCQlvcHRpb25Db2xvciwKCQkJJ2JvcmRlci1jb2xvcic6CgkJCQlldmVudC5ib3JkZXJDb2xvciB8fAoJCQkJZXZlbnRDb2xvciB8fAoJCQkJc291cmNlLmJvcmRlckNvbG9yIHx8CgkJCQlzb3VyY2VDb2xvciB8fAoJCQkJdmlldy5vcHQoJ2V2ZW50Qm9yZGVyQ29sb3InKSB8fAoJCQkJb3B0aW9uQ29sb3IsCgkJCWNvbG9yOgoJCQkJZXZlbnQudGV4dENvbG9yIHx8CgkJCQlzb3VyY2UudGV4dENvbG9yIHx8CgkJCQl2aWV3Lm9wdCgnZXZlbnRUZXh0Q29sb3InKQoJCX07Cgl9LAoKCgkvKiBDb252ZXJ0aW5nIGV2ZW50cyAtPiByYW5nZXMgLT4gc2VncwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cyBpbnRvIGFuIGFycmF5IG9mIGV2ZW50IHNlZ21lbnQgb2JqZWN0cy4KCS8vIEEgY3VzdG9tIGByYW5nZVRvU2Vnc0Z1bmNgIG1heSBiZSBnaXZlbiBmb3IgYXJiaXRyYXJpbHkgc2xpY2luZyB1cCBldmVudHMuCgkvLyBEb2Vzbid0IGd1YXJhbnRlZSBhbiBvcmRlciBmb3IgdGhlIHJlc3VsdGluZyBhcnJheS4KCWV2ZW50c1RvU2VnczogZnVuY3Rpb24oZXZlbnRzLCByYW5nZVRvU2Vnc0Z1bmMpIHsKCQl2YXIgZXZlbnRSYW5nZXMgPSB0aGlzLmV2ZW50c1RvUmFuZ2VzKGV2ZW50cyk7CgkJdmFyIHNlZ3MgPSBbXTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50UmFuZ2VzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZ3MucHVzaC5hcHBseSgKCQkJCXNlZ3MsCgkJCQl0aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoZXZlbnRSYW5nZXNbaV0sIHJhbmdlVG9TZWdzRnVuYykKCQkJKTsKCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnRzIGludG8gYW4gYXJyYXkgb2YgInJhbmdlIiBvYmplY3RzLgoJLy8gQSAicmFuZ2UiIG9iamVjdCBpcyBhIHBsYWluIG9iamVjdCB3aXRoIHN0YXJ0L2VuZCBwcm9wZXJ0aWVzIGRlbm90aW5nIHRoZSB0aW1lIGl0IGNvdmVycy4gQWxzbyBhbiBldmVudCBwcm9wZXJ0eS4KCS8vIEZvciAibm9ybWFsIiBldmVudHMsIHRoaXMgd2lsbCBiZSBpZGVudGljYWwgdG8gdGhlIGV2ZW50J3Mgc3RhcnQvZW5kLCBidXQgZm9yICJpbnZlcnNlLWJhY2tncm91bmQiIGV2ZW50cywKCS8vIHdpbGwgY3JlYXRlIGFuIGFycmF5IG9mIHJhbmdlcyB0aGF0IHNwYW4gdGhlIHRpbWUgKm5vdCogY292ZXJlZCBieSB0aGUgZ2l2ZW4gZXZlbnQuCgkvLyBEb2Vzbid0IGd1YXJhbnRlZSBhbiBvcmRlciBmb3IgdGhlIHJlc3VsdGluZyBhcnJheS4KCWV2ZW50c1RvUmFuZ2VzOiBmdW5jdGlvbihldmVudHMpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciBldmVudHNCeUlkID0gZ3JvdXBFdmVudHNCeUlkKGV2ZW50cyk7CgkJdmFyIHJhbmdlcyA9IFtdOwoKCQkvLyBncm91cCBieSBJRCBzbyB0aGF0IHJlbGF0ZWQgaW52ZXJzZS1iYWNrZ3JvdW5kIGV2ZW50cyBjYW4gYmUgcmVuZGVyZWQgdG9nZXRoZXIKCQkkLmVhY2goZXZlbnRzQnlJZCwgZnVuY3Rpb24oaWQsIGV2ZW50R3JvdXApIHsKCQkJaWYgKGV2ZW50R3JvdXAubGVuZ3RoKSB7CgkJCQlyYW5nZXMucHVzaC5hcHBseSgKCQkJCQlyYW5nZXMsCgkJCQkJaXNJbnZlcnNlQmdFdmVudChldmVudEdyb3VwWzBdKSA/CgkJCQkJCV90aGlzLmV2ZW50c1RvSW52ZXJzZVJhbmdlcyhldmVudEdyb3VwKSA6CgkJCQkJCV90aGlzLmV2ZW50c1RvTm9ybWFsUmFuZ2VzKGV2ZW50R3JvdXApCgkJCQkpOwoJCQl9CgkJfSk7CgoJCXJldHVybiByYW5nZXM7Cgl9LAoKCgkvLyBDb252ZXJ0cyBhbiBhcnJheSBvZiAibm9ybWFsIiBldmVudHMgKG5vdCBpbnZlcnRlZCByZW5kZXJpbmcpIGludG8gYSBwYXJhbGxlbCBhcnJheSBvZiByYW5nZXMKCWV2ZW50c1RvTm9ybWFsUmFuZ2VzOiBmdW5jdGlvbihldmVudHMpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLnZpZXcuY2FsZW5kYXI7CgkJdmFyIHJhbmdlcyA9IFtdOwoJCXZhciBpLCBldmVudDsKCQl2YXIgZXZlbnRTdGFydCwgZXZlbnRFbmQ7CgoJCWZvciAoaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHsKCQkJZXZlbnQgPSBldmVudHNbaV07CgoJCQkvLyBtYWtlIGNvcGllcyBhbmQgbm9ybWFsaXplIGJ5IHN0cmlwcGluZyB0aW1lem9uZQoJCQlldmVudFN0YXJ0ID0gZXZlbnQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKTsKCQkJZXZlbnRFbmQgPSBjYWxlbmRhci5nZXRFdmVudEVuZChldmVudCkuc3RyaXBab25lKCk7CgoJCQlyYW5nZXMucHVzaCh7CgkJCQlldmVudDogZXZlbnQsCgkJCQlzdGFydDogZXZlbnRTdGFydCwKCQkJCWVuZDogZXZlbnRFbmQsCgkJCQlldmVudFN0YXJ0TVM6ICtldmVudFN0YXJ0LAoJCQkJZXZlbnREdXJhdGlvbk1TOiBldmVudEVuZCAtIGV2ZW50U3RhcnQKCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmFuZ2VzOwoJfSwKCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnRzLCB3aXRoIGludmVyc2UtYmFja2dyb3VuZCByZW5kZXJpbmcsIGludG8gYW4gYXJyYXkgb2YgcmFuZ2Ugb2JqZWN0cy4KCS8vIFRoZSByYW5nZSBvYmplY3RzIHdpbGwgY292ZXIgYWxsIHRoZSB0aW1lIE5PVCBjb3ZlcmVkIGJ5IHRoZSBldmVudHMuCglldmVudHNUb0ludmVyc2VSYW5nZXM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciB2aWV3U3RhcnQgPSB2aWV3LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCk7IC8vIG5vcm1hbGl6ZSB0aW1lem9uZQoJCXZhciB2aWV3RW5kID0gdmlldy5lbmQuY2xvbmUoKS5zdHJpcFpvbmUoKTsgLy8gbm9ybWFsaXplIHRpbWV6b25lCgkJdmFyIG5vcm1hbFJhbmdlcyA9IHRoaXMuZXZlbnRzVG9Ob3JtYWxSYW5nZXMoZXZlbnRzKTsgLy8gd2lsbCBnaXZlIHVzIG5vcm1hbGl6ZWQgZGF0ZXMgd2UgY2FuIHVzZSB3L28gY29waWVzCgkJdmFyIGludmVyc2VSYW5nZXMgPSBbXTsKCQl2YXIgZXZlbnQwID0gZXZlbnRzWzBdOyAvLyBhc3NpZ24gdGhpcyB0byBlYWNoIHJhbmdlJ3MgYC5ldmVudGAKCQl2YXIgc3RhcnQgPSB2aWV3U3RhcnQ7IC8vIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHJhbmdlLiB0aGUgc3RhcnQgb2YgdGhlIG5ldyByYW5nZQoJCXZhciBpLCBub3JtYWxSYW5nZTsKCgkJLy8gcmFuZ2VzIG5lZWQgdG8gYmUgaW4gb3JkZXIuIHJlcXVpcmVkIGZvciBvdXIgZGF0ZS13YWxraW5nIGFsZ29yaXRobQoJCW5vcm1hbFJhbmdlcy5zb3J0KGNvbXBhcmVOb3JtYWxSYW5nZXMpOwoKCQlmb3IgKGkgPSAwOyBpIDwgbm9ybWFsUmFuZ2VzLmxlbmd0aDsgaSsrKSB7CgkJCW5vcm1hbFJhbmdlID0gbm9ybWFsUmFuZ2VzW2ldOwoKCQkJLy8gYWRkIHRoZSBzcGFuIG9mIHRpbWUgYmVmb3JlIHRoZSBldmVudCAoaWYgdGhlcmUgaXMgYW55KQoJCQlpZiAobm9ybWFsUmFuZ2Uuc3RhcnQgPiBzdGFydCkgeyAvLyBjb21wYXJlIG1pbGxpc2Vjb25kIHRpbWUgKHNraXAgYW55IGFtYmlnIGxvZ2ljKQoJCQkJaW52ZXJzZVJhbmdlcy5wdXNoKHsKCQkJCQlldmVudDogZXZlbnQwLAoJCQkJCXN0YXJ0OiBzdGFydCwKCQkJCQllbmQ6IG5vcm1hbFJhbmdlLnN0YXJ0CgkJCQl9KTsKCQkJfQoKCQkJc3RhcnQgPSBub3JtYWxSYW5nZS5lbmQ7CgkJfQoKCQkvLyBhZGQgdGhlIHNwYW4gb2YgdGltZSBhZnRlciB0aGUgbGFzdCBldmVudCAoaWYgdGhlcmUgaXMgYW55KQoJCWlmIChzdGFydCA8IHZpZXdFbmQpIHsgLy8gY29tcGFyZSBtaWxsaXNlY29uZCB0aW1lIChza2lwIGFueSBhbWJpZyBsb2dpYykKCQkJaW52ZXJzZVJhbmdlcy5wdXNoKHsKCQkJCWV2ZW50OiBldmVudDAsCgkJCQlzdGFydDogc3RhcnQsCgkJCQllbmQ6IHZpZXdFbmQKCQkJfSk7CgkJfQoKCQlyZXR1cm4gaW52ZXJzZVJhbmdlczsKCX0sCgoKCS8vIFNsaWNlcyB0aGUgZ2l2ZW4gZXZlbnQgcmFuZ2UgaW50byBvbmUgb3IgbW9yZSBzZWdtZW50IG9iamVjdHMuCgkvLyBBIGByYW5nZVRvU2Vnc0Z1bmNgIGN1c3RvbSBzbGljaW5nIGZ1bmN0aW9uIGNhbiBiZSBnaXZlbi4KCWV2ZW50UmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKGV2ZW50UmFuZ2UsIHJhbmdlVG9TZWdzRnVuYykgewoJCXZhciBzZWdzOwoJCXZhciBpLCBzZWc7CgoJCWV2ZW50UmFuZ2UgPSB0aGlzLnZpZXcuY2FsZW5kYXIuZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UoZXZlbnRSYW5nZSk7CgoJCWlmIChyYW5nZVRvU2Vnc0Z1bmMpIHsKCQkJc2VncyA9IHJhbmdlVG9TZWdzRnVuYyhldmVudFJhbmdlKTsKCQl9CgkJZWxzZSB7CgkJCXNlZ3MgPSB0aGlzLnJhbmdlVG9TZWdzKGV2ZW50UmFuZ2UpOyAvLyBkZWZpbmVkIGJ5IHRoZSBzdWJjbGFzcwoJCX0KCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJc2VnLmV2ZW50ID0gZXZlbnRSYW5nZS5ldmVudDsKCQkJc2VnLmV2ZW50U3RhcnRNUyA9IGV2ZW50UmFuZ2UuZXZlbnRTdGFydE1TOwoJCQlzZWcuZXZlbnREdXJhdGlvbk1TID0gZXZlbnRSYW5nZS5ldmVudER1cmF0aW9uTVM7CgkJfQoKCQlyZXR1cm4gc2VnczsKCX0KCn0pOwoKCi8qIFV0aWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgpmdW5jdGlvbiBpc0JnRXZlbnQoZXZlbnQpIHsgLy8gcmV0dXJucyB0cnVlIGlmIGJhY2tncm91bmQgT1IgaW52ZXJzZS1iYWNrZ3JvdW5kCgl2YXIgcmVuZGVyaW5nID0gZ2V0RXZlbnRSZW5kZXJpbmcoZXZlbnQpOwoJcmV0dXJuIHJlbmRlcmluZyA9PT0gJ2JhY2tncm91bmQnIHx8IHJlbmRlcmluZyA9PT0gJ2ludmVyc2UtYmFja2dyb3VuZCc7Cn0KCgpmdW5jdGlvbiBpc0ludmVyc2VCZ0V2ZW50KGV2ZW50KSB7CglyZXR1cm4gZ2V0RXZlbnRSZW5kZXJpbmcoZXZlbnQpID09PSAnaW52ZXJzZS1iYWNrZ3JvdW5kJzsKfQoKCmZ1bmN0aW9uIGdldEV2ZW50UmVuZGVyaW5nKGV2ZW50KSB7CglyZXR1cm4gZmlyc3REZWZpbmVkKChldmVudC5zb3VyY2UgfHwge30pLnJlbmRlcmluZywgZXZlbnQucmVuZGVyaW5nKTsKfQoKCmZ1bmN0aW9uIGdyb3VwRXZlbnRzQnlJZChldmVudHMpIHsKCXZhciBldmVudHNCeUlkID0ge307Cgl2YXIgaSwgZXZlbnQ7CgoJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCWV2ZW50ID0gZXZlbnRzW2ldOwoJCShldmVudHNCeUlkW2V2ZW50Ll9pZF0gfHwgKGV2ZW50c0J5SWRbZXZlbnQuX2lkXSA9IFtdKSkucHVzaChldmVudCk7Cgl9CgoJcmV0dXJuIGV2ZW50c0J5SWQ7Cn0KCgovLyBBIGNtcCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggbm9uLWludmVydGVkICJyYW5nZXMiIChzZWUgYWJvdmUpIGhhcHBlbiBlYXJsaWVyCmZ1bmN0aW9uIGNvbXBhcmVOb3JtYWxSYW5nZXMocmFuZ2UxLCByYW5nZTIpIHsKCXJldHVybiByYW5nZTEuZXZlbnRTdGFydE1TIC0gcmFuZ2UyLmV2ZW50U3RhcnRNUzsgLy8gZWFybGllciByYW5nZXMgZ28gZmlyc3QKfQoKCi8vIEEgY21wIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB3aGljaCBzZWdtZW50cyBzaG91bGQgdGFrZSB2aXN1YWwgcHJpb3JpdHkKLy8gRE9FUyBOT1QgV09SSyBPTiBJTlZFUlRFRCBCQUNLR1JPVU5EIEVWRU5UUyBiZWNhdXNlIHRoZXkgaGF2ZSBubyBldmVudFN0YXJ0TVMvZXZlbnREdXJhdGlvbk1TCmZ1bmN0aW9uIGNvbXBhcmVTZWdzKHNlZzEsIHNlZzIpIHsKCXJldHVybiBzZWcxLmV2ZW50U3RhcnRNUyAtIHNlZzIuZXZlbnRTdGFydE1TIHx8IC8vIGVhcmxpZXIgZXZlbnRzIGdvIGZpcnN0CgkJc2VnMi5ldmVudER1cmF0aW9uTVMgLSBzZWcxLmV2ZW50RHVyYXRpb25NUyB8fCAvLyB0aWU/IGxvbmdlciBldmVudHMgZ28gZmlyc3QKCQlzZWcyLmV2ZW50LmFsbERheSAtIHNlZzEuZXZlbnQuYWxsRGF5IHx8IC8vIHRpZT8gcHV0IGFsbC1kYXkgZXZlbnRzIGZpcnN0IChib29sZWFucyBjYXN0IHRvIDAvMSkKCQkoc2VnMS5ldmVudC50aXRsZSB8fCAnJykubG9jYWxlQ29tcGFyZShzZWcyLmV2ZW50LnRpdGxlKTsgLy8gdGllPyBhbHBoYWJldGljYWxseSBieSB0aXRsZQp9CgpmYy5jb21wYXJlU2VncyA9IGNvbXBhcmVTZWdzOyAvLyBleHBvcnQKCgovKiBFeHRlcm5hbC1EcmFnZ2luZy1FbGVtZW50IERhdGEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovLyBSZXF1aXJlIGFsbCBIVE1MNSBkYXRhLSogYXR0cmlidXRlcyB1c2VkIGJ5IEZ1bGxDYWxlbmRhciB0byBoYXZlIHRoaXMgcHJlZml4LgovLyBBIHZhbHVlIG9mICcnIHdpbGwgcXVlcnkgYXR0cmlidXRlcyBsaWtlIGRhdGEtZXZlbnQuIEEgdmFsdWUgb2YgJ2ZjJyB3aWxsIHF1ZXJ5IGF0dHJpYnV0ZXMgbGlrZSBkYXRhLWZjLWV2ZW50LgpmYy5kYXRhQXR0clByZWZpeCA9ICcnOwoKLy8gR2l2ZW4gYSBqUXVlcnkgZWxlbWVudCB0aGF0IG1pZ2h0IHJlcHJlc2VudCBhIGRyYWdnZWQgRnVsbENhbGVuZGFyIGV2ZW50LCByZXR1cm5zIGFuIGludGVybWVkaWF0ZSBkYXRhIHN0cnVjdHVyZQovLyB0byBiZSB1c2VkIGZvciBFdmVudCBPYmplY3QgY3JlYXRpb24uCi8vIEEgZGVmaW5lZCBgLmV2ZW50UHJvcHNgLCBldmVuIHdoZW4gZW1wdHksIGluZGljYXRlcyB0aGF0IGFuIGV2ZW50IHNob3VsZCBiZSBjcmVhdGVkLgpmdW5jdGlvbiBnZXREcmFnZ2VkRWxNZXRhKGVsKSB7Cgl2YXIgcHJlZml4ID0gZmMuZGF0YUF0dHJQcmVmaXg7Cgl2YXIgZXZlbnRQcm9wczsgLy8gcHJvcGVydGllcyBmb3IgY3JlYXRpbmcgdGhlIGV2ZW50LCBub3QgcmVsYXRlZCB0byBkYXRlL3RpbWUKCXZhciBzdGFydFRpbWU7IC8vIGEgRHVyYXRpb24KCXZhciBkdXJhdGlvbjsKCXZhciBzdGljazsKCglpZiAocHJlZml4KSB7IHByZWZpeCArPSAnLSc7IH0KCWV2ZW50UHJvcHMgPSBlbC5kYXRhKHByZWZpeCArICdldmVudCcpIHx8IG51bGw7CgoJaWYgKGV2ZW50UHJvcHMpIHsKCQlpZiAodHlwZW9mIGV2ZW50UHJvcHMgPT09ICdvYmplY3QnKSB7CgkJCWV2ZW50UHJvcHMgPSAkLmV4dGVuZCh7fSwgZXZlbnRQcm9wcyk7IC8vIG1ha2UgYSBjb3B5CgkJfQoJCWVsc2UgeyAvLyBzb21ldGhpbmcgbGlrZSAxIG9yIHRydWUuIHN0aWxsIHNpZ25hbCBldmVudCBjcmVhdGlvbgoJCQlldmVudFByb3BzID0ge307CgkJfQoKCQkvLyBwbHVjayBzcGVjaWFsLWNhc2VkIGRhdGUvdGltZSBwcm9wZXJ0aWVzCgkJc3RhcnRUaW1lID0gZXZlbnRQcm9wcy5zdGFydDsKCQlpZiAoc3RhcnRUaW1lID09IG51bGwpIHsgc3RhcnRUaW1lID0gZXZlbnRQcm9wcy50aW1lOyB9IC8vIGFjY2VwdCAndGltZScgYXMgd2VsbAoJCWR1cmF0aW9uID0gZXZlbnRQcm9wcy5kdXJhdGlvbjsKCQlzdGljayA9IGV2ZW50UHJvcHMuc3RpY2s7CgkJZGVsZXRlIGV2ZW50UHJvcHMuc3RhcnQ7CgkJZGVsZXRlIGV2ZW50UHJvcHMudGltZTsKCQlkZWxldGUgZXZlbnRQcm9wcy5kdXJhdGlvbjsKCQlkZWxldGUgZXZlbnRQcm9wcy5zdGljazsKCX0KCgkvLyBmYWxsYmFjayB0byBzdGFuZGFsb25lIGF0dHJpYnV0ZSB2YWx1ZXMgZm9yIGVhY2ggb2YgdGhlIGRhdGUvdGltZSBwcm9wZXJ0aWVzCglpZiAoc3RhcnRUaW1lID09IG51bGwpIHsgc3RhcnRUaW1lID0gZWwuZGF0YShwcmVmaXggKyAnc3RhcnQnKTsgfQoJaWYgKHN0YXJ0VGltZSA9PSBudWxsKSB7IHN0YXJ0VGltZSA9IGVsLmRhdGEocHJlZml4ICsgJ3RpbWUnKTsgfSAvLyBhY2NlcHQgJ3RpbWUnIGFzIHdlbGwKCWlmIChkdXJhdGlvbiA9PSBudWxsKSB7IGR1cmF0aW9uID0gZWwuZGF0YShwcmVmaXggKyAnZHVyYXRpb24nKTsgfQoJaWYgKHN0aWNrID09IG51bGwpIHsgc3RpY2sgPSBlbC5kYXRhKHByZWZpeCArICdzdGljaycpOyB9CgoJLy8gbWFzc2FnZSBpbnRvIGNvcnJlY3QgZGF0YSB0eXBlcwoJc3RhcnRUaW1lID0gc3RhcnRUaW1lICE9IG51bGwgPyBtb21lbnQuZHVyYXRpb24oc3RhcnRUaW1lKSA6IG51bGw7CglkdXJhdGlvbiA9IGR1cmF0aW9uICE9IG51bGwgPyBtb21lbnQuZHVyYXRpb24oZHVyYXRpb24pIDogbnVsbDsKCXN0aWNrID0gQm9vbGVhbihzdGljayk7CgoJcmV0dXJuIHsgZXZlbnRQcm9wczogZXZlbnRQcm9wcywgc3RhcnRUaW1lOiBzdGFydFRpbWUsIGR1cmF0aW9uOiBkdXJhdGlvbiwgc3RpY2s6IHN0aWNrIH07Cn0KCgo7OwoKLyogQSBjb21wb25lbnQgdGhhdCByZW5kZXJzIGEgZ3JpZCBvZiB3aG9sZS1kYXlzIHRoYXQgcnVucyBob3Jpem9udGFsbHkuIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSByb3dzLCBvbmUgcGVyIHdlZWsuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIERheUdyaWQgPSBHcmlkLmV4dGVuZCh7CgoJbnVtYmVyc1Zpc2libGU6IGZhbHNlLCAvLyBzaG91bGQgcmVuZGVyIGEgcm93IGZvciBkYXkvd2VlayBudW1iZXJzPyBzZXQgYnkgb3V0c2lkZSB2aWV3LiBUT0RPOiBtYWtlIGludGVybmFsCglib3R0b21Db29yZFBhZGRpbmc6IDAsIC8vIGhhY2sgZm9yIGV4dGVuZGluZyB0aGUgaGl0IGFyZWEgZm9yIHRoZSBsYXN0IHJvdyBvZiB0aGUgY29vcmRpbmF0ZSBncmlkCglicmVha09uV2Vla3M6IG51bGwsIC8vIHNob3VsZCBjcmVhdGUgYSBuZXcgcm93IGZvciBlYWNoIHdlZWs/IHNldCBieSBvdXRzaWRlIHZpZXcKCgljZWxsRGF0ZXM6IG51bGwsIC8vIGZsYXQgY2hyb25vbG9naWNhbCBhcnJheSBvZiBlYWNoIGNlbGwncyBkYXRlcwoJZGF5VG9DZWxsT2Zmc2V0czogbnVsbCwgLy8gbWFwcyBkYXlzIG9mZnNldHMgZnJvbSBncmlkJ3Mgc3RhcnQgZGF0ZSwgdG8gY2VsbCBvZmZzZXRzCgoJcm93RWxzOiBudWxsLCAvLyBzZXQgb2YgZmFrZSByb3cgZWxlbWVudHMKCWRheUVsczogbnVsbCwgLy8gc2V0IG9mIHdob2xlLWRheSBlbGVtZW50cyBjb21wcmlzaW5nIHRoZSByb3cncyBiYWNrZ3JvdW5kCgloZWxwZXJFbHM6IG51bGwsIC8vIHNldCBvZiBjZWxsIHNrZWxldG9uIGVsZW1lbnRzIGZvciByZW5kZXJpbmcgdGhlIG1vY2sgZXZlbnQgImhlbHBlciIKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKCkgewoJCUdyaWQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCgkJdGhpcy5jZWxsRHVyYXRpb24gPSBtb21lbnQuZHVyYXRpb24oMSwgJ2RheScpOyAvLyBmb3IgR3JpZCBzeXN0ZW0KCX0sCgoKCS8vIFJlbmRlcnMgdGhlIHJvd3MgYW5kIGNvbHVtbnMgaW50byB0aGUgY29tcG9uZW50J3MgYHRoaXMuZWxgLCB3aGljaCBzaG91bGQgYWxyZWFkeSBiZSBhc3NpZ25lZC4KCS8vIGlzUmlnaWQgZGV0ZXJtaW5zIHdoZXRoZXIgdGhlIGluZGl2aWR1YWwgcm93cyBzaG91bGQgaWdub3JlIHRoZSBjb250ZW50cyBhbmQgYmUgYSBjb25zdGFudCBoZWlnaHQuCgkvLyBSZWxpZXMgb24gdGhlIHZpZXcncyBjb2xDbnQgYW5kIHJvd0NudC4gSW4gdGhlIGZ1dHVyZSwgdGhpcyBjb21wb25lbnQgc2hvdWxkIHByb2JhYmx5IGJlIHNlbGYtc3VmZmljaWVudC4KCXJlbmRlckRhdGVzOiBmdW5jdGlvbihpc1JpZ2lkKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIHJvd0NudCA9IHRoaXMucm93Q250OwoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgY2VsbENudCA9IHJvd0NudCAqIGNvbENudDsKCQl2YXIgaHRtbCA9ICcnOwoJCXZhciByb3c7CgkJdmFyIGksIGNlbGw7CgoJCWZvciAocm93ID0gMDsgcm93IDwgcm93Q250OyByb3crKykgewoJCQlodG1sICs9IHRoaXMuZGF5Um93SHRtbChyb3csIGlzUmlnaWQpOwoJCX0KCQl0aGlzLmVsLmh0bWwoaHRtbCk7CgoJCXRoaXMucm93RWxzID0gdGhpcy5lbC5maW5kKCcuZmMtcm93Jyk7CgkJdGhpcy5kYXlFbHMgPSB0aGlzLmVsLmZpbmQoJy5mYy1kYXknKTsKCgkJLy8gdHJpZ2dlciBkYXlSZW5kZXIgd2l0aCBlYWNoIGNlbGwncyBlbGVtZW50CgkJZm9yIChpID0gMDsgaSA8IGNlbGxDbnQ7IGkrKykgewoJCQljZWxsID0gdGhpcy5nZXRDZWxsKGkpOwoJCQl2aWV3LnRyaWdnZXIoJ2RheVJlbmRlcicsIG51bGwsIGNlbGwuc3RhcnQsIHRoaXMuZGF5RWxzLmVxKGkpKTsKCQl9Cgl9LAoKCgl1bnJlbmRlckRhdGVzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKTsKCX0sCgoKCXJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXZhciBldmVudHMgPSB0aGlzLnZpZXcuY2FsZW5kYXIuZ2V0QnVzaW5lc3NIb3Vyc0V2ZW50cyh0cnVlKTsgLy8gd2hvbGVEYXk9dHJ1ZQoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoZXZlbnRzKTsKCgkJdGhpcy5yZW5kZXJGaWxsKCdidXNpbmVzc0hvdXJzJywgc2VncywgJ2JnZXZlbnQnKTsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgYSBzaW5nbGUgcm93LiBgcm93YCBpcyB0aGUgcm93IG51bWJlci4KCWRheVJvd0h0bWw6IGZ1bmN0aW9uKHJvdywgaXNSaWdpZCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjbGFzc2VzID0gWyAnZmMtcm93JywgJ2ZjLXdlZWsnLCB2aWV3LndpZGdldENvbnRlbnRDbGFzcyBdOwoKCQlpZiAoaXNSaWdpZCkgewoJCQljbGFzc2VzLnB1c2goJ2ZjLXJpZ2lkJyk7CgkJfQoKCQlyZXR1cm4gJycgKwoJCQknPGRpdiBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyI+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtYmciPicgKwoJCQkJCSc8dGFibGU+JyArCgkJCQkJCXRoaXMucm93SHRtbCgnZGF5Jywgcm93KSArIC8vIGxldmVyYWdlcyBSb3dSZW5kZXJlci4gY2FsbHMgZGF5Q2VsbEh0bWwoKQoJCQkJCSc8L3RhYmxlPicgKwoJCQkJJzwvZGl2PicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iPicgKwoJCQkJCSc8dGFibGU+JyArCgkJCQkJCSh0aGlzLm51bWJlcnNWaXNpYmxlID8KCQkJCQkJCSc8dGhlYWQ+JyArCgkJCQkJCQkJdGhpcy5yb3dIdG1sKCdudW1iZXInLCByb3cpICsgLy8gbGV2ZXJhZ2VzIFJvd1JlbmRlcmVyLiBWaWV3IHdpbGwgZGVmaW5lIHJlbmRlciBtZXRob2QKCQkJCQkJCSc8L3RoZWFkPicgOgoJCQkJCQkJJycKCQkJCQkJCSkgKwoJCQkJCSc8L3RhYmxlPicgKwoJCQkJJzwvZGl2PicgKwoJCQknPC9kaXY+JzsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgd2hvbGUtZGF5IGNlbGwuIFdpbGwgZXZlbnR1YWxseSBlbmQgdXAgaW4gdGhlIGRheS1yb3cncyBiYWNrZ3JvdW5kLgoJLy8gV2UgZ28gdGhyb3VnaCBhICdkYXknIHJvdyB0eXBlIGluc3RlYWQgb2YganVzdCBkb2luZyBhICdiZycgcm93IHR5cGUgc28gdGhhdCB0aGUgVmlldyBjYW4gZG8gY3VzdG9tIHJlbmRlcmluZwoJLy8gc3BlY2lmaWNhbGx5IGZvciB3aG9sZS1kYXkgcm93cywgd2hlcmVhcyBhICdiZycgbWlnaHQgYWxzbyBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyAoVGltZUdyaWQgYmcgZm9yIGV4YW1wbGUpLgoJZGF5Q2VsbEh0bWw6IGZ1bmN0aW9uKGNlbGwpIHsKCQlyZXR1cm4gdGhpcy5iZ0NlbGxIdG1sKGNlbGwpOwoJfSwKCgoJLyogT3B0aW9ucwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgYSBkZWZhdWx0IGNvbHVtbiBoZWFkZXIgZm9ybWF0dGluZyBzdHJpbmcgaWYgYGNvbEZvcm1hdGAgaXMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZAoJY29tcHV0ZUNvbEhlYWRGb3JtYXQ6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnJvd0NudCA+IDEpIHsgLy8gbW9yZSB0aGFuIG9uZSB3ZWVrIHJvdy4gZGF5IG51bWJlcnMgd2lsbCBiZSBpbiBlYWNoIGNlbGwKCQkJcmV0dXJuICdkZGQnOyAvLyAiU2F0IgoJCX0KCQllbHNlIGlmICh0aGlzLmNvbENudCA+IDEpIHsgLy8gbXVsdGlwbGUgZGF5cywgc28gZnVsbCBzaW5nbGUgZGF0ZSBzdHJpbmcgV09OJ1QgYmUgaW4gdGl0bGUgdGV4dAoJCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnZGF5T2ZNb250aEZvcm1hdCcpOyAvLyAiU2F0IDEyLzEwIgoJCX0KCQllbHNlIHsgLy8gc2luZ2xlIGRheSwgc28gZnVsbCBzaW5nbGUgZGF0ZSBzdHJpbmcgd2lsbCBwcm9iYWJseSBiZSBpbiB0aXRsZSB0ZXh0CgkJCXJldHVybiAnZGRkZCc7IC8vICJTYXR1cmRheSIKCQl9Cgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgZXZlbnQgdGltZSBmb3JtYXR0aW5nIHN0cmluZyBpZiBgdGltZUZvcm1hdGAgaXMgbm90IGV4cGxpY2l0bHkgZGVmaW5lZAoJY29tcHV0ZUV2ZW50VGltZUZvcm1hdDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMudmlldy5vcHQoJ2V4dHJhU21hbGxUaW1lRm9ybWF0Jyk7IC8vIGxpa2UgIjZwIiBvciAiNjozMHAiCgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgYGRpc3BsYXlFdmVudEVuZGAgdmFsdWUgaWYgb25lIGlzIG5vdCBleHBsaWNsdHkgZGVmaW5lZAoJY29tcHV0ZURpc3BsYXlFdmVudEVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuY29sQ250ID09IDE7IC8vIHdlJ2xsIGxpa2VseSBoYXZlIHNwYWNlIGlmIHRoZXJlJ3Mgb25seSBvbmUgZGF5Cgl9LAoKCgkvKiBDZWxsIFN5c3RlbQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmFuZ2VVcGRhdGVkOiBmdW5jdGlvbigpIHsKCQl2YXIgY2VsbERhdGVzOwoJCXZhciBmaXJzdERheTsKCQl2YXIgcm93Q250OwoJCXZhciBjb2xDbnQ7CgoJCXRoaXMudXBkYXRlQ2VsbERhdGVzKCk7IC8vIHBvcHVsYXRlcyBjZWxsRGF0ZXMgYW5kIGRheVRvQ2VsbE9mZnNldHMKCQljZWxsRGF0ZXMgPSB0aGlzLmNlbGxEYXRlczsKCgkJaWYgKHRoaXMuYnJlYWtPbldlZWtzKSB7CgkJCS8vIGNvdW50IGNvbHVtbnMgdW50aWwgdGhlIGRheS1vZi13ZWVrIHJlcGVhdHMKCQkJZmlyc3REYXkgPSBjZWxsRGF0ZXNbMF0uZGF5KCk7CgkJCWZvciAoY29sQ250ID0gMTsgY29sQ250IDwgY2VsbERhdGVzLmxlbmd0aDsgY29sQ250KyspIHsKCQkJCWlmIChjZWxsRGF0ZXNbY29sQ250XS5kYXkoKSA9PSBmaXJzdERheSkgewoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJCXJvd0NudCA9IE1hdGguY2VpbChjZWxsRGF0ZXMubGVuZ3RoIC8gY29sQ250KTsKCQl9CgkJZWxzZSB7CgkJCXJvd0NudCA9IDE7CgkJCWNvbENudCA9IGNlbGxEYXRlcy5sZW5ndGg7CgkJfQoKCQl0aGlzLnJvd0NudCA9IHJvd0NudDsKCQl0aGlzLmNvbENudCA9IGNvbENudDsKCX0sCgoKCS8vIFBvcHVsYXRlcyBjZWxsRGF0ZXMgYW5kIGRheVRvQ2VsbE9mZnNldHMKCXVwZGF0ZUNlbGxEYXRlczogZnVuY3Rpb24oKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGRhdGUgPSB0aGlzLnN0YXJ0LmNsb25lKCk7CgkJdmFyIGRhdGVzID0gW107CgkJdmFyIG9mZnNldCA9IC0xOwoJCXZhciBvZmZzZXRzID0gW107CgoJCXdoaWxlIChkYXRlLmlzQmVmb3JlKHRoaXMuZW5kKSkgeyAvLyBsb29wIGVhY2ggZGF5IGZyb20gc3RhcnQgdG8gZW5kCgkJCWlmICh2aWV3LmlzSGlkZGVuRGF5KGRhdGUpKSB7CgkJCQlvZmZzZXRzLnB1c2gob2Zmc2V0ICsgMC41KTsgLy8gbWFyayB0aGF0IGl0J3MgYmV0d2VlbiBvZmZzZXRzCgkJCX0KCQkJZWxzZSB7CgkJCQlvZmZzZXQrKzsKCQkJCW9mZnNldHMucHVzaChvZmZzZXQpOwoJCQkJZGF0ZXMucHVzaChkYXRlLmNsb25lKCkpOwoJCQl9CgkJCWRhdGUuYWRkKDEsICdkYXlzJyk7CgkJfQoKCQl0aGlzLmNlbGxEYXRlcyA9IGRhdGVzOwoJCXRoaXMuZGF5VG9DZWxsT2Zmc2V0cyA9IG9mZnNldHM7Cgl9LAoKCgkvLyBHaXZlbiBhIGNlbGwgb2JqZWN0LCBnZW5lcmF0ZXMgaXRzIHN0YXJ0IGRhdGUuIFJldHVybnMgYSByZWZlcmVuY2UtZnJlZSBjb3B5LgoJY29tcHV0ZUNlbGxEYXRlOiBmdW5jdGlvbihjZWxsKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBpbmRleCA9IGNlbGwucm93ICogY29sQ250ICsgKHRoaXMuaXNSVEwgPyBjb2xDbnQgLSBjZWxsLmNvbCAtIDEgOiBjZWxsLmNvbCk7CgoJCXJldHVybiB0aGlzLmNlbGxEYXRlc1tpbmRleF0uY2xvbmUoKTsKCX0sCgoKCS8vIFJldHJpZXZlcyB0aGUgZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHJvdwoJZ2V0Um93RWw6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiB0aGlzLnJvd0Vscy5lcShyb3cpOwoJfSwKCgoJLy8gUmV0cmlldmVzIHRoZSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gY29sdW1uCglnZXRDb2xFbDogZnVuY3Rpb24oY29sKSB7CgkJcmV0dXJuIHRoaXMuZGF5RWxzLmVxKGNvbCk7Cgl9LAoKCgkvLyBHZXRzIHRoZSB3aG9sZS1kYXkgZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGNlbGwKCWdldENlbGxEYXlFbDogZnVuY3Rpb24oY2VsbCkgewoJCXJldHVybiB0aGlzLmRheUVscy5lcShjZWxsLnJvdyAqIHRoaXMuY29sQ250ICsgY2VsbC5jb2wpOwoJfSwKCgoJLy8gT3ZlcnJpZGVzIEdyaWQncyBtZXRob2QgZm9yIHdoZW4gcm93IGNvb3JkaW5hdGVzIGFyZSBjb21wdXRlZAoJY29tcHV0ZVJvd0Nvb3JkczogZnVuY3Rpb24oKSB7CgkJdmFyIHJvd0Nvb3JkcyA9IEdyaWQucHJvdG90eXBlLmNvbXB1dGVSb3dDb29yZHMuY2FsbCh0aGlzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCS8vIGhhY2sgZm9yIGV4dGVuZGluZyBsYXN0IHJvdyAodXNlZCBieSBBZ2VuZGFWaWV3KQoJCXJvd0Nvb3Jkc1tyb3dDb29yZHMubGVuZ3RoIC0gMV0uYm90dG9tICs9IHRoaXMuYm90dG9tQ29vcmRQYWRkaW5nOwoKCQlyZXR1cm4gcm93Q29vcmRzOwoJfSwKCgoJLyogRGF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNsaWNlcyB1cCBhIGRhdGUgcmFuZ2UgYnkgcm93IGludG8gYW4gYXJyYXkgb2Ygc2VnbWVudHMKCXJhbmdlVG9TZWdzOiBmdW5jdGlvbihyYW5nZSkgewoJCXZhciBpc1JUTCA9IHRoaXMuaXNSVEw7CgkJdmFyIHJvd0NudCA9IHRoaXMucm93Q250OwoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgc2VncyA9IFtdOwoJCXZhciBmaXJzdCwgbGFzdDsgLy8gaW5jbHVzaXZlIGNlbGwtb2Zmc2V0IHJhbmdlIGZvciBnaXZlbiByYW5nZQoJCXZhciByb3c7CgkJdmFyIHJvd0ZpcnN0LCByb3dMYXN0OyAvLyBpbmNsdXNpdmUgY2VsbC1vZmZzZXQgcmFuZ2UgZm9yIGN1cnJlbnQgcm93CgkJdmFyIGlzU3RhcnQsIGlzRW5kOwoJCXZhciBzZWdGaXJzdCwgc2VnTGFzdDsgLy8gaW5jbHVzaXZlIGNlbGwtb2Zmc2V0IHJhbmdlIGZvciBzZWdtZW50CgkJdmFyIHNlZzsKCgkJcmFuZ2UgPSB0aGlzLnZpZXcuY29tcHV0ZURheVJhbmdlKHJhbmdlKTsgLy8gbWFrZSB3aG9sZS1kYXkgcmFuZ2UsIGNvbnNpZGVyaW5nIG5leHREYXlUaHJlc2hvbGQKCQlmaXJzdCA9IHRoaXMuZGF0ZVRvQ2VsbE9mZnNldChyYW5nZS5zdGFydCk7CgkJbGFzdCA9IHRoaXMuZGF0ZVRvQ2VsbE9mZnNldChyYW5nZS5lbmQuc3VidHJhY3QoMSwgJ2RheXMnKSk7IC8vIG9mZnNldCBvZiBpbmNsdXNpdmUgZW5kIGRhdGUKCgkJZm9yIChyb3cgPSAwOyByb3cgPCByb3dDbnQ7IHJvdysrKSB7CgkJCXJvd0ZpcnN0ID0gcm93ICogY29sQ250OwoJCQlyb3dMYXN0ID0gcm93Rmlyc3QgKyBjb2xDbnQgLSAxOwoKCQkJLy8gaW50ZXJzZWN0IHNlZ21lbnQncyBvZmZzZXQgcmFuZ2Ugd2l0aCB0aGUgcm93J3MKCQkJc2VnRmlyc3QgPSBNYXRoLm1heChyb3dGaXJzdCwgZmlyc3QpOwoJCQlzZWdMYXN0ID0gTWF0aC5taW4ocm93TGFzdCwgbGFzdCk7CgoJCQkvLyBkZWFsIHdpdGggaW4tYmV0d2VlbiBpbmRpY2VzCgkJCXNlZ0ZpcnN0ID0gTWF0aC5jZWlsKHNlZ0ZpcnN0KTsgLy8gaW4tYmV0d2VlbiBzdGFydHMgcm91bmQgdG8gbmV4dCBjZWxsCgkJCXNlZ0xhc3QgPSBNYXRoLmZsb29yKHNlZ0xhc3QpOyAvLyBpbi1iZXR3ZWVuIGVuZHMgcm91bmQgdG8gcHJldiBjZWxsCgoJCQlpZiAoc2VnRmlyc3QgPD0gc2VnTGFzdCkgeyAvLyB3YXMgdGhlcmUgYW55IGludGVyc2VjdGlvbiB3aXRoIHRoZSBjdXJyZW50IHJvdz8KCgkJCQkvLyBtdXN0IGJlIG1hdGNoaW5nIGludGVnZXJzIHRvIGJlIHRoZSBzZWdtZW50J3Mgc3RhcnQvZW5kCgkJCQlpc1N0YXJ0ID0gc2VnRmlyc3QgPT09IGZpcnN0OwoJCQkJaXNFbmQgPSBzZWdMYXN0ID09PSBsYXN0OwoKCQkJCS8vIHRyYW5zbGF0ZSBvZmZzZXRzIHRvIGJlIHJlbGF0aXZlIHRvIHN0YXJ0LW9mLXJvdwoJCQkJc2VnRmlyc3QgLT0gcm93Rmlyc3Q7CgkJCQlzZWdMYXN0IC09IHJvd0ZpcnN0OwoKCQkJCXNlZyA9IHsgcm93OiByb3csIGlzU3RhcnQ6IGlzU3RhcnQsIGlzRW5kOiBpc0VuZCB9OwoJCQkJaWYgKGlzUlRMKSB7CgkJCQkJc2VnLmxlZnRDb2wgPSBjb2xDbnQgLSBzZWdMYXN0IC0gMTsKCQkJCQlzZWcucmlnaHRDb2wgPSBjb2xDbnQgLSBzZWdGaXJzdCAtIDE7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlzZWcubGVmdENvbCA9IHNlZ0ZpcnN0OwoJCQkJCXNlZy5yaWdodENvbCA9IHNlZ0xhc3Q7CgkJCQl9CgkJCQlzZWdzLnB1c2goc2VnKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCgkvLyBHaXZlbiBhIGRhdGUsIHJldHVybnMgaXRzIGNocm9ub2xvY2lhbCBjZWxsLW9mZnNldCBmcm9tIHRoZSBmaXJzdCBjZWxsIG9mIHRoZSBncmlkLgoJLy8gSWYgdGhlIGRhdGUgbGllcyBiZXR3ZWVuIGNlbGxzIChiZWNhdXNlIG9mIGhpZGRlbkRheXMpLCByZXR1cm5zIGEgZmxvYXRpbmctcG9pbnQgdmFsdWUgYmV0d2VlbiBvZmZzZXRzLgoJLy8gSWYgYmVmb3JlIHRoZSBmaXJzdCBvZmZzZXQsIHJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIuCgkvLyBJZiBhZnRlciB0aGUgbGFzdCBvZmZzZXQsIHJldHVybnMgYW4gb2Zmc2V0IHBhc3QgdGhlIGxhc3QgY2VsbCBvZmZzZXQuCgkvLyBPbmx5IHdvcmtzIGZvciAqc3RhcnQqIGRhdGVzIG9mIGNlbGxzLiBXaWxsIG5vdCB3b3JrIGZvciBleGNsdXNpdmUgZW5kIGRhdGVzIGZvciBjZWxscy4KCWRhdGVUb0NlbGxPZmZzZXQ6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgb2Zmc2V0cyA9IHRoaXMuZGF5VG9DZWxsT2Zmc2V0czsKCQl2YXIgZGF5ID0gZGF0ZS5kaWZmKHRoaXMuc3RhcnQsICdkYXlzJyk7CgoJCWlmIChkYXkgPCAwKSB7CgkJCXJldHVybiBvZmZzZXRzWzBdIC0gMTsKCQl9CgkJZWxzZSBpZiAoZGF5ID49IG9mZnNldHMubGVuZ3RoKSB7CgkJCXJldHVybiBvZmZzZXRzW29mZnNldHMubGVuZ3RoIC0gMV0gKyAxOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIG9mZnNldHNbZGF5XTsKCQl9Cgl9LAoKCgkvKiBFdmVudCBEcmFnIFZpc3VhbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBtb3ZlIHRvIERheUdyaWQuZXZlbnQsIHNpbWlsYXIgdG8gd2hhdCB3ZSBkaWQgd2l0aCBHcmlkJ3MgZHJhZyBtZXRob2RzCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBvciBleHRlcm5hbCBlbGVtZW50IGJlaW5nIGRyYWdnZWQuCgkvLyBUaGUgZHJvcExvY2F0aW9uJ3MgZW5kIGNhbiBiZSBudWxsLiBzZWcgY2FuIGJlIG51bGwuIFNlZSBHcmlkOjpyZW5kZXJEcmFnIGZvciBtb3JlIGluZm8uCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoKCQkvLyBhbHdheXMgcmVuZGVyIGEgaGlnaGxpZ2h0IHVuZGVybmVhdGgKCQl0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoZHJvcExvY2F0aW9uKSk7CgoJCS8vIGlmIGEgc2VnbWVudCBmcm9tIHRoZSBzYW1lIGNhbGVuZGFyIGJ1dCBhbm90aGVyIGNvbXBvbmVudCBpcyBiZWluZyBkcmFnZ2VkLCByZW5kZXIgYSBoZWxwZXIgZXZlbnQKCQlpZiAoc2VnICYmICFzZWcuZWwuY2xvc2VzdCh0aGlzLmVsKS5sZW5ndGgpIHsKCgkJCXRoaXMucmVuZGVyUmFuZ2VIZWxwZXIoZHJvcExvY2F0aW9uLCBzZWcpOwoJCQl0aGlzLmFwcGx5RHJhZ09wYWNpdHkodGhpcy5oZWxwZXJFbHMpOwoKCQkJcmV0dXJuIHRydWU7IC8vIGEgaGVscGVyIGhhcyBiZWVuIHJlbmRlcmVkCgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIGhvdmVyaW5nIGV2ZW50Cgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIaWdobGlnaHQoKTsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7Cgl9LAoKCgkvKiBFdmVudCBSZXNpemUgVmlzdWFsaXphdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbihyYW5nZSwgc2VnKSB7CgkJdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5ldmVudFJhbmdlVG9TZWdzKHJhbmdlKSk7CgkJdGhpcy5yZW5kZXJSYW5nZUhlbHBlcihyYW5nZSwgc2VnKTsKCX0sCgoKCS8vIFVucmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIaWdobGlnaHQoKTsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7Cgl9LAoKCgkvKiBFdmVudCBIZWxwZXIKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSBtb2NrICJoZWxwZXIiIGV2ZW50LiBgc291cmNlU2VnYCBpcyB0aGUgYXNzb2NpYXRlZCBpbnRlcm5hbCBzZWdtZW50IG9iamVjdC4gSXQgY2FuIGJlIG51bGwuCglyZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKGV2ZW50LCBzb3VyY2VTZWcpIHsKCQl2YXIgaGVscGVyTm9kZXMgPSBbXTsKCQl2YXIgc2VncyA9IHRoaXMuZXZlbnRzVG9TZWdzKFsgZXZlbnQgXSk7CgkJdmFyIHJvd1N0cnVjdHM7CgoJCXNlZ3MgPSB0aGlzLnJlbmRlckZnU2VnRWxzKHNlZ3MpOyAvLyBhc3NpZ25zIGVhY2ggc2VnJ3MgZWwgYW5kIHJldHVybnMgYSBzdWJzZXQgb2Ygc2VncyB0aGF0IHdlcmUgcmVuZGVyZWQKCQlyb3dTdHJ1Y3RzID0gdGhpcy5yZW5kZXJTZWdSb3dzKHNlZ3MpOwoKCQkvLyBpbmplY3QgZWFjaCBuZXcgZXZlbnQgc2tlbGV0b24gaW50byBlYWNoIGFzc29jaWF0ZWQgcm93CgkJdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihyb3csIHJvd05vZGUpIHsKCQkJdmFyIHJvd0VsID0gJChyb3dOb2RlKTsgLy8gdGhlIC5mYy1yb3cKCQkJdmFyIHNrZWxldG9uRWwgPSAkKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iPjx0YWJsZS8+PC9kaXY+Jyk7IC8vIHdpbGwgYmUgYWJzb2x1dGVseSBwb3NpdGlvbmVkCgkJCXZhciBza2VsZXRvblRvcDsKCgkJCS8vIElmIHRoZXJlIGlzIGFuIG9yaWdpbmFsIHNlZ21lbnQsIG1hdGNoIHRoZSB0b3AgcG9zaXRpb24uIE90aGVyd2lzZSwgcHV0IGl0IGF0IHRoZSByb3cncyB0b3AgbGV2ZWwKCQkJaWYgKHNvdXJjZVNlZyAmJiBzb3VyY2VTZWcucm93ID09PSByb3cpIHsKCQkJCXNrZWxldG9uVG9wID0gc291cmNlU2VnLmVsLnBvc2l0aW9uKCkudG9wOwoJCQl9CgkJCWVsc2UgewoJCQkJc2tlbGV0b25Ub3AgPSByb3dFbC5maW5kKCcuZmMtY29udGVudC1za2VsZXRvbiB0Ym9keScpLnBvc2l0aW9uKCkudG9wOwoJCQl9CgoJCQlza2VsZXRvbkVsLmNzcygndG9wJywgc2tlbGV0b25Ub3ApCgkJCQkuZmluZCgndGFibGUnKQoJCQkJCS5hcHBlbmQocm93U3RydWN0c1tyb3ddLnRib2R5RWwpOwoKCQkJcm93RWwuYXBwZW5kKHNrZWxldG9uRWwpOwoJCQloZWxwZXJOb2Rlcy5wdXNoKHNrZWxldG9uRWxbMF0pOwoJCX0pOwoKCQl0aGlzLmhlbHBlckVscyA9ICQoaGVscGVyTm9kZXMpOyAvLyBhcnJheSAtPiBqUXVlcnkgc2V0Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYW55IHZpc3VhbCBpbmRpY2F0aW9uIG9mIGEgbW9jayBoZWxwZXIgZXZlbnQKCXVucmVuZGVySGVscGVyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5oZWxwZXJFbHMpIHsKCQkJdGhpcy5oZWxwZXJFbHMucmVtb3ZlKCk7CgkJCXRoaXMuaGVscGVyRWxzID0gbnVsbDsKCQl9Cgl9LAoKCgkvKiBGaWxsIFN5c3RlbSAoaGlnaGxpZ2h0LCBiYWNrZ3JvdW5kIGV2ZW50cywgYnVzaW5lc3MgaG91cnMpCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglmaWxsU2VnVGFnOiAndGQnLCAvLyBvdmVycmlkZSB0aGUgZGVmYXVsdCB0YWcgbmFtZQoKCgkvLyBSZW5kZXJzIGEgc2V0IG9mIHJlY3RhbmdsZXMgb3ZlciB0aGUgZ2l2ZW4gc2VnbWVudHMgb2YgZGF5cy4KCS8vIE9ubHkgcmV0dXJucyBzZWdtZW50cyB0aGF0IHN1Y2Nlc3NmdWxseSByZW5kZXJlZC4KCXJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MsIGNsYXNzTmFtZSkgewoJCXZhciBub2RlcyA9IFtdOwoJCXZhciBpLCBzZWc7CgkJdmFyIHNrZWxldG9uRWw7CgoJCXNlZ3MgPSB0aGlzLnJlbmRlckZpbGxTZWdFbHModHlwZSwgc2Vncyk7IC8vIGFzc2lnbmVzIGAuZWxgIHRvIGVhY2ggc2VnLiByZXR1cm5zIHN1Y2Nlc3NmdWxseSByZW5kZXJlZCBzZWdzCgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgkJCXNrZWxldG9uRWwgPSB0aGlzLnJlbmRlckZpbGxSb3codHlwZSwgc2VnLCBjbGFzc05hbWUpOwoJCQl0aGlzLnJvd0Vscy5lcShzZWcucm93KS5hcHBlbmQoc2tlbGV0b25FbCk7CgkJCW5vZGVzLnB1c2goc2tlbGV0b25FbFswXSk7CgkJfQoKCQl0aGlzLmVsc0J5RmlsbFt0eXBlXSA9ICQobm9kZXMpOwoKCQlyZXR1cm4gc2VnczsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBuZWVkZWQgZm9yIG9uZSByb3cgb2YgYSBmaWxsLiBSZXF1aXJlcyB0aGUgc2VnJ3MgZWwgdG8gYmUgcmVuZGVyZWQuCglyZW5kZXJGaWxsUm93OiBmdW5jdGlvbih0eXBlLCBzZWcsIGNsYXNzTmFtZSkgewoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgc3RhcnRDb2wgPSBzZWcubGVmdENvbDsKCQl2YXIgZW5kQ29sID0gc2VnLnJpZ2h0Q29sICsgMTsKCQl2YXIgc2tlbGV0b25FbDsKCQl2YXIgdHJFbDsKCgkJY2xhc3NOYW1lID0gY2xhc3NOYW1lIHx8IHR5cGUudG9Mb3dlckNhc2UoKTsKCgkJc2tlbGV0b25FbCA9ICQoCgkJCSc8ZGl2IGNsYXNzPSJmYy0nICsgY2xhc3NOYW1lICsgJy1za2VsZXRvbiI+JyArCgkJCQknPHRhYmxlPjx0ci8+PC90YWJsZT4nICsKCQkJJzwvZGl2PicKCQkpOwoJCXRyRWwgPSBza2VsZXRvbkVsLmZpbmQoJ3RyJyk7CgoJCWlmIChzdGFydENvbCA+IDApIHsKCQkJdHJFbC5hcHBlbmQoJzx0ZCBjb2xzcGFuPSInICsgc3RhcnRDb2wgKyAnIi8+Jyk7CgkJfQoKCQl0ckVsLmFwcGVuZCgKCQkJc2VnLmVsLmF0dHIoJ2NvbHNwYW4nLCBlbmRDb2wgLSBzdGFydENvbCkKCQkpOwoKCQlpZiAoZW5kQ29sIDwgY29sQ250KSB7CgkJCXRyRWwuYXBwZW5kKCc8dGQgY29sc3Bhbj0iJyArIChjb2xDbnQgLSBlbmRDb2wpICsgJyIvPicpOwoJCX0KCgkJdGhpcy5ib29rZW5kQ2VsbHModHJFbCwgdHlwZSk7CgoJCXJldHVybiBza2VsZXRvbkVsOwoJfQoKfSk7Cgo7OwoKLyogRXZlbnQtcmVuZGVyaW5nIG1ldGhvZHMgZm9yIHRoZSBEYXlHcmlkIGNsYXNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKRGF5R3JpZC5taXhpbih7CgoJcm93U3RydWN0czogbnVsbCwgLy8gYW4gYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgcm93J3MgZm9yZWdyb3VuZCBldmVudC1yZW5kZXJpbmcKCgoJLy8gVW5yZW5kZXJzIGFsbCBldmVudHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCgl1bnJlbmRlckV2ZW50czogZnVuY3Rpb24oKSB7CgkJdGhpcy5yZW1vdmVTZWdQb3BvdmVyKCk7IC8vIHJlbW92ZXMgdGhlICJtb3JlLi4iIGV2ZW50cyBwb3BvdmVyCgkJR3JpZC5wcm90b3R5cGUudW5yZW5kZXJFdmVudHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gY2FsbHMgdGhlIHN1cGVyLW1ldGhvZAoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCByZW5kZXJlZCBzZWdtZW50IG9iamVjdHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCglnZXRFdmVudFNlZ3M6IGZ1bmN0aW9uKCkgewoJCXJldHVybiBHcmlkLnByb3RvdHlwZS5nZXRFdmVudFNlZ3MuY2FsbCh0aGlzKSAvLyBnZXQgdGhlIHNlZ21lbnRzIGZyb20gdGhlIHN1cGVyLW1ldGhvZAoJCQkuY29uY2F0KHRoaXMucG9wb3ZlclNlZ3MgfHwgW10pOyAvLyBhcHBlbmQgdGhlIHNlZ21lbnRzIGZyb20gdGhlICJtb3JlLi4uIiBwb3BvdmVyCgl9LAoKCgkvLyBSZW5kZXJzIHRoZSBnaXZlbiBiYWNrZ3JvdW5kIGV2ZW50IHNlZ21lbnRzIG9udG8gdGhlIGdyaWQKCXJlbmRlckJnU2VnczogZnVuY3Rpb24oc2VncykgewoKCQkvLyBkb24ndCByZW5kZXIgdGltZWQgYmFja2dyb3VuZCBldmVudHMKCQl2YXIgYWxsRGF5U2VncyA9ICQuZ3JlcChzZWdzLCBmdW5jdGlvbihzZWcpIHsKCQkJcmV0dXJuIHNlZy5ldmVudC5hbGxEYXk7CgkJfSk7CgoJCXJldHVybiBHcmlkLnByb3RvdHlwZS5yZW5kZXJCZ1NlZ3MuY2FsbCh0aGlzLCBhbGxEYXlTZWdzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgl9LAoKCgkvLyBSZW5kZXJzIHRoZSBnaXZlbiBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnRzIG9udG8gdGhlIGdyaWQKCXJlbmRlckZnU2VnczogZnVuY3Rpb24oc2VncykgewoJCXZhciByb3dTdHJ1Y3RzOwoKCQkvLyByZW5kZXIgYW4gYC5lbGAgb24gZWFjaCBzZWcKCQkvLyByZXR1cm5zIGEgc3Vic2V0IG9mIHRoZSBzZWdzLiBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJCXNlZ3MgPSB0aGlzLnJlbmRlckZnU2VnRWxzKHNlZ3MpOwoKCQlyb3dTdHJ1Y3RzID0gdGhpcy5yb3dTdHJ1Y3RzID0gdGhpcy5yZW5kZXJTZWdSb3dzKHNlZ3MpOwoKCQkvLyBhcHBlbmQgdG8gZWFjaCByb3cncyBjb250ZW50IHNrZWxldG9uCgkJdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihpLCByb3dOb2RlKSB7CgkJCSQocm93Tm9kZSkuZmluZCgnLmZjLWNvbnRlbnQtc2tlbGV0b24gPiB0YWJsZScpLmFwcGVuZCgKCQkJCXJvd1N0cnVjdHNbaV0udGJvZHlFbAoJCQkpOwoJCX0pOwoKCQlyZXR1cm4gc2VnczsgLy8gcmV0dXJuIG9ubHkgdGhlIHNlZ3MgdGhhdCB3ZXJlIGFjdHVhbGx5IHJlbmRlcmVkCgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIGN1cnJlbnRseSByZW5kZXJlZCBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnRzCgl1bnJlbmRlckZnU2VnczogZnVuY3Rpb24oKSB7CgkJdmFyIHJvd1N0cnVjdHMgPSB0aGlzLnJvd1N0cnVjdHMgfHwgW107CgkJdmFyIHJvd1N0cnVjdDsKCgkJd2hpbGUgKChyb3dTdHJ1Y3QgPSByb3dTdHJ1Y3RzLnBvcCgpKSkgewoJCQlyb3dTdHJ1Y3QudGJvZHlFbC5yZW1vdmUoKTsKCQl9CgoJCXRoaXMucm93U3RydWN0cyA9IG51bGw7Cgl9LAoKCgkvLyBVc2VzIHRoZSBnaXZlbiBldmVudHMgYXJyYXkgdG8gZ2VuZXJhdGUgPHRib2R5PiBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSBhcHBlbmRlZCB0byBlYWNoIHJvdydzIGNvbnRlbnQgc2tlbGV0b24uCgkvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHJvd1N0cnVjdCBvYmplY3RzIChzZWUgdGhlIGJvdHRvbSBvZiBgcmVuZGVyU2VnUm93YCkuCgkvLyBQUkVDT05ESVRJT046IGVhY2ggc2VnbWVudCBzaG91ZCBhbHJlYWR5IGhhdmUgYSByZW5kZXJlZCBhbmQgYXNzaWduZWQgYC5lbGAKCXJlbmRlclNlZ1Jvd3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgcm93U3RydWN0cyA9IFtdOwoJCXZhciBzZWdSb3dzOwoJCXZhciByb3c7CgoJCXNlZ1Jvd3MgPSB0aGlzLmdyb3VwU2VnUm93cyhzZWdzKTsgLy8gZ3JvdXAgaW50byBuZXN0ZWQgYXJyYXlzCgoJCS8vIGl0ZXJhdGUgZWFjaCByb3cgb2Ygc2VnbWVudCBncm91cGluZ3MKCQlmb3IgKHJvdyA9IDA7IHJvdyA8IHNlZ1Jvd3MubGVuZ3RoOyByb3crKykgewoJCQlyb3dTdHJ1Y3RzLnB1c2goCgkJCQl0aGlzLnJlbmRlclNlZ1Jvdyhyb3csIHNlZ1Jvd3Nbcm93XSkKCQkJKTsKCQl9CgoJCXJldHVybiByb3dTdHJ1Y3RzOwoJfSwKCgoJLy8gQnVpbGRzIHRoZSBIVE1MIHRvIGJlIHVzZWQgZm9yIHRoZSBkZWZhdWx0IGVsZW1lbnQgZm9yIGFuIGluZGl2aWR1YWwgc2VnbWVudAoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgaXNEcmFnZ2FibGUgPSB2aWV3LmlzRXZlbnREcmFnZ2FibGUoZXZlbnQpOwoJCXZhciBpc1Jlc2l6YWJsZUZyb21TdGFydCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgZXZlbnQuYWxsRGF5ICYmCgkJCXNlZy5pc1N0YXJ0ICYmIHZpZXcuaXNFdmVudFJlc2l6YWJsZUZyb21TdGFydChldmVudCk7CgkJdmFyIGlzUmVzaXphYmxlRnJvbUVuZCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgZXZlbnQuYWxsRGF5ICYmCgkJCXNlZy5pc0VuZCAmJiB2aWV3LmlzRXZlbnRSZXNpemFibGVGcm9tRW5kKGV2ZW50KTsKCQl2YXIgY2xhc3NlcyA9IHRoaXMuZ2V0U2VnQ2xhc3NlcyhzZWcsIGlzRHJhZ2dhYmxlLCBpc1Jlc2l6YWJsZUZyb21TdGFydCB8fCBpc1Jlc2l6YWJsZUZyb21FbmQpOwoJCXZhciBza2luQ3NzID0gY3NzVG9TdHIodGhpcy5nZXRFdmVudFNraW5Dc3MoZXZlbnQpKTsKCQl2YXIgdGltZUh0bWwgPSAnJzsKCQl2YXIgdGltZVRleHQ7CgkJdmFyIHRpdGxlSHRtbDsKCgkJY2xhc3Nlcy51bnNoaWZ0KCdmYy1kYXktZ3JpZC1ldmVudCcsICdmYy1oLWV2ZW50Jyk7CgoJCS8vIE9ubHkgZGlzcGxheSBhIHRpbWVkIGV2ZW50cyB0aW1lIGlmIGl0IGlzIHRoZSBzdGFydGluZyBzZWdtZW50CgkJaWYgKHNlZy5pc1N0YXJ0KSB7CgkJCXRpbWVUZXh0ID0gdGhpcy5nZXRFdmVudFRpbWVUZXh0KGV2ZW50KTsKCQkJaWYgKHRpbWVUZXh0KSB7CgkJCQl0aW1lSHRtbCA9ICc8c3BhbiBjbGFzcz0iZmMtdGltZSI+JyArIGh0bWxFc2NhcGUodGltZVRleHQpICsgJzwvc3Bhbj4nOwoJCQl9CgkJfQoKCQl0aXRsZUh0bWwgPQoJCQknPHNwYW4gY2xhc3M9ImZjLXRpdGxlIj4nICsKCQkJCShodG1sRXNjYXBlKGV2ZW50LnRpdGxlIHx8ICcnKSB8fCAnJm5ic3A7JykgKyAvLyB3ZSBhbHdheXMgd2FudCBvbmUgbGluZSBvZiBoZWlnaHQKCQkJJzwvc3Bhbj4nOwoJCQoJCXJldHVybiAnPGEgY2xhc3M9IicgKyBjbGFzc2VzLmpvaW4oJyAnKSArICciJyArCgkJCQkoZXZlbnQudXJsID8KCQkJCQknIGhyZWY9IicgKyBodG1sRXNjYXBlKGV2ZW50LnVybCkgKyAnIicgOgoJCQkJCScnCgkJCQkJKSArCgkJCQkoc2tpbkNzcyA/CgkJCQkJJyBzdHlsZT0iJyArIHNraW5Dc3MgKyAnIicgOgoJCQkJCScnCgkJCQkJKSArCgkJCSc+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtY29udGVudCI+JyArCgkJCQkJKHRoaXMuaXNSVEwgPwoJCQkJCQl0aXRsZUh0bWwgKyAnICcgKyB0aW1lSHRtbCA6IC8vIHB1dCBhIG5hdHVyYWwgc3BhY2UgaW4gYmV0d2VlbgoJCQkJCQl0aW1lSHRtbCArICcgJyArIHRpdGxlSHRtbCAgIC8vCgkJCQkJCSkgKwoJCQkJJzwvZGl2PicgKwoJCQkJKGlzUmVzaXphYmxlRnJvbVN0YXJ0ID8KCQkJCQknPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1zdGFydC1yZXNpemVyIiAvPicgOgoJCQkJCScnCgkJCQkJKSArCgkJCQkoaXNSZXNpemFibGVGcm9tRW5kID8KCQkJCQknPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nIDoKCQkJCQknJwoJCQkJCSkgKwoJCQknPC9hPic7Cgl9LAoKCgkvLyBHaXZlbiBhIHJvdyAjIGFuZCBhbiBhcnJheSBvZiBzZWdtZW50cyBhbGwgaW4gdGhlIHNhbWUgcm93LCByZW5kZXIgYSA8dGJvZHk+IGVsZW1lbnQsIGEgc2tlbGV0b24gdGhhdCBjb250YWlucwoJLy8gdGhlIHNlZ21lbnRzLiBSZXR1cm5zIG9iamVjdCB3aXRoIGEgYnVuY2ggb2YgaW50ZXJuYWwgZGF0YSBhYm91dCBob3cgdGhlIHJlbmRlciB3YXMgY2FsY3VsYXRlZC4KCS8vIE5PVEU6IG1vZGlmaWVzIHJvd1NlZ3MKCXJlbmRlclNlZ1JvdzogZnVuY3Rpb24ocm93LCByb3dTZWdzKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBzZWdMZXZlbHMgPSB0aGlzLmJ1aWxkU2VnTGV2ZWxzKHJvd1NlZ3MpOyAvLyBncm91cCBpbnRvIHN1Yi1hcnJheXMgb2YgbGV2ZWxzCgkJdmFyIGxldmVsQ250ID0gTWF0aC5tYXgoMSwgc2VnTGV2ZWxzLmxlbmd0aCk7IC8vIGVuc3VyZSBhdCBsZWFzdCBvbmUgbGV2ZWwKCQl2YXIgdGJvZHkgPSAkKCc8dGJvZHkvPicpOwoJCXZhciBzZWdNYXRyaXggPSBbXTsgLy8gbG9va3VwIGZvciB3aGljaCBzZWdtZW50cyBhcmUgcmVuZGVyZWQgaW50byB3aGljaCBsZXZlbCtjb2wgY2VsbHMKCQl2YXIgY2VsbE1hdHJpeCA9IFtdOyAvLyBsb29rdXAgZm9yIGFsbCA8dGQ+IGVsZW1lbnRzIG9mIHRoZSBsZXZlbCtjb2wgbWF0cml4CgkJdmFyIGxvbmVDZWxsTWF0cml4ID0gW107IC8vIGxvb2t1cCBmb3IgPHRkPiBlbGVtZW50cyB0aGF0IG9ubHkgdGFrZSB1cCBhIHNpbmdsZSBjb2x1bW4KCQl2YXIgaSwgbGV2ZWxTZWdzOwoJCXZhciBjb2w7CgkJdmFyIHRyOwoJCXZhciBqLCBzZWc7CgkJdmFyIHRkOwoKCQkvLyBwb3B1bGF0ZXMgZW1wdHkgY2VsbHMgZnJvbSB0aGUgY3VycmVudCBjb2x1bW4gKGBjb2xgKSB0byBgZW5kQ29sYAoJCWZ1bmN0aW9uIGVtcHR5Q2VsbHNVbnRpbChlbmRDb2wpIHsKCQkJd2hpbGUgKGNvbCA8IGVuZENvbCkgewoJCQkJLy8gdHJ5IHRvIGdyYWIgYSBjZWxsIGZyb20gdGhlIGxldmVsIGFib3ZlIGFuZCBleHRlbmQgaXRzIHJvd3NwYW4uIG90aGVyd2lzZSwgY3JlYXRlIGEgZnJlc2ggY2VsbAoJCQkJdGQgPSAobG9uZUNlbGxNYXRyaXhbaSAtIDFdIHx8IFtdKVtjb2xdOwoJCQkJaWYgKHRkKSB7CgkJCQkJdGQuYXR0cigKCQkJCQkJJ3Jvd3NwYW4nLAoJCQkJCQlwYXJzZUludCh0ZC5hdHRyKCdyb3dzcGFuJykgfHwgMSwgMTApICsgMQoJCQkJCSk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQl0ZCA9ICQoJzx0ZC8+Jyk7CgkJCQkJdHIuYXBwZW5kKHRkKTsKCQkJCX0KCQkJCWNlbGxNYXRyaXhbaV1bY29sXSA9IHRkOwoJCQkJbG9uZUNlbGxNYXRyaXhbaV1bY29sXSA9IHRkOwoJCQkJY29sKys7CgkJCX0KCQl9CgoJCWZvciAoaSA9IDA7IGkgPCBsZXZlbENudDsgaSsrKSB7IC8vIGl0ZXJhdGUgdGhyb3VnaCBhbGwgbGV2ZWxzCgkJCWxldmVsU2VncyA9IHNlZ0xldmVsc1tpXTsKCQkJY29sID0gMDsKCQkJdHIgPSAkKCc8dHIvPicpOwoKCQkJc2VnTWF0cml4LnB1c2goW10pOwoJCQljZWxsTWF0cml4LnB1c2goW10pOwoJCQlsb25lQ2VsbE1hdHJpeC5wdXNoKFtdKTsKCgkJCS8vIGxldmVsQ250IG1pZ2h0IGJlIDEgZXZlbiB0aG91Z2ggdGhlcmUgYXJlIG5vIGFjdHVhbCBsZXZlbHMuIHByb3RlY3QgYWdhaW5zdCB0aGlzLgoJCQkvLyB0aGlzIHNpbmdsZSBlbXB0eSByb3cgaXMgdXNlZnVsIGZvciBzdHlsaW5nLgoJCQlpZiAobGV2ZWxTZWdzKSB7CgkJCQlmb3IgKGogPSAwOyBqIDwgbGV2ZWxTZWdzLmxlbmd0aDsgaisrKSB7IC8vIGl0ZXJhdGUgdGhyb3VnaCBzZWdtZW50cyBpbiBsZXZlbAoJCQkJCXNlZyA9IGxldmVsU2Vnc1tqXTsKCgkJCQkJZW1wdHlDZWxsc1VudGlsKHNlZy5sZWZ0Q29sKTsKCgkJCQkJLy8gY3JlYXRlIGEgY29udGFpbmVyIHRoYXQgb2NjdXBpZXMgb3IgbW9yZSBjb2x1bW5zLiBhcHBlbmQgdGhlIGV2ZW50IGVsZW1lbnQuCgkJCQkJdGQgPSAkKCc8dGQgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpLmFwcGVuZChzZWcuZWwpOwoJCQkJCWlmIChzZWcubGVmdENvbCAhPSBzZWcucmlnaHRDb2wpIHsKCQkJCQkJdGQuYXR0cignY29sc3BhbicsIHNlZy5yaWdodENvbCAtIHNlZy5sZWZ0Q29sICsgMSk7CgkJCQkJfQoJCQkJCWVsc2UgeyAvLyBhIHNpbmdsZS1jb2x1bW4gc2VnbWVudAoJCQkJCQlsb25lQ2VsbE1hdHJpeFtpXVtjb2xdID0gdGQ7CgkJCQkJfQoKCQkJCQl3aGlsZSAoY29sIDw9IHNlZy5yaWdodENvbCkgewoJCQkJCQljZWxsTWF0cml4W2ldW2NvbF0gPSB0ZDsKCQkJCQkJc2VnTWF0cml4W2ldW2NvbF0gPSBzZWc7CgkJCQkJCWNvbCsrOwoJCQkJCX0KCgkJCQkJdHIuYXBwZW5kKHRkKTsKCQkJCX0KCQkJfQoKCQkJZW1wdHlDZWxsc1VudGlsKGNvbENudCk7IC8vIGZpbmlzaCBvZmYgdGhlIHJvdwoJCQl0aGlzLmJvb2tlbmRDZWxscyh0ciwgJ2V2ZW50U2tlbGV0b24nKTsKCQkJdGJvZHkuYXBwZW5kKHRyKTsKCQl9CgoJCXJldHVybiB7IC8vIGEgInJvd1N0cnVjdCIKCQkJcm93OiByb3csIC8vIHRoZSByb3cgbnVtYmVyCgkJCXRib2R5RWw6IHRib2R5LAoJCQljZWxsTWF0cml4OiBjZWxsTWF0cml4LAoJCQlzZWdNYXRyaXg6IHNlZ01hdHJpeCwKCQkJc2VnTGV2ZWxzOiBzZWdMZXZlbHMsCgkJCXNlZ3M6IHJvd1NlZ3MKCQl9OwoJfSwKCgoJLy8gU3RhY2tzIGEgZmxhdCBhcnJheSBvZiBzZWdtZW50cywgd2hpY2ggYXJlIGFsbCBhc3N1bWVkIHRvIGJlIGluIHRoZSBzYW1lIHJvdywgaW50byBzdWJhcnJheXMgb2YgdmVydGljYWwgbGV2ZWxzLgoJLy8gTk9URTogbW9kaWZpZXMgc2VncwoJYnVpbGRTZWdMZXZlbHM6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgbGV2ZWxzID0gW107CgkJdmFyIGksIHNlZzsKCQl2YXIgajsKCgkJLy8gR2l2ZSBwcmVmZXJlbmNlIHRvIGVsZW1lbnRzIHdpdGggY2VydGFpbiBjcml0ZXJpYSwgc28gdGhleSBoYXZlCgkJLy8gYSBjaGFuY2UgdG8gYmUgY2xvc2VyIHRvIHRoZSB0b3AuCgkJc2Vncy5zb3J0KGNvbXBhcmVTZWdzKTsKCQkKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWcgPSBzZWdzW2ldOwoKCQkJLy8gbG9vcCB0aHJvdWdoIGxldmVscywgc3RhcnRpbmcgd2l0aCB0aGUgdG9wbW9zdCwgdW50aWwgdGhlIHNlZ21lbnQgZG9lc24ndCBjb2xsaWRlIHdpdGggb3RoZXIgc2VnbWVudHMKCQkJZm9yIChqID0gMDsgaiA8IGxldmVscy5sZW5ndGg7IGorKykgewoJCQkJaWYgKCFpc0RheVNlZ0NvbGxpc2lvbihzZWcsIGxldmVsc1tqXSkpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCQkvLyBgamAgbm93IGhvbGRzIHRoZSBkZXNpcmVkIHN1YnJvdyBpbmRleAoJCQlzZWcubGV2ZWwgPSBqOwoKCQkJLy8gY3JlYXRlIG5ldyBsZXZlbCBhcnJheSBpZiBuZWVkZWQgYW5kIGFwcGVuZCBzZWdtZW50CgkJCShsZXZlbHNbal0gfHwgKGxldmVsc1tqXSA9IFtdKSkucHVzaChzZWcpOwoJCX0KCgkJLy8gb3JkZXIgc2VnbWVudHMgbGVmdC10by1yaWdodC4gdmVyeSBpbXBvcnRhbnQgaWYgY2FsZW5kYXIgaXMgUlRMCgkJZm9yIChqID0gMDsgaiA8IGxldmVscy5sZW5ndGg7IGorKykgewoJCQlsZXZlbHNbal0uc29ydChjb21wYXJlRGF5U2VnQ29scyk7CgkJfQoKCQlyZXR1cm4gbGV2ZWxzOwoJfSwKCgoJLy8gR2l2ZW4gYSBmbGF0IGFycmF5IG9mIHNlZ21lbnRzLCByZXR1cm4gYW4gYXJyYXkgb2Ygc3ViLWFycmF5cywgZ3JvdXBlZCBieSBlYWNoIHNlZ21lbnQncyByb3cKCWdyb3VwU2VnUm93czogZnVuY3Rpb24oc2VncykgewoJCXZhciBzZWdSb3dzID0gW107CgkJdmFyIGk7CgoJCWZvciAoaSA9IDA7IGkgPCB0aGlzLnJvd0NudDsgaSsrKSB7CgkJCXNlZ1Jvd3MucHVzaChbXSk7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWdSb3dzW3NlZ3NbaV0ucm93XS5wdXNoKHNlZ3NbaV0pOwoJCX0KCgkJcmV0dXJuIHNlZ1Jvd3M7Cgl9Cgp9KTsKCgovLyBDb21wdXRlcyB3aGV0aGVyIHR3byBzZWdtZW50cycgY29sdW1ucyBjb2xsaWRlLiBUaGV5IGFyZSBhc3N1bWVkIHRvIGJlIGluIHRoZSBzYW1lIHJvdy4KZnVuY3Rpb24gaXNEYXlTZWdDb2xsaXNpb24oc2VnLCBvdGhlclNlZ3MpIHsKCXZhciBpLCBvdGhlclNlZzsKCglmb3IgKGkgPSAwOyBpIDwgb3RoZXJTZWdzLmxlbmd0aDsgaSsrKSB7CgkJb3RoZXJTZWcgPSBvdGhlclNlZ3NbaV07CgoJCWlmICgKCQkJb3RoZXJTZWcubGVmdENvbCA8PSBzZWcucmlnaHRDb2wgJiYKCQkJb3RoZXJTZWcucmlnaHRDb2wgPj0gc2VnLmxlZnRDb2wKCQkpIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCXJldHVybiBmYWxzZTsKfQoKCi8vIEEgY21wIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB0aGUgbGVmdG1vc3QgZXZlbnQKZnVuY3Rpb24gY29tcGFyZURheVNlZ0NvbHMoYSwgYikgewoJcmV0dXJuIGEubGVmdENvbCAtIGIubGVmdENvbDsKfQoKOzsKCi8qIE1ldGhvZHMgcmVsYXRlIHRvIGxpbWl0aW5nIHRoZSBudW1iZXIgZXZlbnRzIGZvciBhIGdpdmVuIGRheSBvbiBhIERheUdyaWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIE5PVEU6IGFsbCB0aGUgc2VncyBiZWluZyBwYXNzZWQgYXJvdW5kIGluIGhlcmUgYXJlIGZvcmVncm91bmQgc2VncwoKRGF5R3JpZC5taXhpbih7CgoJc2VnUG9wb3ZlcjogbnVsbCwgLy8gdGhlIFBvcG92ZXIgdGhhdCBob2xkcyBldmVudHMgdGhhdCBjYW4ndCBmaXQgaW4gYSBjZWxsLiBudWxsIHdoZW4gbm90IHZpc2libGUKCXBvcG92ZXJTZWdzOiBudWxsLCAvLyBhbiBhcnJheSBvZiBzZWdtZW50IG9iamVjdHMgdGhhdCB0aGUgc2VnUG9wb3ZlciBob2xkcy4gbnVsbCB3aGVuIG5vdCB2aXNpYmxlCgoKCXJlbW92ZVNlZ1BvcG92ZXI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnNlZ1BvcG92ZXIpIHsKCQkJdGhpcy5zZWdQb3BvdmVyLmhpZGUoKTsgLy8gaW4gaGFuZGxlciwgd2lsbCBjYWxsIHNlZ1BvcG92ZXIncyByZW1vdmVFbGVtZW50CgkJfQoJfSwKCgoJLy8gTGltaXRzIHRoZSBudW1iZXIgb2YgImxldmVscyIgKHZlcnRpY2FsbHkgc3RhY2tpbmcgbGF5ZXJzIG9mIGV2ZW50cykgZm9yIGVhY2ggcm93IG9mIHRoZSBncmlkLgoJLy8gYGxldmVsTGltaXRgIGNhbiBiZSBmYWxzZSAoZG9uJ3QgbGltaXQpLCBhIG51bWJlciwgb3IgdHJ1ZSAoc2hvdWxkIGJlIGNvbXB1dGVkKS4KCWxpbWl0Um93czogZnVuY3Rpb24obGV2ZWxMaW1pdCkgewoJCXZhciByb3dTdHJ1Y3RzID0gdGhpcy5yb3dTdHJ1Y3RzIHx8IFtdOwoJCXZhciByb3c7IC8vIHJvdyAjCgkJdmFyIHJvd0xldmVsTGltaXQ7CgoJCWZvciAocm93ID0gMDsgcm93IDwgcm93U3RydWN0cy5sZW5ndGg7IHJvdysrKSB7CgkJCXRoaXMudW5saW1pdFJvdyhyb3cpOwoKCQkJaWYgKCFsZXZlbExpbWl0KSB7CgkJCQlyb3dMZXZlbExpbWl0ID0gZmFsc2U7CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIGxldmVsTGltaXQgPT09ICdudW1iZXInKSB7CgkJCQlyb3dMZXZlbExpbWl0ID0gbGV2ZWxMaW1pdDsKCQkJfQoJCQllbHNlIHsKCQkJCXJvd0xldmVsTGltaXQgPSB0aGlzLmNvbXB1dGVSb3dMZXZlbExpbWl0KHJvdyk7CgkJCX0KCgkJCWlmIChyb3dMZXZlbExpbWl0ICE9PSBmYWxzZSkgewoJCQkJdGhpcy5saW1pdFJvdyhyb3csIHJvd0xldmVsTGltaXQpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIG51bWJlciBvZiBsZXZlbHMgYSByb3cgd2lsbCBhY2NvbW9kYXRlIHdpdGhvdXQgZ29pbmcgb3V0c2lkZSBpdHMgYm91bmRzLgoJLy8gQXNzdW1lcyB0aGUgcm93IGlzICJyaWdpZCIgKG1haW50YWlucyBhIGNvbnN0YW50IGhlaWdodCByZWdhcmRsZXNzIG9mIHdoYXQgaXMgaW5zaWRlKS4KCS8vIGByb3dgIGlzIHRoZSByb3cgbnVtYmVyLgoJY29tcHV0ZVJvd0xldmVsTGltaXQ6IGZ1bmN0aW9uKHJvdykgewoJCXZhciByb3dFbCA9IHRoaXMucm93RWxzLmVxKHJvdyk7IC8vIHRoZSBjb250YWluaW5nICJmYWtlIiByb3cgZGl2CgkJdmFyIHJvd0hlaWdodCA9IHJvd0VsLmhlaWdodCgpOyAvLyBUT0RPOiBjYWNoZSBzb21laG93PwoJCXZhciB0ckVscyA9IHRoaXMucm93U3RydWN0c1tyb3ddLnRib2R5RWwuY2hpbGRyZW4oKTsKCQl2YXIgaSwgdHJFbDsKCQl2YXIgdHJIZWlnaHQ7CgoJCWZ1bmN0aW9uIGl0ZXJJbm5lckhlaWdodHMoaSwgY2hpbGROb2RlKSB7CgkJCXRySGVpZ2h0ID0gTWF0aC5tYXgodHJIZWlnaHQsICQoY2hpbGROb2RlKS5vdXRlckhlaWdodCgpKTsKCQl9CgoJCS8vIFJldmVhbCBvbmUgbGV2ZWwgPHRyPiBhdCBhIHRpbWUgYW5kIHN0b3Agd2hlbiB3ZSBmaW5kIG9uZSBvdXQgb2YgYm91bmRzCgkJZm9yIChpID0gMDsgaSA8IHRyRWxzLmxlbmd0aDsgaSsrKSB7CgkJCXRyRWwgPSB0ckVscy5lcShpKS5yZW1vdmVDbGFzcygnZmMtbGltaXRlZCcpOyAvLyByZXNldCB0byBvcmlnaW5hbCBzdGF0ZSAocmV2ZWFsKQoKCQkJLy8gd2l0aCByb3dzcGFucz4xIGFuZCBJRTgsIHRyRWwub3V0ZXJIZWlnaHQoKSB3b3VsZCByZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgbGFyZ2VzdCBjZWxsLAoJCQkvLyBzbyBpbnN0ZWFkLCBmaW5kIHRoZSB0YWxsZXN0IGlubmVyIGNvbnRlbnQgZWxlbWVudC4KCQkJdHJIZWlnaHQgPSAwOwoJCQl0ckVsLmZpbmQoJz4gdGQgPiA6Zmlyc3QtY2hpbGQnKS5lYWNoKGl0ZXJJbm5lckhlaWdodHMpOwoKCQkJaWYgKHRyRWwucG9zaXRpb24oKS50b3AgKyB0ckhlaWdodCA+IHJvd0hlaWdodCkgewoJCQkJcmV0dXJuIGk7CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsgLy8gc2hvdWxkIG5vdCBsaW1pdCBhdCBhbGwKCX0sCgoKCS8vIExpbWl0cyB0aGUgZ2l2ZW4gZ3JpZCByb3cgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGxldmVscyBhbmQgaW5qZWN0cyAibW9yZSIgbGlua3MgaWYgbmVjZXNzYXJ5LgoJLy8gYHJvd2AgaXMgdGhlIHJvdyBudW1iZXIuCgkvLyBgbGV2ZWxMaW1pdGAgaXMgYSBudW1iZXIgZm9yIHRoZSBtYXhpbXVtIChpbmNsdXNpdmUpIG51bWJlciBvZiBsZXZlbHMgYWxsb3dlZC4KCWxpbWl0Um93OiBmdW5jdGlvbihyb3csIGxldmVsTGltaXQpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciByb3dTdHJ1Y3QgPSB0aGlzLnJvd1N0cnVjdHNbcm93XTsKCQl2YXIgbW9yZU5vZGVzID0gW107IC8vIGFycmF5IG9mICJtb3JlIiA8YT4gbGlua3MgYW5kIDx0ZD4gRE9NIG5vZGVzCgkJdmFyIGNvbCA9IDA7IC8vIGNvbCAjLCBsZWZ0LXRvLXJpZ2h0IChub3QgY2hyb25vbG9naWNhbGx5KQoJCXZhciBjZWxsOwoJCXZhciBsZXZlbFNlZ3M7IC8vIGFycmF5IG9mIHNlZ21lbnQgb2JqZWN0cyBpbiB0aGUgbGFzdCBhbGxvd2FibGUgbGV2ZWwsIG9yZGVyZWQgbGVmdC10by1yaWdodAoJCXZhciBjZWxsTWF0cml4OyAvLyBhIG1hdHJpeCAoYnkgbGV2ZWwsIHRoZW4gY29sdW1uKSBvZiBhbGwgPHRkPiBqUXVlcnkgZWxlbWVudHMgaW4gdGhlIHJvdwoJCXZhciBsaW1pdGVkTm9kZXM7IC8vIGFycmF5IG9mIHRlbXBvcmFyaWx5IGhpZGRlbiBsZXZlbCA8dHI+IGFuZCBzZWdtZW50IDx0ZD4gRE9NIG5vZGVzCgkJdmFyIGksIHNlZzsKCQl2YXIgc2Vnc0JlbG93OyAvLyBhcnJheSBvZiBzZWdtZW50IG9iamVjdHMgYmVsb3cgYHNlZ2AgaW4gdGhlIGN1cnJlbnQgYGNvbGAKCQl2YXIgdG90YWxTZWdzQmVsb3c7IC8vIHRvdGFsIG51bWJlciBvZiBzZWdtZW50cyBiZWxvdyBgc2VnYCBpbiBhbnkgb2YgdGhlIGNvbHVtbnMgYHNlZ2Agb2NjdXBpZXMKCQl2YXIgY29sU2Vnc0JlbG93OyAvLyBhcnJheSBvZiBzZWdtZW50IGFycmF5cywgYmVsb3cgc2VnLCBvbmUgZm9yIGVhY2ggY29sdW1uIChvZmZzZXQgZnJvbSBzZWdzJ3MgZmlyc3QgY29sdW1uKQoJCXZhciB0ZCwgcm93c3BhbjsKCQl2YXIgc2VnTW9yZU5vZGVzOyAvLyBhcnJheSBvZiAibW9yZSIgPHRkPiBjZWxscyB0aGF0IHdpbGwgc3RhbmQtaW4gZm9yIHRoZSBjdXJyZW50IHNlZydzIGNlbGwKCQl2YXIgajsKCQl2YXIgbW9yZVRkLCBtb3JlV3JhcCwgbW9yZUxpbms7CgoJCS8vIEl0ZXJhdGVzIHRocm91Z2ggZW1wdHkgbGV2ZWwgY2VsbHMgYW5kIHBsYWNlcyAibW9yZSIgbGlua3MgaW5zaWRlIGlmIG5lZWQgYmUKCQlmdW5jdGlvbiBlbXB0eUNlbGxzVW50aWwoZW5kQ29sKSB7IC8vIGdvZXMgZnJvbSBjdXJyZW50IGBjb2xgIHRvIGBlbmRDb2xgCgkJCXdoaWxlIChjb2wgPCBlbmRDb2wpIHsKCQkJCWNlbGwgPSBfdGhpcy5nZXRDZWxsKHJvdywgY29sKTsKCQkJCXNlZ3NCZWxvdyA9IF90aGlzLmdldENlbGxTZWdzKGNlbGwsIGxldmVsTGltaXQpOwoJCQkJaWYgKHNlZ3NCZWxvdy5sZW5ndGgpIHsKCQkJCQl0ZCA9IGNlbGxNYXRyaXhbbGV2ZWxMaW1pdCAtIDFdW2NvbF07CgkJCQkJbW9yZUxpbmsgPSBfdGhpcy5yZW5kZXJNb3JlTGluayhjZWxsLCBzZWdzQmVsb3cpOwoJCQkJCW1vcmVXcmFwID0gJCgnPGRpdi8+JykuYXBwZW5kKG1vcmVMaW5rKTsKCQkJCQl0ZC5hcHBlbmQobW9yZVdyYXApOwoJCQkJCW1vcmVOb2Rlcy5wdXNoKG1vcmVXcmFwWzBdKTsKCQkJCX0KCQkJCWNvbCsrOwoJCQl9CgkJfQoKCQlpZiAobGV2ZWxMaW1pdCAmJiBsZXZlbExpbWl0IDwgcm93U3RydWN0LnNlZ0xldmVscy5sZW5ndGgpIHsgLy8gaXMgaXQgYWN0dWFsbHkgb3ZlciB0aGUgbGltaXQ/CgkJCWxldmVsU2VncyA9IHJvd1N0cnVjdC5zZWdMZXZlbHNbbGV2ZWxMaW1pdCAtIDFdOwoJCQljZWxsTWF0cml4ID0gcm93U3RydWN0LmNlbGxNYXRyaXg7CgoJCQlsaW1pdGVkTm9kZXMgPSByb3dTdHJ1Y3QudGJvZHlFbC5jaGlsZHJlbigpLnNsaWNlKGxldmVsTGltaXQpIC8vIGdldCBsZXZlbCA8dHI+IGVsZW1lbnRzIHBhc3QgdGhlIGxpbWl0CgkJCQkuYWRkQ2xhc3MoJ2ZjLWxpbWl0ZWQnKS5nZXQoKTsgLy8gaGlkZSBlbGVtZW50cyBhbmQgZ2V0IGEgc2ltcGxlIERPTS1ub2RlcyBhcnJheQoKCQkJLy8gaXRlcmF0ZSB0aG91Z2ggc2VnbWVudHMgaW4gdGhlIGxhc3QgYWxsb3dhYmxlIGxldmVsCgkJCWZvciAoaSA9IDA7IGkgPCBsZXZlbFNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCXNlZyA9IGxldmVsU2Vnc1tpXTsKCQkJCWVtcHR5Q2VsbHNVbnRpbChzZWcubGVmdENvbCk7IC8vIHByb2Nlc3MgZW1wdHkgY2VsbHMgYmVmb3JlIHRoZSBzZWdtZW50CgoJCQkJLy8gZGV0ZXJtaW5lICphbGwqIHNlZ21lbnRzIGJlbG93IGBzZWdgIHRoYXQgb2NjdXB5IHRoZSBzYW1lIGNvbHVtbnMKCQkJCWNvbFNlZ3NCZWxvdyA9IFtdOwoJCQkJdG90YWxTZWdzQmVsb3cgPSAwOwoJCQkJd2hpbGUgKGNvbCA8PSBzZWcucmlnaHRDb2wpIHsKCQkJCQljZWxsID0gdGhpcy5nZXRDZWxsKHJvdywgY29sKTsKCQkJCQlzZWdzQmVsb3cgPSB0aGlzLmdldENlbGxTZWdzKGNlbGwsIGxldmVsTGltaXQpOwoJCQkJCWNvbFNlZ3NCZWxvdy5wdXNoKHNlZ3NCZWxvdyk7CgkJCQkJdG90YWxTZWdzQmVsb3cgKz0gc2Vnc0JlbG93Lmxlbmd0aDsKCQkJCQljb2wrKzsKCQkJCX0KCgkJCQlpZiAodG90YWxTZWdzQmVsb3cpIHsgLy8gZG8gd2UgbmVlZCB0byByZXBsYWNlIHRoaXMgc2VnbWVudCB3aXRoIG9uZSBvciBtYW55ICJtb3JlIiBsaW5rcz8KCQkJCQl0ZCA9IGNlbGxNYXRyaXhbbGV2ZWxMaW1pdCAtIDFdW3NlZy5sZWZ0Q29sXTsgLy8gdGhlIHNlZ21lbnQncyBwYXJlbnQgY2VsbAoJCQkJCXJvd3NwYW4gPSB0ZC5hdHRyKCdyb3dzcGFuJykgfHwgMTsKCQkJCQlzZWdNb3JlTm9kZXMgPSBbXTsKCgkJCQkJLy8gbWFrZSBhIHJlcGxhY2VtZW50IDx0ZD4gZm9yIGVhY2ggY29sdW1uIHRoZSBzZWdtZW50IG9jY3VwaWVzLiB3aWxsIGJlIG9uZSBmb3IgZWFjaCBjb2xzcGFuCgkJCQkJZm9yIChqID0gMDsgaiA8IGNvbFNlZ3NCZWxvdy5sZW5ndGg7IGorKykgewoJCQkJCQltb3JlVGQgPSAkKCc8dGQgY2xhc3M9ImZjLW1vcmUtY2VsbCIvPicpLmF0dHIoJ3Jvd3NwYW4nLCByb3dzcGFuKTsKCQkJCQkJc2Vnc0JlbG93ID0gY29sU2Vnc0JlbG93W2pdOwoJCQkJCQljZWxsID0gdGhpcy5nZXRDZWxsKHJvdywgc2VnLmxlZnRDb2wgKyBqKTsKCQkJCQkJbW9yZUxpbmsgPSB0aGlzLnJlbmRlck1vcmVMaW5rKGNlbGwsIFsgc2VnIF0uY29uY2F0KHNlZ3NCZWxvdykpOyAvLyBjb3VudCBzZWcgYXMgaGlkZGVuIHRvbwoJCQkJCQltb3JlV3JhcCA9ICQoJzxkaXYvPicpLmFwcGVuZChtb3JlTGluayk7CgkJCQkJCW1vcmVUZC5hcHBlbmQobW9yZVdyYXApOwoJCQkJCQlzZWdNb3JlTm9kZXMucHVzaChtb3JlVGRbMF0pOwoJCQkJCQltb3JlTm9kZXMucHVzaChtb3JlVGRbMF0pOwoJCQkJCX0KCgkJCQkJdGQuYWRkQ2xhc3MoJ2ZjLWxpbWl0ZWQnKS5hZnRlcigkKHNlZ01vcmVOb2RlcykpOyAvLyBoaWRlIG9yaWdpbmFsIDx0ZD4gYW5kIGluamVjdCByZXBsYWNlbWVudHMKCQkJCQlsaW1pdGVkTm9kZXMucHVzaCh0ZFswXSk7CgkJCQl9CgkJCX0KCgkJCWVtcHR5Q2VsbHNVbnRpbCh0aGlzLmNvbENudCk7IC8vIGZpbmlzaCBvZmYgdGhlIGxldmVsCgkJCXJvd1N0cnVjdC5tb3JlRWxzID0gJChtb3JlTm9kZXMpOyAvLyBmb3IgZWFzeSB1bmRvaW5nIGxhdGVyCgkJCXJvd1N0cnVjdC5saW1pdGVkRWxzID0gJChsaW1pdGVkTm9kZXMpOyAvLyBmb3IgZWFzeSB1bmRvaW5nIGxhdGVyCgkJfQoJfSwKCgoJLy8gUmV2ZWFscyBhbGwgbGV2ZWxzIGFuZCByZW1vdmVzIGFsbCAibW9yZSItcmVsYXRlZCBlbGVtZW50cyBmb3IgYSBncmlkJ3Mgcm93LgoJLy8gYHJvd2AgaXMgYSByb3cgbnVtYmVyLgoJdW5saW1pdFJvdzogZnVuY3Rpb24ocm93KSB7CgkJdmFyIHJvd1N0cnVjdCA9IHRoaXMucm93U3RydWN0c1tyb3ddOwoKCQlpZiAocm93U3RydWN0Lm1vcmVFbHMpIHsKCQkJcm93U3RydWN0Lm1vcmVFbHMucmVtb3ZlKCk7CgkJCXJvd1N0cnVjdC5tb3JlRWxzID0gbnVsbDsKCQl9CgoJCWlmIChyb3dTdHJ1Y3QubGltaXRlZEVscykgewoJCQlyb3dTdHJ1Y3QubGltaXRlZEVscy5yZW1vdmVDbGFzcygnZmMtbGltaXRlZCcpOwoJCQlyb3dTdHJ1Y3QubGltaXRlZEVscyA9IG51bGw7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyBhbiA8YT4gZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgaGlkZGVuIGV2ZW50IGVsZW1lbnQgZm9yIGEgY2VsbC4KCS8vIFJlc3BvbnNpYmxlIGZvciBhdHRhY2hpbmcgY2xpY2sgaGFuZGxlciBhcyB3ZWxsLgoJcmVuZGVyTW9yZUxpbms6IGZ1bmN0aW9uKGNlbGwsIGhpZGRlblNlZ3MpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoKCQlyZXR1cm4gJCgnPGEgY2xhc3M9ImZjLW1vcmUiLz4nKQoJCQkudGV4dCgKCQkJCXRoaXMuZ2V0TW9yZUxpbmtUZXh0KGhpZGRlblNlZ3MubGVuZ3RoKQoJCQkpCgkJCS5vbignY2xpY2snLCBmdW5jdGlvbihldikgewoJCQkJdmFyIGNsaWNrT3B0aW9uID0gdmlldy5vcHQoJ2V2ZW50TGltaXRDbGljaycpOwoJCQkJdmFyIGRhdGUgPSBjZWxsLnN0YXJ0OwoJCQkJdmFyIG1vcmVFbCA9ICQodGhpcyk7CgkJCQl2YXIgZGF5RWwgPSBfdGhpcy5nZXRDZWxsRGF5RWwoY2VsbCk7CgkJCQl2YXIgYWxsU2VncyA9IF90aGlzLmdldENlbGxTZWdzKGNlbGwpOwoKCQkJCS8vIHJlc2NvcGUgdGhlIHNlZ21lbnRzIHRvIGJlIHdpdGhpbiB0aGUgY2VsbCdzIGRhdGUKCQkJCXZhciByZXNsaWNlZEFsbFNlZ3MgPSBfdGhpcy5yZXNsaWNlRGF5U2VncyhhbGxTZWdzLCBkYXRlKTsKCQkJCXZhciByZXNsaWNlZEhpZGRlblNlZ3MgPSBfdGhpcy5yZXNsaWNlRGF5U2VncyhoaWRkZW5TZWdzLCBkYXRlKTsKCgkJCQlpZiAodHlwZW9mIGNsaWNrT3B0aW9uID09PSAnZnVuY3Rpb24nKSB7CgkJCQkJLy8gdGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZSBhbiBhdG9taWMgb3B0aW9uCgkJCQkJY2xpY2tPcHRpb24gPSB2aWV3LnRyaWdnZXIoJ2V2ZW50TGltaXRDbGljaycsIG51bGwsIHsKCQkJCQkJZGF0ZTogZGF0ZSwKCQkJCQkJZGF5RWw6IGRheUVsLAoJCQkJCQltb3JlRWw6IG1vcmVFbCwKCQkJCQkJc2VnczogcmVzbGljZWRBbGxTZWdzLAoJCQkJCQloaWRkZW5TZWdzOiByZXNsaWNlZEhpZGRlblNlZ3MKCQkJCQl9LCBldik7CgkJCQl9CgoJCQkJaWYgKGNsaWNrT3B0aW9uID09PSAncG9wb3ZlcicpIHsKCQkJCQlfdGhpcy5zaG93U2VnUG9wb3ZlcihjZWxsLCBtb3JlRWwsIHJlc2xpY2VkQWxsU2Vncyk7CgkJCQl9CgkJCQllbHNlIGlmICh0eXBlb2YgY2xpY2tPcHRpb24gPT09ICdzdHJpbmcnKSB7IC8vIGEgdmlldyBuYW1lCgkJCQkJdmlldy5jYWxlbmRhci56b29tVG8oZGF0ZSwgY2xpY2tPcHRpb24pOwoJCQkJfQoJCQl9KTsKCX0sCgoKCS8vIFJldmVhbHMgdGhlIHBvcG92ZXIgdGhhdCBkaXNwbGF5cyBhbGwgZXZlbnRzIHdpdGhpbiBhIGNlbGwKCXNob3dTZWdQb3BvdmVyOiBmdW5jdGlvbihjZWxsLCBtb3JlTGluaywgc2VncykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIG1vcmVXcmFwID0gbW9yZUxpbmsucGFyZW50KCk7IC8vIHRoZSA8ZGl2PiB3cmFwcGVyIGFyb3VuZCB0aGUgPGE+CgkJdmFyIHRvcEVsOyAvLyB0aGUgZWxlbWVudCB3ZSB3YW50IHRvIG1hdGNoIHRoZSB0b3AgY29vcmRpbmF0ZSBvZgoJCXZhciBvcHRpb25zOwoKCQlpZiAodGhpcy5yb3dDbnQgPT0gMSkgewoJCQl0b3BFbCA9IHZpZXcuZWw7IC8vIHdpbGwgY2F1c2UgdGhlIHBvcG92ZXIgdG8gY292ZXIgYW55IHNvcnQgb2YgaGVhZGVyCgkJfQoJCWVsc2UgewoJCQl0b3BFbCA9IHRoaXMucm93RWxzLmVxKGNlbGwucm93KTsgLy8gd2lsbCBhbGlnbiB3aXRoIHRvcCBvZiByb3cKCQl9CgoJCW9wdGlvbnMgPSB7CgkJCWNsYXNzTmFtZTogJ2ZjLW1vcmUtcG9wb3ZlcicsCgkJCWNvbnRlbnQ6IHRoaXMucmVuZGVyU2VnUG9wb3ZlckNvbnRlbnQoY2VsbCwgc2VncyksCgkJCXBhcmVudEVsOiB0aGlzLmVsLAoJCQl0b3A6IHRvcEVsLm9mZnNldCgpLnRvcCwKCQkJYXV0b0hpZGU6IHRydWUsIC8vIHdoZW4gdGhlIHVzZXIgY2xpY2tzIGVsc2V3aGVyZSwgaGlkZSB0aGUgcG9wb3ZlcgoJCQl2aWV3cG9ydENvbnN0cmFpbjogdmlldy5vcHQoJ3BvcG92ZXJWaWV3cG9ydENvbnN0cmFpbicpLAoJCQloaWRlOiBmdW5jdGlvbigpIHsKCQkJCS8vIGtpbGwgZXZlcnl0aGluZyB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlbgoJCQkJX3RoaXMuc2VnUG9wb3Zlci5yZW1vdmVFbGVtZW50KCk7CgkJCQlfdGhpcy5zZWdQb3BvdmVyID0gbnVsbDsKCQkJCV90aGlzLnBvcG92ZXJTZWdzID0gbnVsbDsKCQkJfQoJCX07CgoJCS8vIERldGVybWluZSBob3Jpem9udGFsIGNvb3JkaW5hdGUuCgkJLy8gV2UgdXNlIHRoZSBtb3JlV3JhcCBpbnN0ZWFkIG9mIHRoZSA8dGQ+IHRvIGF2b2lkIGJvcmRlciBjb25mdXNpb24uCgkJaWYgKHRoaXMuaXNSVEwpIHsKCQkJb3B0aW9ucy5yaWdodCA9IG1vcmVXcmFwLm9mZnNldCgpLmxlZnQgKyBtb3JlV3JhcC5vdXRlcldpZHRoKCkgKyAxOyAvLyArMSB0byBiZSBvdmVyIGNlbGwgYm9yZGVyCgkJfQoJCWVsc2UgewoJCQlvcHRpb25zLmxlZnQgPSBtb3JlV3JhcC5vZmZzZXQoKS5sZWZ0IC0gMTsgLy8gLTEgdG8gYmUgb3ZlciBjZWxsIGJvcmRlcgoJCX0KCgkJdGhpcy5zZWdQb3BvdmVyID0gbmV3IFBvcG92ZXIob3B0aW9ucyk7CgkJdGhpcy5zZWdQb3BvdmVyLnNob3coKTsKCX0sCgoKCS8vIEJ1aWxkcyB0aGUgaW5uZXIgRE9NIGNvbnRlbnRzIG9mIHRoZSBzZWdtZW50IHBvcG92ZXIKCXJlbmRlclNlZ1BvcG92ZXJDb250ZW50OiBmdW5jdGlvbihjZWxsLCBzZWdzKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGlzVGhlbWUgPSB2aWV3Lm9wdCgndGhlbWUnKTsKCQl2YXIgdGl0bGUgPSBjZWxsLnN0YXJ0LmZvcm1hdCh2aWV3Lm9wdCgnZGF5UG9wb3ZlckZvcm1hdCcpKTsKCQl2YXIgY29udGVudCA9ICQoCgkJCSc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJyArIHZpZXcud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIj4nICsKCQkJCSc8c3BhbiBjbGFzcz0iZmMtY2xvc2UgJyArCgkJCQkJKGlzVGhlbWUgPyAndWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2snIDogJ2ZjLWljb24gZmMtaWNvbi14JykgKwoJCQkJJyI+PC9zcGFuPicgKwoJCQkJJzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JyArCgkJCQkJaHRtbEVzY2FwZSh0aXRsZSkgKwoJCQkJJzwvc3Bhbj4nICsKCQkJCSc8ZGl2IGNsYXNzPSJmYy1jbGVhciIvPicgKwoJCQknPC9kaXY+JyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1ib2R5ICcgKyB2aWV3LndpZGdldENvbnRlbnRDbGFzcyArICciPicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciI+PC9kaXY+JyArCgkJCSc8L2Rpdj4nCgkJKTsKCQl2YXIgc2VnQ29udGFpbmVyID0gY29udGVudC5maW5kKCcuZmMtZXZlbnQtY29udGFpbmVyJyk7CgkJdmFyIGk7CgoJCS8vIHJlbmRlciBlYWNoIHNlZydzIGBlbGAgYW5kIG9ubHkgcmV0dXJuIHRoZSB2aXNpYmxlIHNlZ3MKCQlzZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ0VscyhzZWdzLCB0cnVlKTsgLy8gZGlzYWJsZVJlc2l6aW5nPXRydWUKCQl0aGlzLnBvcG92ZXJTZWdzID0gc2VnczsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCgkJCS8vIGJlY2F1c2Ugc2VnbWVudHMgaW4gdGhlIHBvcG92ZXIgYXJlIG5vdCBwYXJ0IG9mIGEgZ3JpZCBjb29yZGluYXRlIHN5c3RlbSwgcHJvdmlkZSBhIGhpbnQgdG8gYW55CgkJCS8vIGdyaWRzIHRoYXQgd2FudCB0byBkbyBkcmFnLW4tZHJvcCBhYm91dCB3aGljaCBjZWxsIGl0IGNhbWUgZnJvbQoJCQlzZWdzW2ldLmNlbGwgPSBjZWxsOwoKCQkJc2VnQ29udGFpbmVyLmFwcGVuZChzZWdzW2ldLmVsKTsKCQl9CgoJCXJldHVybiBjb250ZW50OwoJfSwKCgoJLy8gR2l2ZW4gdGhlIGV2ZW50cyB3aXRoaW4gYW4gYXJyYXkgb2Ygc2VnbWVudCBvYmplY3RzLCByZXNsaWNlIHRoZW0gdG8gYmUgaW4gYSBzaW5nbGUgZGF5CglyZXNsaWNlRGF5U2VnczogZnVuY3Rpb24oc2VncywgZGF5RGF0ZSkgewoKCQkvLyBidWlsZCBhbiBhcnJheSBvZiB0aGUgb3JpZ2luYWwgZXZlbnRzCgkJdmFyIGV2ZW50cyA9ICQubWFwKHNlZ3MsIGZ1bmN0aW9uKHNlZykgewoJCQlyZXR1cm4gc2VnLmV2ZW50OwoJCX0pOwoKCQl2YXIgZGF5U3RhcnQgPSBkYXlEYXRlLmNsb25lKCkuc3RyaXBUaW1lKCk7CgkJdmFyIGRheUVuZCA9IGRheVN0YXJ0LmNsb25lKCkuYWRkKDEsICdkYXlzJyk7CgkJdmFyIGRheVJhbmdlID0geyBzdGFydDogZGF5U3RhcnQsIGVuZDogZGF5RW5kIH07CgoJCS8vIHNsaWNlIHRoZSBldmVudHMgd2l0aCBhIGN1c3RvbSBzbGljaW5nIGZ1bmN0aW9uCgkJc2VncyA9IHRoaXMuZXZlbnRzVG9TZWdzKAoJCQlldmVudHMsCgkJCWZ1bmN0aW9uKHJhbmdlKSB7CgkJCQl2YXIgc2VnID0gaW50ZXJzZWN0aW9uVG9TZWcocmFuZ2UsIGRheVJhbmdlKTsgLy8gdW5kZWZpbmQgaWYgbm8gaW50ZXJzZWN0aW9uCgkJCQlyZXR1cm4gc2VnID8gWyBzZWcgXSA6IFtdOyAvLyBtdXN0IHJldHVybiBhbiBhcnJheSBvZiBzZWdtZW50cwoJCQl9CgkJKTsKCgkJLy8gZm9yY2UgYW4gb3JkZXIgYmVjYXVzZSBldmVudHNUb1NlZ3MgZG9lc24ndCBndWFyYW50ZWUgb25lCgkJc2Vncy5zb3J0KGNvbXBhcmVTZWdzKTsKCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIHRleHQgdGhhdCBzaG91bGQgYmUgaW5zaWRlIGEgIm1vcmUiIGxpbmssIGdpdmVuIHRoZSBudW1iZXIgb2YgZXZlbnRzIGl0IHJlcHJlc2VudHMKCWdldE1vcmVMaW5rVGV4dDogZnVuY3Rpb24obnVtKSB7CgkJdmFyIG9wdCA9IHRoaXMudmlldy5vcHQoJ2V2ZW50TGltaXRUZXh0Jyk7CgoJCWlmICh0eXBlb2Ygb3B0ID09PSAnZnVuY3Rpb24nKSB7CgkJCXJldHVybiBvcHQobnVtKTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiAnKycgKyBudW0gKyAnICcgKyBvcHQ7CgkJfQoJfSwKCgoJLy8gUmV0dXJucyBzZWdtZW50cyB3aXRoaW4gYSBnaXZlbiBjZWxsLgoJLy8gSWYgYHN0YXJ0TGV2ZWxgIGlzIHNwZWNpZmllZCwgcmV0dXJucyBvbmx5IGV2ZW50cyBpbmNsdWRpbmcgYW5kIGJlbG93IHRoYXQgbGV2ZWwuIE90aGVyd2lzZSByZXR1cm5zIGFsbCBzZWdzLgoJZ2V0Q2VsbFNlZ3M6IGZ1bmN0aW9uKGNlbGwsIHN0YXJ0TGV2ZWwpIHsKCQl2YXIgc2VnTWF0cml4ID0gdGhpcy5yb3dTdHJ1Y3RzW2NlbGwucm93XS5zZWdNYXRyaXg7CgkJdmFyIGxldmVsID0gc3RhcnRMZXZlbCB8fCAwOwoJCXZhciBzZWdzID0gW107CgkJdmFyIHNlZzsKCgkJd2hpbGUgKGxldmVsIDwgc2VnTWF0cml4Lmxlbmd0aCkgewoJCQlzZWcgPSBzZWdNYXRyaXhbbGV2ZWxdW2NlbGwuY29sXTsKCQkJaWYgKHNlZykgewoJCQkJc2Vncy5wdXNoKHNlZyk7CgkJCX0KCQkJbGV2ZWwrKzsKCQl9CgoJCXJldHVybiBzZWdzOwoJfQoKfSk7Cgo7OwoKLyogQSBjb21wb25lbnQgdGhhdCByZW5kZXJzIG9uZSBvciBtb3JlIGNvbHVtbnMgb2YgdmVydGljYWwgdGltZSBzbG90cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBUaW1lR3JpZCA9IEdyaWQuZXh0ZW5kKHsKCglzbG90RHVyYXRpb246IG51bGwsIC8vIGR1cmF0aW9uIG9mIGEgInNsb3QiLCBhIGRpc3RpbmN0IHRpbWUgc2VnbWVudCBvbiBnaXZlbiBkYXksIHZpc3VhbGl6ZWQgYnkgbGluZXMKCXNuYXBEdXJhdGlvbjogbnVsbCwgLy8gZ3JhbnVsYXJpdHkgb2YgdGltZSBmb3IgZHJhZ2dpbmcgYW5kIHNlbGVjdGluZwoJbWluVGltZTogbnVsbCwgLy8gRHVyYXRpb24gb2JqZWN0IHRoYXQgZGVub3RlcyB0aGUgZmlyc3QgdmlzaWJsZSB0aW1lIG9mIGFueSBnaXZlbiBkYXkKCW1heFRpbWU6IG51bGwsIC8vIER1cmF0aW9uIG9iamVjdCB0aGF0IGRlbm90ZXMgdGhlIGV4Y2x1c2l2ZSB2aXNpYmxlIGVuZCB0aW1lIG9mIGFueSBnaXZlbiBkYXkKCWNvbERhdGVzOiBudWxsLCAvLyB3aG9sZS1kYXkgZGF0ZXMgZm9yIGVhY2ggY29sdW1uLiBsZWZ0IHRvIHJpZ2h0CglheGlzRm9ybWF0OiBudWxsLCAvLyBmb3JtYXR0aW5nIHN0cmluZyBmb3IgdGltZXMgcnVubmluZyBhbG9uZyB2ZXJ0aWNhbCBheGlzCgoJZGF5RWxzOiBudWxsLCAvLyBjZWxscyBlbGVtZW50cyBpbiB0aGUgZGF5LXJvdyBiYWNrZ3JvdW5kCglzbGF0RWxzOiBudWxsLCAvLyBlbGVtZW50cyBydW5uaW5nIGhvcml6b250YWxseSBhY3Jvc3MgYWxsIGNvbHVtbnMKCglzbGF0VG9wczogbnVsbCwgLy8gYW4gYXJyYXkgb2YgdG9wIHBvc2l0aW9ucywgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lci4gbGFzdCBpdGVtIGhvbGRzIGJvdHRvbSBvZiBsYXN0IHNsb3QKCgloZWxwZXJFbDogbnVsbCwgLy8gY2VsbCBza2VsZXRvbiBlbGVtZW50IGZvciByZW5kZXJpbmcgdGhlIG1vY2sgZXZlbnQgImhlbHBlciIKCglidXNpbmVzc0hvdXJTZWdzOiBudWxsLAoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7CgkJR3JpZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1jb25zdHJ1Y3RvcgoJCXRoaXMucHJvY2Vzc09wdGlvbnMoKTsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIHRpbWUgZ3JpZCBpbnRvIGB0aGlzLmVsYCwgd2hpY2ggc2hvdWxkIGFscmVhZHkgYmUgYXNzaWduZWQuCgkvLyBSZWxpZXMgb24gdGhlIHZpZXcncyBjb2xDbnQuIEluIHRoZSBmdXR1cmUsIHRoaXMgY29tcG9uZW50IHNob3VsZCBwcm9iYWJseSBiZSBzZWxmLXN1ZmZpY2llbnQuCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJdGhpcy5lbC5odG1sKHRoaXMucmVuZGVySHRtbCgpKTsKCQl0aGlzLmRheUVscyA9IHRoaXMuZWwuZmluZCgnLmZjLWRheScpOwoJCXRoaXMuc2xhdEVscyA9IHRoaXMuZWwuZmluZCgnLmZjLXNsYXRzIHRyJyk7Cgl9LAoKCglyZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQl2YXIgZXZlbnRzID0gdGhpcy52aWV3LmNhbGVuZGFyLmdldEJ1c2luZXNzSG91cnNFdmVudHMoKTsKCQl0aGlzLmJ1c2luZXNzSG91clNlZ3MgPSB0aGlzLnJlbmRlckZpbGwoJ2J1c2luZXNzSG91cnMnLCB0aGlzLmV2ZW50c1RvU2VncyhldmVudHMpLCAnYmdldmVudCcpOwoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgSFRNTCBza2VsZXRvbiBmb3IgdGhlIGdyaWQKCXJlbmRlckh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1iZyI+JyArCgkJCQknPHRhYmxlPicgKwoJCQkJCXRoaXMucm93SHRtbCgnc2xvdEJnJykgKyAvLyBsZXZlcmFnZXMgUm93UmVuZGVyZXIsIHdoaWNoIHdpbGwgY2FsbCBzbG90QmdDZWxsSHRtbAoJCQkJJzwvdGFibGU+JyArCgkJCSc8L2Rpdj4nICsKCQkJJzxkaXYgY2xhc3M9ImZjLXNsYXRzIj4nICsKCQkJCSc8dGFibGU+JyArCgkJCQkJdGhpcy5zbGF0Um93SHRtbCgpICsKCQkJCSc8L3RhYmxlPicgKwoJCQknPC9kaXY+JzsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgdmVydGljYWwgYmFja2dyb3VuZCBjZWxsIGJlaGluZCB0aGUgc2xvdHMuCgkvLyBUaGlzIG1ldGhvZCBpcyBkaXN0aW5jdCBmcm9tICdiZycgYmVjYXVzZSB3ZSB3YW50ZWQgYSBuZXcgYHJvd1R5cGVgIHNvIHRoZSBWaWV3IGNvdWxkIGN1c3RvbWl6ZSB0aGUgcmVuZGVyaW5nLgoJc2xvdEJnQ2VsbEh0bWw6IGZ1bmN0aW9uKGNlbGwpIHsKCQlyZXR1cm4gdGhpcy5iZ0NlbGxIdG1sKGNlbGwpOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgaG9yaXpvbnRhbCAic2xhdHMiIHRoYXQgcnVuIHdpZHRoLXdpc2UuIEhhcyBhIHRpbWUgYXhpcyBvbiBhIHNpZGUuIERlcGVuZHMgb24gUlRMLgoJc2xhdFJvd0h0bWw6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBpc1JUTCA9IHRoaXMuaXNSVEw7CgkJdmFyIGh0bWwgPSAnJzsKCQl2YXIgc2xvdE5vcm1hbCA9IHRoaXMuc2xvdER1cmF0aW9uLmFzTWludXRlcygpICUgMTUgPT09IDA7CgkJdmFyIHNsb3RUaW1lID0gbW9tZW50LmR1cmF0aW9uKCt0aGlzLm1pblRpbWUpOyAvLyB3aXNoIHRoZXJlIHdhcyAuY2xvbmUoKSBmb3IgZHVyYXRpb25zCgkJdmFyIHNsb3REYXRlOyAvLyB3aWxsIGJlIG9uIHRoZSB2aWV3J3MgZmlyc3QgZGF5LCBidXQgd2Ugb25seSBjYXJlIGFib3V0IGl0cyB0aW1lCgkJdmFyIG1pbnV0ZXM7CgkJdmFyIGF4aXNIdG1sOwoKCQkvLyBDYWxjdWxhdGUgdGhlIHRpbWUgZm9yIGVhY2ggc2xvdAoJCXdoaWxlIChzbG90VGltZSA8IHRoaXMubWF4VGltZSkgewoJCQlzbG90RGF0ZSA9IHRoaXMuc3RhcnQuY2xvbmUoKS50aW1lKHNsb3RUaW1lKTsgLy8gd2lsbCBiZSBpbiBVVEMgYnV0IHRoYXQncyBnb29kLiB0byBhdm9pZCBEU1QgaXNzdWVzCgkJCW1pbnV0ZXMgPSBzbG90RGF0ZS5taW51dGVzKCk7CgoJCQlheGlzSHRtbCA9CgkJCQknPHRkIGNsYXNzPSJmYy1heGlzIGZjLXRpbWUgJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyIgJyArIHZpZXcuYXhpc1N0eWxlQXR0cigpICsgJz4nICsKCQkJCQkoKCFzbG90Tm9ybWFsIHx8ICFtaW51dGVzKSA/IC8vIGlmIGlycmVndWxhciBzbG90IGR1cmF0aW9uLCBvciBvbiB0aGUgaG91ciwgdGhlbiBkaXNwbGF5IHRoZSB0aW1lCgkJCQkJCSc8c3Bhbj4nICsgLy8gZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQkJaHRtbEVzY2FwZShzbG90RGF0ZS5mb3JtYXQodGhpcy5heGlzRm9ybWF0KSkgKwoJCQkJCQknPC9zcGFuPicgOgoJCQkJCQknJwoJCQkJCQkpICsKCQkJCSc8L3RkPic7CgoJCQlodG1sICs9CgkJCQknPHRyICcgKyAoIW1pbnV0ZXMgPyAnJyA6ICdjbGFzcz0iZmMtbWlub3IiJykgKyAnPicgKwoJCQkJCSghaXNSVEwgPyBheGlzSHRtbCA6ICcnKSArCgkJCQkJJzx0ZCBjbGFzcz0iJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyIvPicgKwoJCQkJCShpc1JUTCA/IGF4aXNIdG1sIDogJycpICsKCQkJCSI8L3RyPiI7CgoJCQlzbG90VGltZS5hZGQodGhpcy5zbG90RHVyYXRpb24pOwoJCX0KCgkJcmV0dXJuIGh0bWw7Cgl9LAoKCgkvKiBPcHRpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBQYXJzZXMgdmFyaW91cyBvcHRpb25zIGludG8gcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdAoJcHJvY2Vzc09wdGlvbnM6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBzbG90RHVyYXRpb24gPSB2aWV3Lm9wdCgnc2xvdER1cmF0aW9uJyk7CgkJdmFyIHNuYXBEdXJhdGlvbiA9IHZpZXcub3B0KCdzbmFwRHVyYXRpb24nKTsKCgkJc2xvdER1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKHNsb3REdXJhdGlvbik7CgkJc25hcER1cmF0aW9uID0gc25hcER1cmF0aW9uID8gbW9tZW50LmR1cmF0aW9uKHNuYXBEdXJhdGlvbikgOiBzbG90RHVyYXRpb247CgoJCXRoaXMuc2xvdER1cmF0aW9uID0gc2xvdER1cmF0aW9uOwoJCXRoaXMuc25hcER1cmF0aW9uID0gc25hcER1cmF0aW9uOwoJCXRoaXMuY2VsbER1cmF0aW9uID0gc25hcER1cmF0aW9uOyAvLyBmb3IgR3JpZCBzeXN0ZW0KCgkJdGhpcy5taW5UaW1lID0gbW9tZW50LmR1cmF0aW9uKHZpZXcub3B0KCdtaW5UaW1lJykpOwoJCXRoaXMubWF4VGltZSA9IG1vbWVudC5kdXJhdGlvbih2aWV3Lm9wdCgnbWF4VGltZScpKTsKCgkJdGhpcy5heGlzRm9ybWF0ID0gdmlldy5vcHQoJ2F4aXNGb3JtYXQnKSB8fCB2aWV3Lm9wdCgnc21hbGxUaW1lRm9ybWF0Jyk7Cgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgY29sdW1uIGhlYWRlciBmb3JtYXR0aW5nIHN0cmluZyBpZiBgY29sRm9ybWF0YCBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkCgljb21wdXRlQ29sSGVhZEZvcm1hdDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuY29sQ250ID4gMSkgeyAvLyBtdWx0aXBsZSBkYXlzLCBzbyBmdWxsIHNpbmdsZSBkYXRlIHN0cmluZyBXT04nVCBiZSBpbiB0aXRsZSB0ZXh0CgkJCXJldHVybiB0aGlzLnZpZXcub3B0KCdkYXlPZk1vbnRoRm9ybWF0Jyk7IC8vICJTYXQgMTIvMTAiCgkJfQoJCWVsc2UgeyAvLyBzaW5nbGUgZGF5LCBzbyBmdWxsIHNpbmdsZSBkYXRlIHN0cmluZyB3aWxsIHByb2JhYmx5IGJlIGluIHRpdGxlIHRleHQKCQkJcmV0dXJuICdkZGRkJzsgLy8gIlNhdHVyZGF5IgoJCX0KCX0sCgoKCS8vIENvbXB1dGVzIGEgZGVmYXVsdCBldmVudCB0aW1lIGZvcm1hdHRpbmcgc3RyaW5nIGlmIGB0aW1lRm9ybWF0YCBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkCgljb21wdXRlRXZlbnRUaW1lRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnbm9NZXJpZGllbVRpbWVGb3JtYXQnKTsgLy8gbGlrZSAiNjozMCIgKG5vIEFNL1BNKQoJfSwKCgoJLy8gQ29tcHV0ZXMgYSBkZWZhdWx0IGBkaXNwbGF5RXZlbnRFbmRgIHZhbHVlIGlmIG9uZSBpcyBub3QgZXhwbGljbHR5IGRlZmluZWQKCWNvbXB1dGVEaXNwbGF5RXZlbnRFbmQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0cnVlOwoJfSwKCgoJLyogQ2VsbCBTeXN0ZW0KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXJhbmdlVXBkYXRlZDogZnVuY3Rpb24oKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGNvbERhdGVzID0gW107CgkJdmFyIGRhdGU7CgoJCWRhdGUgPSB0aGlzLnN0YXJ0LmNsb25lKCk7CgkJd2hpbGUgKGRhdGUuaXNCZWZvcmUodGhpcy5lbmQpKSB7CgkJCWNvbERhdGVzLnB1c2goZGF0ZS5jbG9uZSgpKTsKCQkJZGF0ZS5hZGQoMSwgJ2RheScpOwoJCQlkYXRlID0gdmlldy5za2lwSGlkZGVuRGF5cyhkYXRlKTsKCQl9CgoJCWlmICh0aGlzLmlzUlRMKSB7CgkJCWNvbERhdGVzLnJldmVyc2UoKTsKCQl9CgoJCXRoaXMuY29sRGF0ZXMgPSBjb2xEYXRlczsKCQl0aGlzLmNvbENudCA9IGNvbERhdGVzLmxlbmd0aDsKCQl0aGlzLnJvd0NudCA9IE1hdGguY2VpbCgodGhpcy5tYXhUaW1lIC0gdGhpcy5taW5UaW1lKSAvIHRoaXMuc25hcER1cmF0aW9uKTsgLy8gIyBvZiB2ZXJ0aWNhbCBzbmFwcwoJfSwKCgoJLy8gR2l2ZW4gYSBjZWxsIG9iamVjdCwgZ2VuZXJhdGVzIGl0cyBzdGFydCBkYXRlLiBSZXR1cm5zIGEgcmVmZXJlbmNlLWZyZWUgY29weS4KCWNvbXB1dGVDZWxsRGF0ZTogZnVuY3Rpb24oY2VsbCkgewoJCXZhciBkYXRlID0gdGhpcy5jb2xEYXRlc1tjZWxsLmNvbF07CgkJdmFyIHRpbWUgPSB0aGlzLmNvbXB1dGVTbmFwVGltZShjZWxsLnJvdyk7CgoJCWRhdGUgPSB0aGlzLnZpZXcuY2FsZW5kYXIucmV6b25lRGF0ZShkYXRlKTsgLy8gZ2l2ZSBpdCBhIDAwOjAwIHRpbWUKCQlkYXRlLnRpbWUodGltZSk7CgoJCXJldHVybiBkYXRlOwoJfSwKCgoJLy8gUmV0cmlldmVzIHRoZSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gY29sdW1uCglnZXRDb2xFbDogZnVuY3Rpb24oY29sKSB7CgkJcmV0dXJuIHRoaXMuZGF5RWxzLmVxKGNvbCk7Cgl9LAoKCgkvKiBEYXRlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gYSByb3cgbnVtYmVyIG9mIHRoZSBncmlkLCByZXByZXNlbnRpbmcgYSAic25hcCIsIHJldHVybnMgYSB0aW1lIChEdXJhdGlvbikgZnJvbSBpdHMgc3RhcnQtb2YtZGF5Cgljb21wdXRlU25hcFRpbWU6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiBtb21lbnQuZHVyYXRpb24odGhpcy5taW5UaW1lICsgdGhpcy5zbmFwRHVyYXRpb24gKiByb3cpOwoJfSwKCgoJLy8gU2xpY2VzIHVwIGEgZGF0ZSByYW5nZSBieSBjb2x1bW4gaW50byBhbiBhcnJheSBvZiBzZWdtZW50cwoJcmFuZ2VUb1NlZ3M6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBzZWdzID0gW107CgkJdmFyIHNlZzsKCQl2YXIgY29sOwoJCXZhciBjb2xEYXRlOwoJCXZhciBjb2xSYW5nZTsKCgkJLy8gbm9ybWFsaXplIDooCgkJcmFuZ2UgPSB7CgkJCXN0YXJ0OiByYW5nZS5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLAoJCQllbmQ6IHJhbmdlLmVuZC5jbG9uZSgpLnN0cmlwWm9uZSgpCgkJfTsKCgkJZm9yIChjb2wgPSAwOyBjb2wgPCBjb2xDbnQ7IGNvbCsrKSB7CgkJCWNvbERhdGUgPSB0aGlzLmNvbERhdGVzW2NvbF07IC8vIHdpbGwgYmUgYW1iaWcgdGltZS90aW1lem9uZQoJCQljb2xSYW5nZSA9IHsKCQkJCXN0YXJ0OiBjb2xEYXRlLmNsb25lKCkudGltZSh0aGlzLm1pblRpbWUpLAoJCQkJZW5kOiBjb2xEYXRlLmNsb25lKCkudGltZSh0aGlzLm1heFRpbWUpCgkJCX07CgkJCXNlZyA9IGludGVyc2VjdGlvblRvU2VnKHJhbmdlLCBjb2xSYW5nZSk7IC8vIGJvdGggd2lsbCBiZSBhbWJpZyB0aW1lem9uZQoJCQlpZiAoc2VnKSB7CgkJCQlzZWcuY29sID0gY29sOwoJCQkJc2Vncy5wdXNoKHNlZyk7CgkJCX0KCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLyogQ29vcmRpbmF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXVwZGF0ZVNpemU6IGZ1bmN0aW9uKGlzUmVzaXplKSB7IC8vIE5PVCBhIHN0YW5kYXJkIEdyaWQgbWV0aG9kCgkJdGhpcy5jb21wdXRlU2xhdFRvcHMoKTsKCgkJaWYgKGlzUmVzaXplKSB7CgkJCXRoaXMudXBkYXRlU2VnVmVydGljYWxzKCk7CgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIHRvcC9ib3R0b20gY29vcmRpbmF0ZXMgb2YgZWFjaCAic25hcCIgcm93cwoJY29tcHV0ZVJvd0Nvb3JkczogZnVuY3Rpb24oKSB7CgkJdmFyIG9yaWdpblRvcCA9IHRoaXMuZWwub2Zmc2V0KCkudG9wOwoJCXZhciBpdGVtcyA9IFtdOwoJCXZhciBpOwoJCXZhciBpdGVtOwoKCQlmb3IgKGkgPSAwOyBpIDwgdGhpcy5yb3dDbnQ7IGkrKykgewoJCQlpdGVtID0gewoJCQkJdG9wOiBvcmlnaW5Ub3AgKyB0aGlzLmNvbXB1dGVUaW1lVG9wKHRoaXMuY29tcHV0ZVNuYXBUaW1lKGkpKQoJCQl9OwoJCQlpZiAoaSA+IDApIHsKCQkJCWl0ZW1zW2kgLSAxXS5ib3R0b20gPSBpdGVtLnRvcDsKCQkJfQoJCQlpdGVtcy5wdXNoKGl0ZW0pOwoJCX0KCQlpdGVtLmJvdHRvbSA9IGl0ZW0udG9wICsgdGhpcy5jb21wdXRlVGltZVRvcCh0aGlzLmNvbXB1dGVTbmFwVGltZShpKSk7CgoJCXJldHVybiBpdGVtczsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSB0b3AgY29vcmRpbmF0ZSwgcmVsYXRpdmUgdG8gdGhlIGJvdW5kcyBvZiB0aGUgZ3JpZCwgb2YgdGhlIGdpdmVuIGRhdGUuCgkvLyBBIGBzdGFydE9mRGF5RGF0ZWAgbXVzdCBiZSBnaXZlbiBmb3IgYXZvaWRpbmcgYW1iaWd1aXR5IG92ZXIgaG93IHRvIHRyZWF0IG1pZG5pZ2h0LgoJY29tcHV0ZURhdGVUb3A6IGZ1bmN0aW9uKGRhdGUsIHN0YXJ0T2ZEYXlEYXRlKSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZVRpbWVUb3AoCgkJCW1vbWVudC5kdXJhdGlvbigKCQkJCWRhdGUuY2xvbmUoKS5zdHJpcFpvbmUoKSAtIHN0YXJ0T2ZEYXlEYXRlLmNsb25lKCkuc3RyaXBUaW1lKCkKCQkJKQoJCSk7Cgl9LAoKCgkvLyBDb21wdXRlcyB0aGUgdG9wIGNvb3JkaW5hdGUsIHJlbGF0aXZlIHRvIHRoZSBib3VuZHMgb2YgdGhlIGdyaWQsIG9mIHRoZSBnaXZlbiB0aW1lIChhIER1cmF0aW9uKS4KCWNvbXB1dGVUaW1lVG9wOiBmdW5jdGlvbih0aW1lKSB7CgkJdmFyIHNsYXRDb3ZlcmFnZSA9ICh0aW1lIC0gdGhpcy5taW5UaW1lKSAvIHRoaXMuc2xvdER1cmF0aW9uOyAvLyBmbG9hdGluZy1wb2ludCB2YWx1ZSBvZiAjIG9mIHNsb3RzIGNvdmVyZWQKCQl2YXIgc2xhdEluZGV4OwoJCXZhciBzbGF0UmVtYWluZGVyOwoJCXZhciBzbGF0VG9wOwoJCXZhciBzbGF0Qm90dG9tOwoKCQkvLyBjb25zdHJhaW4uIGJlY2F1c2UgbWluVGltZS9tYXhUaW1lIG1pZ2h0IGJlIGN1c3RvbWl6ZWQKCQlzbGF0Q292ZXJhZ2UgPSBNYXRoLm1heCgwLCBzbGF0Q292ZXJhZ2UpOwoJCXNsYXRDb3ZlcmFnZSA9IE1hdGgubWluKHRoaXMuc2xhdEVscy5sZW5ndGgsIHNsYXRDb3ZlcmFnZSk7CgoJCXNsYXRJbmRleCA9IE1hdGguZmxvb3Ioc2xhdENvdmVyYWdlKTsgLy8gYW4gaW50ZWdlciBpbmRleCBvZiB0aGUgZnVydGhlc3Qgd2hvbGUgc2xvdAoJCXNsYXRSZW1haW5kZXIgPSBzbGF0Q292ZXJhZ2UgLSBzbGF0SW5kZXg7CgkJc2xhdFRvcCA9IHRoaXMuc2xhdFRvcHNbc2xhdEluZGV4XTsgLy8gdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgZnVydGhlc3Qgd2hvbGUgc2xvdAoKCQlpZiAoc2xhdFJlbWFpbmRlcikgeyAvLyB0aW1lIHNwYW5zIHBhcnQtd2F5IGludG8gdGhlIHNsb3QKCQkJc2xhdEJvdHRvbSA9IHRoaXMuc2xhdFRvcHNbc2xhdEluZGV4ICsgMV07CgkJCXJldHVybiBzbGF0VG9wICsgKHNsYXRCb3R0b20gLSBzbGF0VG9wKSAqIHNsYXRSZW1haW5kZXI7IC8vIHBhcnQtd2F5IGJldHdlZW4gc2xvdHMKCQl9CgkJZWxzZSB7CgkJCXJldHVybiBzbGF0VG9wOwoJCX0KCX0sCgoKCS8vIFF1ZXJpZXMgZWFjaCBgc2xhdEVsYCBmb3IgaXRzIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBncmlkJ3MgY29udGFpbmVyIGFuZCBzdG9yZXMgaXQgaW4gYHNsYXRUb3BzYC4KCS8vIEluY2x1ZGVzIHRoZSB0aGUgYm90dG9tIG9mIHRoZSBsYXN0IHNsYXQgYXMgdGhlIGxhc3QgaXRlbSBpbiB0aGUgYXJyYXkuCgljb21wdXRlU2xhdFRvcHM6IGZ1bmN0aW9uKCkgewoJCXZhciB0b3BzID0gW107CgkJdmFyIHRvcDsKCgkJdGhpcy5zbGF0RWxzLmVhY2goZnVuY3Rpb24oaSwgbm9kZSkgewoJCQl0b3AgPSAkKG5vZGUpLnBvc2l0aW9uKCkudG9wOwoJCQl0b3BzLnB1c2godG9wKTsKCQl9KTsKCgkJdG9wcy5wdXNoKHRvcCArIHRoaXMuc2xhdEVscy5sYXN0KCkub3V0ZXJIZWlnaHQoKSk7IC8vIGJvdHRvbSBvZiB0aGUgbGFzdCBzbGF0CgoJCXRoaXMuc2xhdFRvcHMgPSB0b3BzOwoJfSwKCgoJLyogRXZlbnQgRHJhZyBWaXN1YWxpemF0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgZHJhZ2dlZCBvdmVyIHRoZSBzcGVjaWZpZWQgZGF0ZShzKS4KCS8vIGRyb3BMb2NhdGlvbidzIGVuZCBtaWdodCBiZSBudWxsLCBhcyB3ZWxsIGFzIGBzZWdgLiBTZWUgR3JpZDo6cmVuZGVyRHJhZyBmb3IgbW9yZSBpbmZvLgoJLy8gQSByZXR1cm5lZCB2YWx1ZSBvZiBgdHJ1ZWAgc2lnbmFscyB0aGF0IGEgbW9jayAiaGVscGVyIiBldmVudCBoYXMgYmVlbiByZW5kZXJlZC4KCXJlbmRlckRyYWc6IGZ1bmN0aW9uKGRyb3BMb2NhdGlvbiwgc2VnKSB7CgoJCWlmIChzZWcpIHsgLy8gaWYgdGhlcmUgaXMgZXZlbnQgaW5mb3JtYXRpb24gZm9yIHRoaXMgZHJhZywgcmVuZGVyIGEgaGVscGVyIGV2ZW50CgkJCXRoaXMucmVuZGVyUmFuZ2VIZWxwZXIoZHJvcExvY2F0aW9uLCBzZWcpOwoJCQl0aGlzLmFwcGx5RHJhZ09wYWNpdHkodGhpcy5oZWxwZXJFbCk7CgoJCQlyZXR1cm4gdHJ1ZTsgLy8gc2lnbmFsIHRoYXQgYSBoZWxwZXIgaGFzIGJlZW4gcmVuZGVyZWQKCQl9CgkJZWxzZSB7CgkJCS8vIG90aGVyd2lzZSwganVzdCByZW5kZXIgYSBoaWdobGlnaHQKCQkJdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5ldmVudFJhbmdlVG9TZWdzKGRyb3BMb2NhdGlvbikpOwoJCX0KCX0sCgoKCS8vIFVucmVuZGVycyBhbnkgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgZHJhZ2dlZAoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7CgkJdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpOwoJfSwKCgoJLyogRXZlbnQgUmVzaXplIFZpc3VhbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBiZWluZyByZXNpemVkCglyZW5kZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24ocmFuZ2UsIHNlZykgewoJCXRoaXMucmVuZGVyUmFuZ2VIZWxwZXIocmFuZ2UsIHNlZyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYW55IHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCX0sCgoKCS8qIEV2ZW50IEhlbHBlcgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIG1vY2sgImhlbHBlciIgZXZlbnQuIGBzb3VyY2VTZWdgIGlzIHRoZSBvcmlnaW5hbCBzZWdtZW50IG9iamVjdCBhbmQgbWlnaHQgYmUgbnVsbCAoYW4gZXh0ZXJuYWwgZHJhZykKCXJlbmRlckhlbHBlcjogZnVuY3Rpb24oZXZlbnQsIHNvdXJjZVNlZykgewoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoWyBldmVudCBdKTsKCQl2YXIgdGFibGVFbDsKCQl2YXIgaSwgc2VnOwoJCXZhciBzb3VyY2VFbDsKCgkJc2VncyA9IHRoaXMucmVuZGVyRmdTZWdFbHMoc2Vncyk7IC8vIGFzc2lnbnMgZWFjaCBzZWcncyBlbCBhbmQgcmV0dXJucyBhIHN1YnNldCBvZiBzZWdzIHRoYXQgd2VyZSByZW5kZXJlZAoJCXRhYmxlRWwgPSB0aGlzLnJlbmRlclNlZ1RhYmxlKHNlZ3MpOwoKCQkvLyBUcnkgdG8gbWFrZSB0aGUgc2VnbWVudCB0aGF0IGlzIGluIHRoZSBzYW1lIHJvdyBhcyBzb3VyY2VTZWcgbG9vayB0aGUgc2FtZQoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgkJCWlmIChzb3VyY2VTZWcgJiYgc291cmNlU2VnLmNvbCA9PT0gc2VnLmNvbCkgewoJCQkJc291cmNlRWwgPSBzb3VyY2VTZWcuZWw7CgkJCQlzZWcuZWwuY3NzKHsKCQkJCQlsZWZ0OiBzb3VyY2VFbC5jc3MoJ2xlZnQnKSwKCQkJCQlyaWdodDogc291cmNlRWwuY3NzKCdyaWdodCcpLAoJCQkJCSdtYXJnaW4tbGVmdCc6IHNvdXJjZUVsLmNzcygnbWFyZ2luLWxlZnQnKSwKCQkJCQknbWFyZ2luLXJpZ2h0Jzogc291cmNlRWwuY3NzKCdtYXJnaW4tcmlnaHQnKQoJCQkJfSk7CgkJCX0KCQl9CgoJCXRoaXMuaGVscGVyRWwgPSAkKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iLz4nKQoJCQkuYXBwZW5kKHRhYmxlRWwpCgkJCQkuYXBwZW5kVG8odGhpcy5lbCk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYW55IG1vY2sgaGVscGVyIGV2ZW50Cgl1bnJlbmRlckhlbHBlcjogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaGVscGVyRWwpIHsKCQkJdGhpcy5oZWxwZXJFbC5yZW1vdmUoKTsKCQkJdGhpcy5oZWxwZXJFbCA9IG51bGw7CgkJfQoJfSwKCgoJLyogU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYSBzZWxlY3Rpb24uIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCwgd2hpY2ggd2FzIHRvIHNpbXBseSByZW5kZXIgYSBoaWdobGlnaHQuCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJaWYgKHRoaXMudmlldy5vcHQoJ3NlbGVjdEhlbHBlcicpKSB7IC8vIHRoaXMgc2V0dGluZyBzaWduYWxzIHRoYXQgYSBtb2NrIGhlbHBlciBldmVudCBzaG91bGQgYmUgcmVuZGVyZWQKCQkJdGhpcy5yZW5kZXJSYW5nZUhlbHBlcihyYW5nZSk7CgkJfQoJCWVsc2UgewoJCQl0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLnNlbGVjdGlvblJhbmdlVG9TZWdzKHJhbmdlKSk7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIHNlbGVjdGlvbgoJdW5yZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvKiBGaWxsIFN5c3RlbSAoaGlnaGxpZ2h0LCBiYWNrZ3JvdW5kIGV2ZW50cywgYnVzaW5lc3MgaG91cnMpCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgc2V0IG9mIHJlY3RhbmdsZXMgb3ZlciB0aGUgZ2l2ZW4gdGltZSBzZWdtZW50cy4KCS8vIE9ubHkgcmV0dXJucyBzZWdtZW50cyB0aGF0IHN1Y2Nlc3NmdWxseSByZW5kZXJlZC4KCXJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MsIGNsYXNzTmFtZSkgewoJCXZhciBzZWdDb2xzOwoJCXZhciBza2VsZXRvbkVsOwoJCXZhciB0ckVsOwoJCXZhciBjb2wsIGNvbFNlZ3M7CgkJdmFyIHRkRWw7CgkJdmFyIGNvbnRhaW5lckVsOwoJCXZhciBkYXlEYXRlOwoJCXZhciBpLCBzZWc7CgoJCWlmIChzZWdzLmxlbmd0aCkgewoKCQkJc2VncyA9IHRoaXMucmVuZGVyRmlsbFNlZ0Vscyh0eXBlLCBzZWdzKTsgLy8gYXNzaWduZXMgYC5lbGAgdG8gZWFjaCBzZWcuIHJldHVybnMgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkIHNlZ3MKCQkJc2VnQ29scyA9IHRoaXMuZ3JvdXBTZWdDb2xzKHNlZ3MpOyAvLyBncm91cCBpbnRvIHN1Yi1hcnJheXMsIGFuZCBhc3NpZ25zICdjb2wnIHRvIGVhY2ggc2VnCgoJCQljbGFzc05hbWUgPSBjbGFzc05hbWUgfHwgdHlwZS50b0xvd2VyQ2FzZSgpOwoJCQlza2VsZXRvbkVsID0gJCgKCQkJCSc8ZGl2IGNsYXNzPSJmYy0nICsgY2xhc3NOYW1lICsgJy1za2VsZXRvbiI+JyArCgkJCQkJJzx0YWJsZT48dHIvPjwvdGFibGU+JyArCgkJCQknPC9kaXY+JwoJCQkpOwoJCQl0ckVsID0gc2tlbGV0b25FbC5maW5kKCd0cicpOwoKCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBzZWdDb2xzLmxlbmd0aDsgY29sKyspIHsKCQkJCWNvbFNlZ3MgPSBzZWdDb2xzW2NvbF07CgkJCQl0ZEVsID0gJCgnPHRkLz4nKS5hcHBlbmRUbyh0ckVsKTsKCgkJCQlpZiAoY29sU2Vncy5sZW5ndGgpIHsKCQkJCQljb250YWluZXJFbCA9ICQoJzxkaXYgY2xhc3M9ImZjLScgKyBjbGFzc05hbWUgKyAnLWNvbnRhaW5lciIvPicpLmFwcGVuZFRvKHRkRWwpOwoJCQkJCWRheURhdGUgPSB0aGlzLmNvbERhdGVzW2NvbF07CgoJCQkJCWZvciAoaSA9IDA7IGkgPCBjb2xTZWdzLmxlbmd0aDsgaSsrKSB7CgkJCQkJCXNlZyA9IGNvbFNlZ3NbaV07CgkJCQkJCWNvbnRhaW5lckVsLmFwcGVuZCgKCQkJCQkJCXNlZy5lbC5jc3MoewoJCQkJCQkJCXRvcDogdGhpcy5jb21wdXRlRGF0ZVRvcChzZWcuc3RhcnQsIGRheURhdGUpLAoJCQkJCQkJCWJvdHRvbTogLXRoaXMuY29tcHV0ZURhdGVUb3Aoc2VnLmVuZCwgZGF5RGF0ZSkgLy8gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJvdHRvbSBlZGdlCgkJCQkJCQl9KQoJCQkJCQkpOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJdGhpcy5ib29rZW5kQ2VsbHModHJFbCwgdHlwZSk7CgoJCQl0aGlzLmVsLmFwcGVuZChza2VsZXRvbkVsKTsKCQkJdGhpcy5lbHNCeUZpbGxbdHlwZV0gPSBza2VsZXRvbkVsOwoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9Cgp9KTsKCjs7CgovKiBFdmVudC1yZW5kZXJpbmcgbWV0aG9kcyBmb3IgdGhlIFRpbWVHcmlkIGNsYXNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKVGltZUdyaWQubWl4aW4oewoKCWV2ZW50U2tlbGV0b25FbDogbnVsbCwgLy8gaGFzIGNlbGxzIHdpdGggZXZlbnQtY29udGFpbmVycywgd2hpY2ggY29udGFpbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZXZlbnQgZWxlbWVudHMKCgoJLy8gUmVuZGVycyB0aGUgZ2l2ZW4gZm9yZWdyb3VuZCBldmVudCBzZWdtZW50cyBvbnRvIHRoZSBncmlkCglyZW5kZXJGZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlzZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ0VscyhzZWdzKTsgLy8gcmV0dXJucyBhIHN1YnNldCBvZiB0aGUgc2Vncy4gc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQKCgkJdGhpcy5lbC5hcHBlbmQoCgkJCXRoaXMuZXZlbnRTa2VsZXRvbkVsID0gJCgnPGRpdiBjbGFzcz0iZmMtY29udGVudC1za2VsZXRvbiIvPicpCgkJCQkuYXBwZW5kKHRoaXMucmVuZGVyU2VnVGFibGUoc2VncykpCgkJKTsKCgkJcmV0dXJuIHNlZ3M7IC8vIHJldHVybiBvbmx5IHRoZSBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJfSwKCgoJLy8gVW5yZW5kZXJzIGFsbCBjdXJyZW50bHkgcmVuZGVyZWQgZm9yZWdyb3VuZCBldmVudCBzZWdtZW50cwoJdW5yZW5kZXJGZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlpZiAodGhpcy5ldmVudFNrZWxldG9uRWwpIHsKCQkJdGhpcy5ldmVudFNrZWxldG9uRWwucmVtb3ZlKCk7CgkJCXRoaXMuZXZlbnRTa2VsZXRvbkVsID0gbnVsbDsKCQl9Cgl9LAoKCgkvLyBSZW5kZXJzIGFuZCByZXR1cm5zIHRoZSA8dGFibGU+IHBvcnRpb24gb2YgdGhlIGV2ZW50LXNrZWxldG9uLgoJLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzICd0Ym9keUVsJyBhbmQgJ3NlZ3MnLgoJcmVuZGVyU2VnVGFibGU6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgdGFibGVFbCA9ICQoJzx0YWJsZT48dHIvPjwvdGFibGU+Jyk7CgkJdmFyIHRyRWwgPSB0YWJsZUVsLmZpbmQoJ3RyJyk7CgkJdmFyIHNlZ0NvbHM7CgkJdmFyIGksIHNlZzsKCQl2YXIgY29sLCBjb2xTZWdzOwoJCXZhciBjb250YWluZXJFbDsKCgkJc2VnQ29scyA9IHRoaXMuZ3JvdXBTZWdDb2xzKHNlZ3MpOyAvLyBncm91cCBpbnRvIHN1Yi1hcnJheXMsIGFuZCBhc3NpZ25zICdjb2wnIHRvIGVhY2ggc2VnCgoJCXRoaXMuY29tcHV0ZVNlZ1ZlcnRpY2FscyhzZWdzKTsgLy8gY29tcHV0ZSBhbmQgYXNzaWduIHRvcC9ib3R0b20KCgkJZm9yIChjb2wgPSAwOyBjb2wgPCBzZWdDb2xzLmxlbmd0aDsgY29sKyspIHsgLy8gaXRlcmF0ZSBlYWNoIGNvbHVtbiBncm91cGluZwoJCQljb2xTZWdzID0gc2VnQ29sc1tjb2xdOwoJCQlwbGFjZVNsb3RTZWdzKGNvbFNlZ3MpOyAvLyBjb21wdXRlIGhvcml6b250YWwgY29vcmRpbmF0ZXMsIHotaW5kZXgncywgYW5kIHJlb3JkZXIgdGhlIGFycmF5CgoJCQljb250YWluZXJFbCA9ICQoJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpOwoKCQkJLy8gYXNzaWduIHBvc2l0aW9uaW5nIENTUyBhbmQgaW5zZXJ0IGludG8gY29udGFpbmVyCgkJCWZvciAoaSA9IDA7IGkgPCBjb2xTZWdzLmxlbmd0aDsgaSsrKSB7CgkJCQlzZWcgPSBjb2xTZWdzW2ldOwoJCQkJc2VnLmVsLmNzcyh0aGlzLmdlbmVyYXRlU2VnUG9zaXRpb25Dc3Moc2VnKSk7CgoJCQkJLy8gaWYgdGhlIGhlaWdodCBpcyBzaG9ydCwgYWRkIGEgY2xhc3NOYW1lIGZvciBhbHRlcm5hdGUgc3R5bGluZwoJCQkJaWYgKHNlZy5ib3R0b20gLSBzZWcudG9wIDwgMzApIHsKCQkJCQlzZWcuZWwuYWRkQ2xhc3MoJ2ZjLXNob3J0Jyk7CgkJCQl9CgoJCQkJY29udGFpbmVyRWwuYXBwZW5kKHNlZy5lbCk7CgkJCX0KCgkJCXRyRWwuYXBwZW5kKCQoJzx0ZC8+JykuYXBwZW5kKGNvbnRhaW5lckVsKSk7CgkJfQoKCQl0aGlzLmJvb2tlbmRDZWxscyh0ckVsLCAnZXZlbnRTa2VsZXRvbicpOwoKCQlyZXR1cm4gdGFibGVFbDsKCX0sCgoKCS8vIFJlZnJlc2hlcyB0aGUgQ1NTIHRvcC9ib3R0b20gY29vcmRpbmF0ZXMgZm9yIGVhY2ggc2VnbWVudCBlbGVtZW50LiBQcm9iYWJseSBhZnRlciBhIHdpbmRvdyByZXNpemUvem9vbS4KCS8vIFJlcG9zaXRpb25zIGJ1c2luZXNzIGhvdXJzIHNlZ3MgdG9vLCBzbyBub3QganVzdCBmb3IgZXZlbnRzLiBNYXliZSBzaG91bGRuJ3QgYmUgaGVyZS4KCXVwZGF0ZVNlZ1ZlcnRpY2FsczogZnVuY3Rpb24oKSB7CgkJdmFyIGFsbFNlZ3MgPSAodGhpcy5zZWdzIHx8IFtdKS5jb25jYXQodGhpcy5idXNpbmVzc0hvdXJTZWdzIHx8IFtdKTsKCQl2YXIgaTsKCgkJdGhpcy5jb21wdXRlU2VnVmVydGljYWxzKGFsbFNlZ3MpOwoKCQlmb3IgKGkgPSAwOyBpIDwgYWxsU2Vncy5sZW5ndGg7IGkrKykgewoJCQlhbGxTZWdzW2ldLmVsLmNzcygKCQkJCXRoaXMuZ2VuZXJhdGVTZWdWZXJ0aWNhbENzcyhhbGxTZWdzW2ldKQoJCQkpOwoJCX0KCX0sCgoKCS8vIEZvciBlYWNoIHNlZ21lbnQgaW4gYW4gYXJyYXksIGNvbXB1dGVzIGFuZCBhc3NpZ25zIGl0cyB0b3AgYW5kIGJvdHRvbSBwcm9wZXJ0aWVzCgljb21wdXRlU2VnVmVydGljYWxzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIGksIHNlZzsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJc2VnLnRvcCA9IHRoaXMuY29tcHV0ZURhdGVUb3Aoc2VnLnN0YXJ0LCBzZWcuc3RhcnQpOwoJCQlzZWcuYm90dG9tID0gdGhpcy5jb21wdXRlRGF0ZVRvcChzZWcuZW5kLCBzZWcuc3RhcnQpOwoJCX0KCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgc2luZ2xlIGV2ZW50IHNlZ21lbnQncyBkZWZhdWx0IHJlbmRlcmluZwoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgaXNEcmFnZ2FibGUgPSB2aWV3LmlzRXZlbnREcmFnZ2FibGUoZXZlbnQpOwoJCXZhciBpc1Jlc2l6YWJsZUZyb21TdGFydCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgc2VnLmlzU3RhcnQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KGV2ZW50KTsKCQl2YXIgaXNSZXNpemFibGVGcm9tRW5kID0gIWRpc2FibGVSZXNpemluZyAmJiBzZWcuaXNFbmQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbUVuZChldmVudCk7CgkJdmFyIGNsYXNzZXMgPSB0aGlzLmdldFNlZ0NsYXNzZXMoc2VnLCBpc0RyYWdnYWJsZSwgaXNSZXNpemFibGVGcm9tU3RhcnQgfHwgaXNSZXNpemFibGVGcm9tRW5kKTsKCQl2YXIgc2tpbkNzcyA9IGNzc1RvU3RyKHRoaXMuZ2V0RXZlbnRTa2luQ3NzKGV2ZW50KSk7CgkJdmFyIHRpbWVUZXh0OwoJCXZhciBmdWxsVGltZVRleHQ7IC8vIG1vcmUgdmVyYm9zZSB0aW1lIHRleHQuIGZvciB0aGUgcHJpbnQgc3R5bGVzaGVldAoJCXZhciBzdGFydFRpbWVUZXh0OyAvLyBqdXN0IHRoZSBzdGFydCB0aW1lIHRleHQKCgkJY2xhc3Nlcy51bnNoaWZ0KCdmYy10aW1lLWdyaWQtZXZlbnQnLCAnZmMtdi1ldmVudCcpOwoKCQlpZiAodmlldy5pc011bHRpRGF5RXZlbnQoZXZlbnQpKSB7IC8vIGlmIHRoZSBldmVudCBhcHBlYXJzIHRvIHNwYW4gbW9yZSB0aGFuIG9uZSBkYXkuLi4KCQkJLy8gRG9uJ3QgZGlzcGxheSB0aW1lIHRleHQgb24gc2VnbWVudHMgdGhhdCBydW4gZW50aXJlbHkgdGhyb3VnaCBhIGRheS4KCQkJLy8gVGhhdCB3b3VsZCBhcHBlYXIgYXMgbWlkbmlnaHQtbWlkbmlnaHQgYW5kIHdvdWxkIGxvb2sgZHVtYi4KCQkJLy8gT3RoZXJ3aXNlLCBkaXNwbGF5IHRoZSB0aW1lIHRleHQgZm9yIHRoZSAqc2VnbWVudCdzKiB0aW1lcyAobGlrZSA2cG0tbWlkbmlnaHQgb3IgbWlkbmlnaHQtMTBhbSkKCQkJaWYgKHNlZy5pc1N0YXJ0IHx8IHNlZy5pc0VuZCkgewoJCQkJdGltZVRleHQgPSB0aGlzLmdldEV2ZW50VGltZVRleHQoc2VnKTsKCQkJCWZ1bGxUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzZWcsICdMVCcpOwoJCQkJc3RhcnRUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzZWcsIG51bGwsIGZhbHNlKTsgLy8gZGlzcGxheUVuZD1mYWxzZQoJCQl9CgkJfSBlbHNlIHsKCQkJLy8gRGlzcGxheSB0aGUgbm9ybWFsIHRpbWUgdGV4dCBmb3IgdGhlICpldmVudCdzKiB0aW1lcwoJCQl0aW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChldmVudCk7CgkJCWZ1bGxUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChldmVudCwgJ0xUJyk7CgkJCXN0YXJ0VGltZVRleHQgPSB0aGlzLmdldEV2ZW50VGltZVRleHQoZXZlbnQsIG51bGwsIGZhbHNlKTsgLy8gZGlzcGxheUVuZD1mYWxzZQoJCX0KCgkJcmV0dXJuICc8YSBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInICsKCQkJKGV2ZW50LnVybCA/CgkJCQknIGhyZWY9IicgKyBodG1sRXNjYXBlKGV2ZW50LnVybCkgKyAnIicgOgoJCQkJJycKCQkJCSkgKwoJCQkoc2tpbkNzcyA/CgkJCQknIHN0eWxlPSInICsgc2tpbkNzcyArICciJyA6CgkJCQknJwoJCQkJKSArCgkJCSc+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtY29udGVudCI+JyArCgkJCQkJKHRpbWVUZXh0ID8KCQkJCQkJJzxkaXYgY2xhc3M9ImZjLXRpbWUiJyArCgkJCQkJCScgZGF0YS1zdGFydD0iJyArIGh0bWxFc2NhcGUoc3RhcnRUaW1lVGV4dCkgKyAnIicgKwoJCQkJCQknIGRhdGEtZnVsbD0iJyArIGh0bWxFc2NhcGUoZnVsbFRpbWVUZXh0KSArICciJyArCgkJCQkJCSc+JyArCgkJCQkJCQknPHNwYW4+JyArIGh0bWxFc2NhcGUodGltZVRleHQpICsgJzwvc3Bhbj4nICsKCQkJCQkJJzwvZGl2PicgOgoJCQkJCQknJwoJCQkJCQkpICsKCQkJCQkoZXZlbnQudGl0bGUgPwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtdGl0bGUiPicgKwoJCQkJCQkJaHRtbEVzY2FwZShldmVudC50aXRsZSkgKwoJCQkJCQknPC9kaXY+JyA6CgkJCQkJCScnCgkJCQkJCSkgKwoJCQkJJzwvZGl2PicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWJnIi8+JyArCgkJCQkvKiBUT0RPOiB3cml0ZSBDU1MgZm9yIHRoaXMKCQkJCShpc1Jlc2l6YWJsZUZyb21TdGFydCA/CgkJCQkJJzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtc3RhcnQtcmVzaXplciIgLz4nIDoKCQkJCQknJwoJCQkJCSkgKwoJCQkJKi8KCQkJCShpc1Jlc2l6YWJsZUZyb21FbmQgPwoJCQkJCSc8ZGl2IGNsYXNzPSJmYy1yZXNpemVyIGZjLWVuZC1yZXNpemVyIiAvPicgOgoJCQkJCScnCgkJCQkJKSArCgkJCSc8L2E+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBDU1MgcHJvcGVydGllcy92YWx1ZXMgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byBhbiBldmVudCBzZWdtZW50IGVsZW1lbnQuCgkvLyBDb250YWlucyBpbXBvcnRhbnQgcG9zaXRpb25pbmctcmVsYXRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gYW55IGV2ZW50IGVsZW1lbnQsIGN1c3RvbWl6ZWQgb3Igbm90LgoJZ2VuZXJhdGVTZWdQb3NpdGlvbkNzczogZnVuY3Rpb24oc2VnKSB7CgkJdmFyIHNob3VsZE92ZXJsYXAgPSB0aGlzLnZpZXcub3B0KCdzbG90RXZlbnRPdmVybGFwJyk7CgkJdmFyIGJhY2t3YXJkQ29vcmQgPSBzZWcuYmFja3dhcmRDb29yZDsgLy8gdGhlIGxlZnQgc2lkZSBpZiBMVFIuIHRoZSByaWdodCBzaWRlIGlmIFJUTC4gZmxvYXRpbmctcG9pbnQKCQl2YXIgZm9yd2FyZENvb3JkID0gc2VnLmZvcndhcmRDb29yZDsgLy8gdGhlIHJpZ2h0IHNpZGUgaWYgTFRSLiB0aGUgbGVmdCBzaWRlIGlmIFJUTC4gZmxvYXRpbmctcG9pbnQKCQl2YXIgcHJvcHMgPSB0aGlzLmdlbmVyYXRlU2VnVmVydGljYWxDc3Moc2VnKTsgLy8gZ2V0IHRvcC9ib3R0b20gZmlyc3QKCQl2YXIgbGVmdDsgLy8gYW1vdW50IG9mIHNwYWNlIGZyb20gbGVmdCBlZGdlLCBhIGZyYWN0aW9uIG9mIHRoZSB0b3RhbCB3aWR0aAoJCXZhciByaWdodDsgLy8gYW1vdW50IG9mIHNwYWNlIGZyb20gcmlnaHQgZWRnZSwgYSBmcmFjdGlvbiBvZiB0aGUgdG90YWwgd2lkdGgKCgkJaWYgKHNob3VsZE92ZXJsYXApIHsKCQkJLy8gZG91YmxlIHRoZSB3aWR0aCwgYnV0IGRvbid0IGdvIGJleW9uZCB0aGUgbWF4aW11bSBmb3J3YXJkIGNvb3JkaW5hdGUgKDEuMCkKCQkJZm9yd2FyZENvb3JkID0gTWF0aC5taW4oMSwgYmFja3dhcmRDb29yZCArIChmb3J3YXJkQ29vcmQgLSBiYWNrd2FyZENvb3JkKSAqIDIpOwoJCX0KCgkJaWYgKHRoaXMuaXNSVEwpIHsKCQkJbGVmdCA9IDEgLSBmb3J3YXJkQ29vcmQ7CgkJCXJpZ2h0ID0gYmFja3dhcmRDb29yZDsKCQl9CgkJZWxzZSB7CgkJCWxlZnQgPSBiYWNrd2FyZENvb3JkOwoJCQlyaWdodCA9IDEgLSBmb3J3YXJkQ29vcmQ7CgkJfQoKCQlwcm9wcy56SW5kZXggPSBzZWcubGV2ZWwgKyAxOyAvLyBjb252ZXJ0IGZyb20gMC1iYXNlIHRvIDEtYmFzZWQKCQlwcm9wcy5sZWZ0ID0gbGVmdCAqIDEwMCArICclJzsKCQlwcm9wcy5yaWdodCA9IHJpZ2h0ICogMTAwICsgJyUnOwoKCQlpZiAoc2hvdWxkT3ZlcmxhcCAmJiBzZWcuZm9yd2FyZFByZXNzdXJlKSB7CgkJCS8vIGFkZCBwYWRkaW5nIHRvIHRoZSBlZGdlIHNvIHRoYXQgZm9yd2FyZCBzdGFja2VkIGV2ZW50cyBkb24ndCBjb3ZlciB0aGUgcmVzaXplcidzIGljb24KCQkJcHJvcHNbdGhpcy5pc1JUTCA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCddID0gMTAgKiAyOyAvLyAxMCBpcyBhIGd1ZXNzdGltYXRlIG9mIHRoZSBpY29uJ3Mgd2lkdGgKCQl9CgoJCXJldHVybiBwcm9wczsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBvYmplY3Qgd2l0aCBDU1MgcHJvcGVydGllcyBmb3IgdGhlIHRvcC9ib3R0b20gY29vcmRpbmF0ZXMgb2YgYSBzZWdtZW50IGVsZW1lbnQKCWdlbmVyYXRlU2VnVmVydGljYWxDc3M6IGZ1bmN0aW9uKHNlZykgewoJCXJldHVybiB7CgkJCXRvcDogc2VnLnRvcCwKCQkJYm90dG9tOiAtc2VnLmJvdHRvbSAvLyBmbGlwcGVkIGJlY2F1c2UgbmVlZHMgdG8gYmUgc3BhY2UgYmV5b25kIGJvdHRvbSBlZGdlIG9mIGV2ZW50IGNvbnRhaW5lcgoJCX07Cgl9LAoKCgkvLyBHaXZlbiBhIGZsYXQgYXJyYXkgb2Ygc2VnbWVudHMsIHJldHVybiBhbiBhcnJheSBvZiBzdWItYXJyYXlzLCBncm91cGVkIGJ5IGVhY2ggc2VnbWVudCdzIGNvbAoJZ3JvdXBTZWdDb2xzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIHNlZ0NvbHMgPSBbXTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IHRoaXMuY29sQ250OyBpKyspIHsKCQkJc2VnQ29scy5wdXNoKFtdKTsKCQl9CgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZ0NvbHNbc2Vnc1tpXS5jb2xdLnB1c2goc2Vnc1tpXSk7CgkJfQoKCQlyZXR1cm4gc2VnQ29sczsKCX0KCn0pOwoKCi8vIEdpdmVuIGFuIGFycmF5IG9mIHNlZ21lbnRzIHRoYXQgYXJlIGFsbCBpbiB0aGUgc2FtZSBjb2x1bW4sIHNldHMgdGhlIGJhY2t3YXJkQ29vcmQgYW5kIGZvcndhcmRDb29yZCBvbiBlYWNoLgovLyBOT1RFOiBBbHNvIHJlb3JkZXJzIHRoZSBnaXZlbiBhcnJheSBieSBkYXRlIQpmdW5jdGlvbiBwbGFjZVNsb3RTZWdzKHNlZ3MpIHsKCXZhciBsZXZlbHM7Cgl2YXIgbGV2ZWwwOwoJdmFyIGk7CgoJc2Vncy5zb3J0KGNvbXBhcmVTZWdzKTsgLy8gb3JkZXIgYnkgZGF0ZQoJbGV2ZWxzID0gYnVpbGRTbG90U2VnTGV2ZWxzKHNlZ3MpOwoJY29tcHV0ZUZvcndhcmRTbG90U2VncyhsZXZlbHMpOwoKCWlmICgobGV2ZWwwID0gbGV2ZWxzWzBdKSkgewoKCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwwLmxlbmd0aDsgaSsrKSB7CgkJCWNvbXB1dGVTbG90U2VnUHJlc3N1cmVzKGxldmVsMFtpXSk7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwwLmxlbmd0aDsgaSsrKSB7CgkJCWNvbXB1dGVTbG90U2VnQ29vcmRzKGxldmVsMFtpXSwgMCwgMCk7CgkJfQoJfQp9CgoKLy8gQnVpbGRzIGFuIGFycmF5IG9mIHNlZ21lbnRzICJsZXZlbHMiLiBUaGUgZmlyc3QgbGV2ZWwgd2lsbCBiZSB0aGUgbGVmdG1vc3QgdGllciBvZiBzZWdtZW50cyBpZiB0aGUgY2FsZW5kYXIgaXMKLy8gbGVmdC10by1yaWdodCwgb3IgdGhlIHJpZ2h0bW9zdCBpZiB0aGUgY2FsZW5kYXIgaXMgcmlnaHQtdG8tbGVmdC4gQXNzdW1lcyB0aGUgc2VnbWVudHMgYXJlIGFscmVhZHkgb3JkZXJlZCBieSBkYXRlLgpmdW5jdGlvbiBidWlsZFNsb3RTZWdMZXZlbHMoc2VncykgewoJdmFyIGxldmVscyA9IFtdOwoJdmFyIGksIHNlZzsKCXZhciBqOwoKCWZvciAoaT0wOyBpPHNlZ3MubGVuZ3RoOyBpKyspIHsKCQlzZWcgPSBzZWdzW2ldOwoKCQkvLyBnbyB0aHJvdWdoIGFsbCB0aGUgbGV2ZWxzIGFuZCBzdG9wIG9uIHRoZSBmaXJzdCBsZXZlbCB3aGVyZSB0aGVyZSBhcmUgbm8gY29sbGlzaW9ucwoJCWZvciAoaj0wOyBqPGxldmVscy5sZW5ndGg7IGorKykgewoJCQlpZiAoIWNvbXB1dGVTbG90U2VnQ29sbGlzaW9ucyhzZWcsIGxldmVsc1tqXSkubGVuZ3RoKSB7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJc2VnLmxldmVsID0gajsKCgkJKGxldmVsc1tqXSB8fCAobGV2ZWxzW2pdID0gW10pKS5wdXNoKHNlZyk7Cgl9CgoJcmV0dXJuIGxldmVsczsKfQoKCi8vIEZvciBldmVyeSBzZWdtZW50LCBmaWd1cmUgb3V0IHRoZSBvdGhlciBzZWdtZW50cyB0aGF0IGFyZSBpbiBzdWJzZXF1ZW50Ci8vIGxldmVscyB0aGF0IGFsc28gb2NjdXB5IHRoZSBzYW1lIHZlcnRpY2FsIHNwYWNlLiBBY2N1bXVsYXRlIGluIHNlZy5mb3J3YXJkU2VncwpmdW5jdGlvbiBjb21wdXRlRm9yd2FyZFNsb3RTZWdzKGxldmVscykgewoJdmFyIGksIGxldmVsOwoJdmFyIGosIHNlZzsKCXZhciBrOwoKCWZvciAoaT0wOyBpPGxldmVscy5sZW5ndGg7IGkrKykgewoJCWxldmVsID0gbGV2ZWxzW2ldOwoKCQlmb3IgKGo9MDsgajxsZXZlbC5sZW5ndGg7IGorKykgewoJCQlzZWcgPSBsZXZlbFtqXTsKCgkJCXNlZy5mb3J3YXJkU2VncyA9IFtdOwoJCQlmb3IgKGs9aSsxOyBrPGxldmVscy5sZW5ndGg7IGsrKykgewoJCQkJY29tcHV0ZVNsb3RTZWdDb2xsaXNpb25zKHNlZywgbGV2ZWxzW2tdLCBzZWcuZm9yd2FyZFNlZ3MpOwoJCQl9CgkJfQoJfQp9CgoKLy8gRmlndXJlIG91dCB3aGljaCBwYXRoIGZvcndhcmQgKHZpYSBzZWcuZm9yd2FyZFNlZ3MpIHJlc3VsdHMgaW4gdGhlIGxvbmdlc3QgcGF0aCB1bnRpbAovLyB0aGUgZnVydGhlc3QgZWRnZSBpcyByZWFjaGVkLiBUaGUgbnVtYmVyIG9mIHNlZ21lbnRzIGluIHRoaXMgcGF0aCB3aWxsIGJlIHNlZy5mb3J3YXJkUHJlc3N1cmUKZnVuY3Rpb24gY29tcHV0ZVNsb3RTZWdQcmVzc3VyZXMoc2VnKSB7Cgl2YXIgZm9yd2FyZFNlZ3MgPSBzZWcuZm9yd2FyZFNlZ3M7Cgl2YXIgZm9yd2FyZFByZXNzdXJlID0gMDsKCXZhciBpLCBmb3J3YXJkU2VnOwoKCWlmIChzZWcuZm9yd2FyZFByZXNzdXJlID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGFscmVhZHkgY29tcHV0ZWQKCgkJZm9yIChpPTA7IGk8Zm9yd2FyZFNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJZm9yd2FyZFNlZyA9IGZvcndhcmRTZWdzW2ldOwoKCQkJLy8gZmlndXJlIG91dCB0aGUgY2hpbGQncyBtYXhpbXVtIGZvcndhcmQgcGF0aAoJCQljb21wdXRlU2xvdFNlZ1ByZXNzdXJlcyhmb3J3YXJkU2VnKTsKCgkJCS8vIGVpdGhlciB1c2UgdGhlIGV4aXN0aW5nIG1heGltdW0sIG9yIHVzZSB0aGUgY2hpbGQncyBmb3J3YXJkIHByZXNzdXJlCgkJCS8vIHBsdXMgb25lIChmb3IgdGhlIGZvcndhcmRTZWcgaXRzZWxmKQoJCQlmb3J3YXJkUHJlc3N1cmUgPSBNYXRoLm1heCgKCQkJCWZvcndhcmRQcmVzc3VyZSwKCQkJCTEgKyBmb3J3YXJkU2VnLmZvcndhcmRQcmVzc3VyZQoJCQkpOwoJCX0KCgkJc2VnLmZvcndhcmRQcmVzc3VyZSA9IGZvcndhcmRQcmVzc3VyZTsKCX0KfQoKCi8vIENhbGN1bGF0ZSBzZWcuZm9yd2FyZENvb3JkIGFuZCBzZWcuYmFja3dhcmRDb29yZCBmb3IgdGhlIHNlZ21lbnQsIHdoZXJlIGJvdGggdmFsdWVzIHJhbmdlCi8vIGZyb20gMCB0byAxLiBJZiB0aGUgY2FsZW5kYXIgaXMgbGVmdC10by1yaWdodCwgdGhlIHNlZy5iYWNrd2FyZENvb3JkIG1hcHMgdG8gImxlZnQiIGFuZAovLyBzZWcuZm9yd2FyZENvb3JkIG1hcHMgdG8gInJpZ2h0IiAodmlhIHBlcmNlbnRhZ2UpLiBWaWNlLXZlcnNhIGlmIHRoZSBjYWxlbmRhciBpcyByaWdodC10by1sZWZ0LgovLwovLyBUaGUgc2VnbWVudCBtaWdodCBiZSBwYXJ0IG9mIGEgInNlcmllcyIsIHdoaWNoIG1lYW5zIGNvbnNlY3V0aXZlIHNlZ21lbnRzIHdpdGggdGhlIHNhbWUgcHJlc3N1cmUKLy8gd2hvJ3Mgd2lkdGggaXMgdW5rbm93biB1bnRpbCBhbiBlZGdlIGhhcyBiZWVuIGhpdC4gYHNlcmllc0JhY2t3YXJkUHJlc3N1cmVgIGlzIHRoZSBudW1iZXIgb2YKLy8gc2VnbWVudHMgYmVoaW5kIHRoaXMgb25lIGluIHRoZSBjdXJyZW50IHNlcmllcywgYW5kIGBzZXJpZXNCYWNrd2FyZENvb3JkYCBpcyB0aGUgc3RhcnRpbmcKLy8gY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3Qgc2VnbWVudCBpbiB0aGUgc2VyaWVzLgpmdW5jdGlvbiBjb21wdXRlU2xvdFNlZ0Nvb3JkcyhzZWcsIHNlcmllc0JhY2t3YXJkUHJlc3N1cmUsIHNlcmllc0JhY2t3YXJkQ29vcmQpIHsKCXZhciBmb3J3YXJkU2VncyA9IHNlZy5mb3J3YXJkU2VnczsKCXZhciBpOwoKCWlmIChzZWcuZm9yd2FyZENvb3JkID09PSB1bmRlZmluZWQpIHsgLy8gbm90IGFscmVhZHkgY29tcHV0ZWQKCgkJaWYgKCFmb3J3YXJkU2Vncy5sZW5ndGgpIHsKCgkJCS8vIGlmIHRoZXJlIGFyZSBubyBmb3J3YXJkIHNlZ21lbnRzLCB0aGlzIHNlZ21lbnQgc2hvdWxkIGJ1dHQgdXAgYWdhaW5zdCB0aGUgZWRnZQoJCQlzZWcuZm9yd2FyZENvb3JkID0gMTsKCQl9CgkJZWxzZSB7CgoJCQkvLyBzb3J0IGhpZ2hlc3QgcHJlc3N1cmUgZmlyc3QKCQkJZm9yd2FyZFNlZ3Muc29ydChjb21wYXJlRm9yd2FyZFNsb3RTZWdzKTsKCgkJCS8vIHRoaXMgc2VnbWVudCdzIGZvcndhcmRDb29yZCB3aWxsIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgYmFja3dhcmRDb29yZCBvZiB0aGUKCQkJLy8gaGlnaGVzdC1wcmVzc3VyZSBmb3J3YXJkIHNlZ21lbnQuCgkJCWNvbXB1dGVTbG90U2VnQ29vcmRzKGZvcndhcmRTZWdzWzBdLCBzZXJpZXNCYWNrd2FyZFByZXNzdXJlICsgMSwgc2VyaWVzQmFja3dhcmRDb29yZCk7CgkJCXNlZy5mb3J3YXJkQ29vcmQgPSBmb3J3YXJkU2Vnc1swXS5iYWNrd2FyZENvb3JkOwoJCX0KCgkJLy8gY2FsY3VsYXRlIHRoZSBiYWNrd2FyZENvb3JkIGZyb20gdGhlIGZvcndhcmRDb29yZC4gY29uc2lkZXIgdGhlIHNlcmllcwoJCXNlZy5iYWNrd2FyZENvb3JkID0gc2VnLmZvcndhcmRDb29yZCAtCgkJCShzZWcuZm9yd2FyZENvb3JkIC0gc2VyaWVzQmFja3dhcmRDb29yZCkgLyAvLyBhdmFpbGFibGUgd2lkdGggZm9yIHNlcmllcwoJCQkoc2VyaWVzQmFja3dhcmRQcmVzc3VyZSArIDEpOyAvLyAjIG9mIHNlZ21lbnRzIGluIHRoZSBzZXJpZXMKCgkJLy8gdXNlIHRoaXMgc2VnbWVudCdzIGNvb3JkaW5hdGVzIHRvIGNvbXB1dGVkIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgbGVzcy1wcmVzc3VyaXplZAoJCS8vIGZvcndhcmQgc2VnbWVudHMKCQlmb3IgKGk9MDsgaTxmb3J3YXJkU2Vncy5sZW5ndGg7IGkrKykgewoJCQljb21wdXRlU2xvdFNlZ0Nvb3Jkcyhmb3J3YXJkU2Vnc1tpXSwgMCwgc2VnLmZvcndhcmRDb29yZCk7CgkJfQoJfQp9CgoKLy8gRmluZCBhbGwgdGhlIHNlZ21lbnRzIGluIGBvdGhlclNlZ3NgIHRoYXQgdmVydGljYWxseSBjb2xsaWRlIHdpdGggYHNlZ2AuCi8vIEFwcGVuZCBpbnRvIGFuIG9wdGlvbmFsbHktc3VwcGxpZWQgYHJlc3VsdHNgIGFycmF5IGFuZCByZXR1cm4uCmZ1bmN0aW9uIGNvbXB1dGVTbG90U2VnQ29sbGlzaW9ucyhzZWcsIG90aGVyU2VncywgcmVzdWx0cykgewoJcmVzdWx0cyA9IHJlc3VsdHMgfHwgW107CgoJZm9yICh2YXIgaT0wOyBpPG90aGVyU2Vncy5sZW5ndGg7IGkrKykgewoJCWlmIChpc1Nsb3RTZWdDb2xsaXNpb24oc2VnLCBvdGhlclNlZ3NbaV0pKSB7CgkJCXJlc3VsdHMucHVzaChvdGhlclNlZ3NbaV0pOwoJCX0KCX0KCglyZXR1cm4gcmVzdWx0czsKfQoKCi8vIERvIHRoZXNlIHNlZ21lbnRzIG9jY3VweSB0aGUgc2FtZSB2ZXJ0aWNhbCBzcGFjZT8KZnVuY3Rpb24gaXNTbG90U2VnQ29sbGlzaW9uKHNlZzEsIHNlZzIpIHsKCXJldHVybiBzZWcxLmJvdHRvbSA+IHNlZzIudG9wICYmIHNlZzEudG9wIDwgc2VnMi5ib3R0b207Cn0KCgovLyBBIGNtcCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggZm9yd2FyZCBzZWdtZW50IHRvIHJlbHkgb24gbW9yZSB3aGVuIGNvbXB1dGluZyBjb29yZGluYXRlcy4KZnVuY3Rpb24gY29tcGFyZUZvcndhcmRTbG90U2VncyhzZWcxLCBzZWcyKSB7CgkvLyBwdXQgaGlnaGVyLXByZXNzdXJlIGZpcnN0CglyZXR1cm4gc2VnMi5mb3J3YXJkUHJlc3N1cmUgLSBzZWcxLmZvcndhcmRQcmVzc3VyZSB8fAoJCS8vIHB1dCBzZWdtZW50cyB0aGF0IGFyZSBjbG9zZXIgdG8gaW5pdGlhbCBlZGdlIGZpcnN0IChhbmQgZmF2b3Igb25lcyB3aXRoIG5vIGNvb3JkcyB5ZXQpCgkJKHNlZzEuYmFja3dhcmRDb29yZCB8fCAwKSAtIChzZWcyLmJhY2t3YXJkQ29vcmQgfHwgMCkgfHwKCQkvLyBkbyBub3JtYWwgc29ydGluZy4uLgoJCWNvbXBhcmVTZWdzKHNlZzEsIHNlZzIpOwp9Cgo7OwoKLyogQW4gYWJzdHJhY3QgY2xhc3MgZnJvbSB3aGljaCBvdGhlciB2aWV3cyBpbmhlcml0IGZyb20KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgVmlldyA9IGZjLlZpZXcgPSBDbGFzcy5leHRlbmQoewoKCXR5cGU6IG51bGwsIC8vIHN1YmNsYXNzJyB2aWV3IG5hbWUgKHN0cmluZykKCW5hbWU6IG51bGwsIC8vIGRlcHJlY2F0ZWQuIHVzZSBgdHlwZWAgaW5zdGVhZAoJdGl0bGU6IG51bGwsIC8vIHRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlcidzIHRpdGxlCgoJY2FsZW5kYXI6IG51bGwsIC8vIG93bmVyIENhbGVuZGFyIG9iamVjdAoJb3B0aW9uczogbnVsbCwgLy8gaGFzaCBjb250YWluaW5nIGFsbCBvcHRpb25zLiBhbHJlYWR5IG1lcmdlZCB3aXRoIHZpZXctc3BlY2lmaWMtb3B0aW9ucwoJY29vcmRNYXA6IG51bGwsIC8vIGEgQ29vcmRNYXAgb2JqZWN0IGZvciBjb252ZXJ0aW5nIHBpeGVsIHJlZ2lvbnMgdG8gZGF0ZXMKCWVsOiBudWxsLCAvLyB0aGUgdmlldydzIGNvbnRhaW5pbmcgZWxlbWVudC4gc2V0IGJ5IENhbGVuZGFyCgoJZGlzcGxheWluZzogbnVsbCwgLy8gYSBwcm9taXNlIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgb2YgcmVuZGVyaW5nLiBudWxsIGlmIG5vIHJlbmRlciByZXF1ZXN0ZWQKCWlzU2tlbGV0b25SZW5kZXJlZDogZmFsc2UsCglpc0V2ZW50c1JlbmRlcmVkOiBmYWxzZSwKCgkvLyByYW5nZSB0aGUgdmlldyBpcyBhY3R1YWxseSBkaXNwbGF5aW5nIChtb21lbnRzKQoJc3RhcnQ6IG51bGwsCgllbmQ6IG51bGwsIC8vIGV4Y2x1c2l2ZQoKCS8vIHJhbmdlIHRoZSB2aWV3IGlzIGZvcm1hbGx5IHJlc3BvbnNpYmxlIGZvciAobW9tZW50cykKCS8vIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBzdGFydC9lbmQuIGZvciBleGFtcGxlLCBhIG1vbnRoIHZpZXcgbWlnaHQgaGF2ZSAxc3QtMzFzdCwgZXhjbHVkaW5nIHBhZGRlZCBkYXRlcwoJaW50ZXJ2YWxTdGFydDogbnVsbCwKCWludGVydmFsRW5kOiBudWxsLCAvLyBleGNsdXNpdmUKCWludGVydmFsRHVyYXRpb246IG51bGwsCglpbnRlcnZhbFVuaXQ6IG51bGwsIC8vIG5hbWUgb2YgbGFyZ2VzdCB1bml0IGJlaW5nIGRpc3BsYXllZCwgbGlrZSAibW9udGgiIG9yICJ3ZWVrIgoKCWlzUlRMOiBmYWxzZSwKCWlzU2VsZWN0ZWQ6IGZhbHNlLCAvLyBib29sZWFuIHdoZXRoZXIgYSByYW5nZSBvZiB0aW1lIGlzIHVzZXItc2VsZWN0ZWQgb3Igbm90CgoJLy8gc3ViY2xhc3NlcyBjYW4gb3B0aW9uYWxseSB1c2UgYSBzY3JvbGwgY29udGFpbmVyCglzY3JvbGxlckVsOiBudWxsLCAvLyB0aGUgZWxlbWVudCB0aGF0IHdpbGwgbW9zdCBsaWtlbHkgc2Nyb2xsIHdoZW4gY29udGVudCBpcyB0b28gdGFsbAoJc2Nyb2xsVG9wOiBudWxsLCAvLyBjYWNoZWQgdmVydGljYWwgc2Nyb2xsIHZhbHVlCgoJLy8gY2xhc3NOYW1lcyBzdHlsZWQgYnkganF1aSB0aGVtZXMKCXdpZGdldEhlYWRlckNsYXNzOiBudWxsLAoJd2lkZ2V0Q29udGVudENsYXNzOiBudWxsLAoJaGlnaGxpZ2h0U3RhdGVDbGFzczogbnVsbCwKCgkvLyBmb3IgZGF0ZSB1dGlscywgY29tcHV0ZWQgZnJvbSBvcHRpb25zCgluZXh0RGF5VGhyZXNob2xkOiBudWxsLAoJaXNIaWRkZW5EYXlIYXNoOiBudWxsLAoKCS8vIGRvY3VtZW50IGhhbmRsZXJzLCBib3VuZCB0byBgdGhpc2Agb2JqZWN0Cglkb2N1bWVudE1vdXNlZG93blByb3h5OiBudWxsLCAvLyBUT0RPOiBkb2Vzbid0IHdvcmsgd2l0aCB0b3VjaAoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY2FsZW5kYXIsIHR5cGUsIG9wdGlvbnMsIGludGVydmFsRHVyYXRpb24pIHsKCgkJdGhpcy5jYWxlbmRhciA9IGNhbGVuZGFyOwoJCXRoaXMudHlwZSA9IHRoaXMubmFtZSA9IHR5cGU7IC8vIC5uYW1lIGlzIGRlcHJlY2F0ZWQKCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwoJCXRoaXMuaW50ZXJ2YWxEdXJhdGlvbiA9IGludGVydmFsRHVyYXRpb24gfHwgbW9tZW50LmR1cmF0aW9uKDEsICdkYXknKTsKCgkJdGhpcy5uZXh0RGF5VGhyZXNob2xkID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub3B0KCduZXh0RGF5VGhyZXNob2xkJykpOwoJCXRoaXMuaW5pdFRoZW1pbmdQcm9wcygpOwoJCXRoaXMuaW5pdEhpZGRlbkRheXMoKTsKCQl0aGlzLmlzUlRMID0gdGhpcy5vcHQoJ2lzUlRMJyk7CgoJCXRoaXMuZG9jdW1lbnRNb3VzZWRvd25Qcm94eSA9IHByb3h5KHRoaXMsICdkb2N1bWVudE1vdXNlZG93bicpOwoKCQl0aGlzLmluaXRpYWxpemUoKTsKCX0sCgoKCS8vIEEgZ29vZCBwbGFjZSBmb3Igc3ViY2xhc3NlcyB0byBpbml0aWFsaXplIG1lbWJlciB2YXJpYWJsZXMKCWluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgY2FuIGltcGxlbWVudAoJfSwKCgoJLy8gUmV0cmlldmVzIGFuIG9wdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lCglvcHQ6IGZ1bmN0aW9uKG5hbWUpIHsKCQlyZXR1cm4gdGhpcy5vcHRpb25zW25hbWVdOwoJfSwKCgoJLy8gVHJpZ2dlcnMgaGFuZGxlcnMgdGhhdCBhcmUgdmlldy1yZWxhdGVkLiBNb2RpZmllcyBhcmdzIGJlZm9yZSBwYXNzaW5nIHRvIGNhbGVuZGFyLgoJdHJpZ2dlcjogZnVuY3Rpb24obmFtZSwgdGhpc09iaikgeyAvLyBhcmd1bWVudHMgYmV5b25kIHRoaXNPYmogYXJlIHBhc3NlZCBhbG9uZwoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7CgoJCXJldHVybiBjYWxlbmRhci50cmlnZ2VyLmFwcGx5KAoJCQljYWxlbmRhciwKCQkJW25hbWUsIHRoaXNPYmogfHwgdGhpc10uY29uY2F0KAoJCQkJQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSwgLy8gYXJndW1lbnRzIGJleW9uZCB0aGlzT2JqCgkJCQlbIHRoaXMgXSAvLyBhbHdheXMgbWFrZSB0aGUgbGFzdCBhcmd1bWVudCBhIHJlZmVyZW5jZSB0byB0aGUgdmlldy4gVE9ETzogZGVwcmVjYXRlCgkJCSkKCQkpOwoJfSwKCgoJLyogRGF0ZXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFVwZGF0ZXMgYWxsIGludGVybmFsIGRhdGVzIHRvIGNlbnRlciBhcm91bmQgdGhlIGdpdmVuIGN1cnJlbnQgZGF0ZQoJc2V0RGF0ZTogZnVuY3Rpb24oZGF0ZSkgewoJCXRoaXMuc2V0UmFuZ2UodGhpcy5jb21wdXRlUmFuZ2UoZGF0ZSkpOwoJfSwKCgoJLy8gVXBkYXRlcyBhbGwgaW50ZXJuYWwgZGF0ZXMgZm9yIGRpc3BsYXlpbmcgdGhlIGdpdmVuIHJhbmdlLgoJLy8gRXhwZWN0cyBhbGwgdmFsdWVzIHRvIGJlIG5vcm1hbGl6ZWQgKGxpa2Ugd2hhdCBjb21wdXRlUmFuZ2UgZG9lcykuCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQkkLmV4dGVuZCh0aGlzLCByYW5nZSk7CgkJdGhpcy51cGRhdGVUaXRsZSgpOwoJfSwKCgoJLy8gR2l2ZW4gYSBzaW5nbGUgY3VycmVudCBkYXRlLCBwcm9kdWNlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgcmFuZ2UgdG8gZGlzcGxheS4KCS8vIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlLiBNdXN0IHJldHVybiBhbGwgcHJvcGVydGllcy4KCWNvbXB1dGVSYW5nZTogZnVuY3Rpb24oZGF0ZSkgewoJCXZhciBpbnRlcnZhbFVuaXQgPSBjb21wdXRlSW50ZXJ2YWxVbml0KHRoaXMuaW50ZXJ2YWxEdXJhdGlvbik7CgkJdmFyIGludGVydmFsU3RhcnQgPSBkYXRlLmNsb25lKCkuc3RhcnRPZihpbnRlcnZhbFVuaXQpOwoJCXZhciBpbnRlcnZhbEVuZCA9IGludGVydmFsU3RhcnQuY2xvbmUoKS5hZGQodGhpcy5pbnRlcnZhbER1cmF0aW9uKTsKCQl2YXIgc3RhcnQsIGVuZDsKCgkJLy8gbm9ybWFsaXplIHRoZSByYW5nZSdzIHRpbWUtYW1iaWd1aXR5CgkJaWYgKC95ZWFyfG1vbnRofHdlZWt8ZGF5Ly50ZXN0KGludGVydmFsVW5pdCkpIHsgLy8gd2hvbGUtZGF5cz8KCQkJaW50ZXJ2YWxTdGFydC5zdHJpcFRpbWUoKTsKCQkJaW50ZXJ2YWxFbmQuc3RyaXBUaW1lKCk7CgkJfQoJCWVsc2UgeyAvLyBuZWVkcyB0byBoYXZlIGEgdGltZT8KCQkJaWYgKCFpbnRlcnZhbFN0YXJ0Lmhhc1RpbWUoKSkgewoJCQkJaW50ZXJ2YWxTdGFydCA9IHRoaXMuY2FsZW5kYXIucmV6b25lRGF0ZShpbnRlcnZhbFN0YXJ0KTsgLy8gY29udmVydCB0byBjdXJyZW50IHRpbWV6b25lLCB3aXRoIDAwOjAwCgkJCX0KCQkJaWYgKCFpbnRlcnZhbEVuZC5oYXNUaW1lKCkpIHsKCQkJCWludGVydmFsRW5kID0gdGhpcy5jYWxlbmRhci5yZXpvbmVEYXRlKGludGVydmFsRW5kKTsgLy8gY29udmVydCB0byBjdXJyZW50IHRpbWV6b25lLCB3aXRoIDAwOjAwCgkJCX0KCQl9CgoJCXN0YXJ0ID0gaW50ZXJ2YWxTdGFydC5jbG9uZSgpOwoJCXN0YXJ0ID0gdGhpcy5za2lwSGlkZGVuRGF5cyhzdGFydCk7CgkJZW5kID0gaW50ZXJ2YWxFbmQuY2xvbmUoKTsKCQllbmQgPSB0aGlzLnNraXBIaWRkZW5EYXlzKGVuZCwgLTEsIHRydWUpOyAvLyBleGNsdXNpdmVseSBtb3ZlIGJhY2t3YXJkcwoKCQlyZXR1cm4gewoJCQlpbnRlcnZhbFVuaXQ6IGludGVydmFsVW5pdCwKCQkJaW50ZXJ2YWxTdGFydDogaW50ZXJ2YWxTdGFydCwKCQkJaW50ZXJ2YWxFbmQ6IGludGVydmFsRW5kLAoJCQlzdGFydDogc3RhcnQsCgkJCWVuZDogZW5kCgkJfTsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSBuZXcgZGF0ZSB3aGVuIHRoZSB1c2VyIGhpdHMgdGhlIHByZXYgYnV0dG9uLCBnaXZlbiB0aGUgY3VycmVudCBkYXRlCgljb21wdXRlUHJldkRhdGU6IGZ1bmN0aW9uKGRhdGUpIHsKCQlyZXR1cm4gdGhpcy5tYXNzYWdlQ3VycmVudERhdGUoCgkJCWRhdGUuY2xvbmUoKS5zdGFydE9mKHRoaXMuaW50ZXJ2YWxVbml0KS5zdWJ0cmFjdCh0aGlzLmludGVydmFsRHVyYXRpb24pLCAtMQoJCSk7Cgl9LAoKCgkvLyBDb21wdXRlcyB0aGUgbmV3IGRhdGUgd2hlbiB0aGUgdXNlciBoaXRzIHRoZSBuZXh0IGJ1dHRvbiwgZ2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZQoJY29tcHV0ZU5leHREYXRlOiBmdW5jdGlvbihkYXRlKSB7CgkJcmV0dXJuIHRoaXMubWFzc2FnZUN1cnJlbnREYXRlKAoJCQlkYXRlLmNsb25lKCkuc3RhcnRPZih0aGlzLmludGVydmFsVW5pdCkuYWRkKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbikKCQkpOwoJfSwKCgoJLy8gR2l2ZW4gYW4gYXJiaXRyYXJpbHkgY2FsY3VsYXRlZCBjdXJyZW50IGRhdGUgb2YgdGhlIGNhbGVuZGFyLCByZXR1cm5zIGEgZGF0ZSB0aGF0IGlzIGVuc3VyZWQgdG8gYmUgY29tcGxldGVseQoJLy8gdmlzaWJsZS4gYGRpcmVjdGlvbmAgaXMgb3B0aW9uYWwgYW5kIGluZGljYXRlcyB3aGljaCBkaXJlY3Rpb24gdGhlIGN1cnJlbnQgZGF0ZSB3YXMgYmVpbmcKCS8vIGluY3JlbWVudGVkIG9yIGRlY3JlbWVudGVkICgxIG9yIC0xKS4KCW1hc3NhZ2VDdXJyZW50RGF0ZTogZnVuY3Rpb24oZGF0ZSwgZGlyZWN0aW9uKSB7CgkJaWYgKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbi5hcygnZGF5cycpIDw9IDEpIHsgLy8gaWYgdGhlIHZpZXcgZGlzcGxheXMgYSBzaW5nbGUgZGF5IG9yIHNtYWxsZXIKCQkJaWYgKHRoaXMuaXNIaWRkZW5EYXkoZGF0ZSkpIHsKCQkJCWRhdGUgPSB0aGlzLnNraXBIaWRkZW5EYXlzKGRhdGUsIGRpcmVjdGlvbik7CgkJCQlkYXRlLnN0YXJ0T2YoJ2RheScpOwoJCQl9CgkJfQoKCQlyZXR1cm4gZGF0ZTsKCX0sCgoKCS8qIFRpdGxlIGFuZCBEYXRlIEZvcm1hdHRpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNldHMgdGhlIHZpZXcncyB0aXRsZSBwcm9wZXJ0eSB0byB0aGUgbW9zdCB1cGRhdGVkIGNvbXB1dGVkIHZhbHVlCgl1cGRhdGVUaXRsZTogZnVuY3Rpb24oKSB7CgkJdGhpcy50aXRsZSA9IHRoaXMuY29tcHV0ZVRpdGxlKCk7Cgl9LAoKCgkvLyBDb21wdXRlcyB3aGF0IHRoZSB0aXRsZSBhdCB0aGUgdG9wIG9mIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgZm9yIHRoaXMgdmlldwoJY29tcHV0ZVRpdGxlOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5mb3JtYXRSYW5nZSgKCQkJeyBzdGFydDogdGhpcy5pbnRlcnZhbFN0YXJ0LCBlbmQ6IHRoaXMuaW50ZXJ2YWxFbmQgfSwKCQkJdGhpcy5vcHQoJ3RpdGxlRm9ybWF0JykgfHwgdGhpcy5jb21wdXRlVGl0bGVGb3JtYXQoKSwKCQkJdGhpcy5vcHQoJ3RpdGxlUmFuZ2VTZXBhcmF0b3InKQoJCSk7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIGZvcm1hdCBzdHJpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdGl0bGUgZm9yIHRoZSBjdXJyZW50IGRhdGUgcmFuZ2UuCgkvLyBBdHRlbXB0cyB0byBjb21wdXRlIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGZvcm1hdCBpZiBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgd2l0aCBgdGl0bGVGb3JtYXRgLgoJY29tcHV0ZVRpdGxlRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pbnRlcnZhbFVuaXQgPT0gJ3llYXInKSB7CgkJCXJldHVybiAnWVlZWSc7CgkJfQoJCWVsc2UgaWYgKHRoaXMuaW50ZXJ2YWxVbml0ID09ICdtb250aCcpIHsKCQkJcmV0dXJuIHRoaXMub3B0KCdtb250aFllYXJGb3JtYXQnKTsgLy8gbGlrZSAiU2VwdGVtYmVyIDIwMTQiCgkJfQoJCWVsc2UgaWYgKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbi5hcygnZGF5cycpID4gMSkgewoJCQlyZXR1cm4gJ2xsJzsgLy8gbXVsdGktZGF5IHJhbmdlLiBzaG9ydGVyLCBsaWtlICJTZXAgOSAtIDEwIDIwMTQiCgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJ0xMJzsgLy8gb25lIGRheS4gbG9uZ2VyLCBsaWtlICJTZXB0ZW1iZXIgOSAyMDE0IgoJCX0KCX0sCgoKCS8vIFV0aWxpdHkgZm9yIGZvcm1hdHRpbmcgYSByYW5nZS4gQWNjZXB0cyBhIHJhbmdlIG9iamVjdCwgZm9ybWF0dGluZyBzdHJpbmcsIGFuZCBvcHRpb25hbCBzZXBhcmF0b3IuCgkvLyBEaXNwbGF5cyBhbGwtZGF5IHJhbmdlcyBuYXR1cmFsbHksIHdpdGggYW4gaW5jbHVzaXZlIGVuZC4gVGFrZXMgdGhlIGN1cnJlbnQgaXNSVEwgaW50byBhY2NvdW50LgoJZm9ybWF0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCBmb3JtYXRTdHIsIHNlcGFyYXRvcikgewoJCXZhciBlbmQgPSByYW5nZS5lbmQ7CgoJCWlmICghZW5kLmhhc1RpbWUoKSkgeyAvLyBhbGwtZGF5PwoJCQllbmQgPSBlbmQuY2xvbmUoKS5zdWJ0cmFjdCgxKTsgLy8gY29udmVydCB0byBpbmNsdXNpdmUuIGxhc3QgbXMgb2YgcHJldmlvdXMgZGF5CgkJfQoKCQlyZXR1cm4gZm9ybWF0UmFuZ2UocmFuZ2Uuc3RhcnQsIGVuZCwgZm9ybWF0U3RyLCBzZXBhcmF0b3IsIHRoaXMub3B0KCdpc1JUTCcpKTsKCX0sCgoKCS8qIFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gU2V0cyB0aGUgY29udGFpbmVyIGVsZW1lbnQgdGhhdCB0aGUgdmlldyBzaG91bGQgcmVuZGVyIGluc2lkZSBvZi4KCS8vIERvZXMgb3RoZXIgRE9NLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb25zLgoJc2V0RWxlbWVudDogZnVuY3Rpb24oZWwpIHsKCQl0aGlzLmVsID0gZWw7CgkJdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCX0sCgoKCS8vIFJlbW92ZXMgdGhlIHZpZXcncyBjb250YWluZXIgZWxlbWVudCBmcm9tIHRoZSBET00sIGNsZWFyaW5nIGFueSBjb250ZW50IGJlZm9yZWhhbmQuCgkvLyBVbmRvZXMgYW55IG90aGVyIERPTS1yZWxhdGVkIGF0dGFjaG1lbnRzLgoJcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oKSB7CgkJdGhpcy5jbGVhcigpOyAvLyBjbGVhcnMgYWxsIGNvbnRlbnQKCgkJLy8gY2xlYW4gdXAgdGhlIHNrZWxldG9uCgkJaWYgKHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkKSB7CgkJCXRoaXMudW5yZW5kZXJTa2VsZXRvbigpOwoJCQl0aGlzLmlzU2tlbGV0b25SZW5kZXJlZCA9IGZhbHNlOwoJCX0KCgkJdGhpcy51bmJpbmRHbG9iYWxIYW5kbGVycygpOwoKCQl0aGlzLmVsLnJlbW92ZSgpOwoKCQkvLyBOT1RFOiBkb24ndCBudWxsLW91dCB0aGlzLmVsIGluIGNhc2UgdGhlIFZpZXcgd2FzIGRlc3Ryb3llZCB3aXRoaW4gYW4gQVBJIGNhbGxiYWNrLgoJCS8vIFdlIGRvbid0IG51bGwtb3V0IHRoZSBWaWV3J3Mgb3RoZXIgalF1ZXJ5IGVsZW1lbnQgcmVmZXJlbmNlcyB1cG9uIGRlc3Ryb3ksCgkJLy8gIHNvIHdlIHNob3VsZG4ndCBraWxsIHRoaXMuZWwgZWl0aGVyLgoJfSwKCgoJLy8gRG9lcyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBkaXNwbGF5IHRoZSB2aWV3IGNlbnRlcmVkIGFyb3VuZCB0aGUgZ2l2ZW4gZGF0ZS4KCS8vIERvZXMgZXZlcnkgdHlwZSBvZiByZW5kZXJpbmcgRVhDRVBUIHJlbmRlcmluZyBldmVudHMuCgkvLyBJcyBhc3ljaHJvbm91cyBhbmQgcmV0dXJucyBhIHByb21pc2UuCglkaXNwbGF5OiBmdW5jdGlvbihkYXRlKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgc2Nyb2xsU3RhdGUgPSBudWxsOwoKCQlpZiAodGhpcy5kaXNwbGF5aW5nKSB7CgkJCXNjcm9sbFN0YXRlID0gdGhpcy5xdWVyeVNjcm9sbCgpOwoJCX0KCgkJcmV0dXJuIHRoaXMuY2xlYXIoKS50aGVuKGZ1bmN0aW9uKCkgeyAvLyBjbGVhciB0aGUgY29udGVudCBmaXJzdCAoYXN5bmMpCgkJCXJldHVybiAoCgkJCQlfdGhpcy5kaXNwbGF5aW5nID0KCQkJCQkkLndoZW4oX3RoaXMuZGlzcGxheVZpZXcoZGF0ZSkpIC8vIGRpc3BsYXlWaWV3IG1pZ2h0IHJldHVybiBhIHByb21pc2UKCQkJCQkJLnRoZW4oZnVuY3Rpb24oKSB7CgkJCQkJCQlfdGhpcy5mb3JjZVNjcm9sbChfdGhpcy5jb21wdXRlSW5pdGlhbFNjcm9sbChzY3JvbGxTdGF0ZSkpOwoJCQkJCQkJX3RoaXMudHJpZ2dlclJlbmRlcigpOwoJCQkJCQl9KQoJCQkpOwoJCX0pOwoJfSwKCgoJLy8gRG9lcyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBjbGVhciB0aGUgY29udGVudCBvZiB0aGUgdmlldy4KCS8vIENsZWFycyBkYXRlcyBhbmQgZXZlbnRzLiBEb2VzIG5vdCBjbGVhciB0aGUgc2tlbGV0b24uCgkvLyBJcyBhc3ljaHJvbm91cyBhbmQgcmV0dXJucyBhIHByb21pc2UuCgljbGVhcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgZGlzcGxheWluZyA9IHRoaXMuZGlzcGxheWluZzsKCgkJaWYgKGRpc3BsYXlpbmcpIHsgLy8gcHJldmlvdXNseSBkaXNwbGF5ZWQsIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRpc3BsYXllZD8KCQkJcmV0dXJuIGRpc3BsYXlpbmcudGhlbihmdW5jdGlvbigpIHsgLy8gd2FpdCBmb3IgdGhlIGRpc3BsYXkgdG8gZmluaXNoCgkJCQlfdGhpcy5kaXNwbGF5aW5nID0gbnVsbDsKCQkJCV90aGlzLmNsZWFyRXZlbnRzKCk7CgkJCQlyZXR1cm4gX3RoaXMuY2xlYXJWaWV3KCk7IC8vIG1pZ2h0IHJldHVybiBhIHByb21pc2UuIGNoYWluIGl0CgkJCX0pOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuICQud2hlbigpOyAvLyBhbiBpbW1lZGlhdGVseS1yZXNvbHZlZCBwcm9taXNlCgkJfQoJfSwKCgoJLy8gRGlzcGxheXMgdGhlIHZpZXcncyBub24tZXZlbnQgY29udGVudCwgc3VjaCBhcyBkYXRlLXJlbGF0ZWQgY29udGVudCBvciBhbnl0aGluZyByZXF1aXJlZCBieSBldmVudHMuCgkvLyBSZW5kZXJzIHRoZSB2aWV3J3Mgbm9uLWNvbnRlbnQgc2tlbGV0b24gaWYgbmVjZXNzYXJ5LgoJLy8gQ2FuIGJlIGFzeW5jaHJvbm91cyBhbmQgcmV0dXJuIGEgcHJvbWlzZS4KCWRpc3BsYXlWaWV3OiBmdW5jdGlvbihkYXRlKSB7CgkJaWYgKCF0aGlzLmlzU2tlbGV0b25SZW5kZXJlZCkgewoJCQl0aGlzLnJlbmRlclNrZWxldG9uKCk7CgkJCXRoaXMuaXNTa2VsZXRvblJlbmRlcmVkID0gdHJ1ZTsKCQl9CgkJdGhpcy5zZXREYXRlKGRhdGUpOwoJCWlmICh0aGlzLnJlbmRlcikgewoJCQl0aGlzLnJlbmRlcigpOyAvLyBUT0RPOiBkZXByZWNhdGUKCQl9CgkJdGhpcy5yZW5kZXJEYXRlcygpOwoJCXRoaXMudXBkYXRlU2l6ZSgpOwoJCXRoaXMucmVuZGVyQnVzaW5lc3NIb3VycygpOyAvLyBtaWdodCBuZWVkIGNvb3JkaW5hdGVzLCBzbyBzaG91bGQgZ28gYWZ0ZXIgdXBkYXRlU2l6ZSgpCgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIHZpZXcgY29udGVudCB0aGF0IHdhcyByZW5kZXJlZCBpbiBkaXNwbGF5Vmlldy4KCS8vIENhbiBiZSBhc3luY2hyb25vdXMgYW5kIHJldHVybiBhIHByb21pc2UuCgljbGVhclZpZXc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5zZWxlY3QoKTsKCQl0aGlzLnRyaWdnZXJVbnJlbmRlcigpOwoJCXRoaXMudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7CgkJdGhpcy51bnJlbmRlckRhdGVzKCk7CgkJaWYgKHRoaXMuZGVzdHJveSkgewoJCQl0aGlzLmRlc3Ryb3koKTsgLy8gVE9ETzogZGVwcmVjYXRlCgkJfQoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIHRoZSB2aWV3IGJlZm9yZSBhbnkgY29udGVudCBpcyByZW5kZXJlZAoJcmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgb2YgdGhlIHZpZXcKCXVucmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVuZGVycyB0aGUgdmlldydzIGRhdGUtcmVsYXRlZCBjb250ZW50IChsaWtlIGNlbGxzIHRoYXQgcmVwcmVzZW50IGRheXMvdGltZXMpLgoJLy8gQXNzdW1lcyBzZXRSYW5nZSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBhbmQgdGhlIHNrZWxldG9uIGhhcyBhbHJlYWR5IGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIHZpZXcncyBkYXRlLXJlbGF0ZWQgY29udGVudAoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUKCX0sCgoKCS8vIFJlbmRlcnMgYnVzaW5lc3MtaG91cnMgb250byB0aGUgdmlldy4gQXNzdW1lcyB1cGRhdGVTaXplIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkLgoJcmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgcHJldmlvdXNseS1yZW5kZXJlZCBidXNpbmVzcy1ob3VycwoJdW5yZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIFNpZ25hbHMgdGhhdCB0aGUgdmlldydzIGNvbnRlbnQgaGFzIGJlZW4gcmVuZGVyZWQKCXRyaWdnZXJSZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMudHJpZ2dlcigndmlld1JlbmRlcicsIHRoaXMsIHRoaXMsIHRoaXMuZWwpOwoJfSwKCgoJLy8gU2lnbmFscyB0aGF0IHRoZSB2aWV3J3MgY29udGVudCBpcyBhYm91dCB0byBiZSB1bnJlbmRlcmVkCgl0cmlnZ2VyVW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMudHJpZ2dlcigndmlld0Rlc3Ryb3knLCB0aGlzLCB0aGlzLCB0aGlzLmVsKTsKCX0sCgoKCS8vIEJpbmRzIERPTSBoYW5kbGVycyB0byBlbGVtZW50cyB0aGF0IHJlc2lkZSBvdXRzaWRlIHRoZSB2aWV3IGNvbnRhaW5lciwgc3VjaCBhcyB0aGUgZG9jdW1lbnQKCWJpbmRHbG9iYWxIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJJChkb2N1bWVudCkub24oJ21vdXNlZG93bicsIHRoaXMuZG9jdW1lbnRNb3VzZWRvd25Qcm94eSk7Cgl9LAoKCgkvLyBVbmJpbmRzIERPTSBoYW5kbGVycyBmcm9tIGVsZW1lbnRzIHRoYXQgcmVzaWRlIG91dHNpZGUgdGhlIHZpZXcgY29udGFpbmVyCgl1bmJpbmRHbG9iYWxIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJJChkb2N1bWVudCkub2ZmKCdtb3VzZWRvd24nLCB0aGlzLmRvY3VtZW50TW91c2Vkb3duUHJveHkpOwoJfSwKCgoJLy8gSW5pdGlhbGl6ZXMgaW50ZXJuYWwgdmFyaWFibGVzIHJlbGF0ZWQgdG8gdGhlbWluZwoJaW5pdFRoZW1pbmdQcm9wczogZnVuY3Rpb24oKSB7CgkJdmFyIHRtID0gdGhpcy5vcHQoJ3RoZW1lJykgPyAndWknIDogJ2ZjJzsKCgkJdGhpcy53aWRnZXRIZWFkZXJDbGFzcyA9IHRtICsgJy13aWRnZXQtaGVhZGVyJzsKCQl0aGlzLndpZGdldENvbnRlbnRDbGFzcyA9IHRtICsgJy13aWRnZXQtY29udGVudCc7CgkJdGhpcy5oaWdobGlnaHRTdGF0ZUNsYXNzID0gdG0gKyAnLXN0YXRlLWhpZ2hsaWdodCc7Cgl9LAoKCgkvKiBEaW1lbnNpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZWZyZXNoZXMgYW55dGhpbmcgZGVwZW5kYW50IHVwb24gc2l6aW5nIG9mIHRoZSBjb250YWluZXIgZWxlbWVudCBvZiB0aGUgZ3JpZAoJdXBkYXRlU2l6ZTogZnVuY3Rpb24oaXNSZXNpemUpIHsKCQl2YXIgc2Nyb2xsU3RhdGU7CgoJCWlmIChpc1Jlc2l6ZSkgewoJCQlzY3JvbGxTdGF0ZSA9IHRoaXMucXVlcnlTY3JvbGwoKTsKCQl9CgoJCXRoaXMudXBkYXRlSGVpZ2h0KGlzUmVzaXplKTsKCQl0aGlzLnVwZGF0ZVdpZHRoKGlzUmVzaXplKTsKCgkJaWYgKGlzUmVzaXplKSB7CgkJCXRoaXMuc2V0U2Nyb2xsKHNjcm9sbFN0YXRlKTsKCQl9Cgl9LAoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgY2FsZW5kYXIKCXVwZGF0ZVdpZHRoOiBmdW5jdGlvbihpc1Jlc2l6ZSkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVmcmVzaGVzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSBjYWxlbmRhcgoJdXBkYXRlSGVpZ2h0OiBmdW5jdGlvbihpc1Jlc2l6ZSkgewoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7IC8vIHdlIHBvbGwgdGhlIGNhbGVuZGFyIGZvciBoZWlnaHQgaW5mb3JtYXRpb24KCgkJdGhpcy5zZXRIZWlnaHQoCgkJCWNhbGVuZGFyLmdldFN1Z2dlc3RlZFZpZXdIZWlnaHQoKSwKCQkJY2FsZW5kYXIuaXNIZWlnaHRBdXRvKCkKCQkpOwoJfSwKCgoJLy8gVXBkYXRlcyB0aGUgdmVydGljYWwgZGltZW5zaW9ucyBvZiB0aGUgY2FsZW5kYXIgdG8gdGhlIHNwZWNpZmllZCBoZWlnaHQuCgkvLyBpZiBgaXNBdXRvYCBpcyBzZXQgdG8gdHJ1ZSwgaGVpZ2h0IGJlY29tZXMgbWVyZWx5IGEgc3VnZ2VzdGlvbiBhbmQgdGhlIHZpZXcgc2hvdWxkIHVzZSBpdHMgIm5hdHVyYWwiIGhlaWdodC4KCXNldEhlaWdodDogZnVuY3Rpb24oaGVpZ2h0LCBpc0F1dG8pIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8qIFNjcm9sbGVyCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHaXZlbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSB2aWV3LCByZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHNjcm9sbGVyLgoJLy8gVXRpbGl0eSBmb3Igc3ViY2xhc3Nlcy4KCWNvbXB1dGVTY3JvbGxlckhlaWdodDogZnVuY3Rpb24odG90YWxIZWlnaHQpIHsKCQl2YXIgc2Nyb2xsZXJFbCA9IHRoaXMuc2Nyb2xsZXJFbDsKCQl2YXIgYm90aDsKCQl2YXIgb3RoZXJIZWlnaHQ7IC8vIGN1bXVsYXRpdmUgaGVpZ2h0IG9mIGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3QgdGhlIHNjcm9sbGVyRWwgaW4gdGhlIHZpZXcgKGhlYWRlcitib3JkZXJzKQoKCQlib3RoID0gdGhpcy5lbC5hZGQoc2Nyb2xsZXJFbCk7CgoJCS8vIGZ1Y2tpbiBJRTgvOS8xMC8xMSBzb21ldGltZXMgcmV0dXJucyAwIGZvciBkaW1lbnNpb25zLiB0aGlzIHdlaXJkIGhhY2sgd2FzIHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya2VkCgkJYm90aC5jc3MoewoJCQlwb3NpdGlvbjogJ3JlbGF0aXZlJywgLy8gY2F1c2UgYSByZWZsb3csIHdoaWNoIHdpbGwgZm9yY2UgZnJlc2ggZGltZW5zaW9uIHJlY2FsY3VsYXRpb24KCQkJbGVmdDogLTEgLy8gZW5zdXJlIHJlZmxvdyBpbiBjYXNlIHRoZSBlbCB3YXMgYWxyZWFkeSByZWxhdGl2ZS4gbmVnYXRpdmUgaXMgbGVzcyBsaWtlbHkgdG8gY2F1c2UgbmV3IHNjcm9sbAoJCX0pOwoJCW90aGVySGVpZ2h0ID0gdGhpcy5lbC5vdXRlckhlaWdodCgpIC0gc2Nyb2xsZXJFbC5oZWlnaHQoKTsgLy8gZ3JhYiB0aGUgZGltZW5zaW9ucwoJCWJvdGguY3NzKHsgcG9zaXRpb246ICcnLCBsZWZ0OiAnJyB9KTsgLy8gdW5kbyBoYWNrCgoJCXJldHVybiB0b3RhbEhlaWdodCAtIG90aGVySGVpZ2h0OwoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGluaXRpYWwgcHJlLWNvbmZpZ3VyZWQgc2Nyb2xsIHN0YXRlIHByaW9yIHRvIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSBpdC4KCS8vIEdpdmVuIHRoZSBzY3JvbGwgc3RhdGUgZnJvbSB0aGUgcHJldmlvdXMgcmVuZGVyaW5nLiBJZiBmaXJzdCB0aW1lIHJlbmRlcmluZywgZ2l2ZW4gbnVsbC4KCWNvbXB1dGVJbml0aWFsU2Nyb2xsOiBmdW5jdGlvbihwcmV2aW91c1Njcm9sbFN0YXRlKSB7CgkJcmV0dXJuIDA7Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgdGhlIHZpZXcncyBjdXJyZW50IG5hdHVyYWwgc2Nyb2xsIHN0YXRlLiBDYW4gcmV0dXJuIGFuIGFyYml0cmFyeSBmb3JtYXQuCglxdWVyeVNjcm9sbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuc2Nyb2xsZXJFbCkgewoJCQlyZXR1cm4gdGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcCgpOyAvLyBvcGVyYXRlcyBvbiBzY3JvbGxlckVsIGJ5IGRlZmF1bHQKCQl9Cgl9LAoKCgkvLyBTZXRzIHRoZSB2aWV3J3Mgc2Nyb2xsIHN0YXRlLiBXaWxsIGFjY2VwdCB0aGUgc2FtZSBmb3JtYXQgY29tcHV0ZUluaXRpYWxTY3JvbGwgYW5kIHF1ZXJ5U2Nyb2xsIHByb2R1Y2UuCglzZXRTY3JvbGw6IGZ1bmN0aW9uKHNjcm9sbFN0YXRlKSB7CgkJaWYgKHRoaXMuc2Nyb2xsZXJFbCkgewoJCQlyZXR1cm4gdGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcChzY3JvbGxTdGF0ZSk7IC8vIG9wZXJhdGVzIG9uIHNjcm9sbGVyRWwgYnkgZGVmYXVsdAoJCX0KCX0sCgoKCS8vIFNldHMgdGhlIHNjcm9sbCBzdGF0ZSwgbWFraW5nIHN1cmUgdG8gb3ZlcmNvbWUgYW55IHByZWRlZmluZWQgc2Nyb2xsIHZhbHVlIHRoZSBicm93c2VyIGhhcyBpbiBtaW5kCglmb3JjZVNjcm9sbDogZnVuY3Rpb24oc2Nyb2xsU3RhdGUpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoKCQl0aGlzLnNldFNjcm9sbChzY3JvbGxTdGF0ZSk7CgkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJX3RoaXMuc2V0U2Nyb2xsKHNjcm9sbFN0YXRlKTsKCQl9LCAwKTsKCX0sCgoKCS8qIEV2ZW50IEVsZW1lbnRzIC8gU2VnbWVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIERvZXMgZXZlcnl0aGluZyBuZWNlc3NhcnkgdG8gZGlzcGxheSB0aGUgZ2l2ZW4gZXZlbnRzIG9udG8gdGhlIGN1cnJlbnQgdmlldwoJZGlzcGxheUV2ZW50czogZnVuY3Rpb24oZXZlbnRzKSB7CgkJdmFyIHNjcm9sbFN0YXRlID0gdGhpcy5xdWVyeVNjcm9sbCgpOwoKCQl0aGlzLmNsZWFyRXZlbnRzKCk7CgkJdGhpcy5yZW5kZXJFdmVudHMoZXZlbnRzKTsKCQl0aGlzLmlzRXZlbnRzUmVuZGVyZWQgPSB0cnVlOwoJCXRoaXMuc2V0U2Nyb2xsKHNjcm9sbFN0YXRlKTsKCQl0aGlzLnRyaWdnZXJFdmVudFJlbmRlcigpOwoJfSwKCgoJLy8gRG9lcyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBjbGVhciB0aGUgdmlldydzIGN1cnJlbnRseS1yZW5kZXJlZCBldmVudHMKCWNsZWFyRXZlbnRzOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pc0V2ZW50c1JlbmRlcmVkKSB7CgkJCXRoaXMudHJpZ2dlckV2ZW50VW5yZW5kZXIoKTsKCQkJaWYgKHRoaXMuZGVzdHJveUV2ZW50cykgewoJCQkJdGhpcy5kZXN0cm95RXZlbnRzKCk7IC8vIFRPRE86IGRlcHJlY2F0ZQoJCQl9CgkJCXRoaXMudW5yZW5kZXJFdmVudHMoKTsKCQkJdGhpcy5pc0V2ZW50c1JlbmRlcmVkID0gZmFsc2U7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyB0aGUgZXZlbnRzIG9udG8gdGhlIHZpZXcuCglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVtb3ZlcyBldmVudCBlbGVtZW50cyBmcm9tIHRoZSB2aWV3LgoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gU2lnbmFscyB0aGF0IGFsbCBldmVudHMgaGF2ZSBiZWVuIHJlbmRlcmVkCgl0cmlnZ2VyRXZlbnRSZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXRoaXMudHJpZ2dlcignZXZlbnRBZnRlclJlbmRlcicsIHNlZy5ldmVudCwgc2VnLmV2ZW50LCBzZWcuZWwpOwoJCX0pOwoJCXRoaXMudHJpZ2dlcignZXZlbnRBZnRlckFsbFJlbmRlcicpOwoJfSwKCgoJLy8gU2lnbmFscyB0aGF0IGFsbCBldmVudCBlbGVtZW50cyBhcmUgYWJvdXQgdG8gYmUgcmVtb3ZlZAoJdHJpZ2dlckV2ZW50VW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXRoaXMudHJpZ2dlcignZXZlbnREZXN0cm95Jywgc2VnLmV2ZW50LCBzZWcuZXZlbnQsIHNlZy5lbCk7CgkJfSk7Cgl9LAoKCgkvLyBHaXZlbiBhbiBldmVudCBhbmQgdGhlIGRlZmF1bHQgZWxlbWVudCB1c2VkIGZvciByZW5kZXJpbmcsIHJldHVybnMgdGhlIGVsZW1lbnQgdGhhdCBzaG91bGQgYWN0dWFsbHkgYmUgdXNlZC4KCS8vIEJhc2ljYWxseSBydW5zIGV2ZW50cyBhbmQgZWxlbWVudHMgdGhyb3VnaCB0aGUgZXZlbnRSZW5kZXIgaG9vay4KCXJlc29sdmVFdmVudEVsOiBmdW5jdGlvbihldmVudCwgZWwpIHsKCQl2YXIgY3VzdG9tID0gdGhpcy50cmlnZ2VyKCdldmVudFJlbmRlcicsIGV2ZW50LCBldmVudCwgZWwpOwoKCQlpZiAoY3VzdG9tID09PSBmYWxzZSkgeyAvLyBtZWFucyBkb24ndCByZW5kZXIgYXQgYWxsCgkJCWVsID0gbnVsbDsKCQl9CgkJZWxzZSBpZiAoY3VzdG9tICYmIGN1c3RvbSAhPT0gdHJ1ZSkgewoJCQllbCA9ICQoY3VzdG9tKTsKCQl9CgoJCXJldHVybiBlbDsKCX0sCgoKCS8vIEhpZGVzIGFsbCByZW5kZXJlZCBldmVudCBzZWdtZW50cyBsaW5rZWQgdG8gdGhlIGdpdmVuIGV2ZW50CglzaG93RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJdGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihzZWcpIHsKCQkJc2VnLmVsLmNzcygndmlzaWJpbGl0eScsICcnKTsKCQl9LCBldmVudCk7Cgl9LAoKCgkvLyBTaG93cyBhbGwgcmVuZGVyZWQgZXZlbnQgc2VnbWVudHMgbGlua2VkIHRvIHRoZSBnaXZlbiBldmVudAoJaGlkZUV2ZW50OiBmdW5jdGlvbihldmVudCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXNlZy5lbC5jc3MoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7CgkJfSwgZXZlbnQpOwoJfSwKCgoJLy8gSXRlcmF0ZXMgdGhyb3VnaCBldmVudCBzZWdtZW50cyB0aGF0IGhhdmUgYmVlbiByZW5kZXJlZCAoaGF2ZSBhbiBlbCkuIEdvZXMgdGhyb3VnaCBhbGwgYnkgZGVmYXVsdC4KCS8vIElmIHRoZSBvcHRpb25hbCBgZXZlbnRgIGFyZ3VtZW50IGlzIHNwZWNpZmllZCwgb25seSBpdGVyYXRlcyB0aHJvdWdoIHNlZ21lbnRzIGxpbmtlZCB0byB0aGF0IGV2ZW50LgoJLy8gVGhlIGB0aGlzYCB2YWx1ZSBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSB0aGUgdmlldy4KCXJlbmRlcmVkRXZlbnRTZWdFYWNoOiBmdW5jdGlvbihmdW5jLCBldmVudCkgewoJCXZhciBzZWdzID0gdGhpcy5nZXRFdmVudFNlZ3MoKTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJaWYgKCFldmVudCB8fCBzZWdzW2ldLmV2ZW50Ll9pZCA9PT0gZXZlbnQuX2lkKSB7CgkJCQlpZiAoc2Vnc1tpXS5lbCkgewoJCQkJCWZ1bmMuY2FsbCh0aGlzLCBzZWdzW2ldKTsKCQkJCX0KCQkJfQoJCX0KCX0sCgoKCS8vIFJldHJpZXZlcyBhbGwgdGhlIHJlbmRlcmVkIHNlZ21lbnQgb2JqZWN0cyBmb3IgdGhlIHZpZXcKCWdldEV2ZW50U2VnczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJCXJldHVybiBbXTsKCX0sCgoKCS8qIEV2ZW50IERyYWctbi1Ecm9wCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBDb21wdXRlcyBpZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYWxsb3dlZCB0byBiZSBkcmFnZ2VkIGJ5IHRoZSB1c2VyCglpc0V2ZW50RHJhZ2dhYmxlOiBmdW5jdGlvbihldmVudCkgewoJCXZhciBzb3VyY2UgPSBldmVudC5zb3VyY2UgfHwge307CgoJCXJldHVybiBmaXJzdERlZmluZWQoCgkJCWV2ZW50LnN0YXJ0RWRpdGFibGUsCgkJCXNvdXJjZS5zdGFydEVkaXRhYmxlLAoJCQl0aGlzLm9wdCgnZXZlbnRTdGFydEVkaXRhYmxlJyksCgkJCWV2ZW50LmVkaXRhYmxlLAoJCQlzb3VyY2UuZWRpdGFibGUsCgkJCXRoaXMub3B0KCdlZGl0YWJsZScpCgkJKTsKCX0sCgoKCS8vIE11c3QgYmUgY2FsbGVkIHdoZW4gYW4gZXZlbnQgaW4gdGhlIHZpZXcgaXMgZHJvcHBlZCBvbnRvIG5ldyBsb2NhdGlvbi4KCS8vIGBkcm9wTG9jYXRpb25gIGlzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBuZXcgc3RhcnQvZW5kL2FsbERheSB2YWx1ZXMgZm9yIHRoZSBldmVudC4KCXJlcG9ydEV2ZW50RHJvcDogZnVuY3Rpb24oZXZlbnQsIGRyb3BMb2NhdGlvbiwgbGFyZ2VVbml0LCBlbCwgZXYpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyOwoJCXZhciBtdXRhdGVSZXN1bHQgPSBjYWxlbmRhci5tdXRhdGVFdmVudChldmVudCwgZHJvcExvY2F0aW9uLCBsYXJnZVVuaXQpOwoJCXZhciB1bmRvRnVuYyA9IGZ1bmN0aW9uKCkgewoJCQltdXRhdGVSZXN1bHQudW5kbygpOwoJCQljYWxlbmRhci5yZXBvcnRFdmVudENoYW5nZSgpOwoJCX07CgoJCXRoaXMudHJpZ2dlckV2ZW50RHJvcChldmVudCwgbXV0YXRlUmVzdWx0LmRhdGVEZWx0YSwgdW5kb0Z1bmMsIGVsLCBldik7CgkJY2FsZW5kYXIucmVwb3J0RXZlbnRDaGFuZ2UoKTsgLy8gd2lsbCByZXJlbmRlciBldmVudHMKCX0sCgoKCS8vIFRyaWdnZXJzIGV2ZW50LWRyb3AgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFdmVudERyb3A6IGZ1bmN0aW9uKGV2ZW50LCBkYXRlRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2V2ZW50RHJvcCcsIGVsWzBdLCBldmVudCwgZGF0ZURlbHRhLCB1bmRvRnVuYywgZXYsIHt9KTsgLy8ge30gPSBqcXVpIGR1bW15Cgl9LAoKCgkvKiBFeHRlcm5hbCBFbGVtZW50IERyYWctbi1Ecm9wCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIGFuIGV4dGVybmFsIGVsZW1lbnQsIHZpYSBqUXVlcnkgVUksIGhhcyBiZWVuIGRyb3BwZWQgb250byB0aGUgY2FsZW5kYXIuCgkvLyBgbWV0YWAgaXMgdGhlIHBhcnNlZCBkYXRhIHRoYXQgaGFzIGJlZW4gZW1iZWRkZWQgaW50byB0aGUgZHJhZ2dpbmcgZXZlbnQuCgkvLyBgZHJvcExvY2F0aW9uYCBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgbmV3IHN0YXJ0L2VuZC9hbGxEYXkgdmFsdWVzIGZvciB0aGUgZXZlbnQuCglyZXBvcnRFeHRlcm5hbERyb3A6IGZ1bmN0aW9uKG1ldGEsIGRyb3BMb2NhdGlvbiwgZWwsIGV2LCB1aSkgewoJCXZhciBldmVudFByb3BzID0gbWV0YS5ldmVudFByb3BzOwoJCXZhciBldmVudElucHV0OwoJCXZhciBldmVudDsKCgkJLy8gVHJ5IHRvIGJ1aWxkIGFuIGV2ZW50IG9iamVjdCBhbmQgcmVuZGVyIGl0LiBUT0RPOiBkZWNvdXBsZSB0aGUgdHdvCgkJaWYgKGV2ZW50UHJvcHMpIHsKCQkJZXZlbnRJbnB1dCA9ICQuZXh0ZW5kKHt9LCBldmVudFByb3BzLCBkcm9wTG9jYXRpb24pOwoJCQlldmVudCA9IHRoaXMuY2FsZW5kYXIucmVuZGVyRXZlbnQoZXZlbnRJbnB1dCwgbWV0YS5zdGljaylbMF07IC8vIHJlbmRlckV2ZW50IHJldHVybnMgYW4gYXJyYXkKCQl9CgoJCXRoaXMudHJpZ2dlckV4dGVybmFsRHJvcChldmVudCwgZHJvcExvY2F0aW9uLCBlbCwgZXYsIHVpKTsKCX0sCgoKCS8vIFRyaWdnZXJzIGV4dGVybmFsLWRyb3AgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFeHRlcm5hbERyb3A6IGZ1bmN0aW9uKGV2ZW50LCBkcm9wTG9jYXRpb24sIGVsLCBldiwgdWkpIHsKCgkJLy8gdHJpZ2dlciAnZHJvcCcgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBldmVudAoJCXRoaXMudHJpZ2dlcignZHJvcCcsIGVsWzBdLCBkcm9wTG9jYXRpb24uc3RhcnQsIGV2LCB1aSk7CgoJCWlmIChldmVudCkgewoJCQl0aGlzLnRyaWdnZXIoJ2V2ZW50UmVjZWl2ZScsIG51bGwsIGV2ZW50KTsgLy8gc2lnbmFsIGFuIGV4dGVybmFsIGV2ZW50IGxhbmRlZAoJCX0KCX0sCgoKCS8qIERyYWctbi1Ecm9wIFJlbmRlcmluZyAoZm9yIGJvdGggZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIGV2ZW50IG9yIGV4dGVybmFsLWVsZW1lbnQgZHJhZyBvdmVyIHRoZSBnaXZlbiBkcm9wIHpvbmUuCgkvLyBJZiBhbiBleHRlcm5hbC1lbGVtZW50LCBzZWcgd2lsbCBiZSBgbnVsbGAKCXJlbmRlckRyYWc6IGZ1bmN0aW9uKGRyb3BMb2NhdGlvbiwgc2VnKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgb3IgZXh0ZXJuYWwtZWxlbWVudCBiZWluZyBkcmFnZ2VkLgoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvKiBFdmVudCBSZXNpemluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgaWYgdGhlIGdpdmVuIGV2ZW50IGlzIGFsbG93ZWQgdG8gYmUgcmVzaXplZCBmcm9tIGl0cyBzdGFydGluZyBlZGdlCglpc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0OiBmdW5jdGlvbihldmVudCkgewoJCXJldHVybiB0aGlzLm9wdCgnZXZlbnRSZXNpemFibGVGcm9tU3RhcnQnKSAmJiB0aGlzLmlzRXZlbnRSZXNpemFibGUoZXZlbnQpOwoJfSwKCgoJLy8gQ29tcHV0ZXMgaWYgdGhlIGdpdmVuIGV2ZW50IGlzIGFsbG93ZWQgdG8gYmUgcmVzaXplZCBmcm9tIGl0cyBlbmRpbmcgZWRnZQoJaXNFdmVudFJlc2l6YWJsZUZyb21FbmQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJcmV0dXJuIHRoaXMuaXNFdmVudFJlc2l6YWJsZShldmVudCk7Cgl9LAoKCgkvLyBDb21wdXRlcyBpZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYWxsb3dlZCB0byBiZSByZXNpemVkIGJ5IHRoZSB1c2VyIGF0IGFsbAoJaXNFdmVudFJlc2l6YWJsZTogZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgc291cmNlID0gZXZlbnQuc291cmNlIHx8IHt9OwoKCQlyZXR1cm4gZmlyc3REZWZpbmVkKAoJCQlldmVudC5kdXJhdGlvbkVkaXRhYmxlLAoJCQlzb3VyY2UuZHVyYXRpb25FZGl0YWJsZSwKCQkJdGhpcy5vcHQoJ2V2ZW50RHVyYXRpb25FZGl0YWJsZScpLAoJCQlldmVudC5lZGl0YWJsZSwKCQkJc291cmNlLmVkaXRhYmxlLAoJCQl0aGlzLm9wdCgnZWRpdGFibGUnKQoJCSk7Cgl9LAoKCgkvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIGFuIGV2ZW50IGluIHRoZSB2aWV3IGhhcyBiZWVuIHJlc2l6ZWQgdG8gYSBuZXcgbGVuZ3RoCglyZXBvcnRFdmVudFJlc2l6ZTogZnVuY3Rpb24oZXZlbnQsIHJlc2l6ZUxvY2F0aW9uLCBsYXJnZVVuaXQsIGVsLCBldikgewoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7CgkJdmFyIG11dGF0ZVJlc3VsdCA9IGNhbGVuZGFyLm11dGF0ZUV2ZW50KGV2ZW50LCByZXNpemVMb2NhdGlvbiwgbGFyZ2VVbml0KTsKCQl2YXIgdW5kb0Z1bmMgPSBmdW5jdGlvbigpIHsKCQkJbXV0YXRlUmVzdWx0LnVuZG8oKTsKCQkJY2FsZW5kYXIucmVwb3J0RXZlbnRDaGFuZ2UoKTsKCQl9OwoKCQl0aGlzLnRyaWdnZXJFdmVudFJlc2l6ZShldmVudCwgbXV0YXRlUmVzdWx0LmR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpOwoJCWNhbGVuZGFyLnJlcG9ydEV2ZW50Q2hhbmdlKCk7IC8vIHdpbGwgcmVyZW5kZXIgZXZlbnRzCgl9LAoKCgkvLyBUcmlnZ2VycyBldmVudC1yZXNpemUgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24oZXZlbnQsIGR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2V2ZW50UmVzaXplJywgZWxbMF0sIGV2ZW50LCBkdXJhdGlvbkRlbHRhLCB1bmRvRnVuYywgZXYsIHt9KTsgLy8ge30gPSBqcXVpIGR1bW15Cgl9LAoKCgkvKiBTZWxlY3Rpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNlbGVjdHMgYSBkYXRlIHJhbmdlIG9uIHRoZSB2aWV3LiBgc3RhcnRgIGFuZCBgZW5kYCBhcmUgYm90aCBNb21lbnRzLgoJLy8gYGV2YCBpcyB0aGUgbmF0aXZlIG1vdXNlIGV2ZW50IHRoYXQgYmVnaW4gdGhlIGludGVyYWN0aW9uLgoJc2VsZWN0OiBmdW5jdGlvbihyYW5nZSwgZXYpIHsKCQl0aGlzLnVuc2VsZWN0KGV2KTsKCQl0aGlzLnJlbmRlclNlbGVjdGlvbihyYW5nZSk7CgkJdGhpcy5yZXBvcnRTZWxlY3Rpb24ocmFuZ2UsIGV2KTsKCX0sCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiB0aGUgc2VsZWN0aW9uCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBhIG5ldyBzZWxlY3Rpb24gaXMgbWFkZS4gVXBkYXRlcyBpbnRlcm5hbCBzdGF0ZSBhbmQgdHJpZ2dlcnMgaGFuZGxlcnMuCglyZXBvcnRTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlLCBldikgewoJCXRoaXMuaXNTZWxlY3RlZCA9IHRydWU7CgkJdGhpcy50cmlnZ2VyU2VsZWN0KHJhbmdlLCBldik7Cgl9LAoKCgkvLyBUcmlnZ2VycyBoYW5kbGVycyB0byAnc2VsZWN0JwoJdHJpZ2dlclNlbGVjdDogZnVuY3Rpb24ocmFuZ2UsIGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdzZWxlY3QnLCBudWxsLCByYW5nZS5zdGFydCwgcmFuZ2UuZW5kLCBldik7Cgl9LAoKCgkvLyBVbmRvZXMgYSBzZWxlY3Rpb24uIHVwZGF0ZXMgaW4gdGhlIGludGVybmFsIHN0YXRlIGFuZCB0cmlnZ2VycyBoYW5kbGVycy4KCS8vIGBldmAgaXMgdGhlIG5hdGl2ZSBtb3VzZSBldmVudCB0aGF0IGJlZ2FuIHRoZSBpbnRlcmFjdGlvbi4KCXVuc2VsZWN0OiBmdW5jdGlvbihldikgewoJCWlmICh0aGlzLmlzU2VsZWN0ZWQpIHsKCQkJdGhpcy5pc1NlbGVjdGVkID0gZmFsc2U7CgkJCWlmICh0aGlzLmRlc3Ryb3lTZWxlY3Rpb24pIHsKCQkJCXRoaXMuZGVzdHJveVNlbGVjdGlvbigpOyAvLyBUT0RPOiBkZXByZWNhdGUKCQkJfQoJCQl0aGlzLnVucmVuZGVyU2VsZWN0aW9uKCk7CgkJCXRoaXMudHJpZ2dlcigndW5zZWxlY3QnLCBudWxsLCBldik7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2Ygc2VsZWN0aW9uCgl1bnJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBIYW5kbGVyIGZvciB1bnNlbGVjdGluZyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzb21ldGhpbmcgYW5kIHRoZSAndW5zZWxlY3RBdXRvJyBzZXR0aW5nIGlzIG9uCglkb2N1bWVudE1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQl2YXIgaWdub3JlOwoKCQkvLyBpcyB0aGVyZSBhIHNlbGVjdGlvbiwgYW5kIGhhcyB0aGUgdXNlciBtYWRlIGEgcHJvcGVyIGxlZnQgY2xpY2s/CgkJaWYgKHRoaXMuaXNTZWxlY3RlZCAmJiB0aGlzLm9wdCgndW5zZWxlY3RBdXRvJykgJiYgaXNQcmltYXJ5TW91c2VCdXR0b24oZXYpKSB7CgoJCQkvLyBvbmx5IHVuc2VsZWN0IGlmIHRoZSBjbGlja2VkIGVsZW1lbnQgaXMgbm90IGlkZW50aWNhbCB0byBvciBpbnNpZGUgb2YgYW4gJ3Vuc2VsZWN0Q2FuY2VsJyBlbGVtZW50CgkJCWlnbm9yZSA9IHRoaXMub3B0KCd1bnNlbGVjdENhbmNlbCcpOwoJCQlpZiAoIWlnbm9yZSB8fCAhJChldi50YXJnZXQpLmNsb3Nlc3QoaWdub3JlKS5sZW5ndGgpIHsKCQkJCXRoaXMudW5zZWxlY3QoZXYpOwoJCQl9CgkJfQoJfSwKCgoJLyogRGF5IENsaWNrCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBUcmlnZ2VycyBoYW5kbGVycyB0byAnZGF5Q2xpY2snCgl0cmlnZ2VyRGF5Q2xpY2s6IGZ1bmN0aW9uKGNlbGwsIGRheUVsLCBldikgewoJCXRoaXMudHJpZ2dlcignZGF5Q2xpY2snLCBkYXlFbCwgY2VsbC5zdGFydCwgZXYpOwoJfSwKCgoJLyogRGF0ZSBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gSW5pdGlhbGl6ZXMgaW50ZXJuYWwgdmFyaWFibGVzIHJlbGF0ZWQgdG8gY2FsY3VsYXRpbmcgaGlkZGVuIGRheXMtb2Ytd2VlawoJaW5pdEhpZGRlbkRheXM6IGZ1bmN0aW9uKCkgewoJCXZhciBoaWRkZW5EYXlzID0gdGhpcy5vcHQoJ2hpZGRlbkRheXMnKSB8fCBbXTsgLy8gYXJyYXkgb2YgZGF5LW9mLXdlZWsgaW5kaWNlcyB0aGF0IGFyZSBoaWRkZW4KCQl2YXIgaXNIaWRkZW5EYXlIYXNoID0gW107IC8vIGlzIHRoZSBkYXktb2Ytd2VlayBoaWRkZW4/IChoYXNoIHdpdGggZGF5LW9mLXdlZWstaW5kZXggLT4gYm9vbCkKCQl2YXIgZGF5Q250ID0gMDsKCQl2YXIgaTsKCgkJaWYgKHRoaXMub3B0KCd3ZWVrZW5kcycpID09PSBmYWxzZSkgewoJCQloaWRkZW5EYXlzLnB1c2goMCwgNik7IC8vIDA9c3VuZGF5LCA2PXNhdHVyZGF5CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7CgkJCWlmICgKCQkJCSEoaXNIaWRkZW5EYXlIYXNoW2ldID0gJC5pbkFycmF5KGksIGhpZGRlbkRheXMpICE9PSAtMSkKCQkJKSB7CgkJCQlkYXlDbnQrKzsKCQkJfQoJCX0KCgkJaWYgKCFkYXlDbnQpIHsKCQkJdGhyb3cgJ2ludmFsaWQgaGlkZGVuRGF5cyc7IC8vIGFsbCBkYXlzIHdlcmUgaGlkZGVuPyBiYWQuCgkJfQoKCQl0aGlzLmlzSGlkZGVuRGF5SGFzaCA9IGlzSGlkZGVuRGF5SGFzaDsKCX0sCgoKCS8vIElzIHRoZSBjdXJyZW50IGRheSBoaWRkZW4/CgkvLyBgZGF5YCBpcyBhIGRheS1vZi13ZWVrIGluZGV4ICgwLTYpLCBvciBhIE1vbWVudAoJaXNIaWRkZW5EYXk6IGZ1bmN0aW9uKGRheSkgewoJCWlmIChtb21lbnQuaXNNb21lbnQoZGF5KSkgewoJCQlkYXkgPSBkYXkuZGF5KCk7CgkJfQoJCXJldHVybiB0aGlzLmlzSGlkZGVuRGF5SGFzaFtkYXldOwoJfSwKCgoJLy8gSW5jcmVtZW50aW5nIHRoZSBjdXJyZW50IGRheSB1bnRpbCBpdCBpcyBubyBsb25nZXIgYSBoaWRkZW4gZGF5LCByZXR1cm5pbmcgYSBjb3B5LgoJLy8gSWYgdGhlIGluaXRpYWwgdmFsdWUgb2YgYGRhdGVgIGlzIG5vdCBhIGhpZGRlbiBkYXksIGRvbid0IGRvIGFueXRoaW5nLgoJLy8gUGFzcyBgaXNFeGNsdXNpdmVgIGFzIGB0cnVlYCBpZiB5b3UgYXJlIGRlYWxpbmcgd2l0aCBhbiBlbmQgZGF0ZS4KCS8vIGBpbmNgIGRlZmF1bHRzIHRvIGAxYCAoaW5jcmVtZW50IG9uZSBkYXkgZm9yd2FyZCBlYWNoIHRpbWUpCglza2lwSGlkZGVuRGF5czogZnVuY3Rpb24oZGF0ZSwgaW5jLCBpc0V4Y2x1c2l2ZSkgewoJCXZhciBvdXQgPSBkYXRlLmNsb25lKCk7CgkJaW5jID0gaW5jIHx8IDE7CgkJd2hpbGUgKAoJCQl0aGlzLmlzSGlkZGVuRGF5SGFzaFsob3V0LmRheSgpICsgKGlzRXhjbHVzaXZlID8gaW5jIDogMCkgKyA3KSAlIDddCgkJKSB7CgkJCW91dC5hZGQoaW5jLCAnZGF5cycpOwoJCX0KCQlyZXR1cm4gb3V0OwoJfSwKCgoJLy8gUmV0dXJucyB0aGUgZGF0ZSByYW5nZSBvZiB0aGUgZnVsbCBkYXlzIHRoZSBnaXZlbiByYW5nZSB2aXN1YWxseSBhcHBlYXJzIHRvIG9jY3VweS4KCS8vIFJldHVybnMgYSBuZXcgcmFuZ2Ugb2JqZWN0LgoJY29tcHV0ZURheVJhbmdlOiBmdW5jdGlvbihyYW5nZSkgewoJCXZhciBzdGFydERheSA9IHJhbmdlLnN0YXJ0LmNsb25lKCkuc3RyaXBUaW1lKCk7IC8vIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRheSB0aGUgcmFuZ2Ugc3RhcnRzCgkJdmFyIGVuZCA9IHJhbmdlLmVuZDsKCQl2YXIgZW5kRGF5ID0gbnVsbDsKCQl2YXIgZW5kVGltZU1TOwoKCQlpZiAoZW5kKSB7CgkJCWVuZERheSA9IGVuZC5jbG9uZSgpLnN0cmlwVGltZSgpOyAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXkgdGhlIHJhbmdlIGV4Y2x1c2l2ZWx5IGVuZHMKCQkJZW5kVGltZU1TID0gK2VuZC50aW1lKCk7IC8vICMgb2YgbWlsbGlzZWNvbmRzIGludG8gYGVuZERheWAKCgkJCS8vIElmIHRoZSBlbmQgdGltZSBpcyBhY3R1YWxseSBpbmNsdXNpdmVseSBwYXJ0IG9mIHRoZSBuZXh0IGRheSBhbmQgaXMgZXF1YWwgdG8gb3IKCQkJLy8gYmV5b25kIHRoZSBuZXh0IGRheSB0aHJlc2hvbGQsIGFkanVzdCB0aGUgZW5kIHRvIGJlIHRoZSBleGNsdXNpdmUgZW5kIG9mIGBlbmREYXlgLgoJCQkvLyBPdGhlcndpc2UsIGxlYXZpbmcgaXQgYXMgaW5jbHVzaXZlIHdpbGwgY2F1c2UgaXQgdG8gZXhjbHVkZSBgZW5kRGF5YC4KCQkJaWYgKGVuZFRpbWVNUyAmJiBlbmRUaW1lTVMgPj0gdGhpcy5uZXh0RGF5VGhyZXNob2xkKSB7CgkJCQllbmREYXkuYWRkKDEsICdkYXlzJyk7CgkJCX0KCQl9CgoJCS8vIElmIG5vIGVuZCB3YXMgc3BlY2lmaWVkLCBvciBpZiBpdCBpcyB3aXRoaW4gYHN0YXJ0RGF5YCBidXQgbm90IHBhc3QgbmV4dERheVRocmVzaG9sZCwKCQkvLyBhc3NpZ24gdGhlIGRlZmF1bHQgZHVyYXRpb24gb2Ygb25lIGRheS4KCQlpZiAoIWVuZCB8fCBlbmREYXkgPD0gc3RhcnREYXkpIHsKCQkJZW5kRGF5ID0gc3RhcnREYXkuY2xvbmUoKS5hZGQoMSwgJ2RheXMnKTsKCQl9CgoJCXJldHVybiB7IHN0YXJ0OiBzdGFydERheSwgZW5kOiBlbmREYXkgfTsKCX0sCgoKCS8vIERvZXMgdGhlIGdpdmVuIGV2ZW50IHZpc3VhbGx5IGFwcGVhciB0byBvY2N1cHkgbW9yZSB0aGFuIG9uZSBkYXk/Cglpc011bHRpRGF5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJdmFyIHJhbmdlID0gdGhpcy5jb21wdXRlRGF5UmFuZ2UoZXZlbnQpOyAvLyBldmVudCBpcyByYW5nZS1pc2gKCgkJcmV0dXJuIHJhbmdlLmVuZC5kaWZmKHJhbmdlLnN0YXJ0LCAnZGF5cycpID4gMTsKCX0KCn0pOwoKOzsKCnZhciBDYWxlbmRhciA9IGZjLkNhbGVuZGFyID0gQ2xhc3MuZXh0ZW5kKHsKCglkaXJEZWZhdWx0czogbnVsbCwgLy8gb3B0aW9uIGRlZmF1bHRzIHJlbGF0ZWQgdG8gTFRSIG9yIFJUTAoJbGFuZ0RlZmF1bHRzOiBudWxsLCAvLyBvcHRpb24gZGVmYXVsdHMgcmVsYXRlZCB0byBjdXJyZW50IGxvY2FsZQoJb3ZlcnJpZGVzOiBudWxsLCAvLyBvcHRpb24gb3ZlcnJpZGVzIGdpdmVuIHRvIHRoZSBmdWxsQ2FsZW5kYXIgY29uc3RydWN0b3IKCW9wdGlvbnM6IG51bGwsIC8vIGFsbCBkZWZhdWx0cyBjb21iaW5lZCB3aXRoIG92ZXJyaWRlcwoJdmlld1NwZWNDYWNoZTogbnVsbCwgLy8gY2FjaGUgb2YgdmlldyBkZWZpbml0aW9ucwoJdmlldzogbnVsbCwgLy8gY3VycmVudCBWaWV3IG9iamVjdAoJaGVhZGVyOiBudWxsLAoJbG9hZGluZ0xldmVsOiAwLCAvLyBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGxvYWRpbmcgdGFza3MKCgoJLy8gYSBsb3Qgb2YgdGhpcyBjbGFzcycgT09QIGxvZ2ljIGlzIHNjb3BlZCB3aXRoaW4gdGhpcyBjb25zdHJ1Y3RvciBmdW5jdGlvbiwKCS8vIGJ1dCBpbiB0aGUgZnV0dXJlLCB3cml0ZSBpbmRpdmlkdWFsIG1ldGhvZHMgb24gdGhlIHByb3RvdHlwZS4KCWNvbnN0cnVjdG9yOiBDYWxlbmRhcl9jb25zdHJ1Y3RvciwKCgoJLy8gU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBmb3IgaW5pdGlhbGl6YXRpb24gbG9naWMgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIGhhcyBiZWVuIGNhbGxlZAoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBJbml0aWFsaXplcyBgdGhpcy5vcHRpb25zYCBhbmQgb3RoZXIgaW1wb3J0YW50IG9wdGlvbnMtcmVsYXRlZCBvYmplY3RzCglpbml0T3B0aW9uczogZnVuY3Rpb24ob3ZlcnJpZGVzKSB7CgkJdmFyIGxhbmcsIGxhbmdEZWZhdWx0czsKCQl2YXIgaXNSVEwsIGRpckRlZmF1bHRzOwoKCQkvLyBjb252ZXJ0cyBsZWdhY3kgb3B0aW9ucyBpbnRvIG5vbi1sZWdhY3kgb25lcy4KCQkvLyBpbiB0aGUgZnV0dXJlLCB3aGVuIHRoaXMgaXMgcmVtb3ZlZCwgZG9uJ3QgdXNlIGBvdmVycmlkZXNgIHJlZmVyZW5jZS4gbWFrZSBhIGNvcHkuCgkJb3ZlcnJpZGVzID0gbWFzc2FnZU92ZXJyaWRlcyhvdmVycmlkZXMpOwoKCQlsYW5nID0gb3ZlcnJpZGVzLmxhbmc7CgkJbGFuZ0RlZmF1bHRzID0gbGFuZ09wdGlvbkhhc2hbbGFuZ107CgkJaWYgKCFsYW5nRGVmYXVsdHMpIHsKCQkJbGFuZyA9IENhbGVuZGFyLmRlZmF1bHRzLmxhbmc7CgkJCWxhbmdEZWZhdWx0cyA9IGxhbmdPcHRpb25IYXNoW2xhbmddIHx8IHt9OwoJCX0KCgkJaXNSVEwgPSBmaXJzdERlZmluZWQoCgkJCW92ZXJyaWRlcy5pc1JUTCwKCQkJbGFuZ0RlZmF1bHRzLmlzUlRMLAoJCQlDYWxlbmRhci5kZWZhdWx0cy5pc1JUTAoJCSk7CgkJZGlyRGVmYXVsdHMgPSBpc1JUTCA/IENhbGVuZGFyLnJ0bERlZmF1bHRzIDoge307CgoJCXRoaXMuZGlyRGVmYXVsdHMgPSBkaXJEZWZhdWx0czsKCQl0aGlzLmxhbmdEZWZhdWx0cyA9IGxhbmdEZWZhdWx0czsKCQl0aGlzLm92ZXJyaWRlcyA9IG92ZXJyaWRlczsKCQl0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoWyAvLyBtZXJnZSBkZWZhdWx0cyBhbmQgb3ZlcnJpZGVzLiBsb3dlc3QgdG8gaGlnaGVzdCBwcmVjZWRlbmNlCgkJCUNhbGVuZGFyLmRlZmF1bHRzLCAvLyBnbG9iYWwgZGVmYXVsdHMKCQkJZGlyRGVmYXVsdHMsCgkJCWxhbmdEZWZhdWx0cywKCQkJb3ZlcnJpZGVzCgkJXSk7CgkJcG9wdWxhdGVJbnN0YW5jZUNvbXB1dGFibGVPcHRpb25zKHRoaXMub3B0aW9ucyk7CgoJCXRoaXMudmlld1NwZWNDYWNoZSA9IHt9OyAvLyBzb21ld2hhdCB1bnJlbGF0ZWQKCX0sCgoKCS8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGNyZWF0ZSBhIHZpZXcuIFdpbGwgdXNlIGEgY2FjaGUuCglnZXRWaWV3U3BlYzogZnVuY3Rpb24odmlld1R5cGUpIHsKCQl2YXIgY2FjaGUgPSB0aGlzLnZpZXdTcGVjQ2FjaGU7CgoJCXJldHVybiBjYWNoZVt2aWV3VHlwZV0gfHwgKGNhY2hlW3ZpZXdUeXBlXSA9IHRoaXMuYnVpbGRWaWV3U3BlYyh2aWV3VHlwZSkpOwoJfSwKCgoJLy8gR2l2ZW4gYSBkdXJhdGlvbiBzaW5ndWxhciB1bml0LCBsaWtlICJ3ZWVrIiBvciAiZGF5IiwgZmluZHMgYSBtYXRjaGluZyB2aWV3IHNwZWMuCgkvLyBQcmVmZXJlbmNlIGlzIGdpdmVuIHRvIHZpZXdzIHRoYXQgaGF2ZSBjb3JyZXNwb25kaW5nIGJ1dHRvbnMuCglnZXRVbml0Vmlld1NwZWM6IGZ1bmN0aW9uKHVuaXQpIHsKCQl2YXIgdmlld1R5cGVzOwoJCXZhciBpOwoJCXZhciBzcGVjOwoKCQlpZiAoJC5pbkFycmF5KHVuaXQsIGludGVydmFsVW5pdHMpICE9IC0xKSB7CgoJCQkvLyBwdXQgdmlld3MgdGhhdCBoYXZlIGJ1dHRvbnMgZmlyc3QuIHRoZXJlIHdpbGwgYmUgZHVwbGljYXRlcywgYnV0IG9oIHdlbGwKCQkJdmlld1R5cGVzID0gdGhpcy5oZWFkZXIuZ2V0Vmlld3NXaXRoQnV0dG9ucygpOwoJCQkkLmVhY2goZmMudmlld3MsIGZ1bmN0aW9uKHZpZXdUeXBlKSB7IC8vIGFsbCB2aWV3cwoJCQkJdmlld1R5cGVzLnB1c2godmlld1R5cGUpOwoJCQl9KTsKCgkJCWZvciAoaSA9IDA7IGkgPCB2aWV3VHlwZXMubGVuZ3RoOyBpKyspIHsKCQkJCXNwZWMgPSB0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlc1tpXSk7CgkJCQlpZiAoc3BlYykgewoJCQkJCWlmIChzcGVjLnNpbmdsZVVuaXQgPT0gdW5pdCkgewoJCQkJCQlyZXR1cm4gc3BlYzsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9LAoKCgkvLyBCdWlsZHMgYW4gb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIGdpdmVuIHZpZXcKCWJ1aWxkVmlld1NwZWM6IGZ1bmN0aW9uKHJlcXVlc3RlZFZpZXdUeXBlKSB7CgkJdmFyIHZpZXdPdmVycmlkZXMgPSB0aGlzLm92ZXJyaWRlcy52aWV3cyB8fCB7fTsKCQl2YXIgc3BlY0NoYWluID0gW107IC8vIGZvciB0aGUgdmlldy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQl2YXIgZGVmYXVsdHNDaGFpbiA9IFtdOyAvLyBmb3IgdGhlIHZpZXcuIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5CgkJdmFyIG92ZXJyaWRlc0NoYWluID0gW107IC8vIGZvciB0aGUgdmlldy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQl2YXIgdmlld1R5cGUgPSByZXF1ZXN0ZWRWaWV3VHlwZTsKCQl2YXIgc3BlYzsgLy8gZm9yIHRoZSB2aWV3CgkJdmFyIG92ZXJyaWRlczsgLy8gZm9yIHRoZSB2aWV3CgkJdmFyIGR1cmF0aW9uOwoJCXZhciB1bml0OwoKCQkvLyBpdGVyYXRlIGZyb20gdGhlIHNwZWNpZmljIHZpZXcgZGVmaW5pdGlvbiB0byBhIG1vcmUgZ2VuZXJhbCBvbmUgdW50aWwgd2UgaGl0IGFuIGFjdHVhbCBWaWV3IGNsYXNzCgkJd2hpbGUgKHZpZXdUeXBlKSB7CgkJCXNwZWMgPSBmY1ZpZXdzW3ZpZXdUeXBlXTsKCQkJb3ZlcnJpZGVzID0gdmlld092ZXJyaWRlc1t2aWV3VHlwZV07CgkJCXZpZXdUeXBlID0gbnVsbDsgLy8gY2xlYXIuIG1pZ2h0IHJlcG9wdWxhdGUgZm9yIGFub3RoZXIgaXRlcmF0aW9uCgoJCQlpZiAodHlwZW9mIHNwZWMgPT09ICdmdW5jdGlvbicpIHsgLy8gVE9ETzogZGVwcmVjYXRlCgkJCQlzcGVjID0geyAnY2xhc3MnOiBzcGVjIH07CgkJCX0KCgkJCWlmIChzcGVjKSB7CgkJCQlzcGVjQ2hhaW4udW5zaGlmdChzcGVjKTsKCQkJCWRlZmF1bHRzQ2hhaW4udW5zaGlmdChzcGVjLmRlZmF1bHRzIHx8IHt9KTsKCQkJCWR1cmF0aW9uID0gZHVyYXRpb24gfHwgc3BlYy5kdXJhdGlvbjsKCQkJCXZpZXdUeXBlID0gdmlld1R5cGUgfHwgc3BlYy50eXBlOwoJCQl9CgoJCQlpZiAob3ZlcnJpZGVzKSB7CgkJCQlvdmVycmlkZXNDaGFpbi51bnNoaWZ0KG92ZXJyaWRlcyk7IC8vIHZpZXctc3BlY2lmaWMgb3B0aW9uIGhhc2hlcyBoYXZlIG9wdGlvbnMgYXQgemVyby1sZXZlbAoJCQkJZHVyYXRpb24gPSBkdXJhdGlvbiB8fCBvdmVycmlkZXMuZHVyYXRpb247CgkJCQl2aWV3VHlwZSA9IHZpZXdUeXBlIHx8IG92ZXJyaWRlcy50eXBlOwoJCQl9CgkJfQoKCQlzcGVjID0gbWVyZ2VQcm9wcyhzcGVjQ2hhaW4pOwoJCXNwZWMudHlwZSA9IHJlcXVlc3RlZFZpZXdUeXBlOwoJCWlmICghc3BlY1snY2xhc3MnXSkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoZHVyYXRpb24pIHsKCQkJZHVyYXRpb24gPSBtb21lbnQuZHVyYXRpb24oZHVyYXRpb24pOwoJCQlpZiAoZHVyYXRpb24udmFsdWVPZigpKSB7IC8vIHZhbGlkPwoJCQkJc3BlYy5kdXJhdGlvbiA9IGR1cmF0aW9uOwoJCQkJdW5pdCA9IGNvbXB1dGVJbnRlcnZhbFVuaXQoZHVyYXRpb24pOwoKCQkJCS8vIHZpZXcgaXMgYSBzaW5nbGUtdW5pdCBkdXJhdGlvbiwgbGlrZSAid2VlayIgb3IgImRheSIKCQkJCS8vIGluY29ycG9yYXRlIG9wdGlvbnMgZm9yIHRoaXMuIGxvd2VzdCBwcmlvcml0eQoJCQkJaWYgKGR1cmF0aW9uLmFzKHVuaXQpID09PSAxKSB7CgkJCQkJc3BlYy5zaW5nbGVVbml0ID0gdW5pdDsKCQkJCQlvdmVycmlkZXNDaGFpbi51bnNoaWZ0KHZpZXdPdmVycmlkZXNbdW5pdF0gfHwge30pOwoJCQkJfQoJCQl9CgkJfQoKCQlzcGVjLmRlZmF1bHRzID0gbWVyZ2VPcHRpb25zKGRlZmF1bHRzQ2hhaW4pOwoJCXNwZWMub3ZlcnJpZGVzID0gbWVyZ2VPcHRpb25zKG92ZXJyaWRlc0NoYWluKTsKCgkJdGhpcy5idWlsZFZpZXdTcGVjT3B0aW9ucyhzcGVjKTsKCQl0aGlzLmJ1aWxkVmlld1NwZWNCdXR0b25UZXh0KHNwZWMsIHJlcXVlc3RlZFZpZXdUeXBlKTsKCgkJcmV0dXJuIHNwZWM7Cgl9LAoKCgkvLyBCdWlsZHMgYW5kIGFzc2lnbnMgYSB2aWV3IHNwZWMncyBvcHRpb25zIG9iamVjdCBmcm9tIGl0cyBhbHJlYWR5LWFzc2lnbmVkIGRlZmF1bHRzIGFuZCBvdmVycmlkZXMKCWJ1aWxkVmlld1NwZWNPcHRpb25zOiBmdW5jdGlvbihzcGVjKSB7CgkJc3BlYy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFsgLy8gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQkJQ2FsZW5kYXIuZGVmYXVsdHMsIC8vIGdsb2JhbCBkZWZhdWx0cwoJCQlzcGVjLmRlZmF1bHRzLCAvLyB2aWV3J3MgZGVmYXVsdHMgKGZyb20gVmlld1N1YmNsYXNzLmRlZmF1bHRzKQoJCQl0aGlzLmRpckRlZmF1bHRzLAoJCQl0aGlzLmxhbmdEZWZhdWx0cywgLy8gbG9jYWxlIGFuZCBkaXIgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdmlldydzIGRlZmF1bHRzIQoJCQl0aGlzLm92ZXJyaWRlcywgLy8gY2FsZW5kYXIncyBvdmVycmlkZXMgKG9wdGlvbnMgZ2l2ZW4gdG8gY29uc3RydWN0b3IpCgkJCXNwZWMub3ZlcnJpZGVzIC8vIHZpZXcncyBvdmVycmlkZXMgKHZpZXctc3BlY2lmaWMgb3B0aW9ucykKCQldKTsKCQlwb3B1bGF0ZUluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMoc3BlYy5vcHRpb25zKTsKCX0sCgoKCS8vIENvbXB1dGVzIGFuZCBhc3NpZ25zIGEgdmlldyBzcGVjJ3MgYnV0dG9uVGV4dC1yZWxhdGVkIG9wdGlvbnMKCWJ1aWxkVmlld1NwZWNCdXR0b25UZXh0OiBmdW5jdGlvbihzcGVjLCByZXF1ZXN0ZWRWaWV3VHlwZSkgewoKCQkvLyBnaXZlbiBhbiBvcHRpb25zIG9iamVjdCB3aXRoIGEgcG9zc2libGUgYGJ1dHRvblRleHRgIGhhc2gsIGxvb2t1cCB0aGUgYnV0dG9uVGV4dCBmb3IgdGhlCgkJLy8gcmVxdWVzdGVkIHZpZXcsIGZhbGxpbmcgYmFjayB0byBhIGdlbmVyaWMgdW5pdCBlbnRyeSBsaWtlICJ3ZWVrIiBvciAiZGF5IgoJCWZ1bmN0aW9uIHF1ZXJ5QnV0dG9uVGV4dChvcHRpb25zKSB7CgkJCXZhciBidXR0b25UZXh0ID0gb3B0aW9ucy5idXR0b25UZXh0IHx8IHt9OwoJCQlyZXR1cm4gYnV0dG9uVGV4dFtyZXF1ZXN0ZWRWaWV3VHlwZV0gfHwKCQkJCShzcGVjLnNpbmdsZVVuaXQgPyBidXR0b25UZXh0W3NwZWMuc2luZ2xlVW5pdF0gOiBudWxsKTsKCQl9CgoJCS8vIGhpZ2hlc3QgdG8gbG93ZXN0IHByaW9yaXR5CgkJc3BlYy5idXR0b25UZXh0T3ZlcnJpZGUgPQoJCQlxdWVyeUJ1dHRvblRleHQodGhpcy5vdmVycmlkZXMpIHx8IC8vIGNvbnN0cnVjdG9yLXNwZWNpZmllZCBidXR0b25UZXh0IGxvb2t1cCBoYXNoIHRha2VzIHByZWNlZGVuY2UKCQkJc3BlYy5vdmVycmlkZXMuYnV0dG9uVGV4dDsgLy8gYGJ1dHRvblRleHRgIGZvciB2aWV3LXNwZWNpZmljIG9wdGlvbnMgaXMgYSBzdHJpbmcKCgkJLy8gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkuIG1pcnJvcnMgYnVpbGRWaWV3U3BlY09wdGlvbnMKCQlzcGVjLmJ1dHRvblRleHREZWZhdWx0ID0KCQkJcXVlcnlCdXR0b25UZXh0KHRoaXMubGFuZ0RlZmF1bHRzKSB8fAoJCQlxdWVyeUJ1dHRvblRleHQodGhpcy5kaXJEZWZhdWx0cykgfHwKCQkJc3BlYy5kZWZhdWx0cy5idXR0b25UZXh0IHx8IC8vIGEgc2luZ2xlIHN0cmluZy4gZnJvbSBWaWV3U3ViY2xhc3MuZGVmYXVsdHMKCQkJcXVlcnlCdXR0b25UZXh0KENhbGVuZGFyLmRlZmF1bHRzKSB8fAoJCQkoc3BlYy5kdXJhdGlvbiA/IHRoaXMuaHVtYW5pemVEdXJhdGlvbihzcGVjLmR1cmF0aW9uKSA6IG51bGwpIHx8IC8vIGxpa2UgIjMgZGF5cyIKCQkJcmVxdWVzdGVkVmlld1R5cGU7IC8vIGZhbGwgYmFjayB0byBnaXZlbiB2aWV3IG5hbWUKCX0sCgoKCS8vIEdpdmVuIGEgdmlldyBuYW1lIGZvciBhIGN1c3RvbSB2aWV3IG9yIGEgc3RhbmRhcmQgdmlldywgY3JlYXRlcyBhIHJlYWR5LXRvLWdvIFZpZXcgb2JqZWN0CglpbnN0YW50aWF0ZVZpZXc6IGZ1bmN0aW9uKHZpZXdUeXBlKSB7CgkJdmFyIHNwZWMgPSB0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlKTsKCgkJcmV0dXJuIG5ldyBzcGVjWydjbGFzcyddKHRoaXMsIHZpZXdUeXBlLCBzcGVjLm9wdGlvbnMsIHNwZWMuZHVyYXRpb24pOwoJfSwKCgoJLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciB0aGUgdmlldyBpcyBva2F5IHRvIGluc3RhbnRpYXRlIGF0IHNvbWUgcG9pbnQKCWlzVmFsaWRWaWV3VHlwZTogZnVuY3Rpb24odmlld1R5cGUpIHsKCQlyZXR1cm4gQm9vbGVhbih0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlKSk7Cgl9LAoKCgkvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYW55IHR5cGUgb2YgYXN5bmMgZGF0YSBmZXRjaGluZyBiZWdpbnMKCXB1c2hMb2FkaW5nOiBmdW5jdGlvbigpIHsKCQlpZiAoISh0aGlzLmxvYWRpbmdMZXZlbCsrKSkgewoJCQl0aGlzLnRyaWdnZXIoJ2xvYWRpbmcnLCBudWxsLCB0cnVlLCB0aGlzLnZpZXcpOwoJCX0KCX0sCgoKCS8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhbnkgdHlwZSBvZiBhc3luYyBkYXRhIGZldGNoaW5nIGNvbXBsZXRlcwoJcG9wTG9hZGluZzogZnVuY3Rpb24oKSB7CgkJaWYgKCEoLS10aGlzLmxvYWRpbmdMZXZlbCkpIHsKCQkJdGhpcy50cmlnZ2VyKCdsb2FkaW5nJywgbnVsbCwgZmFsc2UsIHRoaXMudmlldyk7CgkJfQoJfSwKCgoJLy8gR2l2ZW4gYXJndW1lbnRzIHRvIHRoZSBzZWxlY3QgbWV0aG9kIGluIHRoZSBBUEksIHJldHVybnMgYSByYW5nZQoJYnVpbGRTZWxlY3RSYW5nZTogZnVuY3Rpb24oc3RhcnQsIGVuZCkgewoKCQlzdGFydCA9IHRoaXMubW9tZW50KHN0YXJ0KTsKCQlpZiAoZW5kKSB7CgkJCWVuZCA9IHRoaXMubW9tZW50KGVuZCk7CgkJfQoJCWVsc2UgaWYgKHN0YXJ0Lmhhc1RpbWUoKSkgewoJCQllbmQgPSBzdGFydC5jbG9uZSgpLmFkZCh0aGlzLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOwoJCX0KCQllbHNlIHsKCQkJZW5kID0gc3RhcnQuY2xvbmUoKS5hZGQodGhpcy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbik7CgkJfQoKCQlyZXR1cm4geyBzdGFydDogc3RhcnQsIGVuZDogZW5kIH07Cgl9Cgp9KTsKCgpmdW5jdGlvbiBDYWxlbmRhcl9jb25zdHJ1Y3RvcihlbGVtZW50LCBvdmVycmlkZXMpIHsKCXZhciB0ID0gdGhpczsKCgoJdC5pbml0T3B0aW9ucyhvdmVycmlkZXMgfHwge30pOwoJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgoJCgkvLyBFeHBvcnRzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXQucmVuZGVyID0gcmVuZGVyOwoJdC5kZXN0cm95ID0gZGVzdHJveTsKCXQucmVmZXRjaEV2ZW50cyA9IHJlZmV0Y2hFdmVudHM7Cgl0LnJlcG9ydEV2ZW50cyA9IHJlcG9ydEV2ZW50czsKCXQucmVwb3J0RXZlbnRDaGFuZ2UgPSByZXBvcnRFdmVudENoYW5nZTsKCXQucmVyZW5kZXJFdmVudHMgPSByZW5kZXJFdmVudHM7IC8vIGByZW5kZXJFdmVudHNgIHNlcnZlcyBhcyBhIHJlcmVuZGVyLiBhbiBBUEkgbWV0aG9kCgl0LmNoYW5nZVZpZXcgPSByZW5kZXJWaWV3OyAvLyBgcmVuZGVyVmlld2Agd2lsbCBzd2l0Y2ggdG8gYW5vdGhlciB2aWV3Cgl0LnNlbGVjdCA9IHNlbGVjdDsKCXQudW5zZWxlY3QgPSB1bnNlbGVjdDsKCXQucHJldiA9IHByZXY7Cgl0Lm5leHQgPSBuZXh0OwoJdC5wcmV2WWVhciA9IHByZXZZZWFyOwoJdC5uZXh0WWVhciA9IG5leHRZZWFyOwoJdC50b2RheSA9IHRvZGF5OwoJdC5nb3RvRGF0ZSA9IGdvdG9EYXRlOwoJdC5pbmNyZW1lbnREYXRlID0gaW5jcmVtZW50RGF0ZTsKCXQuem9vbVRvID0gem9vbVRvOwoJdC5nZXREYXRlID0gZ2V0RGF0ZTsKCXQuZ2V0Q2FsZW5kYXIgPSBnZXRDYWxlbmRhcjsKCXQuZ2V0VmlldyA9IGdldFZpZXc7Cgl0Lm9wdGlvbiA9IG9wdGlvbjsKCXQudHJpZ2dlciA9IHRyaWdnZXI7CgoKCgkvLyBMYW5ndWFnZS1kYXRhIEludGVybmFscwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIEFwcGx5IG92ZXJyaWRlcyB0byB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGRhdGEKCgoJdmFyIGxvY2FsZURhdGEgPSBjcmVhdGVPYmplY3QoIC8vIG1ha2UgYSBjaGVhcCBjb3B5CgkJZ2V0TW9tZW50TG9jYWxlRGF0YShvcHRpb25zLmxhbmcpIC8vIHdpbGwgZmFsbCBiYWNrIHRvIGVuCgkpOwoKCWlmIChvcHRpb25zLm1vbnRoTmFtZXMpIHsKCQlsb2NhbGVEYXRhLl9tb250aHMgPSBvcHRpb25zLm1vbnRoTmFtZXM7Cgl9CglpZiAob3B0aW9ucy5tb250aE5hbWVzU2hvcnQpIHsKCQlsb2NhbGVEYXRhLl9tb250aHNTaG9ydCA9IG9wdGlvbnMubW9udGhOYW1lc1Nob3J0OwoJfQoJaWYgKG9wdGlvbnMuZGF5TmFtZXMpIHsKCQlsb2NhbGVEYXRhLl93ZWVrZGF5cyA9IG9wdGlvbnMuZGF5TmFtZXM7Cgl9CglpZiAob3B0aW9ucy5kYXlOYW1lc1Nob3J0KSB7CgkJbG9jYWxlRGF0YS5fd2Vla2RheXNTaG9ydCA9IG9wdGlvbnMuZGF5TmFtZXNTaG9ydDsKCX0KCWlmIChvcHRpb25zLmZpcnN0RGF5ICE9IG51bGwpIHsKCQl2YXIgX3dlZWsgPSBjcmVhdGVPYmplY3QobG9jYWxlRGF0YS5fd2Vlayk7IC8vIF93ZWVrOiB7IGRvdzogIyB9CgkJX3dlZWsuZG93ID0gb3B0aW9ucy5maXJzdERheTsKCQlsb2NhbGVEYXRhLl93ZWVrID0gX3dlZWs7Cgl9CgoJLy8gYXNzaWduIGEgbm9ybWFsaXplZCB2YWx1ZSwgdG8gYmUgdXNlZCBieSBvdXIgLndlZWsoKSBtb21lbnQgZXh0ZW5zaW9uCglsb2NhbGVEYXRhLl9mdWxsQ2FsZW5kYXJfd2Vla0NhbGMgPSAoZnVuY3Rpb24od2Vla0NhbGMpIHsKCQlpZiAodHlwZW9mIHdlZWtDYWxjID09PSAnZnVuY3Rpb24nKSB7CgkJCXJldHVybiB3ZWVrQ2FsYzsKCQl9CgkJZWxzZSBpZiAod2Vla0NhbGMgPT09ICdsb2NhbCcpIHsKCQkJcmV0dXJuIHdlZWtDYWxjOwoJCX0KCQllbHNlIGlmICh3ZWVrQ2FsYyA9PT0gJ2lzbycgfHwgd2Vla0NhbGMgPT09ICdJU08nKSB7CgkJCXJldHVybiAnSVNPJzsKCQl9Cgl9KShvcHRpb25zLndlZWtOdW1iZXJDYWxjdWxhdGlvbik7CgoKCgkvLyBDYWxlbmRhci1zcGVjaWZpYyBEYXRlIFV0aWxpdGllcwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdC5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihvcHRpb25zLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uKTsKCXQuZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihvcHRpb25zLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOwoKCgkvLyBCdWlsZHMgYSBtb21lbnQgdXNpbmcgdGhlIHNldHRpbmdzIG9mIHRoZSBjdXJyZW50IGNhbGVuZGFyOiB0aW1lem9uZSBhbmQgbGFuZ3VhZ2UuCgkvLyBBY2NlcHRzIGFueXRoaW5nIHRoZSB2YW5pbGxhIG1vbWVudCgpIGNvbnN0cnVjdG9yIGFjY2VwdHMuCgl0Lm1vbWVudCA9IGZ1bmN0aW9uKCkgewoJCXZhciBtb207CgoJCWlmIChvcHRpb25zLnRpbWV6b25lID09PSAnbG9jYWwnKSB7CgkJCW1vbSA9IGZjLm1vbWVudC5hcHBseShudWxsLCBhcmd1bWVudHMpOwoKCQkJLy8gRm9yY2UgdGhlIG1vbWVudCB0byBiZSBsb2NhbCwgYmVjYXVzZSBmYy5tb21lbnQgZG9lc24ndCBndWFyYW50ZWUgaXQuCgkJCWlmIChtb20uaGFzVGltZSgpKSB7IC8vIGRvbid0IGdpdmUgYW1iaWd1b3VzbHktdGltZWQgbW9tZW50cyBhIGxvY2FsIHpvbmUKCQkJCW1vbS5sb2NhbCgpOwoJCQl9CgkJfQoJCWVsc2UgaWYgKG9wdGlvbnMudGltZXpvbmUgPT09ICdVVEMnKSB7CgkJCW1vbSA9IGZjLm1vbWVudC51dGMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgLy8gcHJvY2VzcyBhcyBVVEMKCQl9CgkJZWxzZSB7CgkJCW1vbSA9IGZjLm1vbWVudC5wYXJzZVpvbmUuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgLy8gbGV0IHRoZSBpbnB1dCBkZWNpZGUgdGhlIHpvbmUKCQl9CgoJCWlmICgnX2xvY2FsZScgaW4gbW9tKSB7IC8vIG1vbWVudCAyLjggYW5kIGFib3ZlCgkJCW1vbS5fbG9jYWxlID0gbG9jYWxlRGF0YTsKCQl9CgkJZWxzZSB7IC8vIHByZS1tb21lbnQtMi44CgkJCW1vbS5fbGFuZyA9IGxvY2FsZURhdGE7CgkJfQoKCQlyZXR1cm4gbW9tOwoJfTsKCgoJLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciBvciBub3QgdGhlIGNhbGVuZGFyIGtub3dzIGhvdyB0byBjYWxjdWxhdGUKCS8vIHRoZSB0aW1lem9uZSBvZmZzZXQgb2YgYXJiaXRyYXJ5IGRhdGVzIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLgoJdC5nZXRJc0FtYmlnVGltZXpvbmUgPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gb3B0aW9ucy50aW1lem9uZSAhPT0gJ2xvY2FsJyAmJiBvcHRpb25zLnRpbWV6b25lICE9PSAnVVRDJzsKCX07CgoKCS8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lIG9mIGl0IGlzIGFtYmlndW91c2x5IHpvbmVkLgoJLy8gVGhpcyB3aWxsIGFsc28gZ2l2ZSB0aGUgZGF0ZSBhbiB1bmFtYmlndW91cyB0aW1lLgoJdC5yZXpvbmVEYXRlID0gZnVuY3Rpb24oZGF0ZSkgewoJCXJldHVybiB0Lm1vbWVudChkYXRlLnRvQXJyYXkoKSk7Cgl9OwoKCgkvLyBSZXR1cm5zIGEgbW9tZW50IGZvciB0aGUgY3VycmVudCBkYXRlLCBhcyBkZWZpbmVkIGJ5IHRoZSBjbGllbnQncyBjb21wdXRlciwKCS8vIG9yIG92ZXJyaWRkZW4gYnkgdGhlIGBub3dgIG9wdGlvbi4KCXQuZ2V0Tm93ID0gZnVuY3Rpb24oKSB7CgkJdmFyIG5vdyA9IG9wdGlvbnMubm93OwoJCWlmICh0eXBlb2Ygbm93ID09PSAnZnVuY3Rpb24nKSB7CgkJCW5vdyA9IG5vdygpOwoJCX0KCQlyZXR1cm4gdC5tb21lbnQobm93KTsKCX07CgoKCS8vIEdldCBhbiBldmVudCdzIG5vcm1hbGl6ZWQgZW5kIGRhdGUuIElmIG5vdCBwcmVzZW50LCBjYWxjdWxhdGUgaXQgZnJvbSB0aGUgZGVmYXVsdHMuCgl0LmdldEV2ZW50RW5kID0gZnVuY3Rpb24oZXZlbnQpIHsKCQlpZiAoZXZlbnQuZW5kKSB7CgkJCXJldHVybiBldmVudC5lbmQuY2xvbmUoKTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiB0LmdldERlZmF1bHRFdmVudEVuZChldmVudC5hbGxEYXksIGV2ZW50LnN0YXJ0KTsKCQl9Cgl9OwoKCgkvLyBHaXZlbiBhbiBldmVudCdzIGFsbERheSBzdGF0dXMgYW5kIHN0YXJ0IGRhdGUsIHJldHVybiBzd2hhdCBpdHMgZmFsbGJhY2sgZW5kIGRhdGUgc2hvdWxkIGJlLgoJdC5nZXREZWZhdWx0RXZlbnRFbmQgPSBmdW5jdGlvbihhbGxEYXksIHN0YXJ0KSB7IC8vIFRPRE86IHJlbmFtZSB0byBjb21wdXRlRGVmYXVsdEV2ZW50RW5kCgkJdmFyIGVuZCA9IHN0YXJ0LmNsb25lKCk7CgoJCWlmIChhbGxEYXkpIHsKCQkJZW5kLnN0cmlwVGltZSgpLmFkZCh0LmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uKTsKCQl9CgkJZWxzZSB7CgkJCWVuZC5hZGQodC5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKTsKCQl9CgoJCWlmICh0LmdldElzQW1iaWdUaW1lem9uZSgpKSB7CgkJCWVuZC5zdHJpcFpvbmUoKTsgLy8gd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSB0em8gc2hvdWxkIGJlCgkJfQoKCQlyZXR1cm4gZW5kOwoJfTsKCgoJLy8gUHJvZHVjZXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbi4KCS8vIFNpZGUtZWZmZWN0OiBjaGFuZ2VzIHRoZSBsb2NhbGUgb2YgdGhlIGdpdmVuIGR1cmF0aW9uLgoJdC5odW1hbml6ZUR1cmF0aW9uID0gZnVuY3Rpb24oZHVyYXRpb24pIHsKCQlyZXR1cm4gKGR1cmF0aW9uLmxvY2FsZSB8fCBkdXJhdGlvbi5sYW5nKS5jYWxsKGR1cmF0aW9uLCBvcHRpb25zLmxhbmcpIC8vIHdvcmtzIG1vbWVudC1wcmUtMi44CgkJCS5odW1hbml6ZSgpOwoJfTsKCgoJCgkvLyBJbXBvcnRzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglFdmVudE1hbmFnZXIuY2FsbCh0LCBvcHRpb25zKTsKCXZhciBpc0ZldGNoTmVlZGVkID0gdC5pc0ZldGNoTmVlZGVkOwoJdmFyIGZldGNoRXZlbnRzID0gdC5mZXRjaEV2ZW50czsKCgoKCS8vIExvY2FscwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdmFyIF9lbGVtZW50ID0gZWxlbWVudFswXTsKCXZhciBoZWFkZXI7Cgl2YXIgaGVhZGVyRWxlbWVudDsKCXZhciBjb250ZW50OwoJdmFyIHRtOyAvLyBmb3IgbWFraW5nIHRoZW1lIGNsYXNzZXMKCXZhciBjdXJyZW50VmlldzsgLy8gTk9URToga2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGlzLnZpZXcKCXZhciB2aWV3c0J5VHlwZSA9IHt9OyAvLyBob2xkcyBhbGwgaW5zdGFudGlhdGVkIHZpZXcgaW5zdGFuY2VzLCBjdXJyZW50IG9yIG5vdAoJdmFyIHN1Z2dlc3RlZFZpZXdIZWlnaHQ7Cgl2YXIgd2luZG93UmVzaXplUHJveHk7IC8vIHdyYXBzIHRoZSB3aW5kb3dSZXNpemUgZnVuY3Rpb24KCXZhciBpZ25vcmVXaW5kb3dSZXNpemUgPSAwOwoJdmFyIGRhdGU7Cgl2YXIgZXZlbnRzID0gW107CgkKCQoJCgkvLyBNYWluIFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJaWYgKG9wdGlvbnMuZGVmYXVsdERhdGUgIT0gbnVsbCkgewoJCWRhdGUgPSB0Lm1vbWVudChvcHRpb25zLmRlZmF1bHREYXRlKTsKCX0KCWVsc2UgewoJCWRhdGUgPSB0LmdldE5vdygpOwoJfQoJCgkKCWZ1bmN0aW9uIHJlbmRlcigpIHsKCQlpZiAoIWNvbnRlbnQpIHsKCQkJaW5pdGlhbFJlbmRlcigpOwoJCX0KCQllbHNlIGlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgkJCS8vIG1haW5seSBmb3IgdGhlIHB1YmxpYyBBUEkKCQkJY2FsY1NpemUoKTsKCQkJcmVuZGVyVmlldygpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBpbml0aWFsUmVuZGVyKCkgewoJCXRtID0gb3B0aW9ucy50aGVtZSA/ICd1aScgOiAnZmMnOwoJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjJyk7CgoJCWlmIChvcHRpb25zLmlzUlRMKSB7CgkJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjLXJ0bCcpOwoJCX0KCQllbHNlIHsKCQkJZWxlbWVudC5hZGRDbGFzcygnZmMtbHRyJyk7CgkJfQoKCQlpZiAob3B0aW9ucy50aGVtZSkgewoJCQllbGVtZW50LmFkZENsYXNzKCd1aS13aWRnZXQnKTsKCQl9CgkJZWxzZSB7CgkJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjLXVudGhlbWVkJyk7CgkJfQoKCQljb250ZW50ID0gJCgiPGRpdiBjbGFzcz0nZmMtdmlldy1jb250YWluZXInLz4iKS5wcmVwZW5kVG8oZWxlbWVudCk7CgoJCWhlYWRlciA9IHQuaGVhZGVyID0gbmV3IEhlYWRlcih0LCBvcHRpb25zKTsKCQloZWFkZXJFbGVtZW50ID0gaGVhZGVyLnJlbmRlcigpOwoJCWlmIChoZWFkZXJFbGVtZW50KSB7CgkJCWVsZW1lbnQucHJlcGVuZChoZWFkZXJFbGVtZW50KTsKCQl9CgoJCXJlbmRlclZpZXcob3B0aW9ucy5kZWZhdWx0Vmlldyk7CgoJCWlmIChvcHRpb25zLmhhbmRsZVdpbmRvd1Jlc2l6ZSkgewoJCQl3aW5kb3dSZXNpemVQcm94eSA9IGRlYm91bmNlKHdpbmRvd1Jlc2l6ZSwgb3B0aW9ucy53aW5kb3dSZXNpemVEZWxheSk7IC8vIHByZXZlbnRzIHJhcGlkIGNhbGxzCgkJCSQod2luZG93KS5yZXNpemUod2luZG93UmVzaXplUHJveHkpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBkZXN0cm95KCkgewoKCQlpZiAoY3VycmVudFZpZXcpIHsKCQkJY3VycmVudFZpZXcucmVtb3ZlRWxlbWVudCgpOwoKCQkJLy8gTk9URTogZG9uJ3QgbnVsbC1vdXQgY3VycmVudFZpZXcvdC52aWV3IGluIGNhc2UgQVBJIG1ldGhvZHMgYXJlIGNhbGxlZCBhZnRlciBkZXN0cm95LgoJCQkvLyBJdCBpcyBzdGlsbCB0aGUgImN1cnJlbnQiIHZpZXcsIGp1c3Qgbm90IHJlbmRlcmVkLgoJCX0KCgkJaGVhZGVyLnJlbW92ZUVsZW1lbnQoKTsKCQljb250ZW50LnJlbW92ZSgpOwoJCWVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2ZjIGZjLWx0ciBmYy1ydGwgZmMtdW50aGVtZWQgdWktd2lkZ2V0Jyk7CgoJCWlmICh3aW5kb3dSZXNpemVQcm94eSkgewoJCQkkKHdpbmRvdykudW5iaW5kKCdyZXNpemUnLCB3aW5kb3dSZXNpemVQcm94eSk7CgkJfQoJfQoJCgkKCWZ1bmN0aW9uIGVsZW1lbnRWaXNpYmxlKCkgewoJCXJldHVybiBlbGVtZW50LmlzKCc6dmlzaWJsZScpOwoJfQoJCgkKCgkvLyBWaWV3IFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gUmVuZGVycyBhIHZpZXcgYmVjYXVzZSBvZiBhIGRhdGUgY2hhbmdlLCB2aWV3LXR5cGUgY2hhbmdlLCBvciBmb3IgdGhlIGZpcnN0IHRpbWUuCgkvLyBJZiBub3QgZ2l2ZW4gYSB2aWV3VHlwZSwga2VlcCB0aGUgY3VycmVudCB2aWV3IGJ1dCByZW5kZXIgZGlmZmVyZW50IGRhdGVzLgoJZnVuY3Rpb24gcmVuZGVyVmlldyh2aWV3VHlwZSkgewoJCWlnbm9yZVdpbmRvd1Jlc2l6ZSsrOwoKCQkvLyBpZiB2aWV3VHlwZSBpcyBjaGFuZ2luZywgcmVtb3ZlIHRoZSBvbGQgdmlldydzIHJlbmRlcmluZwoJCWlmIChjdXJyZW50VmlldyAmJiB2aWV3VHlwZSAmJiBjdXJyZW50Vmlldy50eXBlICE9PSB2aWV3VHlwZSkgewoJCQloZWFkZXIuZGVhY3RpdmF0ZUJ1dHRvbihjdXJyZW50Vmlldy50eXBlKTsKCQkJZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyBwcmV2ZW50IGEgc2Nyb2xsIGp1bXAgd2hlbiB2aWV3IGVsZW1lbnQgaXMgcmVtb3ZlZAoJCQljdXJyZW50Vmlldy5yZW1vdmVFbGVtZW50KCk7CgkJCWN1cnJlbnRWaWV3ID0gdC52aWV3ID0gbnVsbDsKCQl9CgoJCS8vIGlmIHZpZXdUeXBlIGNoYW5nZWQsIG9yIHRoZSB2aWV3IHdhcyBuZXZlciBjcmVhdGVkLCBjcmVhdGUgYSBmcmVzaCB2aWV3CgkJaWYgKCFjdXJyZW50VmlldyAmJiB2aWV3VHlwZSkgewoJCQljdXJyZW50VmlldyA9IHQudmlldyA9CgkJCQl2aWV3c0J5VHlwZVt2aWV3VHlwZV0gfHwKCQkJCSh2aWV3c0J5VHlwZVt2aWV3VHlwZV0gPSB0Lmluc3RhbnRpYXRlVmlldyh2aWV3VHlwZSkpOwoKCQkJY3VycmVudFZpZXcuc2V0RWxlbWVudCgKCQkJCSQoIjxkaXYgY2xhc3M9J2ZjLXZpZXcgZmMtIiArIHZpZXdUeXBlICsgIi12aWV3JyAvPiIpLmFwcGVuZFRvKGNvbnRlbnQpCgkJCSk7CgkJCWhlYWRlci5hY3RpdmF0ZUJ1dHRvbih2aWV3VHlwZSk7CgkJfQoKCQlpZiAoY3VycmVudFZpZXcpIHsKCgkJCS8vIGluIGNhc2UgdGhlIHZpZXcgc2hvdWxkIHJlbmRlciBhIHBlcmlvZCBvZiB0aW1lIHRoYXQgaXMgY29tcGxldGVseSBoaWRkZW4KCQkJZGF0ZSA9IGN1cnJlbnRWaWV3Lm1hc3NhZ2VDdXJyZW50RGF0ZShkYXRlKTsKCgkJCS8vIHJlbmRlciBvciByZXJlbmRlciB0aGUgdmlldwoJCQlpZiAoCgkJCQkhY3VycmVudFZpZXcuZGlzcGxheWluZyB8fAoJCQkJIWRhdGUuaXNXaXRoaW4oY3VycmVudFZpZXcuaW50ZXJ2YWxTdGFydCwgY3VycmVudFZpZXcuaW50ZXJ2YWxFbmQpIC8vIGltcGxpY2l0IGRhdGUgd2luZG93IGNoYW5nZQoJCQkpIHsKCQkJCWlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgoJCQkJCWZyZWV6ZUNvbnRlbnRIZWlnaHQoKTsKCQkJCQljdXJyZW50Vmlldy5kaXNwbGF5KGRhdGUpOwoJCQkJCXVuZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyBpbW1lZGlhdGVseSB1bmZyZWV6ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZGlzcGxheSBpcyBhc3luYwoKCQkJCQkvLyBuZWVkIHRvIGRvIHRoaXMgYWZ0ZXIgVmlldzo6cmVuZGVyLCBzbyBkYXRlcyBhcmUgY2FsY3VsYXRlZAoJCQkJCXVwZGF0ZUhlYWRlclRpdGxlKCk7CgkJCQkJdXBkYXRlVG9kYXlCdXR0b24oKTsKCgkJCQkJZ2V0QW5kUmVuZGVyRXZlbnRzKCk7CgkJCQl9CgkJCX0KCQl9CgoJCXVuZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyB1bmRvIGFueSBsb25lIGZyZWV6ZUNvbnRlbnRIZWlnaHQgY2FsbHMKCQlpZ25vcmVXaW5kb3dSZXNpemUtLTsKCX0KCgkKCgkvLyBSZXNpemluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdC5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0ID0gZnVuY3Rpb24oKSB7CgkJaWYgKHN1Z2dlc3RlZFZpZXdIZWlnaHQgPT09IHVuZGVmaW5lZCkgewoJCQljYWxjU2l6ZSgpOwoJCX0KCQlyZXR1cm4gc3VnZ2VzdGVkVmlld0hlaWdodDsKCX07CgoKCXQuaXNIZWlnaHRBdXRvID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIG9wdGlvbnMuY29udGVudEhlaWdodCA9PT0gJ2F1dG8nIHx8IG9wdGlvbnMuaGVpZ2h0ID09PSAnYXV0byc7Cgl9OwoJCgkKCWZ1bmN0aW9uIHVwZGF0ZVNpemUoc2hvdWxkUmVjYWxjKSB7CgkJaWYgKGVsZW1lbnRWaXNpYmxlKCkpIHsKCgkJCWlmIChzaG91bGRSZWNhbGMpIHsKCQkJCV9jYWxjU2l6ZSgpOwoJCQl9CgoJCQlpZ25vcmVXaW5kb3dSZXNpemUrKzsKCQkJY3VycmVudFZpZXcudXBkYXRlU2l6ZSh0cnVlKTsgLy8gaXNSZXNpemU9dHJ1ZS4gd2lsbCBwb2xsIGdldFN1Z2dlc3RlZFZpZXdIZWlnaHQoKSBhbmQgaXNIZWlnaHRBdXRvKCkKCQkJaWdub3JlV2luZG93UmVzaXplLS07CgoJCQlyZXR1cm4gdHJ1ZTsgLy8gc2lnbmFsIHN1Y2Nlc3MKCQl9Cgl9CgoKCWZ1bmN0aW9uIGNhbGNTaXplKCkgewoJCWlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgkJCV9jYWxjU2l6ZSgpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBfY2FsY1NpemUoKSB7IC8vIGFzc3VtZXMgZWxlbWVudFZpc2libGUKCQlpZiAodHlwZW9mIG9wdGlvbnMuY29udGVudEhlaWdodCA9PT0gJ251bWJlcicpIHsgLy8gZXhpc3RzIGFuZCBub3QgJ2F1dG8nCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBvcHRpb25zLmNvbnRlbnRIZWlnaHQ7CgkJfQoJCWVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmhlaWdodCA9PT0gJ251bWJlcicpIHsgLy8gZXhpc3RzIGFuZCBub3QgJ2F1dG8nCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBvcHRpb25zLmhlaWdodCAtIChoZWFkZXJFbGVtZW50ID8gaGVhZGVyRWxlbWVudC5vdXRlckhlaWdodCh0cnVlKSA6IDApOwoJCX0KCQllbHNlIHsKCQkJc3VnZ2VzdGVkVmlld0hlaWdodCA9IE1hdGgucm91bmQoY29udGVudC53aWR0aCgpIC8gTWF0aC5tYXgob3B0aW9ucy5hc3BlY3RSYXRpbywgLjUpKTsKCQl9Cgl9CgkKCQoJZnVuY3Rpb24gd2luZG93UmVzaXplKGV2KSB7CgkJaWYgKAoJCQkhaWdub3JlV2luZG93UmVzaXplICYmCgkJCWV2LnRhcmdldCA9PT0gd2luZG93ICYmIC8vIHNvIHdlIGRvbid0IHByb2Nlc3MganF1aSAicmVzaXplIiBldmVudHMgdGhhdCBoYXZlIGJ1YmJsZWQgdXAKCQkJY3VycmVudFZpZXcuc3RhcnQgLy8gdmlldyBoYXMgYWxyZWFkeSBiZWVuIHJlbmRlcmVkCgkJKSB7CgkJCWlmICh1cGRhdGVTaXplKHRydWUpKSB7CgkJCQljdXJyZW50Vmlldy50cmlnZ2VyKCd3aW5kb3dSZXNpemUnLCBfZWxlbWVudCk7CgkJCX0KCQl9Cgl9CgkKCQoJCgkvKiBFdmVudCBGZXRjaGluZy9SZW5kZXJpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCS8vIFRPRE86IGdvaW5nIGZvcndhcmQsIG1vc3Qgb2YgdGhpcyBzdHVmZiBzaG91bGQgYmUgZGlyZWN0bHkgaGFuZGxlZCBieSB0aGUgdmlldwoKCglmdW5jdGlvbiByZWZldGNoRXZlbnRzKCkgeyAvLyBjYW4gYmUgY2FsbGVkIGFzIGFuIEFQSSBtZXRob2QKCQlkZXN0cm95RXZlbnRzKCk7IC8vIHNvIHRoYXQgZXZlbnRzIGFyZSBjbGVhcmVkIGJlZm9yZSB1c2VyIHN0YXJ0cyB3YWl0aW5nIGZvciBBSkFYCgkJZmV0Y2hBbmRSZW5kZXJFdmVudHMoKTsKCX0KCgoJZnVuY3Rpb24gcmVuZGVyRXZlbnRzKCkgeyAvLyBkZXN0cm95cyBvbGQgZXZlbnRzIGlmIHByZXZpb3VzbHkgcmVuZGVyZWQKCQlpZiAoZWxlbWVudFZpc2libGUoKSkgewoJCQlmcmVlemVDb250ZW50SGVpZ2h0KCk7CgkJCWN1cnJlbnRWaWV3LmRpc3BsYXlFdmVudHMoZXZlbnRzKTsKCQkJdW5mcmVlemVDb250ZW50SGVpZ2h0KCk7CgkJfQoJfQoKCglmdW5jdGlvbiBkZXN0cm95RXZlbnRzKCkgewoJCWZyZWV6ZUNvbnRlbnRIZWlnaHQoKTsKCQljdXJyZW50Vmlldy5jbGVhckV2ZW50cygpOwoJCXVuZnJlZXplQ29udGVudEhlaWdodCgpOwoJfQoJCgoJZnVuY3Rpb24gZ2V0QW5kUmVuZGVyRXZlbnRzKCkgewoJCWlmICghb3B0aW9ucy5sYXp5RmV0Y2hpbmcgfHwgaXNGZXRjaE5lZWRlZChjdXJyZW50Vmlldy5zdGFydCwgY3VycmVudFZpZXcuZW5kKSkgewoJCQlmZXRjaEFuZFJlbmRlckV2ZW50cygpOwoJCX0KCQllbHNlIHsKCQkJcmVuZGVyRXZlbnRzKCk7CgkJfQoJfQoKCglmdW5jdGlvbiBmZXRjaEFuZFJlbmRlckV2ZW50cygpIHsKCQlmZXRjaEV2ZW50cyhjdXJyZW50Vmlldy5zdGFydCwgY3VycmVudFZpZXcuZW5kKTsKCQkJLy8gLi4uIHdpbGwgY2FsbCByZXBvcnRFdmVudHMKCQkJLy8gLi4uIHdoaWNoIHdpbGwgY2FsbCByZW5kZXJFdmVudHMKCX0KCgkKCS8vIGNhbGxlZCB3aGVuIGV2ZW50IGRhdGEgYXJyaXZlcwoJZnVuY3Rpb24gcmVwb3J0RXZlbnRzKF9ldmVudHMpIHsKCQlldmVudHMgPSBfZXZlbnRzOwoJCXJlbmRlckV2ZW50cygpOwoJfQoKCgkvLyBjYWxsZWQgd2hlbiBhIHNpbmdsZSBldmVudCdzIGRhdGEgaGFzIGJlZW4gY2hhbmdlZAoJZnVuY3Rpb24gcmVwb3J0RXZlbnRDaGFuZ2UoKSB7CgkJcmVuZGVyRXZlbnRzKCk7Cgl9CgoKCgkvKiBIZWFkZXIgVXBkYXRpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJZnVuY3Rpb24gdXBkYXRlSGVhZGVyVGl0bGUoKSB7CgkJaGVhZGVyLnVwZGF0ZVRpdGxlKGN1cnJlbnRWaWV3LnRpdGxlKTsKCX0KCgoJZnVuY3Rpb24gdXBkYXRlVG9kYXlCdXR0b24oKSB7CgkJdmFyIG5vdyA9IHQuZ2V0Tm93KCk7CgkJaWYgKG5vdy5pc1dpdGhpbihjdXJyZW50Vmlldy5pbnRlcnZhbFN0YXJ0LCBjdXJyZW50Vmlldy5pbnRlcnZhbEVuZCkpIHsKCQkJaGVhZGVyLmRpc2FibGVCdXR0b24oJ3RvZGF5Jyk7CgkJfQoJCWVsc2UgewoJCQloZWFkZXIuZW5hYmxlQnV0dG9uKCd0b2RheScpOwoJCX0KCX0KCQoKCgkvKiBTZWxlY3Rpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCQoKCWZ1bmN0aW9uIHNlbGVjdChzdGFydCwgZW5kKSB7CgkJY3VycmVudFZpZXcuc2VsZWN0KAoJCQl0LmJ1aWxkU2VsZWN0UmFuZ2UuYXBwbHkodCwgYXJndW1lbnRzKQoJCSk7Cgl9CgkKCglmdW5jdGlvbiB1bnNlbGVjdCgpIHsgLy8gc2FmZSB0byBiZSBjYWxsZWQgYmVmb3JlIHJlbmRlclZpZXcKCQlpZiAoY3VycmVudFZpZXcpIHsKCQkJY3VycmVudFZpZXcudW5zZWxlY3QoKTsKCQl9Cgl9CgkKCQoJCgkvKiBEYXRlCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkKCQoJZnVuY3Rpb24gcHJldigpIHsKCQlkYXRlID0gY3VycmVudFZpZXcuY29tcHV0ZVByZXZEYXRlKGRhdGUpOwoJCXJlbmRlclZpZXcoKTsKCX0KCQoJCglmdW5jdGlvbiBuZXh0KCkgewoJCWRhdGUgPSBjdXJyZW50Vmlldy5jb21wdXRlTmV4dERhdGUoZGF0ZSk7CgkJcmVuZGVyVmlldygpOwoJfQoJCgkKCWZ1bmN0aW9uIHByZXZZZWFyKCkgewoJCWRhdGUuYWRkKC0xLCAneWVhcnMnKTsKCQlyZW5kZXJWaWV3KCk7Cgl9CgkKCQoJZnVuY3Rpb24gbmV4dFllYXIoKSB7CgkJZGF0ZS5hZGQoMSwgJ3llYXJzJyk7CgkJcmVuZGVyVmlldygpOwoJfQoJCgkKCWZ1bmN0aW9uIHRvZGF5KCkgewoJCWRhdGUgPSB0LmdldE5vdygpOwoJCXJlbmRlclZpZXcoKTsKCX0KCQoJCglmdW5jdGlvbiBnb3RvRGF0ZShkYXRlSW5wdXQpIHsKCQlkYXRlID0gdC5tb21lbnQoZGF0ZUlucHV0KTsKCQlyZW5kZXJWaWV3KCk7Cgl9CgkKCQoJZnVuY3Rpb24gaW5jcmVtZW50RGF0ZShkZWx0YSkgewoJCWRhdGUuYWRkKG1vbWVudC5kdXJhdGlvbihkZWx0YSkpOwoJCXJlbmRlclZpZXcoKTsKCX0KCgoJLy8gRm9yY2VzIG5hdmlnYXRpb24gdG8gYSB2aWV3IGZvciB0aGUgZ2l2ZW4gZGF0ZS4KCS8vIGB2aWV3VHlwZWAgY2FuIGJlIGEgc3BlY2lmaWMgdmlldyBuYW1lIG9yIGEgZ2VuZXJpYyBvbmUgbGlrZSAid2VlayIgb3IgImRheSIuCglmdW5jdGlvbiB6b29tVG8obmV3RGF0ZSwgdmlld1R5cGUpIHsKCQl2YXIgc3BlYzsKCgkJdmlld1R5cGUgPSB2aWV3VHlwZSB8fCAnZGF5JzsgLy8gZGF5IGlzIGRlZmF1bHQgem9vbQoJCXNwZWMgPSB0LmdldFZpZXdTcGVjKHZpZXdUeXBlKSB8fCB0LmdldFVuaXRWaWV3U3BlYyh2aWV3VHlwZSk7CgoJCWRhdGUgPSBuZXdEYXRlOwoJCXJlbmRlclZpZXcoc3BlYyA/IHNwZWMudHlwZSA6IG51bGwpOwoJfQoJCgkKCWZ1bmN0aW9uIGdldERhdGUoKSB7CgkJcmV0dXJuIGRhdGUuY2xvbmUoKTsKCX0KCgoKCS8qIEhlaWdodCAiRnJlZXppbmciCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBtb3ZlIHRoaXMgaW50byB0aGUgdmlldwoKCglmdW5jdGlvbiBmcmVlemVDb250ZW50SGVpZ2h0KCkgewoJCWNvbnRlbnQuY3NzKHsKCQkJd2lkdGg6ICcxMDAlJywKCQkJaGVpZ2h0OiBjb250ZW50LmhlaWdodCgpLAoJCQlvdmVyZmxvdzogJ2hpZGRlbicKCQl9KTsKCX0KCgoJZnVuY3Rpb24gdW5mcmVlemVDb250ZW50SGVpZ2h0KCkgewoJCWNvbnRlbnQuY3NzKHsKCQkJd2lkdGg6ICcnLAoJCQloZWlnaHQ6ICcnLAoJCQlvdmVyZmxvdzogJycKCQl9KTsKCX0KCQoJCgkKCS8qIE1pc2MKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCQoKCWZ1bmN0aW9uIGdldENhbGVuZGFyKCkgewoJCXJldHVybiB0OwoJfQoKCQoJZnVuY3Rpb24gZ2V0VmlldygpIHsKCQlyZXR1cm4gY3VycmVudFZpZXc7Cgl9CgkKCQoJZnVuY3Rpb24gb3B0aW9uKG5hbWUsIHZhbHVlKSB7CgkJaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIG9wdGlvbnNbbmFtZV07CgkJfQoJCWlmIChuYW1lID09ICdoZWlnaHQnIHx8IG5hbWUgPT0gJ2NvbnRlbnRIZWlnaHQnIHx8IG5hbWUgPT0gJ2FzcGVjdFJhdGlvJykgewoJCQlvcHRpb25zW25hbWVdID0gdmFsdWU7CgkJCXVwZGF0ZVNpemUodHJ1ZSk7IC8vIHRydWUgPSBhbGxvdyByZWNhbGN1bGF0aW9uIG9mIGhlaWdodAoJCX0KCX0KCQoJCglmdW5jdGlvbiB0cmlnZ2VyKG5hbWUsIHRoaXNPYmopIHsKCQlpZiAob3B0aW9uc1tuYW1lXSkgewoJCQlyZXR1cm4gb3B0aW9uc1tuYW1lXS5hcHBseSgKCQkJCXRoaXNPYmogfHwgX2VsZW1lbnQsCgkJCQlBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpCgkJCSk7CgkJfQoJfQoKCXQuaW5pdGlhbGl6ZSgpOwp9Cgo7OwoKQ2FsZW5kYXIuZGVmYXVsdHMgPSB7CgoJdGl0bGVSYW5nZVNlcGFyYXRvcjogJyBcdTIwMTQgJywgLy8gZW1waGFzaXplZCBkYXNoCgltb250aFllYXJGb3JtYXQ6ICdNTU1NIFlZWVknLCAvLyByZXF1aXJlZCBmb3IgZW4uIG90aGVyIGxhbmd1YWdlcyByZWx5IG9uIGRhdGVwaWNrZXIgY29tcHV0YWJsZSBvcHRpb24KCglkZWZhdWx0VGltZWRFdmVudER1cmF0aW9uOiAnMDI6MDA6MDAnLAoJZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb246IHsgZGF5czogMSB9LAoJZm9yY2VFdmVudER1cmF0aW9uOiBmYWxzZSwKCW5leHREYXlUaHJlc2hvbGQ6ICcwOTowMDowMCcsIC8vIDlhbQoKCS8vIGRpc3BsYXkKCWRlZmF1bHRWaWV3OiAnbW9udGgnLAoJYXNwZWN0UmF0aW86IDEuMzUsCgloZWFkZXI6IHsKCQlsZWZ0OiAndGl0bGUnLAoJCWNlbnRlcjogJycsCgkJcmlnaHQ6ICd0b2RheSBwcmV2LG5leHQnCgl9LAoJd2Vla2VuZHM6IHRydWUsCgl3ZWVrTnVtYmVyczogZmFsc2UsCgoJd2Vla051bWJlclRpdGxlOiAnVycsCgl3ZWVrTnVtYmVyQ2FsY3VsYXRpb246ICdsb2NhbCcsCgkKCS8vZWRpdGFibGU6IGZhbHNlLAoKCXNjcm9sbFRpbWU6ICcwNjowMDowMCcsCgkKCS8vIGV2ZW50IGFqYXgKCWxhenlGZXRjaGluZzogdHJ1ZSwKCXN0YXJ0UGFyYW06ICdzdGFydCcsCgllbmRQYXJhbTogJ2VuZCcsCgl0aW1lem9uZVBhcmFtOiAndGltZXpvbmUnLAoKCXRpbWV6b25lOiBmYWxzZSwKCgkvL2FsbERheURlZmF1bHQ6IHVuZGVmaW5lZCwKCgkvLyBsb2NhbGUKCWlzUlRMOiBmYWxzZSwKCWJ1dHRvblRleHQ6IHsKCQlwcmV2OiAicHJldiIsCgkJbmV4dDogIm5leHQiLAoJCXByZXZZZWFyOiAicHJldiB5ZWFyIiwKCQluZXh0WWVhcjogIm5leHQgeWVhciIsCgkJeWVhcjogJ3llYXInLCAvLyBUT0RPOiBsb2NhbGUgZmlsZXMgbmVlZCB0byBzcGVjaWZ5IHRoaXMKCQl0b2RheTogJ3RvZGF5JywKCQltb250aDogJ21vbnRoJywKCQl3ZWVrOiAnd2VlaycsCgkJZGF5OiAnZGF5JwoJfSwKCglidXR0b25JY29uczogewoJCXByZXY6ICdsZWZ0LXNpbmdsZS1hcnJvdycsCgkJbmV4dDogJ3JpZ2h0LXNpbmdsZS1hcnJvdycsCgkJcHJldlllYXI6ICdsZWZ0LWRvdWJsZS1hcnJvdycsCgkJbmV4dFllYXI6ICdyaWdodC1kb3VibGUtYXJyb3cnCgl9LAoJCgkvLyBqcXVlcnktdWkgdGhlbWluZwoJdGhlbWU6IGZhbHNlLAoJdGhlbWVCdXR0b25JY29uczogewoJCXByZXY6ICdjaXJjbGUtdHJpYW5nbGUtdycsCgkJbmV4dDogJ2NpcmNsZS10cmlhbmdsZS1lJywKCQlwcmV2WWVhcjogJ3NlZWstcHJldicsCgkJbmV4dFllYXI6ICdzZWVrLW5leHQnCgl9LAoKCS8vZXZlbnRSZXNpemFibGVGcm9tU3RhcnQ6IGZhbHNlLAoJZHJhZ09wYWNpdHk6IC43NSwKCWRyYWdSZXZlcnREdXJhdGlvbjogNTAwLAoJZHJhZ1Njcm9sbDogdHJ1ZSwKCQoJLy9zZWxlY3RhYmxlOiBmYWxzZSwKCXVuc2VsZWN0QXV0bzogdHJ1ZSwKCQoJZHJvcEFjY2VwdDogJyonLAoKCWV2ZW50TGltaXQ6IGZhbHNlLAoJZXZlbnRMaW1pdFRleHQ6ICdtb3JlJywKCWV2ZW50TGltaXRDbGljazogJ3BvcG92ZXInLAoJZGF5UG9wb3ZlckZvcm1hdDogJ0xMJywKCQoJaGFuZGxlV2luZG93UmVzaXplOiB0cnVlLAoJd2luZG93UmVzaXplRGVsYXk6IDIwMCAvLyBtaWxsaXNlY29uZHMgYmVmb3JlIGFuIHVwZGF0ZVNpemUgaGFwcGVucwoJCn07CgoKQ2FsZW5kYXIuZW5nbGlzaERlZmF1bHRzID0geyAvLyB1c2VkIGJ5IGxhbmcuanMKCWRheVBvcG92ZXJGb3JtYXQ6ICdkZGRkLCBNTU1NIEQnCn07CgoKQ2FsZW5kYXIucnRsRGVmYXVsdHMgPSB7IC8vIHJpZ2h0LXRvLWxlZnQgZGVmYXVsdHMKCWhlYWRlcjogeyAvLyBUT0RPOiBzbWFydGVyIHNvbHV0aW9uIChmaXJzdC9jZW50ZXIvbGFzdCA/KQoJCWxlZnQ6ICduZXh0LHByZXYgdG9kYXknLAoJCWNlbnRlcjogJycsCgkJcmlnaHQ6ICd0aXRsZScKCX0sCglidXR0b25JY29uczogewoJCXByZXY6ICdyaWdodC1zaW5nbGUtYXJyb3cnLAoJCW5leHQ6ICdsZWZ0LXNpbmdsZS1hcnJvdycsCgkJcHJldlllYXI6ICdyaWdodC1kb3VibGUtYXJyb3cnLAoJCW5leHRZZWFyOiAnbGVmdC1kb3VibGUtYXJyb3cnCgl9LAoJdGhlbWVCdXR0b25JY29uczogewoJCXByZXY6ICdjaXJjbGUtdHJpYW5nbGUtZScsCgkJbmV4dDogJ2NpcmNsZS10cmlhbmdsZS13JywKCQluZXh0WWVhcjogJ3NlZWstcHJldicsCgkJcHJldlllYXI6ICdzZWVrLW5leHQnCgl9Cn07Cgo7OwoKdmFyIGxhbmdPcHRpb25IYXNoID0gZmMubGFuZ3MgPSB7fTsgLy8gaW5pdGlhbGl6ZSBhbmQgZXhwb3NlCgoKLy8gVE9ETzogZG9jdW1lbnQgdGhlIHN0cnVjdHVyZSBhbmQgb3JkZXJpbmcgb2YgYSBGdWxsQ2FsZW5kYXIgbGFuZyBmaWxlCi8vIFRPRE86IHJlbmFtZSBldmVyeXRoaW5nICJsYW5nIiB0byAibG9jYWxlIiwgbGlrZSB3aGF0IHRoZSBtb21lbnQgcHJvamVjdCBkaWQKCgovLyBJbml0aWFsaXplIGpRdWVyeSBVSSBkYXRlcGlja2VyIHRyYW5zbGF0aW9ucyB3aGlsZSB1c2luZyBzb21lIG9mIHRoZSB0cmFuc2xhdGlvbnMKLy8gV2lsbCBzZXQgdGhpcyBhcyB0aGUgZGVmYXVsdCBsYW5ndWFnZSBmb3IgZGF0ZXBpY2tlci4KZmMuZGF0ZXBpY2tlckxhbmcgPSBmdW5jdGlvbihsYW5nQ29kZSwgZHBMYW5nQ29kZSwgZHBPcHRpb25zKSB7CgoJLy8gZ2V0IHRoZSBGdWxsQ2FsZW5kYXIgaW50ZXJuYWwgb3B0aW9uIGhhc2ggZm9yIHRoaXMgbGFuZ3VhZ2UuIGNyZWF0ZSBpZiBuZWNlc3NhcnkKCXZhciBmY09wdGlvbnMgPSBsYW5nT3B0aW9uSGFzaFtsYW5nQ29kZV0gfHwgKGxhbmdPcHRpb25IYXNoW2xhbmdDb2RlXSA9IHt9KTsKCgkvLyB0cmFuc2ZlciBzb21lIHNpbXBsZSBvcHRpb25zIGZyb20gZGF0ZXBpY2tlciB0byBmYwoJZmNPcHRpb25zLmlzUlRMID0gZHBPcHRpb25zLmlzUlRMOwoJZmNPcHRpb25zLndlZWtOdW1iZXJUaXRsZSA9IGRwT3B0aW9ucy53ZWVrSGVhZGVyOwoKCS8vIGNvbXB1dGUgc29tZSBtb3JlIGNvbXBsZXggb3B0aW9ucyBmcm9tIGRhdGVwaWNrZXIKCSQuZWFjaChkcENvbXB1dGFibGVPcHRpb25zLCBmdW5jdGlvbihuYW1lLCBmdW5jKSB7CgkJZmNPcHRpb25zW25hbWVdID0gZnVuYyhkcE9wdGlvbnMpOwoJfSk7CgoJLy8gaXMgalF1ZXJ5IFVJIERhdGVwaWNrZXIgaXMgb24gdGhlIHBhZ2U/CglpZiAoJC5kYXRlcGlja2VyKSB7CgoJCS8vIFJlZ2lzdGVyIHRoZSBsYW5ndWFnZSBkYXRhLgoJCS8vIEZ1bGxDYWxlbmRhciBhbmQgTW9tZW50SlMgdXNlIGxhbmd1YWdlIGNvZGVzIGxpa2UgInB0LWJyIiBidXQgRGF0ZXBpY2tlcgoJCS8vIGRvZXMgaXQgbGlrZSAicHQtQlIiIG9yIGlmIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgbGFuZ3VhZ2UsIG1heWJlIGp1c3QgInB0Ii4KCQkvLyBNYWtlIGFuIGFsaWFzIHNvIHRoZSBsYW5ndWFnZSBjYW4gYmUgcmVmZXJlbmNlZCBlaXRoZXIgd2F5LgoJCSQuZGF0ZXBpY2tlci5yZWdpb25hbFtkcExhbmdDb2RlXSA9CgkJCSQuZGF0ZXBpY2tlci5yZWdpb25hbFtsYW5nQ29kZV0gPSAvLyBhbGlhcwoJCQkJZHBPcHRpb25zOwoKCQkvLyBBbGlhcyAnZW4nIHRvIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGRhdGEuIERvIHRoaXMgZXZlcnkgdGltZS4KCQkkLmRhdGVwaWNrZXIucmVnaW9uYWwuZW4gPSAkLmRhdGVwaWNrZXIucmVnaW9uYWxbJyddOwoKCQkvLyBTZXQgYXMgRGF0ZXBpY2tlcidzIGdsb2JhbCBkZWZhdWx0cy4KCQkkLmRhdGVwaWNrZXIuc2V0RGVmYXVsdHMoZHBPcHRpb25zKTsKCX0KfTsKCgovLyBTZXRzIEZ1bGxDYWxlbmRhci1zcGVjaWZpYyB0cmFuc2xhdGlvbnMuIFdpbGwgc2V0IHRoZSBsYW5ndWFnZSBhcyB0aGUgZ2xvYmFsIGRlZmF1bHQuCmZjLmxhbmcgPSBmdW5jdGlvbihsYW5nQ29kZSwgbmV3RmNPcHRpb25zKSB7Cgl2YXIgZmNPcHRpb25zOwoJdmFyIG1vbU9wdGlvbnM7CgoJLy8gZ2V0IHRoZSBGdWxsQ2FsZW5kYXIgaW50ZXJuYWwgb3B0aW9uIGhhc2ggZm9yIHRoaXMgbGFuZ3VhZ2UuIGNyZWF0ZSBpZiBuZWNlc3NhcnkKCWZjT3B0aW9ucyA9IGxhbmdPcHRpb25IYXNoW2xhbmdDb2RlXSB8fCAobGFuZ09wdGlvbkhhc2hbbGFuZ0NvZGVdID0ge30pOwoKCS8vIHByb3ZpZGVkIG5ldyBvcHRpb25zIGZvciB0aGlzIGxhbmd1YWdlPyBtZXJnZSB0aGVtIGluCglpZiAobmV3RmNPcHRpb25zKSB7CgkJZmNPcHRpb25zID0gbGFuZ09wdGlvbkhhc2hbbGFuZ0NvZGVdID0gbWVyZ2VPcHRpb25zKFsgZmNPcHRpb25zLCBuZXdGY09wdGlvbnMgXSk7Cgl9CgoJLy8gY29tcHV0ZSBsYW5ndWFnZSBvcHRpb25zIHRoYXQgd2VyZW4ndCBkZWZpbmVkLgoJLy8gYWx3YXlzIGRvIHRoaXMuIG5ld0ZjT3B0aW9ucyBjYW4gYmUgdW5kZWZpbmVkIHdoZW4gaW5pdGlhbGl6aW5nIGZyb20gaTE4biBmaWxlLAoJLy8gc28gbm8gd2F5IHRvIHRlbGwgaWYgdGhpcyBpcyBhbiBpbml0aWFsaXphdGlvbiBvciBhIGRlZmF1bHQtc2V0dGluZy4KCW1vbU9wdGlvbnMgPSBnZXRNb21lbnRMb2NhbGVEYXRhKGxhbmdDb2RlKTsgLy8gd2lsbCBmYWxsIGJhY2sgdG8gZW4KCSQuZWFjaChtb21Db21wdXRhYmxlT3B0aW9ucywgZnVuY3Rpb24obmFtZSwgZnVuYykgewoJCWlmIChmY09wdGlvbnNbbmFtZV0gPT0gbnVsbCkgewoJCQlmY09wdGlvbnNbbmFtZV0gPSBmdW5jKG1vbU9wdGlvbnMsIGZjT3B0aW9ucyk7CgkJfQoJfSk7CgoJLy8gc2V0IGl0IGFzIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGZvciBGdWxsQ2FsZW5kYXIKCUNhbGVuZGFyLmRlZmF1bHRzLmxhbmcgPSBsYW5nQ29kZTsKfTsKCgovLyBOT1RFOiBjYW4ndCBndWFyYW50ZWUgYW55IG9mIHRoZXNlIGNvbXB1dGF0aW9ucyB3aWxsIHJ1biBiZWNhdXNlIG5vdCBldmVyeSBsYW5ndWFnZSBoYXMgZGF0ZXBpY2tlcgovLyBjb25maWdzLCBzbyBtYWtlIHN1cmUgdGhlcmUgYXJlIEVuZ2xpc2ggZmFsbGJhY2tzIGZvciB0aGVzZSBpbiB0aGUgZGVmYXVsdHMgZmlsZS4KdmFyIGRwQ29tcHV0YWJsZU9wdGlvbnMgPSB7CgoJYnV0dG9uVGV4dDogZnVuY3Rpb24oZHBPcHRpb25zKSB7CgkJcmV0dXJuIHsKCQkJLy8gdGhlIHRyYW5zbGF0aW9ucyBzb21ldGltZXMgd3JvbmdseSBjb250YWluIEhUTUwgZW50aXRpZXMKCQkJcHJldjogc3RyaXBIdG1sRW50aXRpZXMoZHBPcHRpb25zLnByZXZUZXh0KSwKCQkJbmV4dDogc3RyaXBIdG1sRW50aXRpZXMoZHBPcHRpb25zLm5leHRUZXh0KSwKCQkJdG9kYXk6IHN0cmlwSHRtbEVudGl0aWVzKGRwT3B0aW9ucy5jdXJyZW50VGV4dCkKCQl9OwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJNTU1NIFlZWVkiIC0+ICJTZXB0ZW1iZXIgMjAxNCIKCW1vbnRoWWVhckZvcm1hdDogZnVuY3Rpb24oZHBPcHRpb25zKSB7CgkJcmV0dXJuIGRwT3B0aW9ucy5zaG93TW9udGhBZnRlclllYXIgPwoJCQknWVlZWVsnICsgZHBPcHRpb25zLnllYXJTdWZmaXggKyAnXSBNTU1NJyA6CgkJCSdNTU1NIFlZWVlbJyArIGRwT3B0aW9ucy55ZWFyU3VmZml4ICsgJ10nOwoJfQoKfTsKCnZhciBtb21Db21wdXRhYmxlT3B0aW9ucyA9IHsKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJkZGQgTS9EIiAtPiAiRnJpIDkvMTUiCglkYXlPZk1vbnRoRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zLCBmY09wdGlvbnMpIHsKCQl2YXIgZm9ybWF0ID0gbW9tT3B0aW9ucy5sb25nRGF0ZUZvcm1hdCgnbCcpOyAvLyBmb3IgdGhlIGZvcm1hdCBsaWtlICJNL0QvWVlZWSIKCgkJLy8gc3RyaXAgdGhlIHllYXIgb2ZmIHRoZSBlZGdlLCBhcyB3ZWxsIGFzIG90aGVyIG1pc2Mgbm9uLXdoaXRlc3BhY2UgY2hhcnMKCQlmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvXlkrW15cd1xzXSp8W15cd1xzXSpZKyQvZywgJycpOwoKCQlpZiAoZmNPcHRpb25zLmlzUlRMKSB7CgkJCWZvcm1hdCArPSAnIGRkZCc7IC8vIGZvciBSVEwsIGFkZCBkYXktb2Ytd2VlayB0byBlbmQKCQl9CgkJZWxzZSB7CgkJCWZvcm1hdCA9ICdkZGQgJyArIGZvcm1hdDsgLy8gZm9yIExUUiwgYWRkIGRheS1vZi13ZWVrIHRvIGJlZ2lubmluZwoJCX0KCQlyZXR1cm4gZm9ybWF0OwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoOm1tYSIgLT4gIjY6MDBwbSIKCW1lZGl1bVRpbWVGb3JtYXQ6IGZ1bmN0aW9uKG1vbU9wdGlvbnMpIHsgLy8gY2FuJ3QgYmUgY2FsbGVkIGB0aW1lRm9ybWF0YCBiZWNhdXNlIGNvbGxpZGVzIHdpdGggb3B0aW9uCgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoL1xzKmEkL2ksICdhJyk7IC8vIGNvbnZlcnQgQU0vUE0vYW0vcG0gdG8gbG93ZXJjYXNlLiByZW1vdmUgYW55IHNwYWNlcyBiZWZvcmVoYW5kCgl9LAoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgImgoOm1tKWEiIC0+ICI2cG0iIC8gIjY6MzBwbSIKCXNtYWxsVGltZUZvcm1hdDogZnVuY3Rpb24obW9tT3B0aW9ucykgewoJCXJldHVybiBtb21PcHRpb25zLmxvbmdEYXRlRm9ybWF0KCdMVCcpCgkJCS5yZXBsYWNlKCc6bW0nLCAnKDptbSknKQoJCQkucmVwbGFjZSgvKFxXbW0pJC8sICcoJDEpJykgLy8gbGlrZSBhYm92ZSwgYnV0IGZvciBmb3JlaWduIGxhbmdzCgkJCS5yZXBsYWNlKC9ccyphJC9pLCAnYScpOyAvLyBjb252ZXJ0IEFNL1BNL2FtL3BtIHRvIGxvd2VyY2FzZS4gcmVtb3ZlIGFueSBzcGFjZXMgYmVmb3JlaGFuZAoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoKDptbSl0IiAtPiAiNnAiIC8gIjY6MzBwIgoJZXh0cmFTbWFsbFRpbWVGb3JtYXQ6IGZ1bmN0aW9uKG1vbU9wdGlvbnMpIHsKCQlyZXR1cm4gbW9tT3B0aW9ucy5sb25nRGF0ZUZvcm1hdCgnTFQnKQoJCQkucmVwbGFjZSgnOm1tJywgJyg6bW0pJykKCQkJLnJlcGxhY2UoLyhcV21tKSQvLCAnKCQxKScpIC8vIGxpa2UgYWJvdmUsIGJ1dCBmb3IgZm9yZWlnbiBsYW5ncwoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJ3QnKTsgLy8gY29udmVydCB0byBBTS9QTS9hbS9wbSB0byBsb3dlcmNhc2Ugb25lLWxldHRlci4gcmVtb3ZlIGFueSBzcGFjZXMgYmVmb3JlaGFuZAoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoYSIgLyAiSCIgLT4gIjZwbSIgLyAiMTgiCglob3VyRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoJzptbScsICcnKQoJCQkucmVwbGFjZSgvKFxXbW0pJC8sICcnKSAvLyBsaWtlIGFib3ZlLCBidXQgZm9yIGZvcmVpZ24gbGFuZ3MKCQkJLnJlcGxhY2UoL1xzKmEkL2ksICdhJyk7IC8vIGNvbnZlcnQgQU0vUE0vYW0vcG0gdG8gbG93ZXJjYXNlLiByZW1vdmUgYW55IHNwYWNlcyBiZWZvcmVoYW5kCgl9LAoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgImg6bW0iIC0+ICI2OjMwIiAod2l0aCBubyBBTS9QTSkKCW5vTWVyaWRpZW1UaW1lRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoL1xzKmEkL2ksICcnKTsgLy8gcmVtb3ZlIHRyYWlsaW5nIEFNL1BNCgl9Cgp9OwoKCi8vIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgY29tcHV0ZWQgb2ZmIGxpdmUgY2FsZW5kYXIgb3B0aW9ucyAoY29uc2lkZXJzIG92ZXJyaWRlIG9wdGlvbnMpCnZhciBpbnN0YW5jZUNvbXB1dGFibGVPcHRpb25zID0geyAvLyBUT0RPOiBiZXN0IHBsYWNlIGZvciB0aGlzPyByZWxhdGVkIHRvIGxhbmc/CgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgZm9yIHJlc3VsdHMgbGlrZSAiTW8gMTYiCglzbWFsbERheURhdGVGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSdEIGRkJyA6CgkJCSdkZCBEJzsKCX0sCgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgZm9yIHJlc3VsdHMgbGlrZSAiV2sgNSIKCXdlZWtGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSd3WyAnICsgb3B0aW9ucy53ZWVrTnVtYmVyVGl0bGUgKyAnXScgOgoJCQknWycgKyBvcHRpb25zLndlZWtOdW1iZXJUaXRsZSArICcgXXcnOwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBmb3IgcmVzdWx0cyBsaWtlICJXazUiCglzbWFsbFdlZWtGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSd3WycgKyBvcHRpb25zLndlZWtOdW1iZXJUaXRsZSArICddJyA6CgkJCSdbJyArIG9wdGlvbnMud2Vla051bWJlclRpdGxlICsgJ113JzsKCX0KCn07CgpmdW5jdGlvbiBwb3B1bGF0ZUluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMob3B0aW9ucykgewoJJC5lYWNoKGluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMsIGZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKCQlpZiAob3B0aW9uc1tuYW1lXSA9PSBudWxsKSB7CgkJCW9wdGlvbnNbbmFtZV0gPSBmdW5jKG9wdGlvbnMpOwoJCX0KCX0pOwp9CgoKLy8gUmV0dXJucyBtb21lbnQncyBpbnRlcm5hbCBsb2NhbGUgZGF0YS4gSWYgZG9lc24ndCBleGlzdCwgcmV0dXJucyBFbmdsaXNoLgovLyBXb3JrcyB3aXRoIG1vbWVudC1wcmUtMi44CmZ1bmN0aW9uIGdldE1vbWVudExvY2FsZURhdGEobGFuZ0NvZGUpIHsKCXZhciBmdW5jID0gbW9tZW50LmxvY2FsZURhdGEgfHwgbW9tZW50LmxhbmdEYXRhOwoJcmV0dXJuIGZ1bmMuY2FsbChtb21lbnQsIGxhbmdDb2RlKSB8fAoJCWZ1bmMuY2FsbChtb21lbnQsICdlbicpOyAvLyB0aGUgbmV3ZXIgbG9jYWxEYXRhIGNvdWxkIHJldHVybiBudWxsLCBzbyBmYWxsIGJhY2sgdG8gZW4KfQoKCi8vIEluaXRpYWxpemUgRW5nbGlzaCBieSBmb3JjaW5nIGNvbXB1dGF0aW9uIG9mIG1vbWVudC1kZXJpdmVkIG9wdGlvbnMuCi8vIEFsc28sIHNldHMgaXQgYXMgdGhlIGRlZmF1bHQuCmZjLmxhbmcoJ2VuJywgQ2FsZW5kYXIuZW5nbGlzaERlZmF1bHRzKTsKCjs7CgovKiBUb3AgdG9vbGJhciBhcmVhIHdpdGggYnV0dG9ucyBhbmQgdGl0bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIFRPRE86IHJlbmFtZSBhbGwgaGVhZGVyLXJlbGF0ZWQgdGhpbmdzIHRvICJ0b29sYmFyIgoKZnVuY3Rpb24gSGVhZGVyKGNhbGVuZGFyLCBvcHRpb25zKSB7Cgl2YXIgdCA9IHRoaXM7CgkKCS8vIGV4cG9ydHMKCXQucmVuZGVyID0gcmVuZGVyOwoJdC5yZW1vdmVFbGVtZW50ID0gcmVtb3ZlRWxlbWVudDsKCXQudXBkYXRlVGl0bGUgPSB1cGRhdGVUaXRsZTsKCXQuYWN0aXZhdGVCdXR0b24gPSBhY3RpdmF0ZUJ1dHRvbjsKCXQuZGVhY3RpdmF0ZUJ1dHRvbiA9IGRlYWN0aXZhdGVCdXR0b247Cgl0LmRpc2FibGVCdXR0b24gPSBkaXNhYmxlQnV0dG9uOwoJdC5lbmFibGVCdXR0b24gPSBlbmFibGVCdXR0b247Cgl0LmdldFZpZXdzV2l0aEJ1dHRvbnMgPSBnZXRWaWV3c1dpdGhCdXR0b25zOwoJCgkvLyBsb2NhbHMKCXZhciBlbCA9ICQoKTsKCXZhciB2aWV3c1dpdGhCdXR0b25zID0gW107Cgl2YXIgdG07CgoKCWZ1bmN0aW9uIHJlbmRlcigpIHsKCQl2YXIgc2VjdGlvbnMgPSBvcHRpb25zLmhlYWRlcjsKCgkJdG0gPSBvcHRpb25zLnRoZW1lID8gJ3VpJyA6ICdmYyc7CgoJCWlmIChzZWN0aW9ucykgewoJCQllbCA9ICQoIjxkaXYgY2xhc3M9J2ZjLXRvb2xiYXInLz4iKQoJCQkJLmFwcGVuZChyZW5kZXJTZWN0aW9uKCdsZWZ0JykpCgkJCQkuYXBwZW5kKHJlbmRlclNlY3Rpb24oJ3JpZ2h0JykpCgkJCQkuYXBwZW5kKHJlbmRlclNlY3Rpb24oJ2NlbnRlcicpKQoJCQkJLmFwcGVuZCgnPGRpdiBjbGFzcz0iZmMtY2xlYXIiLz4nKTsKCgkJCXJldHVybiBlbDsKCQl9Cgl9CgkKCQoJZnVuY3Rpb24gcmVtb3ZlRWxlbWVudCgpIHsKCQllbC5yZW1vdmUoKTsKCQllbCA9ICQoKTsKCX0KCQoJCglmdW5jdGlvbiByZW5kZXJTZWN0aW9uKHBvc2l0aW9uKSB7CgkJdmFyIHNlY3Rpb25FbCA9ICQoJzxkaXYgY2xhc3M9ImZjLScgKyBwb3NpdGlvbiArICciLz4nKTsKCQl2YXIgYnV0dG9uU3RyID0gb3B0aW9ucy5oZWFkZXJbcG9zaXRpb25dOwoKCQlpZiAoYnV0dG9uU3RyKSB7CgkJCSQuZWFjaChidXR0b25TdHIuc3BsaXQoJyAnKSwgZnVuY3Rpb24oaSkgewoJCQkJdmFyIGdyb3VwQ2hpbGRyZW4gPSAkKCk7CgkJCQl2YXIgaXNPbmx5QnV0dG9ucyA9IHRydWU7CgkJCQl2YXIgZ3JvdXBFbDsKCgkJCQkkLmVhY2godGhpcy5zcGxpdCgnLCcpLCBmdW5jdGlvbihqLCBidXR0b25OYW1lKSB7CgkJCQkJdmFyIHZpZXdTcGVjOwoJCQkJCXZhciBidXR0b25DbGljazsKCQkJCQl2YXIgb3ZlcnJpZGVUZXh0OyAvLyB0ZXh0IGV4cGxpY2l0bHkgc2V0IGJ5IGNhbGVuZGFyJ3MgY29uc3RydWN0b3Igb3B0aW9ucy4gb3ZlcmNvbWVzIGljb25zCgkJCQkJdmFyIGRlZmF1bHRUZXh0OwoJCQkJCXZhciB0aGVtZUljb247CgkJCQkJdmFyIG5vcm1hbEljb247CgkJCQkJdmFyIGlubmVySHRtbDsKCQkJCQl2YXIgY2xhc3NlczsKCQkJCQl2YXIgYnV0dG9uOwoKCQkJCQlpZiAoYnV0dG9uTmFtZSA9PSAndGl0bGUnKSB7CgkJCQkJCWdyb3VwQ2hpbGRyZW4gPSBncm91cENoaWxkcmVuLmFkZCgkKCc8aDI+Jm5ic3A7PC9oMj4nKSk7IC8vIHdlIGFsd2F5cyB3YW50IGl0IHRvIHRha2UgdXAgaGVpZ2h0CgkJCQkJCWlzT25seUJ1dHRvbnMgPSBmYWxzZTsKCQkJCQl9CgkJCQkJZWxzZSB7CgkJCQkJCXZpZXdTcGVjID0gY2FsZW5kYXIuZ2V0Vmlld1NwZWMoYnV0dG9uTmFtZSk7CgoJCQkJCQlpZiAodmlld1NwZWMpIHsKCQkJCQkJCWJ1dHRvbkNsaWNrID0gZnVuY3Rpb24oKSB7CgkJCQkJCQkJY2FsZW5kYXIuY2hhbmdlVmlldyhidXR0b25OYW1lKTsKCQkJCQkJCX07CgkJCQkJCQl2aWV3c1dpdGhCdXR0b25zLnB1c2goYnV0dG9uTmFtZSk7CgkJCQkJCQlvdmVycmlkZVRleHQgPSB2aWV3U3BlYy5idXR0b25UZXh0T3ZlcnJpZGU7CgkJCQkJCQlkZWZhdWx0VGV4dCA9IHZpZXdTcGVjLmJ1dHRvblRleHREZWZhdWx0OwoJCQkJCQl9CgkJCQkJCWVsc2UgaWYgKGNhbGVuZGFyW2J1dHRvbk5hbWVdKSB7IC8vIGEgY2FsZW5kYXIgbWV0aG9kCgkJCQkJCQlidXR0b25DbGljayA9IGZ1bmN0aW9uKCkgewoJCQkJCQkJCWNhbGVuZGFyW2J1dHRvbk5hbWVdKCk7CgkJCQkJCQl9OwoJCQkJCQkJb3ZlcnJpZGVUZXh0ID0gKGNhbGVuZGFyLm92ZXJyaWRlcy5idXR0b25UZXh0IHx8IHt9KVtidXR0b25OYW1lXTsKCQkJCQkJCWRlZmF1bHRUZXh0ID0gb3B0aW9ucy5idXR0b25UZXh0W2J1dHRvbk5hbWVdOyAvLyBldmVyeXRoaW5nIGVsc2UgaXMgY29uc2lkZXJlZCBkZWZhdWx0CgkJCQkJCX0KCgkJCQkJCWlmIChidXR0b25DbGljaykgewoKCQkJCQkJCXRoZW1lSWNvbiA9IG9wdGlvbnMudGhlbWVCdXR0b25JY29uc1tidXR0b25OYW1lXTsKCQkJCQkJCW5vcm1hbEljb24gPSBvcHRpb25zLmJ1dHRvbkljb25zW2J1dHRvbk5hbWVdOwoKCQkJCQkJCWlmIChvdmVycmlkZVRleHQpIHsKCQkJCQkJCQlpbm5lckh0bWwgPSBodG1sRXNjYXBlKG92ZXJyaWRlVGV4dCk7CgkJCQkJCQl9CgkJCQkJCQllbHNlIGlmICh0aGVtZUljb24gJiYgb3B0aW9ucy50aGVtZSkgewoJCQkJCQkJCWlubmVySHRtbCA9ICI8c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLSIgKyB0aGVtZUljb24gKyAiJz48L3NwYW4+IjsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgaWYgKG5vcm1hbEljb24gJiYgIW9wdGlvbnMudGhlbWUpIHsKCQkJCQkJCQlpbm5lckh0bWwgPSAiPHNwYW4gY2xhc3M9J2ZjLWljb24gZmMtaWNvbi0iICsgbm9ybWFsSWNvbiArICInPjwvc3Bhbj4iOwoJCQkJCQkJfQoJCQkJCQkJZWxzZSB7CgkJCQkJCQkJaW5uZXJIdG1sID0gaHRtbEVzY2FwZShkZWZhdWx0VGV4dCk7CgkJCQkJCQl9CgoJCQkJCQkJY2xhc3NlcyA9IFsKCQkJCQkJCQknZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicsCgkJCQkJCQkJdG0gKyAnLWJ1dHRvbicsCgkJCQkJCQkJdG0gKyAnLXN0YXRlLWRlZmF1bHQnCgkJCQkJCQldOwoKCQkJCQkJCWJ1dHRvbiA9ICQoIC8vIHR5cGU9ImJ1dHRvbiIgc28gdGhhdCBpdCBkb2Vzbid0IHN1Ym1pdCBhIGZvcm0KCQkJCQkJCQknPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIj4nICsKCQkJCQkJCQkJaW5uZXJIdG1sICsKCQkJCQkJCQknPC9idXR0b24+JwoJCQkJCQkJCSkKCQkJCQkJCQkuY2xpY2soZnVuY3Rpb24oKSB7CgkJCQkJCQkJCS8vIGRvbid0IHByb2Nlc3MgY2xpY2tzIGZvciBkaXNhYmxlZCBidXR0b25zCgkJCQkJCQkJCWlmICghYnV0dG9uLmhhc0NsYXNzKHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpKSB7CgoJCQkJCQkJCQkJYnV0dG9uQ2xpY2soKTsKCgkJCQkJCQkJCQkvLyBhZnRlciB0aGUgY2xpY2sgYWN0aW9uLCBpZiB0aGUgYnV0dG9uIGJlY29tZXMgdGhlICJhY3RpdmUiIHRhYiwgb3IgZGlzYWJsZWQsCgkJCQkJCQkJCQkvLyBpdCBzaG91bGQgbmV2ZXIgaGF2ZSBhIGhvdmVyIGNsYXNzLCBzbyByZW1vdmUgaXQgbm93LgoJCQkJCQkJCQkJaWYgKAoJCQkJCQkJCQkJCWJ1dHRvbi5oYXNDbGFzcyh0bSArICctc3RhdGUtYWN0aXZlJykgfHwKCQkJCQkJCQkJCQlidXR0b24uaGFzQ2xhc3ModG0gKyAnLXN0YXRlLWRpc2FibGVkJykKCQkJCQkJCQkJCSkgewoJCQkJCQkJCQkJCWJ1dHRvbi5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtaG92ZXInKTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJfQoJCQkJCQkJCX0pCgkJCQkJCQkJLm1vdXNlZG93bihmdW5jdGlvbigpIHsKCQkJCQkJCQkJLy8gdGhlICpkb3duKiBlZmZlY3QgKG1vdXNlIHByZXNzZWQgaW4pLgoJCQkJCQkJCQkvLyBvbmx5IG9uIGJ1dHRvbnMgdGhhdCBhcmUgbm90IHRoZSAiYWN0aXZlIiB0YWIsIG9yIGRpc2FibGVkCgkJCQkJCQkJCWJ1dHRvbgoJCQkJCQkJCQkJLm5vdCgnLicgKyB0bSArICctc3RhdGUtYWN0aXZlJykKCQkJCQkJCQkJCS5ub3QoJy4nICsgdG0gKyAnLXN0YXRlLWRpc2FibGVkJykKCQkJCQkJCQkJCS5hZGRDbGFzcyh0bSArICctc3RhdGUtZG93bicpOwoJCQkJCQkJCX0pCgkJCQkJCQkJLm1vdXNldXAoZnVuY3Rpb24oKSB7CgkJCQkJCQkJCS8vIHVuZG8gdGhlICpkb3duKiBlZmZlY3QKCQkJCQkJCQkJYnV0dG9uLnJlbW92ZUNsYXNzKHRtICsgJy1zdGF0ZS1kb3duJyk7CgkJCQkJCQkJfSkKCQkJCQkJCQkuaG92ZXIoCgkJCQkJCQkJCWZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJLy8gdGhlICpob3ZlciogZWZmZWN0LgoJCQkJCQkJCQkJLy8gb25seSBvbiBidXR0b25zIHRoYXQgYXJlIG5vdCB0aGUgImFjdGl2ZSIgdGFiLCBvciBkaXNhYmxlZAoJCQkJCQkJCQkJYnV0dG9uCgkJCQkJCQkJCQkJLm5vdCgnLicgKyB0bSArICctc3RhdGUtYWN0aXZlJykKCQkJCQkJCQkJCQkubm90KCcuJyArIHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpCgkJCQkJCQkJCQkJLmFkZENsYXNzKHRtICsgJy1zdGF0ZS1ob3ZlcicpOwoJCQkJCQkJCQl9LAoJCQkJCQkJCQlmdW5jdGlvbigpIHsKCQkJCQkJCQkJCS8vIHVuZG8gdGhlICpob3ZlciogZWZmZWN0CgkJCQkJCQkJCQlidXR0b24KCQkJCQkJCQkJCQkucmVtb3ZlQ2xhc3ModG0gKyAnLXN0YXRlLWhvdmVyJykKCQkJCQkJCQkJCQkucmVtb3ZlQ2xhc3ModG0gKyAnLXN0YXRlLWRvd24nKTsgLy8gaWYgbW91c2VsZWF2ZSBoYXBwZW5zIGJlZm9yZSBtb3VzZXVwCgkJCQkJCQkJCX0KCQkJCQkJCQkpOwoKCQkJCQkJCWdyb3VwQ2hpbGRyZW4gPSBncm91cENoaWxkcmVuLmFkZChidXR0b24pOwoJCQkJCQl9CgkJCQkJfQoJCQkJfSk7CgoJCQkJaWYgKGlzT25seUJ1dHRvbnMpIHsKCQkJCQlncm91cENoaWxkcmVuCgkJCQkJCS5maXJzdCgpLmFkZENsYXNzKHRtICsgJy1jb3JuZXItbGVmdCcpLmVuZCgpCgkJCQkJCS5sYXN0KCkuYWRkQ2xhc3ModG0gKyAnLWNvcm5lci1yaWdodCcpLmVuZCgpOwoJCQkJfQoKCQkJCWlmIChncm91cENoaWxkcmVuLmxlbmd0aCA+IDEpIHsKCQkJCQlncm91cEVsID0gJCgnPGRpdi8+Jyk7CgkJCQkJaWYgKGlzT25seUJ1dHRvbnMpIHsKCQkJCQkJZ3JvdXBFbC5hZGRDbGFzcygnZmMtYnV0dG9uLWdyb3VwJyk7CgkJCQkJfQoJCQkJCWdyb3VwRWwuYXBwZW5kKGdyb3VwQ2hpbGRyZW4pOwoJCQkJCXNlY3Rpb25FbC5hcHBlbmQoZ3JvdXBFbCk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlzZWN0aW9uRWwuYXBwZW5kKGdyb3VwQ2hpbGRyZW4pOyAvLyAxIG9yIDAgY2hpbGRyZW4KCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gc2VjdGlvbkVsOwoJfQoJCgkKCWZ1bmN0aW9uIHVwZGF0ZVRpdGxlKHRleHQpIHsKCQllbC5maW5kKCdoMicpLnRleHQodGV4dCk7Cgl9CgkKCQoJZnVuY3Rpb24gYWN0aXZhdGVCdXR0b24oYnV0dG9uTmFtZSkgewoJCWVsLmZpbmQoJy5mYy0nICsgYnV0dG9uTmFtZSArICctYnV0dG9uJykKCQkJLmFkZENsYXNzKHRtICsgJy1zdGF0ZS1hY3RpdmUnKTsKCX0KCQoJCglmdW5jdGlvbiBkZWFjdGl2YXRlQnV0dG9uKGJ1dHRvbk5hbWUpIHsKCQllbC5maW5kKCcuZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicpCgkJCS5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtYWN0aXZlJyk7Cgl9CgkKCQoJZnVuY3Rpb24gZGlzYWJsZUJ1dHRvbihidXR0b25OYW1lKSB7CgkJZWwuZmluZCgnLmZjLScgKyBidXR0b25OYW1lICsgJy1idXR0b24nKQoJCQkuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKQoJCQkuYWRkQ2xhc3ModG0gKyAnLXN0YXRlLWRpc2FibGVkJyk7Cgl9CgkKCQoJZnVuY3Rpb24gZW5hYmxlQnV0dG9uKGJ1dHRvbk5hbWUpIHsKCQllbC5maW5kKCcuZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicpCgkJCS5yZW1vdmVBdHRyKCdkaXNhYmxlZCcpCgkJCS5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtZGlzYWJsZWQnKTsKCX0KCgoJZnVuY3Rpb24gZ2V0Vmlld3NXaXRoQnV0dG9ucygpIHsKCQlyZXR1cm4gdmlld3NXaXRoQnV0dG9uczsKCX0KCn0KCjs7CgpmYy5zb3VyY2VOb3JtYWxpemVycyA9IFtdOwpmYy5zb3VyY2VGZXRjaGVycyA9IFtdOwoKdmFyIGFqYXhEZWZhdWx0cyA9IHsKCWRhdGFUeXBlOiAnanNvbicsCgljYWNoZTogZmFsc2UKfTsKCnZhciBldmVudEdVSUQgPSAxOwoKCmZ1bmN0aW9uIEV2ZW50TWFuYWdlcihvcHRpb25zKSB7IC8vIGFzc3VtZWQgdG8gYmUgYSBjYWxlbmRhcgoJdmFyIHQgPSB0aGlzOwoJCgkKCS8vIGV4cG9ydHMKCXQuaXNGZXRjaE5lZWRlZCA9IGlzRmV0Y2hOZWVkZWQ7Cgl0LmZldGNoRXZlbnRzID0gZmV0Y2hFdmVudHM7Cgl0LmFkZEV2ZW50U291cmNlID0gYWRkRXZlbnRTb3VyY2U7Cgl0LnJlbW92ZUV2ZW50U291cmNlID0gcmVtb3ZlRXZlbnRTb3VyY2U7Cgl0LnVwZGF0ZUV2ZW50ID0gdXBkYXRlRXZlbnQ7Cgl0LnJlbmRlckV2ZW50ID0gcmVuZGVyRXZlbnQ7Cgl0LnJlbW92ZUV2ZW50cyA9IHJlbW92ZUV2ZW50czsKCXQuY2xpZW50RXZlbnRzID0gY2xpZW50RXZlbnRzOwoJdC5tdXRhdGVFdmVudCA9IG11dGF0ZUV2ZW50OwoJdC5ub3JtYWxpemVFdmVudFJhbmdlID0gbm9ybWFsaXplRXZlbnRSYW5nZTsKCXQubm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzID0gbm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzOwoJdC5lbnN1cmVWaXNpYmxlRXZlbnRSYW5nZSA9IGVuc3VyZVZpc2libGVFdmVudFJhbmdlOwoJCgkKCS8vIGltcG9ydHMKCXZhciByZXBvcnRFdmVudHMgPSB0LnJlcG9ydEV2ZW50czsKCQoJCgkvLyBsb2NhbHMKCXZhciBzdGlja3lTb3VyY2UgPSB7IGV2ZW50czogW10gfTsKCXZhciBzb3VyY2VzID0gWyBzdGlja3lTb3VyY2UgXTsKCXZhciByYW5nZVN0YXJ0LCByYW5nZUVuZDsKCXZhciBjdXJyZW50RmV0Y2hJRCA9IDA7Cgl2YXIgcGVuZGluZ1NvdXJjZUNudCA9IDA7Cgl2YXIgY2FjaGUgPSBbXTsgLy8gaG9sZHMgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZXhwYW5kZWQKCgoJJC5lYWNoKAoJCShvcHRpb25zLmV2ZW50cyA/IFsgb3B0aW9ucy5ldmVudHMgXSA6IFtdKS5jb25jYXQob3B0aW9ucy5ldmVudFNvdXJjZXMgfHwgW10pLAoJCWZ1bmN0aW9uKGksIHNvdXJjZUlucHV0KSB7CgkJCXZhciBzb3VyY2UgPSBidWlsZEV2ZW50U291cmNlKHNvdXJjZUlucHV0KTsKCQkJaWYgKHNvdXJjZSkgewoJCQkJc291cmNlcy5wdXNoKHNvdXJjZSk7CgkJCX0KCQl9CgkpOwoJCgkKCQoJLyogRmV0Y2hpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCQoJCglmdW5jdGlvbiBpc0ZldGNoTmVlZGVkKHN0YXJ0LCBlbmQpIHsKCQlyZXR1cm4gIXJhbmdlU3RhcnQgfHwgLy8gbm90aGluZyBoYXMgYmVlbiBmZXRjaGVkIHlldD8KCQkJLy8gb3IsIGEgcGFydCBvZiB0aGUgbmV3IHJhbmdlIGlzIG91dHNpZGUgb2YgdGhlIG9sZCByYW5nZT8gKGFmdGVyIG5vcm1hbGl6aW5nKQoJCQlzdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpIDwgcmFuZ2VTdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpIHx8CgkJCWVuZC5jbG9uZSgpLnN0cmlwWm9uZSgpID4gcmFuZ2VFbmQuY2xvbmUoKS5zdHJpcFpvbmUoKTsKCX0KCQoJCglmdW5jdGlvbiBmZXRjaEV2ZW50cyhzdGFydCwgZW5kKSB7CgkJcmFuZ2VTdGFydCA9IHN0YXJ0OwoJCXJhbmdlRW5kID0gZW5kOwoJCWNhY2hlID0gW107CgkJdmFyIGZldGNoSUQgPSArK2N1cnJlbnRGZXRjaElEOwoJCXZhciBsZW4gPSBzb3VyY2VzLmxlbmd0aDsKCQlwZW5kaW5nU291cmNlQ250ID0gbGVuOwoJCWZvciAodmFyIGk9MDsgaTxsZW47IGkrKykgewoJCQlmZXRjaEV2ZW50U291cmNlKHNvdXJjZXNbaV0sIGZldGNoSUQpOwoJCX0KCX0KCQoJCglmdW5jdGlvbiBmZXRjaEV2ZW50U291cmNlKHNvdXJjZSwgZmV0Y2hJRCkgewoJCV9mZXRjaEV2ZW50U291cmNlKHNvdXJjZSwgZnVuY3Rpb24oZXZlbnRJbnB1dHMpIHsKCQkJdmFyIGlzQXJyYXlTb3VyY2UgPSAkLmlzQXJyYXkoc291cmNlLmV2ZW50cyk7CgkJCXZhciBpLCBldmVudElucHV0OwoJCQl2YXIgYWJzdHJhY3RFdmVudDsKCgkJCWlmIChmZXRjaElEID09IGN1cnJlbnRGZXRjaElEKSB7CgoJCQkJaWYgKGV2ZW50SW5wdXRzKSB7CgkJCQkJZm9yIChpID0gMDsgaSA8IGV2ZW50SW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCQkJCWV2ZW50SW5wdXQgPSBldmVudElucHV0c1tpXTsKCgkJCQkJCWlmIChpc0FycmF5U291cmNlKSB7IC8vIGFycmF5IHNvdXJjZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY29udmVydCB0byBFdmVudCBPYmplY3RzCgkJCQkJCQlhYnN0cmFjdEV2ZW50ID0gZXZlbnRJbnB1dDsKCQkJCQkJfQoJCQkJCQllbHNlIHsKCQkJCQkJCWFic3RyYWN0RXZlbnQgPSBidWlsZEV2ZW50RnJvbUlucHV0KGV2ZW50SW5wdXQsIHNvdXJjZSk7CgkJCQkJCX0KCgkJCQkJCWlmIChhYnN0cmFjdEV2ZW50KSB7IC8vIG5vdCBmYWxzZSAoYW4gaW52YWxpZCBldmVudCkKCQkJCQkJCWNhY2hlLnB1c2guYXBwbHkoCgkJCQkJCQkJY2FjaGUsCgkJCQkJCQkJZXhwYW5kRXZlbnQoYWJzdHJhY3RFdmVudCkgLy8gYWRkIGluZGl2aWR1YWwgZXhwYW5kZWQgZXZlbnRzIHRvIHRoZSBjYWNoZQoJCQkJCQkJKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQlwZW5kaW5nU291cmNlQ250LS07CgkJCQlpZiAoIXBlbmRpbmdTb3VyY2VDbnQpIHsKCQkJCQlyZXBvcnRFdmVudHMoY2FjaGUpOwoJCQkJfQoJCQl9CgkJfSk7Cgl9CgkKCQoJZnVuY3Rpb24gX2ZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBjYWxsYmFjaykgewoJCXZhciBpOwoJCXZhciBmZXRjaGVycyA9IGZjLnNvdXJjZUZldGNoZXJzOwoJCXZhciByZXM7CgoJCWZvciAoaT0wOyBpPGZldGNoZXJzLmxlbmd0aDsgaSsrKSB7CgkJCXJlcyA9IGZldGNoZXJzW2ldLmNhbGwoCgkJCQl0LCAvLyB0aGlzLCB0aGUgQ2FsZW5kYXIgb2JqZWN0CgkJCQlzb3VyY2UsCgkJCQlyYW5nZVN0YXJ0LmNsb25lKCksCgkJCQlyYW5nZUVuZC5jbG9uZSgpLAoJCQkJb3B0aW9ucy50aW1lem9uZSwKCQkJCWNhbGxiYWNrCgkJCSk7CgoJCQlpZiAocmVzID09PSB0cnVlKSB7CgkJCQkvLyB0aGUgZmV0Y2hlciBpcyBpbiBjaGFyZ2UuIG1hZGUgaXRzIG93biBhc3luYyByZXF1ZXN0CgkJCQlyZXR1cm47CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIHJlcyA9PSAnb2JqZWN0JykgewoJCQkJLy8gdGhlIGZldGNoZXIgcmV0dXJuZWQgYSBuZXcgc291cmNlLiBwcm9jZXNzIGl0CgkJCQlfZmV0Y2hFdmVudFNvdXJjZShyZXMsIGNhbGxiYWNrKTsKCQkJCXJldHVybjsKCQkJfQoJCX0KCgkJdmFyIGV2ZW50cyA9IHNvdXJjZS5ldmVudHM7CgkJaWYgKGV2ZW50cykgewoJCQlpZiAoJC5pc0Z1bmN0aW9uKGV2ZW50cykpIHsKCQkJCXQucHVzaExvYWRpbmcoKTsKCQkJCWV2ZW50cy5jYWxsKAoJCQkJCXQsIC8vIHRoaXMsIHRoZSBDYWxlbmRhciBvYmplY3QKCQkJCQlyYW5nZVN0YXJ0LmNsb25lKCksCgkJCQkJcmFuZ2VFbmQuY2xvbmUoKSwKCQkJCQlvcHRpb25zLnRpbWV6b25lLAoJCQkJCWZ1bmN0aW9uKGV2ZW50cykgewoJCQkJCQljYWxsYmFjayhldmVudHMpOwoJCQkJCQl0LnBvcExvYWRpbmcoKTsKCQkJCQl9CgkJCQkpOwoJCQl9CgkJCWVsc2UgaWYgKCQuaXNBcnJheShldmVudHMpKSB7CgkJCQljYWxsYmFjayhldmVudHMpOwoJCQl9CgkJCWVsc2UgewoJCQkJY2FsbGJhY2soKTsKCQkJfQoJCX1lbHNlewoJCQl2YXIgdXJsID0gc291cmNlLnVybDsKCQkJaWYgKHVybCkgewoJCQkJdmFyIHN1Y2Nlc3MgPSBzb3VyY2Uuc3VjY2VzczsKCQkJCXZhciBlcnJvciA9IHNvdXJjZS5lcnJvcjsKCQkJCXZhciBjb21wbGV0ZSA9IHNvdXJjZS5jb21wbGV0ZTsKCgkJCQkvLyByZXRyaWV2ZSBhbnkgb3V0Ym91bmQgR0VUL1BPU1QgJC5hamF4IGRhdGEgZnJvbSB0aGUgb3B0aW9ucwoJCQkJdmFyIGN1c3RvbURhdGE7CgkJCQlpZiAoJC5pc0Z1bmN0aW9uKHNvdXJjZS5kYXRhKSkgewoJCQkJCS8vIHN1cHBsaWVkIGFzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEga2V5L3ZhbHVlIG9iamVjdAoJCQkJCWN1c3RvbURhdGEgPSBzb3VyY2UuZGF0YSgpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJLy8gc3VwcGxpZWQgYXMgYSBzdHJhaWdodCBrZXkvdmFsdWUgb2JqZWN0CgkJCQkJY3VzdG9tRGF0YSA9IHNvdXJjZS5kYXRhOwoJCQkJfQoKCQkJCS8vIHVzZSBhIGNvcHkgb2YgdGhlIGN1c3RvbSBkYXRhIHNvIHdlIGNhbiBtb2RpZnkgdGhlIHBhcmFtZXRlcnMKCQkJCS8vIGFuZCBub3QgYWZmZWN0IHRoZSBwYXNzZWQtaW4gb2JqZWN0LgoJCQkJdmFyIGRhdGEgPSAkLmV4dGVuZCh7fSwgY3VzdG9tRGF0YSB8fCB7fSk7CgoJCQkJdmFyIHN0YXJ0UGFyYW0gPSBmaXJzdERlZmluZWQoc291cmNlLnN0YXJ0UGFyYW0sIG9wdGlvbnMuc3RhcnRQYXJhbSk7CgkJCQl2YXIgZW5kUGFyYW0gPSBmaXJzdERlZmluZWQoc291cmNlLmVuZFBhcmFtLCBvcHRpb25zLmVuZFBhcmFtKTsKCQkJCXZhciB0aW1lem9uZVBhcmFtID0gZmlyc3REZWZpbmVkKHNvdXJjZS50aW1lem9uZVBhcmFtLCBvcHRpb25zLnRpbWV6b25lUGFyYW0pOwoKCQkJCWlmIChzdGFydFBhcmFtKSB7CgkJCQkJZGF0YVtzdGFydFBhcmFtXSA9IHJhbmdlU3RhcnQuZm9ybWF0KCk7CgkJCQl9CgkJCQlpZiAoZW5kUGFyYW0pIHsKCQkJCQlkYXRhW2VuZFBhcmFtXSA9IHJhbmdlRW5kLmZvcm1hdCgpOwoJCQkJfQoJCQkJaWYgKG9wdGlvbnMudGltZXpvbmUgJiYgb3B0aW9ucy50aW1lem9uZSAhPSAnbG9jYWwnKSB7CgkJCQkJZGF0YVt0aW1lem9uZVBhcmFtXSA9IG9wdGlvbnMudGltZXpvbmU7CgkJCQl9CgoJCQkJdC5wdXNoTG9hZGluZygpOwoJCQkJJC5hamF4KCQuZXh0ZW5kKHt9LCBhamF4RGVmYXVsdHMsIHNvdXJjZSwgewoJCQkJCWRhdGE6IGRhdGEsCgkJCQkJc3VjY2VzczogZnVuY3Rpb24oZXZlbnRzKSB7CgkJCQkJCWV2ZW50cyA9IGV2ZW50cyB8fCBbXTsKCQkJCQkJdmFyIHJlcyA9IGFwcGx5QWxsKHN1Y2Nlc3MsIHRoaXMsIGFyZ3VtZW50cyk7CgkJCQkJCWlmICgkLmlzQXJyYXkocmVzKSkgewoJCQkJCQkJZXZlbnRzID0gcmVzOwoJCQkJCQl9CgkJCQkJCWNhbGxiYWNrKGV2ZW50cyk7CgkJCQkJfSwKCQkJCQllcnJvcjogZnVuY3Rpb24oKSB7CgkJCQkJCWFwcGx5QWxsKGVycm9yLCB0aGlzLCBhcmd1bWVudHMpOwoJCQkJCQljYWxsYmFjaygpOwoJCQkJCX0sCgkJCQkJY29tcGxldGU6IGZ1bmN0aW9uKCkgewoJCQkJCQlhcHBseUFsbChjb21wbGV0ZSwgdGhpcywgYXJndW1lbnRzKTsKCQkJCQkJdC5wb3BMb2FkaW5nKCk7CgkJCQkJfQoJCQkJfSkpOwoJCQl9ZWxzZXsKCQkJCWNhbGxiYWNrKCk7CgkJCX0KCQl9Cgl9CgkKCQoJCgkvKiBTb3VyY2VzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkKCglmdW5jdGlvbiBhZGRFdmVudFNvdXJjZShzb3VyY2VJbnB1dCkgewoJCXZhciBzb3VyY2UgPSBidWlsZEV2ZW50U291cmNlKHNvdXJjZUlucHV0KTsKCQlpZiAoc291cmNlKSB7CgkJCXNvdXJjZXMucHVzaChzb3VyY2UpOwoJCQlwZW5kaW5nU291cmNlQ250Kys7CgkJCWZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBjdXJyZW50RmV0Y2hJRCk7IC8vIHdpbGwgZXZlbnR1YWxseSBjYWxsIHJlcG9ydEV2ZW50cwoJCX0KCX0KCgoJZnVuY3Rpb24gYnVpbGRFdmVudFNvdXJjZShzb3VyY2VJbnB1dCkgeyAvLyB3aWxsIHJldHVybiB1bmRlZmluZWQgaWYgaW52YWxpZCBzb3VyY2UKCQl2YXIgbm9ybWFsaXplcnMgPSBmYy5zb3VyY2VOb3JtYWxpemVyczsKCQl2YXIgc291cmNlOwoJCXZhciBpOwoKCQlpZiAoJC5pc0Z1bmN0aW9uKHNvdXJjZUlucHV0KSB8fCAkLmlzQXJyYXkoc291cmNlSW5wdXQpKSB7CgkJCXNvdXJjZSA9IHsgZXZlbnRzOiBzb3VyY2VJbnB1dCB9OwoJCX0KCQllbHNlIGlmICh0eXBlb2Ygc291cmNlSW5wdXQgPT09ICdzdHJpbmcnKSB7CgkJCXNvdXJjZSA9IHsgdXJsOiBzb3VyY2VJbnB1dCB9OwoJCX0KCQllbHNlIGlmICh0eXBlb2Ygc291cmNlSW5wdXQgPT09ICdvYmplY3QnKSB7CgkJCXNvdXJjZSA9ICQuZXh0ZW5kKHt9LCBzb3VyY2VJbnB1dCk7IC8vIHNoYWxsb3cgY29weQoJCX0KCgkJaWYgKHNvdXJjZSkgewoKCQkJLy8gVE9ETzogcmVwZWF0IGNvZGUsIHNhbWUgY29kZSBmb3IgZXZlbnQgY2xhc3NOYW1lcwoJCQlpZiAoc291cmNlLmNsYXNzTmFtZSkgewoJCQkJaWYgKHR5cGVvZiBzb3VyY2UuY2xhc3NOYW1lID09PSAnc3RyaW5nJykgewoJCQkJCXNvdXJjZS5jbGFzc05hbWUgPSBzb3VyY2UuY2xhc3NOYW1lLnNwbGl0KC9ccysvKTsKCQkJCX0KCQkJCS8vIG90aGVyd2lzZSwgYXNzdW1lZCB0byBiZSBhbiBhcnJheQoJCQl9CgkJCWVsc2UgewoJCQkJc291cmNlLmNsYXNzTmFtZSA9IFtdOwoJCQl9CgoJCQkvLyBmb3IgYXJyYXkgc291cmNlcywgd2UgY29udmVydCB0byBzdGFuZGFyZCBFdmVudCBPYmplY3RzIHVwIGZyb250CgkJCWlmICgkLmlzQXJyYXkoc291cmNlLmV2ZW50cykpIHsKCQkJCXNvdXJjZS5vcmlnQXJyYXkgPSBzb3VyY2UuZXZlbnRzOyAvLyBmb3IgcmVtb3ZlRXZlbnRTb3VyY2UKCQkJCXNvdXJjZS5ldmVudHMgPSAkLm1hcChzb3VyY2UuZXZlbnRzLCBmdW5jdGlvbihldmVudElucHV0KSB7CgkJCQkJcmV0dXJuIGJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCwgc291cmNlKTsKCQkJCX0pOwoJCQl9CgoJCQlmb3IgKGk9MDsgaTxub3JtYWxpemVycy5sZW5ndGg7IGkrKykgewoJCQkJbm9ybWFsaXplcnNbaV0uY2FsbCh0LCBzb3VyY2UpOwoJCQl9CgoJCQlyZXR1cm4gc291cmNlOwoJCX0KCX0KCgoJZnVuY3Rpb24gcmVtb3ZlRXZlbnRTb3VyY2Uoc291cmNlKSB7CgkJc291cmNlcyA9ICQuZ3JlcChzb3VyY2VzLCBmdW5jdGlvbihzcmMpIHsKCQkJcmV0dXJuICFpc1NvdXJjZXNFcXVhbChzcmMsIHNvdXJjZSk7CgkJfSk7CgkJLy8gcmVtb3ZlIGFsbCBjbGllbnQgZXZlbnRzIGZyb20gdGhhdCBzb3VyY2UKCQljYWNoZSA9ICQuZ3JlcChjYWNoZSwgZnVuY3Rpb24oZSkgewoJCQlyZXR1cm4gIWlzU291cmNlc0VxdWFsKGUuc291cmNlLCBzb3VyY2UpOwoJCX0pOwoJCXJlcG9ydEV2ZW50cyhjYWNoZSk7Cgl9CgoKCWZ1bmN0aW9uIGlzU291cmNlc0VxdWFsKHNvdXJjZTEsIHNvdXJjZTIpIHsKCQlyZXR1cm4gc291cmNlMSAmJiBzb3VyY2UyICYmIGdldFNvdXJjZVByaW1pdGl2ZShzb3VyY2UxKSA9PSBnZXRTb3VyY2VQcmltaXRpdmUoc291cmNlMik7Cgl9CgoKCWZ1bmN0aW9uIGdldFNvdXJjZVByaW1pdGl2ZShzb3VyY2UpIHsKCQlyZXR1cm4gKAoJCQkodHlwZW9mIHNvdXJjZSA9PT0gJ29iamVjdCcpID8gLy8gYSBub3JtYWxpemVkIGV2ZW50IHNvdXJjZT8KCQkJCShzb3VyY2Uub3JpZ0FycmF5IHx8IHNvdXJjZS5nb29nbGVDYWxlbmRhcklkIHx8IHNvdXJjZS51cmwgfHwgc291cmNlLmV2ZW50cykgOiAvLyBnZXQgdGhlIHByaW1pdGl2ZQoJCQkJbnVsbAoJCSkgfHwKCQlzb3VyY2U7IC8vIHRoZSBnaXZlbiBhcmd1bWVudCAqaXMqIHRoZSBwcmltaXRpdmUKCX0KCQoJCgkKCS8qIE1hbmlwdWxhdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBPbmx5IGV2ZXIgY2FsbGVkIGZyb20gdGhlIGV4dGVybmFsbHktZmFjaW5nIEFQSQoJZnVuY3Rpb24gdXBkYXRlRXZlbnQoZXZlbnQpIHsKCgkJLy8gbWFzc2FnZSBzdGFydC9lbmQgdmFsdWVzLCBldmVuIGlmIGRhdGUgc3RyaW5nIHZhbHVlcwoJCWV2ZW50LnN0YXJ0ID0gdC5tb21lbnQoZXZlbnQuc3RhcnQpOwoJCWlmIChldmVudC5lbmQpIHsKCQkJZXZlbnQuZW5kID0gdC5tb21lbnQoZXZlbnQuZW5kKTsKCQl9CgkJZWxzZSB7CgkJCWV2ZW50LmVuZCA9IG51bGw7CgkJfQoKCQltdXRhdGVFdmVudChldmVudCwgZ2V0TWlzY0V2ZW50UHJvcHMoZXZlbnQpKTsgLy8gd2lsbCBoYW5kbGUgc3RhcnQvZW5kL2FsbERheSBub3JtYWxpemF0aW9uCgkJcmVwb3J0RXZlbnRzKGNhY2hlKTsgLy8gcmVwb3J0cyBldmVudCBtb2RpZmljYXRpb25zIChzbyB3ZSBjYW4gcmVkcmF3KQoJfQoKCgkvLyBSZXR1cm5zIGEgaGFzaCBvZiBtaXNjIGV2ZW50IHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgY29waWVkIG92ZXIgdG8gcmVsYXRlZCBldmVudHMuCglmdW5jdGlvbiBnZXRNaXNjRXZlbnRQcm9wcyhldmVudCkgewoJCXZhciBwcm9wcyA9IHt9OwoKCQkkLmVhY2goZXZlbnQsIGZ1bmN0aW9uKG5hbWUsIHZhbCkgewoJCQlpZiAoaXNNaXNjRXZlbnRQcm9wTmFtZShuYW1lKSkgewoJCQkJaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIGlzQXRvbWljKHZhbCkpIHsgLy8gYSBkZWZpbmVkIG5vbi1vYmplY3QKCQkJCQlwcm9wc1tuYW1lXSA9IHZhbDsKCQkJCX0KCQkJfQoJCX0pOwoKCQlyZXR1cm4gcHJvcHM7Cgl9CgoJLy8gbm9uLWRhdGUtcmVsYXRlZCwgbm9uLWlkLXJlbGF0ZWQsIG5vbi1zZWNyZXQKCWZ1bmN0aW9uIGlzTWlzY0V2ZW50UHJvcE5hbWUobmFtZSkgewoJCXJldHVybiAhL15ffF4oaWR8YWxsRGF5fHN0YXJ0fGVuZCkkLy50ZXN0KG5hbWUpOwoJfQoKCQoJLy8gcmV0dXJucyB0aGUgZXhwYW5kZWQgZXZlbnRzIHRoYXQgd2VyZSBjcmVhdGVkCglmdW5jdGlvbiByZW5kZXJFdmVudChldmVudElucHV0LCBzdGljaykgewoJCXZhciBhYnN0cmFjdEV2ZW50ID0gYnVpbGRFdmVudEZyb21JbnB1dChldmVudElucHV0KTsKCQl2YXIgZXZlbnRzOwoJCXZhciBpLCBldmVudDsKCgkJaWYgKGFic3RyYWN0RXZlbnQpIHsgLy8gbm90IGZhbHNlIChhIHZhbGlkIGlucHV0KQoJCQlldmVudHMgPSBleHBhbmRFdmVudChhYnN0cmFjdEV2ZW50KTsKCgkJCWZvciAoaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHsKCQkJCWV2ZW50ID0gZXZlbnRzW2ldOwoKCQkJCWlmICghZXZlbnQuc291cmNlKSB7CgkJCQkJaWYgKHN0aWNrKSB7CgkJCQkJCXN0aWNreVNvdXJjZS5ldmVudHMucHVzaChldmVudCk7CgkJCQkJCWV2ZW50LnNvdXJjZSA9IHN0aWNreVNvdXJjZTsKCQkJCQl9CgkJCQkJY2FjaGUucHVzaChldmVudCk7CgkJCQl9CgkJCX0KCgkJCXJlcG9ydEV2ZW50cyhjYWNoZSk7CgoJCQlyZXR1cm4gZXZlbnRzOwoJCX0KCgkJcmV0dXJuIFtdOwoJfQoJCgkKCWZ1bmN0aW9uIHJlbW92ZUV2ZW50cyhmaWx0ZXIpIHsKCQl2YXIgZXZlbnRJRDsKCQl2YXIgaTsKCgkJaWYgKGZpbHRlciA9PSBudWxsKSB7IC8vIG51bGwgb3IgdW5kZWZpbmVkLiByZW1vdmUgYWxsIGV2ZW50cwoJCQlmaWx0ZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07IC8vIHdpbGwgYWx3YXlzIG1hdGNoCgkJfQoJCWVsc2UgaWYgKCEkLmlzRnVuY3Rpb24oZmlsdGVyKSkgeyAvLyBhbiBldmVudCBJRAoJCQlldmVudElEID0gZmlsdGVyICsgJyc7CgkJCWZpbHRlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQlyZXR1cm4gZXZlbnQuX2lkID09IGV2ZW50SUQ7CgkJCX07CgkJfQoKCQkvLyBQdXJnZSBldmVudChzKSBmcm9tIG91ciBsb2NhbCBjYWNoZQoJCWNhY2hlID0gJC5ncmVwKGNhY2hlLCBmaWx0ZXIsIHRydWUpOyAvLyBpbnZlcnNlPXRydWUKCgkJLy8gUmVtb3ZlIGV2ZW50cyBmcm9tIGFycmF5IHNvdXJjZXMuCgkJLy8gVGhpcyB3b3JrcyBiZWNhdXNlIHRoZXkgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBvZmZpY2lhbCBFdmVudCBPYmplY3RzIHVwIGZyb250LgoJCS8vIChhbmQgYXMgYSByZXN1bHQsIGV2ZW50Ll9pZCBoYXMgYmVlbiBjYWxjdWxhdGVkKS4KCQlmb3IgKGk9MDsgaTxzb3VyY2VzLmxlbmd0aDsgaSsrKSB7CgkJCWlmICgkLmlzQXJyYXkoc291cmNlc1tpXS5ldmVudHMpKSB7CgkJCQlzb3VyY2VzW2ldLmV2ZW50cyA9ICQuZ3JlcChzb3VyY2VzW2ldLmV2ZW50cywgZmlsdGVyLCB0cnVlKTsKCQkJfQoJCX0KCgkJcmVwb3J0RXZlbnRzKGNhY2hlKTsKCX0KCQoJCglmdW5jdGlvbiBjbGllbnRFdmVudHMoZmlsdGVyKSB7CgkJaWYgKCQuaXNGdW5jdGlvbihmaWx0ZXIpKSB7CgkJCXJldHVybiAkLmdyZXAoY2FjaGUsIGZpbHRlcik7CgkJfQoJCWVsc2UgaWYgKGZpbHRlciAhPSBudWxsKSB7IC8vIG5vdCBudWxsLCBub3QgdW5kZWZpbmVkLiBhbiBldmVudCBJRAoJCQlmaWx0ZXIgKz0gJyc7CgkJCXJldHVybiAkLmdyZXAoY2FjaGUsIGZ1bmN0aW9uKGUpIHsKCQkJCXJldHVybiBlLl9pZCA9PSBmaWx0ZXI7CgkJCX0pOwoJCX0KCQlyZXR1cm4gY2FjaGU7IC8vIGVsc2UsIHJldHVybiBhbGwKCX0KCQoJCgkKCS8qIEV2ZW50IE5vcm1hbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gYSByYXcgb2JqZWN0IHdpdGgga2V5L3ZhbHVlIHByb3BlcnRpZXMsIHJldHVybnMgYW4gImFic3RyYWN0IiBFdmVudCBvYmplY3QuCgkvLyBBbiAiYWJzdHJhY3QiIGV2ZW50IGlzIGFuIGV2ZW50IHRoYXQsIGlmIHJlY3VycmluZywgd2lsbCBub3QgaGF2ZSBiZWVuIGV4cGFuZGVkIHlldC4KCS8vIFdpbGwgcmV0dXJuIGBmYWxzZWAgd2hlbiBpbnB1dCBpcyBpbnZhbGlkLgoJLy8gYHNvdXJjZWAgaXMgb3B0aW9uYWwKCWZ1bmN0aW9uIGJ1aWxkRXZlbnRGcm9tSW5wdXQoaW5wdXQsIHNvdXJjZSkgewoJCXZhciBvdXQgPSB7fTsKCQl2YXIgc3RhcnQsIGVuZDsKCQl2YXIgYWxsRGF5OwoKCQlpZiAob3B0aW9ucy5ldmVudERhdGFUcmFuc2Zvcm0pIHsKCQkJaW5wdXQgPSBvcHRpb25zLmV2ZW50RGF0YVRyYW5zZm9ybShpbnB1dCk7CgkJfQoJCWlmIChzb3VyY2UgJiYgc291cmNlLmV2ZW50RGF0YVRyYW5zZm9ybSkgewoJCQlpbnB1dCA9IHNvdXJjZS5ldmVudERhdGFUcmFuc2Zvcm0oaW5wdXQpOwoJCX0KCgkJLy8gQ29weSBhbGwgcHJvcGVydGllcyBvdmVyIHRvIHRoZSByZXN1bHRpbmcgb2JqZWN0LgoJCS8vIFRoZSBzcGVjaWFsLWNhc2UgcHJvcGVydGllcyB3aWxsIGJlIGNvcGllZCBvdmVyIGFmdGVyd2FyZHMuCgkJJC5leHRlbmQob3V0LCBpbnB1dCk7CgoJCWlmIChzb3VyY2UpIHsKCQkJb3V0LnNvdXJjZSA9IHNvdXJjZTsKCQl9CgoJCW91dC5faWQgPSBpbnB1dC5faWQgfHwgKGlucHV0LmlkID09PSB1bmRlZmluZWQgPyAnX2ZjJyArIGV2ZW50R1VJRCsrIDogaW5wdXQuaWQgKyAnJyk7CgoJCWlmIChpbnB1dC5jbGFzc05hbWUpIHsKCQkJaWYgKHR5cGVvZiBpbnB1dC5jbGFzc05hbWUgPT0gJ3N0cmluZycpIHsKCQkJCW91dC5jbGFzc05hbWUgPSBpbnB1dC5jbGFzc05hbWUuc3BsaXQoL1xzKy8pOwoJCQl9CgkJCWVsc2UgeyAvLyBhc3N1bWVkIHRvIGJlIGFuIGFycmF5CgkJCQlvdXQuY2xhc3NOYW1lID0gaW5wdXQuY2xhc3NOYW1lOwoJCQl9CgkJfQoJCWVsc2UgewoJCQlvdXQuY2xhc3NOYW1lID0gW107CgkJfQoKCQlzdGFydCA9IGlucHV0LnN0YXJ0IHx8IGlucHV0LmRhdGU7IC8vICJkYXRlIiBpcyBhbiBhbGlhcyBmb3IgInN0YXJ0IgoJCWVuZCA9IGlucHV0LmVuZDsKCgkJLy8gcGFyc2UgYXMgYSB0aW1lIChEdXJhdGlvbikgaWYgYXBwbGljYWJsZQoJCWlmIChpc1RpbWVTdHJpbmcoc3RhcnQpKSB7CgkJCXN0YXJ0ID0gbW9tZW50LmR1cmF0aW9uKHN0YXJ0KTsKCQl9CgkJaWYgKGlzVGltZVN0cmluZyhlbmQpKSB7CgkJCWVuZCA9IG1vbWVudC5kdXJhdGlvbihlbmQpOwoJCX0KCgkJaWYgKGlucHV0LmRvdyB8fCBtb21lbnQuaXNEdXJhdGlvbihzdGFydCkgfHwgbW9tZW50LmlzRHVyYXRpb24oZW5kKSkgewoKCQkJLy8gdGhlIGV2ZW50IGlzICJhYnN0cmFjdCIgKHJlY3VycmluZykgc28gZG9uJ3QgY2FsY3VsYXRlIGV4YWN0IHN0YXJ0L2VuZCBkYXRlcyBqdXN0IHlldAoJCQlvdXQuc3RhcnQgPSBzdGFydCA/IG1vbWVudC5kdXJhdGlvbihzdGFydCkgOiBudWxsOyAvLyB3aWxsIGJlIGEgRHVyYXRpb24gb3IgbnVsbAoJCQlvdXQuZW5kID0gZW5kID8gbW9tZW50LmR1cmF0aW9uKGVuZCkgOiBudWxsOyAvLyB3aWxsIGJlIGEgRHVyYXRpb24gb3IgbnVsbAoJCQlvdXQuX3JlY3VycmluZyA9IHRydWU7IC8vIG91ciBpbnRlcm5hbCBtYXJrZXIKCQl9CgkJZWxzZSB7CgoJCQlpZiAoc3RhcnQpIHsKCQkJCXN0YXJ0ID0gdC5tb21lbnQoc3RhcnQpOwoJCQkJaWYgKCFzdGFydC5pc1ZhbGlkKCkpIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCWlmIChlbmQpIHsKCQkJCWVuZCA9IHQubW9tZW50KGVuZCk7CgkJCQlpZiAoIWVuZC5pc1ZhbGlkKCkpIHsKCQkJCQllbmQgPSBudWxsOyAvLyBsZXQgZGVmYXVsdHMgdGFrZSBvdmVyCgkJCQl9CgkJCX0KCgkJCWFsbERheSA9IGlucHV0LmFsbERheTsKCQkJaWYgKGFsbERheSA9PT0gdW5kZWZpbmVkKSB7IC8vIHN0aWxsIHVuZGVmaW5lZD8gZmFsbGJhY2sgdG8gZGVmYXVsdAoJCQkJYWxsRGF5ID0gZmlyc3REZWZpbmVkKAoJCQkJCXNvdXJjZSA/IHNvdXJjZS5hbGxEYXlEZWZhdWx0IDogdW5kZWZpbmVkLAoJCQkJCW9wdGlvbnMuYWxsRGF5RGVmYXVsdAoJCQkJKTsKCQkJCS8vIHN0aWxsIHVuZGVmaW5lZD8gbm9ybWFsaXplRXZlbnRSYW5nZSB3aWxsIGNhbGN1bGF0ZSBpdAoJCQl9CgoJCQlhc3NpZ25EYXRlc1RvRXZlbnQoc3RhcnQsIGVuZCwgYWxsRGF5LCBvdXQpOwoJCX0KCgkJcmV0dXJuIG91dDsKCX0KCgoJLy8gTm9ybWFsaXplcyBhbmQgYXNzaWducyB0aGUgZ2l2ZW4gZGF0ZXMgdG8gdGhlIGdpdmVuIHBhcnRpYWxseS1mb3JtZWQgZXZlbnQgb2JqZWN0LgoJLy8gTk9URTogbXV0YXRlcyB0aGUgZ2l2ZW4gc3RhcnQvZW5kIG1vbWVudHMuIGRvZXMgbm90IG1ha2UgYSBjb3B5LgoJZnVuY3Rpb24gYXNzaWduRGF0ZXNUb0V2ZW50KHN0YXJ0LCBlbmQsIGFsbERheSwgZXZlbnQpIHsKCQlldmVudC5zdGFydCA9IHN0YXJ0OwoJCWV2ZW50LmVuZCA9IGVuZDsKCQlldmVudC5hbGxEYXkgPSBhbGxEYXk7CgkJbm9ybWFsaXplRXZlbnRSYW5nZShldmVudCk7CgkJYmFja3VwRXZlbnREYXRlcyhldmVudCk7Cgl9CgoKCS8vIEVuc3VyZXMgcHJvcGVyIHZhbHVlcyBmb3IgYWxsRGF5L3N0YXJ0L2VuZC4gQWNjZXB0cyBhbiBFdmVudCBvYmplY3QsIG9yIGEgcGxhaW4gb2JqZWN0IHdpdGggZXZlbnQtaXNoIHByb3BlcnRpZXMuCgkvLyBOT1RFOiBXaWxsIG1vZGlmeSB0aGUgZ2l2ZW4gb2JqZWN0LgoJZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRSYW5nZShwcm9wcykgewoKCQlub3JtYWxpemVFdmVudFJhbmdlVGltZXMocHJvcHMpOwoKCQlpZiAocHJvcHMuZW5kICYmICFwcm9wcy5lbmQuaXNBZnRlcihwcm9wcy5zdGFydCkpIHsKCQkJcHJvcHMuZW5kID0gbnVsbDsKCQl9CgoJCWlmICghcHJvcHMuZW5kKSB7CgkJCWlmIChvcHRpb25zLmZvcmNlRXZlbnREdXJhdGlvbikgewoJCQkJcHJvcHMuZW5kID0gdC5nZXREZWZhdWx0RXZlbnRFbmQocHJvcHMuYWxsRGF5LCBwcm9wcy5zdGFydCk7CgkJCX0KCQkJZWxzZSB7CgkJCQlwcm9wcy5lbmQgPSBudWxsOwoJCQl9CgkJfQoJfQoKCgkvLyBFbnN1cmVzIHRoZSBhbGxEYXkgcHJvcGVydHkgZXhpc3RzIGFuZCB0aGUgdGltZWxpbmVzcyBvZiB0aGUgc3RhcnQvZW5kIGRhdGVzIGFyZSBjb25zaXN0ZW50CglmdW5jdGlvbiBub3JtYWxpemVFdmVudFJhbmdlVGltZXMocmFuZ2UpIHsKCQlpZiAocmFuZ2UuYWxsRGF5ID09IG51bGwpIHsKCQkJcmFuZ2UuYWxsRGF5ID0gIShyYW5nZS5zdGFydC5oYXNUaW1lKCkgfHwgKHJhbmdlLmVuZCAmJiByYW5nZS5lbmQuaGFzVGltZSgpKSk7CgkJfQoKCQlpZiAocmFuZ2UuYWxsRGF5KSB7CgkJCXJhbmdlLnN0YXJ0LnN0cmlwVGltZSgpOwoJCQlpZiAocmFuZ2UuZW5kKSB7CgkJCQkvLyBUT0RPOiBjb25zaWRlciBuZXh0RGF5VGhyZXNob2xkIGhlcmU/IElmIHNvLCB3aWxsIHJlcXVpcmUgYSBsb3Qgb2YgdGVzdGluZyBhbmQgYWRqdXN0bWVudAoJCQkJcmFuZ2UuZW5kLnN0cmlwVGltZSgpOwoJCQl9CgkJfQoJCWVsc2UgewoJCQlpZiAoIXJhbmdlLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQkJcmFuZ2Uuc3RhcnQgPSB0LnJlem9uZURhdGUocmFuZ2Uuc3RhcnQpOyAvLyB3aWxsIGFzc2lnbiBhIDAwOjAwIHRpbWUKCQkJfQoJCQlpZiAocmFuZ2UuZW5kICYmICFyYW5nZS5lbmQuaGFzVGltZSgpKSB7CgkJCQlyYW5nZS5lbmQgPSB0LnJlem9uZURhdGUocmFuZ2UuZW5kKTsgLy8gd2lsbCBhc3NpZ24gYSAwMDowMCB0aW1lCgkJCX0KCQl9Cgl9CgoKCS8vIElmIGByYW5nZWAgaXMgYSBwcm9wZXIgcmFuZ2Ugd2l0aCBhIHN0YXJ0IGFuZCBlbmQsIHJldHVybnMgdGhlIG9yaWdpbmFsIG9iamVjdC4KCS8vIElmIG1pc3NpbmcgYW4gZW5kLCBjb21wdXRlcyBhIG5ldyByYW5nZSB3aXRoIGFuIGVuZCwgY29tcHV0aW5nIGl0IGFzIGlmIGl0IHdlcmUgYW4gZXZlbnQuCgkvLyBUT0RPOiBtYWtlIHRoaXMgYSBwYXJ0IG9mIHRoZSBldmVudCAtPiBldmVudFJhbmdlIHN5c3RlbQoJZnVuY3Rpb24gZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UocmFuZ2UpIHsKCQl2YXIgYWxsRGF5OwoKCQlpZiAoIXJhbmdlLmVuZCkgewoKCQkJYWxsRGF5ID0gcmFuZ2UuYWxsRGF5OyAvLyByYW5nZSBtaWdodCBiZSBtb3JlIGV2ZW50LWlzaCB0aGFuIHdlIHRoaW5rCgkJCWlmIChhbGxEYXkgPT0gbnVsbCkgewoJCQkJYWxsRGF5ID0gIXJhbmdlLnN0YXJ0Lmhhc1RpbWUoKTsKCQkJfQoKCQkJcmFuZ2UgPSAkLmV4dGVuZCh7fSwgcmFuZ2UpOyAvLyBtYWtlIGEgY29weSwgY29weWluZyBvdmVyIG90aGVyIG1pc2MgcHJvcGVydGllcwoJCQlyYW5nZS5lbmQgPSB0LmdldERlZmF1bHRFdmVudEVuZChhbGxEYXksIHJhbmdlLnN0YXJ0KTsKCQl9CgkJcmV0dXJuIHJhbmdlOwoJfQoKCgkvLyBJZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYSByZWN1cnJpbmcgZXZlbnQsIGJyZWFrIGl0IGRvd24gaW50byBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGluc3RhbmNlcy4KCS8vIElmIG5vdCBhIHJlY3VycmluZyBldmVudCwgcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIHNpbmdsZSBvcmlnaW5hbCBldmVudC4KCS8vIElmIGdpdmVuIGEgZmFsc3kgaW5wdXQgKHByb2JhYmx5IGJlY2F1c2Ugb2YgYSBmYWlsZWQgYnVpbGRFdmVudEZyb21JbnB1dCBjYWxsKSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4KCS8vIEhBQ0s6IGNhbiBvdmVycmlkZSB0aGUgcmVjdXJyaW5nIHdpbmRvdyBieSBwcm92aWRpbmcgY3VzdG9tIHJhbmdlU3RhcnQvcmFuZ2VFbmQgKGZvciBidXNpbmVzc0hvdXJzKS4KCWZ1bmN0aW9uIGV4cGFuZEV2ZW50KGFic3RyYWN0RXZlbnQsIF9yYW5nZVN0YXJ0LCBfcmFuZ2VFbmQpIHsKCQl2YXIgZXZlbnRzID0gW107CgkJdmFyIGRvd0hhc2g7CgkJdmFyIGRvdzsKCQl2YXIgaTsKCQl2YXIgZGF0ZTsKCQl2YXIgc3RhcnRUaW1lLCBlbmRUaW1lOwoJCXZhciBzdGFydCwgZW5kOwoJCXZhciBldmVudDsKCgkJX3JhbmdlU3RhcnQgPSBfcmFuZ2VTdGFydCB8fCByYW5nZVN0YXJ0OwoJCV9yYW5nZUVuZCA9IF9yYW5nZUVuZCB8fCByYW5nZUVuZDsKCgkJaWYgKGFic3RyYWN0RXZlbnQpIHsKCQkJaWYgKGFic3RyYWN0RXZlbnQuX3JlY3VycmluZykgewoKCQkJCS8vIG1ha2UgYSBib29sZWFuIGhhc2ggYXMgdG8gd2hldGhlciB0aGUgZXZlbnQgb2NjdXJzIG9uIGVhY2ggZGF5LW9mLXdlZWsKCQkJCWlmICgoZG93ID0gYWJzdHJhY3RFdmVudC5kb3cpKSB7CgkJCQkJZG93SGFzaCA9IHt9OwoJCQkJCWZvciAoaSA9IDA7IGkgPCBkb3cubGVuZ3RoOyBpKyspIHsKCQkJCQkJZG93SGFzaFtkb3dbaV1dID0gdHJ1ZTsKCQkJCQl9CgkJCQl9CgoJCQkJLy8gaXRlcmF0ZSB0aHJvdWdoIGV2ZXJ5IGRheSBpbiB0aGUgY3VycmVudCByYW5nZQoJCQkJZGF0ZSA9IF9yYW5nZVN0YXJ0LmNsb25lKCkuc3RyaXBUaW1lKCk7IC8vIGhvbGRzIHRoZSBkYXRlIG9mIHRoZSBjdXJyZW50IGRheQoJCQkJd2hpbGUgKGRhdGUuaXNCZWZvcmUoX3JhbmdlRW5kKSkgewoKCQkJCQlpZiAoIWRvd0hhc2ggfHwgZG93SGFzaFtkYXRlLmRheSgpXSkgeyAvLyBpZiBldmVyeWRheSwgb3IgdGhpcyBwYXJ0aWN1bGFyIGRheS1vZi13ZWVrCgoJCQkJCQlzdGFydFRpbWUgPSBhYnN0cmFjdEV2ZW50LnN0YXJ0OyAvLyB0aGUgc3RvcmVkIHN0YXJ0IGFuZCBlbmQgcHJvcGVydGllcyBhcmUgdGltZXMgKER1cmF0aW9ucykKCQkJCQkJZW5kVGltZSA9IGFic3RyYWN0RXZlbnQuZW5kOyAvLyAiCgkJCQkJCXN0YXJ0ID0gZGF0ZS5jbG9uZSgpOwoJCQkJCQllbmQgPSBudWxsOwoKCQkJCQkJaWYgKHN0YXJ0VGltZSkgewoJCQkJCQkJc3RhcnQgPSBzdGFydC50aW1lKHN0YXJ0VGltZSk7CgkJCQkJCX0KCQkJCQkJaWYgKGVuZFRpbWUpIHsKCQkJCQkJCWVuZCA9IGRhdGUuY2xvbmUoKS50aW1lKGVuZFRpbWUpOwoJCQkJCQl9CgoJCQkJCQlldmVudCA9ICQuZXh0ZW5kKHt9LCBhYnN0cmFjdEV2ZW50KTsgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsCgkJCQkJCWFzc2lnbkRhdGVzVG9FdmVudCgKCQkJCQkJCXN0YXJ0LCBlbmQsCgkJCQkJCQkhc3RhcnRUaW1lICYmICFlbmRUaW1lLCAvLyBhbGxEYXk/CgkJCQkJCQlldmVudAoJCQkJCQkpOwoJCQkJCQlldmVudHMucHVzaChldmVudCk7CgkJCQkJfQoKCQkJCQlkYXRlLmFkZCgxLCAnZGF5cycpOwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJZXZlbnRzLnB1c2goYWJzdHJhY3RFdmVudCk7IC8vIHJldHVybiB0aGUgb3JpZ2luYWwgZXZlbnQuIHdpbGwgYmUgYSBvbmUtaXRlbSBhcnJheQoJCQl9CgkJfQoKCQlyZXR1cm4gZXZlbnRzOwoJfQoKCgoJLyogRXZlbnQgTW9kaWZpY2F0aW9uIE1hdGgKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gTW9kaWZpZXMgYW4gZXZlbnQgYW5kIGFsbCByZWxhdGVkIGV2ZW50cyBieSBhcHBseWluZyB0aGUgZ2l2ZW4gcHJvcGVydGllcy4KCS8vIFNwZWNpYWwgZGF0ZS1kaWZmaW5nIGxvZ2ljIGlzIHVzZWQgZm9yIG1hbmlwdWxhdGlvbiBvZiBkYXRlcy4KCS8vIElmIGBwcm9wc2AgZG9lcyBub3QgY29udGFpbiBzdGFydC9lbmQgZGF0ZXMsIHRoZSB1cGRhdGVkIHZhbHVlcyBhcmUgYXNzdW1lZCB0byBiZSB0aGUgZXZlbnQncyBjdXJyZW50IHN0YXJ0L2VuZC4KCS8vIEFsbCBkYXRlIGNvbXBhcmlzb25zIGFyZSBkb25lIGFnYWluc3QgdGhlIGV2ZW50J3MgcHJpc3RpbmUgX3N0YXJ0IGFuZCBfZW5kIGRhdGVzLgoJLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBkZWx0YSBpbmZvcm1hdGlvbiBhbmQgYSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvcGVyYXRpb25zLgoJLy8gRm9yIG1ha2luZyBjb21wdXRhdGlvbnMgaW4gYSBncmFudWxhcml0eSBncmVhdGVyIHRoYW4gZGF5L3RpbWUsIHNwZWNpZnkgbGFyZ2VVbml0LgoJLy8gTk9URTogVGhlIGdpdmVuIGBuZXdQcm9wc2AgbWlnaHQgYmUgbXV0YXRlZCBmb3Igbm9ybWFsaXphdGlvbiBwdXJwb3Nlcy4KCWZ1bmN0aW9uIG11dGF0ZUV2ZW50KGV2ZW50LCBuZXdQcm9wcywgbGFyZ2VVbml0KSB7CgkJdmFyIG1pc2NQcm9wcyA9IHt9OwoJCXZhciBvbGRQcm9wczsKCQl2YXIgY2xlYXJFbmQ7CgkJdmFyIHN0YXJ0RGVsdGE7CgkJdmFyIGVuZERlbHRhOwoJCXZhciBkdXJhdGlvbkRlbHRhOwoJCXZhciB1bmRvRnVuYzsKCgkJLy8gZGlmZnMgdGhlIGRhdGVzIGluIHRoZSBhcHByb3ByaWF0ZSB3YXksIHJldHVybmluZyBhIGR1cmF0aW9uCgkJZnVuY3Rpb24gZGlmZkRhdGVzKGRhdGUxLCBkYXRlMCkgeyAvLyBkYXRlMSAtIGRhdGUwCgkJCWlmIChsYXJnZVVuaXQpIHsKCQkJCXJldHVybiBkaWZmQnlVbml0KGRhdGUxLCBkYXRlMCwgbGFyZ2VVbml0KTsKCQkJfQoJCQllbHNlIGlmIChuZXdQcm9wcy5hbGxEYXkpIHsKCQkJCXJldHVybiBkaWZmRGF5KGRhdGUxLCBkYXRlMCk7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gZGlmZkRheVRpbWUoZGF0ZTEsIGRhdGUwKTsKCQkJfQoJCX0KCgkJbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fTsKCgkJLy8gbm9ybWFsaXplIG5ldyBkYXRlLXJlbGF0ZWQgcHJvcGVydGllcwoJCWlmICghbmV3UHJvcHMuc3RhcnQpIHsKCQkJbmV3UHJvcHMuc3RhcnQgPSBldmVudC5zdGFydC5jbG9uZSgpOwoJCX0KCQlpZiAobmV3UHJvcHMuZW5kID09PSB1bmRlZmluZWQpIHsKCQkJbmV3UHJvcHMuZW5kID0gZXZlbnQuZW5kID8gZXZlbnQuZW5kLmNsb25lKCkgOiBudWxsOwoJCX0KCQlpZiAobmV3UHJvcHMuYWxsRGF5ID09IG51bGwpIHsgLy8gaXMgbnVsbCBvciB1bmRlZmluZWQ/CgkJCW5ld1Byb3BzLmFsbERheSA9IGV2ZW50LmFsbERheTsKCQl9CgkJbm9ybWFsaXplRXZlbnRSYW5nZShuZXdQcm9wcyk7CgoJCS8vIGNyZWF0ZSBub3JtYWxpemVkIHZlcnNpb25zIG9mIHRoZSBvcmlnaW5hbCBwcm9wcyB0byBjb21wYXJlIGFnYWluc3QKCQkvLyBuZWVkIGEgcmVhbCBlbmQgdmFsdWUsIGZvciBkaWZmaW5nCgkJb2xkUHJvcHMgPSB7CgkJCXN0YXJ0OiBldmVudC5fc3RhcnQuY2xvbmUoKSwKCQkJZW5kOiBldmVudC5fZW5kID8gZXZlbnQuX2VuZC5jbG9uZSgpIDogdC5nZXREZWZhdWx0RXZlbnRFbmQoZXZlbnQuX2FsbERheSwgZXZlbnQuX3N0YXJ0KSwKCQkJYWxsRGF5OiBuZXdQcm9wcy5hbGxEYXkgLy8gbm9ybWFsaXplIHRoZSBkYXRlcyBpbiB0aGUgc2FtZSByZWdhcmQgYXMgdGhlIG5ldyBwcm9wZXJ0aWVzCgkJfTsKCQlub3JtYWxpemVFdmVudFJhbmdlKG9sZFByb3BzKTsKCgkJLy8gbmVlZCB0byBjbGVhciB0aGUgZW5kIGRhdGUgaWYgZXhwbGljaXRseSBjaGFuZ2VkIHRvIG51bGwKCQljbGVhckVuZCA9IGV2ZW50Ll9lbmQgIT09IG51bGwgJiYgbmV3UHJvcHMuZW5kID09PSBudWxsOwoKCQkvLyBjb21wdXRlIHRoZSBkZWx0YSBmb3IgbW92aW5nIHRoZSBzdGFydCBkYXRlCgkJc3RhcnREZWx0YSA9IGRpZmZEYXRlcyhuZXdQcm9wcy5zdGFydCwgb2xkUHJvcHMuc3RhcnQpOwoKCQkvLyBjb21wdXRlIHRoZSBkZWx0YSBmb3IgbW92aW5nIHRoZSBlbmQgZGF0ZQoJCWlmIChuZXdQcm9wcy5lbmQpIHsKCQkJZW5kRGVsdGEgPSBkaWZmRGF0ZXMobmV3UHJvcHMuZW5kLCBvbGRQcm9wcy5lbmQpOwoJCQlkdXJhdGlvbkRlbHRhID0gZW5kRGVsdGEuc3VidHJhY3Qoc3RhcnREZWx0YSk7CgkJfQoJCWVsc2UgewoJCQlkdXJhdGlvbkRlbHRhID0gbnVsbDsKCQl9CgoJCS8vIGdhdGhlciBhbGwgbm9uLWRhdGUtcmVsYXRlZCBwcm9wZXJ0aWVzCgkJJC5lYWNoKG5ld1Byb3BzLCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQkJaWYgKGlzTWlzY0V2ZW50UHJvcE5hbWUobmFtZSkpIHsKCQkJCWlmICh2YWwgIT09IHVuZGVmaW5lZCkgewoJCQkJCW1pc2NQcm9wc1tuYW1lXSA9IHZhbDsKCQkJCX0KCQkJfQoJCX0pOwoKCQkvLyBhcHBseSB0aGUgb3BlcmF0aW9ucyB0byB0aGUgZXZlbnQgYW5kIGFsbCByZWxhdGVkIGV2ZW50cwoJCXVuZG9GdW5jID0gbXV0YXRlRXZlbnRzKAoJCQljbGllbnRFdmVudHMoZXZlbnQuX2lkKSwgLy8gZ2V0IGV2ZW50cyB3aXRoIHRoaXMgSUQKCQkJY2xlYXJFbmQsCgkJCW5ld1Byb3BzLmFsbERheSwKCQkJc3RhcnREZWx0YSwKCQkJZHVyYXRpb25EZWx0YSwKCQkJbWlzY1Byb3BzCgkJKTsKCgkJcmV0dXJuIHsKCQkJZGF0ZURlbHRhOiBzdGFydERlbHRhLAoJCQlkdXJhdGlvbkRlbHRhOiBkdXJhdGlvbkRlbHRhLAoJCQl1bmRvOiB1bmRvRnVuYwoJCX07Cgl9CgoKCS8vIE1vZGlmaWVzIGFuIGFycmF5IG9mIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIHdheXMgKG9wZXJhdGlvbnMgYXJlIGluIG9yZGVyKToKCS8vIC0gY2xlYXIgdGhlIGV2ZW50J3MgYGVuZGAKCS8vIC0gY29udmVydCB0aGUgZXZlbnQgdG8gYWxsRGF5CgkvLyAtIGFkZCBgZGF0ZURlbHRhYCB0byB0aGUgc3RhcnQgYW5kIGVuZAoJLy8gLSBhZGQgYGR1cmF0aW9uRGVsdGFgIHRvIHRoZSBldmVudCdzIGR1cmF0aW9uCgkvLyAtIGFzc2lnbiBgbWlzY1Byb3BzYCB0byB0aGUgZXZlbnQKCS8vCgkvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIHVuZG8gYWxsIHRoZSBvcGVyYXRpb25zLgoJLy8KCS8vIFRPRE86IGRvbid0IHVzZSBzbyBtYW55IGNsb3N1cmVzLiBwb3NzaWJsZSBtZW1vcnkgaXNzdWVzIHdoZW4gbG90cyBvZiBldmVudHMgd2l0aCBzYW1lIElELgoJLy8KCWZ1bmN0aW9uIG11dGF0ZUV2ZW50cyhldmVudHMsIGNsZWFyRW5kLCBhbGxEYXksIGRhdGVEZWx0YSwgZHVyYXRpb25EZWx0YSwgbWlzY1Byb3BzKSB7CgkJdmFyIGlzQW1iaWdUaW1lem9uZSA9IHQuZ2V0SXNBbWJpZ1RpbWV6b25lKCk7CgkJdmFyIHVuZG9GdW5jdGlvbnMgPSBbXTsKCgkJLy8gbm9ybWFsaXplIHplcm8tbGVuZ3RoIGRlbHRhcyB0byBiZSBudWxsCgkJaWYgKGRhdGVEZWx0YSAmJiAhZGF0ZURlbHRhLnZhbHVlT2YoKSkgeyBkYXRlRGVsdGEgPSBudWxsOyB9CgkJaWYgKGR1cmF0aW9uRGVsdGEgJiYgIWR1cmF0aW9uRGVsdGEudmFsdWVPZigpKSB7IGR1cmF0aW9uRGVsdGEgPSBudWxsOyB9CgoJCSQuZWFjaChldmVudHMsIGZ1bmN0aW9uKGksIGV2ZW50KSB7CgkJCXZhciBvbGRQcm9wczsKCQkJdmFyIG5ld1Byb3BzOwoKCQkJLy8gYnVpbGQgYW4gb2JqZWN0IGhvbGRpbmcgYWxsIHRoZSBvbGQgdmFsdWVzLCBib3RoIGRhdGUtcmVsYXRlZCBhbmQgbWlzYy4KCQkJLy8gZm9yIHRoZSB1bmRvIGZ1bmN0aW9uLgoJCQlvbGRQcm9wcyA9IHsKCQkJCXN0YXJ0OiBldmVudC5zdGFydC5jbG9uZSgpLAoJCQkJZW5kOiBldmVudC5lbmQgPyBldmVudC5lbmQuY2xvbmUoKSA6IG51bGwsCgkJCQlhbGxEYXk6IGV2ZW50LmFsbERheQoJCQl9OwoJCQkkLmVhY2gobWlzY1Byb3BzLCBmdW5jdGlvbihuYW1lKSB7CgkJCQlvbGRQcm9wc1tuYW1lXSA9IGV2ZW50W25hbWVdOwoJCQl9KTsKCgkJCS8vIG5ldyBkYXRlLXJlbGF0ZWQgcHJvcGVydGllcy4gd29yayBvZmYgdGhlIG9yaWdpbmFsIGRhdGUgc25hcHNob3QuCgkJCS8vIG9rIHRvIHVzZSByZWZlcmVuY2VzIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRocm93biBhd2F5IHdoZW4gYmFja3VwRXZlbnREYXRlcyBpcyBjYWxsZWQuCgkJCW5ld1Byb3BzID0gewoJCQkJc3RhcnQ6IGV2ZW50Ll9zdGFydCwKCQkJCWVuZDogZXZlbnQuX2VuZCwKCQkJCWFsbERheTogYWxsRGF5IC8vIG5vcm1hbGl6ZSB0aGUgZGF0ZXMgaW4gdGhlIHNhbWUgcmVnYXJkIGFzIHRoZSBuZXcgcHJvcGVydGllcwoJCQl9OwoJCQlub3JtYWxpemVFdmVudFJhbmdlKG5ld1Byb3BzKTsgLy8gbWFzc2FnZXMgc3RhcnQvZW5kL2FsbERheQoKCQkJLy8gc3RyaXAgb3IgZW5zdXJlIHRoZSBlbmQgZGF0ZQoJCQlpZiAoY2xlYXJFbmQpIHsKCQkJCW5ld1Byb3BzLmVuZCA9IG51bGw7CgkJCX0KCQkJZWxzZSBpZiAoZHVyYXRpb25EZWx0YSAmJiAhbmV3UHJvcHMuZW5kKSB7IC8vIHRoZSBkdXJhdGlvbiB0cmFuc2xhdGlvbiByZXF1aXJlcyBhbiBlbmQgZGF0ZQoJCQkJbmV3UHJvcHMuZW5kID0gdC5nZXREZWZhdWx0RXZlbnRFbmQobmV3UHJvcHMuYWxsRGF5LCBuZXdQcm9wcy5zdGFydCk7CgkJCX0KCgkJCWlmIChkYXRlRGVsdGEpIHsKCQkJCW5ld1Byb3BzLnN0YXJ0LmFkZChkYXRlRGVsdGEpOwoJCQkJaWYgKG5ld1Byb3BzLmVuZCkgewoJCQkJCW5ld1Byb3BzLmVuZC5hZGQoZGF0ZURlbHRhKTsKCQkJCX0KCQkJfQoKCQkJaWYgKGR1cmF0aW9uRGVsdGEpIHsKCQkJCW5ld1Byb3BzLmVuZC5hZGQoZHVyYXRpb25EZWx0YSk7IC8vIGVuZCBhbHJlYWR5IGVuc3VyZWQgYWJvdmUKCQkJfQoKCQkJLy8gaWYgdGhlIGRhdGVzIGhhdmUgY2hhbmdlZCwgYW5kIHdlIGtub3cgaXQgaXMgaW1wb3NzaWJsZSB0byByZWNvbXB1dGUgdGhlCgkJCS8vIHRpbWV6b25lIG9mZnNldHMsIHN0cmlwIHRoZSB6b25lLgoJCQlpZiAoCgkJCQlpc0FtYmlnVGltZXpvbmUgJiYKCQkJCSFuZXdQcm9wcy5hbGxEYXkgJiYKCQkJCShkYXRlRGVsdGEgfHwgZHVyYXRpb25EZWx0YSkKCQkJKSB7CgkJCQluZXdQcm9wcy5zdGFydC5zdHJpcFpvbmUoKTsKCQkJCWlmIChuZXdQcm9wcy5lbmQpIHsKCQkJCQluZXdQcm9wcy5lbmQuc3RyaXBab25lKCk7CgkJCQl9CgkJCX0KCgkJCSQuZXh0ZW5kKGV2ZW50LCBtaXNjUHJvcHMsIG5ld1Byb3BzKTsgLy8gY29weSBvdmVyIG1pc2MgcHJvcHMsIHRoZW4gZGF0ZS1yZWxhdGVkIHByb3BzCgkJCWJhY2t1cEV2ZW50RGF0ZXMoZXZlbnQpOyAvLyByZWdlbmVyYXRlIGludGVybmFsIF9zdGFydC9fZW5kL19hbGxEYXkKCgkJCXVuZG9GdW5jdGlvbnMucHVzaChmdW5jdGlvbigpIHsKCQkJCSQuZXh0ZW5kKGV2ZW50LCBvbGRQcm9wcyk7CgkJCQliYWNrdXBFdmVudERhdGVzKGV2ZW50KTsgLy8gcmVnZW5lcmF0ZSBpbnRlcm5hbCBfc3RhcnQvX2VuZC9fYWxsRGF5CgkJCX0pOwoJCX0pOwoKCQlyZXR1cm4gZnVuY3Rpb24oKSB7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgdW5kb0Z1bmN0aW9ucy5sZW5ndGg7IGkrKykgewoJCQkJdW5kb0Z1bmN0aW9uc1tpXSgpOwoJCQl9CgkJfTsKCX0KCgoJLyogQnVzaW5lc3MgSG91cnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgl0LmdldEJ1c2luZXNzSG91cnNFdmVudHMgPSBnZXRCdXNpbmVzc0hvdXJzRXZlbnRzOwoKCgkvLyBSZXR1cm5zIGFuIGFycmF5IG9mIGV2ZW50cyBhcyB0byB3aGVuIHRoZSBidXNpbmVzcyBob3VycyBvY2N1ciBpbiB0aGUgZ2l2ZW4gdmlldy4KCS8vIEFidXNlIG9mIG91ciBldmVudCBzeXN0ZW0gOigKCWZ1bmN0aW9uIGdldEJ1c2luZXNzSG91cnNFdmVudHMod2hvbGVEYXkpIHsKCQl2YXIgb3B0aW9uVmFsID0gb3B0aW9ucy5idXNpbmVzc0hvdXJzOwoJCXZhciBkZWZhdWx0VmFsID0gewoJCQljbGFzc05hbWU6ICdmYy1ub25idXNpbmVzcycsCgkJCXN0YXJ0OiAnMDk6MDAnLAoJCQllbmQ6ICcxNzowMCcsCgkJCWRvdzogWyAxLCAyLCAzLCA0LCA1IF0sIC8vIG1vbmRheSAtIGZyaWRheQoJCQlyZW5kZXJpbmc6ICdpbnZlcnNlLWJhY2tncm91bmQnCgkJfTsKCQl2YXIgdmlldyA9IHQuZ2V0VmlldygpOwoJCXZhciBldmVudElucHV0OwoKCQlpZiAob3B0aW9uVmFsKSB7IC8vIGB0cnVlYCAod2hpY2ggbWVhbnMgInVzZSB0aGUgZGVmYXVsdHMiKSBvciBhbiBvdmVycmlkZSBvYmplY3QKCQkJZXZlbnRJbnB1dCA9ICQuZXh0ZW5kKAoJCQkJe30sIC8vIGNvcHkgdG8gYSBuZXcgb2JqZWN0IGluIGVpdGhlciBjYXNlCgkJCQlkZWZhdWx0VmFsLAoJCQkJdHlwZW9mIG9wdGlvblZhbCA9PT0gJ29iamVjdCcgPyBvcHRpb25WYWwgOiB7fSAvLyBvdmVycmlkZSB0aGUgZGVmYXVsdHMKCQkJKTsKCQl9CgoJCWlmIChldmVudElucHV0KSB7CgoJCQkvLyBpZiBhIHdob2xlLWRheSBzZXJpZXMgaXMgcmVxdWVzdGVkLCBjbGVhciB0aGUgc3RhcnQvZW5kIHRpbWVzCgkJCWlmICh3aG9sZURheSkgewoJCQkJZXZlbnRJbnB1dC5zdGFydCA9IG51bGw7CgkJCQlldmVudElucHV0LmVuZCA9IG51bGw7CgkJCX0KCgkJCXJldHVybiBleHBhbmRFdmVudCgKCQkJCWJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCksCgkJCQl2aWV3LnN0YXJ0LAoJCQkJdmlldy5lbmQKCQkJKTsKCQl9CgoJCXJldHVybiBbXTsKCX0KCgoJLyogT3ZlcmxhcHBpbmcgLyBDb25zdHJhaW5pbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgl0LmlzRXZlbnRSYW5nZUFsbG93ZWQgPSBpc0V2ZW50UmFuZ2VBbGxvd2VkOwoJdC5pc1NlbGVjdGlvblJhbmdlQWxsb3dlZCA9IGlzU2VsZWN0aW9uUmFuZ2VBbGxvd2VkOwoJdC5pc0V4dGVybmFsRHJvcFJhbmdlQWxsb3dlZCA9IGlzRXh0ZXJuYWxEcm9wUmFuZ2VBbGxvd2VkOwoKCglmdW5jdGlvbiBpc0V2ZW50UmFuZ2VBbGxvd2VkKHJhbmdlLCBldmVudCkgewoJCXZhciBzb3VyY2UgPSBldmVudC5zb3VyY2UgfHwge307CgkJdmFyIGNvbnN0cmFpbnQgPSBmaXJzdERlZmluZWQoCgkJCWV2ZW50LmNvbnN0cmFpbnQsCgkJCXNvdXJjZS5jb25zdHJhaW50LAoJCQlvcHRpb25zLmV2ZW50Q29uc3RyYWludAoJCSk7CgkJdmFyIG92ZXJsYXAgPSBmaXJzdERlZmluZWQoCgkJCWV2ZW50Lm92ZXJsYXAsCgkJCXNvdXJjZS5vdmVybGFwLAoJCQlvcHRpb25zLmV2ZW50T3ZlcmxhcAoJCSk7CgoJCXJhbmdlID0gZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UocmFuZ2UpOyAvLyBlbnN1cmUgYSBwcm9wZXIgcmFuZ2Ugd2l0aCBhbiBlbmQgZm9yIGlzUmFuZ2VBbGxvd2VkCgoJCXJldHVybiBpc1JhbmdlQWxsb3dlZChyYW5nZSwgY29uc3RyYWludCwgb3ZlcmxhcCwgZXZlbnQpOwoJfQoKCglmdW5jdGlvbiBpc1NlbGVjdGlvblJhbmdlQWxsb3dlZChyYW5nZSkgewoJCXJldHVybiBpc1JhbmdlQWxsb3dlZChyYW5nZSwgb3B0aW9ucy5zZWxlY3RDb25zdHJhaW50LCBvcHRpb25zLnNlbGVjdE92ZXJsYXApOwoJfQoKCgkvLyB3aGVuIGBldmVudFByb3BzYCBpcyBkZWZpbmVkLCBjb25zaWRlciB0aGlzIGFuIGV2ZW50LgoJLy8gYGV2ZW50UHJvcHNgIGNhbiBjb250YWluIG1pc2Mgbm9uLWRhdGUtcmVsYXRlZCBpbmZvIGFib3V0IHRoZSBldmVudC4KCWZ1bmN0aW9uIGlzRXh0ZXJuYWxEcm9wUmFuZ2VBbGxvd2VkKHJhbmdlLCBldmVudFByb3BzKSB7CgkJdmFyIGV2ZW50SW5wdXQ7CgkJdmFyIGV2ZW50OwoKCQkvLyBub3RlOiB2ZXJ5IHNpbWlsYXIgbG9naWMgaXMgaW4gVmlldydzIHJlcG9ydEV4dGVybmFsRHJvcAoJCWlmIChldmVudFByb3BzKSB7CgkJCWV2ZW50SW5wdXQgPSAkLmV4dGVuZCh7fSwgZXZlbnRQcm9wcywgcmFuZ2UpOwoJCQlldmVudCA9IGV4cGFuZEV2ZW50KGJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCkpWzBdOwoJCX0KCgkJaWYgKGV2ZW50KSB7CgkJCXJldHVybiBpc0V2ZW50UmFuZ2VBbGxvd2VkKHJhbmdlLCBldmVudCk7CgkJfQoJCWVsc2UgeyAvLyB0cmVhdCBpdCBhcyBhIHNlbGVjdGlvbgoKCQkJcmFuZ2UgPSBlbnN1cmVWaXNpYmxlRXZlbnRSYW5nZShyYW5nZSk7IC8vIGVuc3VyZSBhIHByb3BlciByYW5nZSB3aXRoIGFuIGVuZCBmb3IgaXNTZWxlY3Rpb25SYW5nZUFsbG93ZWQKCgkJCXJldHVybiBpc1NlbGVjdGlvblJhbmdlQWxsb3dlZChyYW5nZSk7CgkJfQoJfQoKCgkvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJhbmdlIChjYXVzZWQgYnkgYW4gZXZlbnQgZHJvcC9yZXNpemUgb3IgYSBzZWxlY3Rpb24pIGlzIGFsbG93ZWQgdG8gZXhpc3QKCS8vIGFjY29yZGluZyB0byB0aGUgY29uc3RyYWludC9vdmVybGFwIHNldHRpbmdzLgoJLy8gYGV2ZW50YCBpcyBub3QgcmVxdWlyZWQgaWYgY2hlY2tpbmcgYSBzZWxlY3Rpb24uCglmdW5jdGlvbiBpc1JhbmdlQWxsb3dlZChyYW5nZSwgY29uc3RyYWludCwgb3ZlcmxhcCwgZXZlbnQpIHsKCQl2YXIgY29uc3RyYWludEV2ZW50czsKCQl2YXIgYW55Q29udGFpbm1lbnQ7CgkJdmFyIHBlZXJFdmVudHM7CgkJdmFyIGksIHBlZXJFdmVudDsKCQl2YXIgcGVlck92ZXJsYXA7CgoJCS8vIG5vcm1hbGl6ZS4gZnlpLCB3ZSdyZSBub3JtYWxpemluZyBpbiB0b28gbWFueSBwbGFjZXMgOigKCQlyYW5nZSA9ICQuZXh0ZW5kKHt9LCByYW5nZSk7IC8vIGNvcHkgYWxsIHByb3BlcnRpZXMgaW4gY2FzZSB0aGVyZSBhcmUgbWlzYyBub24tZGF0ZSBwcm9wZXJ0aWVzCgkJcmFuZ2Uuc3RhcnQgPSByYW5nZS5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoJCXJhbmdlLmVuZCA9IHJhbmdlLmVuZC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoKCQkvLyB0aGUgcmFuZ2UgbXVzdCBiZSBmdWxseSBjb250YWluZWQgYnkgYXQgbGVhc3Qgb25lIG9mIHByb2R1Y2VkIGNvbnN0cmFpbnQgZXZlbnRzCgkJaWYgKGNvbnN0cmFpbnQgIT0gbnVsbCkgewoKCQkJLy8gbm90IHRyZWF0ZWQgYXMgYW4gZXZlbnQhIGludGVybWVkaWF0ZSBkYXRhIHN0cnVjdHVyZQoJCQkvLyBUT0RPOiB1c2UgcmFuZ2VzIGluIHRoZSBmdXR1cmUKCQkJY29uc3RyYWludEV2ZW50cyA9IGNvbnN0cmFpbnRUb0V2ZW50cyhjb25zdHJhaW50KTsKCgkJCWFueUNvbnRhaW5tZW50ID0gZmFsc2U7CgkJCWZvciAoaSA9IDA7IGkgPCBjb25zdHJhaW50RXZlbnRzLmxlbmd0aDsgaSsrKSB7CgkJCQlpZiAoZXZlbnRDb250YWluc1JhbmdlKGNvbnN0cmFpbnRFdmVudHNbaV0sIHJhbmdlKSkgewoJCQkJCWFueUNvbnRhaW5tZW50ID0gdHJ1ZTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoKCQkJaWYgKCFhbnlDb250YWlubWVudCkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoKCQlwZWVyRXZlbnRzID0gdC5nZXRQZWVyRXZlbnRzKGV2ZW50LCByYW5nZSk7CgoJCWZvciAoaSA9IDA7IGkgPCBwZWVyRXZlbnRzLmxlbmd0aDsgaSsrKSAgewoJCQlwZWVyRXZlbnQgPSBwZWVyRXZlbnRzW2ldOwoKCQkJLy8gdGhlcmUgbmVlZHMgdG8gYmUgYW4gYWN0dWFsIGludGVyc2VjdGlvbiBiZWZvcmUgZGlzYWxsb3dpbmcgYW55dGhpbmcKCQkJaWYgKGV2ZW50SW50ZXJzZWN0c1JhbmdlKHBlZXJFdmVudCwgcmFuZ2UpKSB7CgoJCQkJLy8gZXZhbHVhdGUgb3ZlcmxhcCBmb3IgdGhlIGdpdmVuIHJhbmdlIGFuZCBzaG9ydC1jaXJjdWl0IGlmIG5lY2Vzc2FyeQoJCQkJaWYgKG92ZXJsYXAgPT09IGZhbHNlKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJLy8gaWYgdGhlIGV2ZW50J3Mgb3ZlcmxhcCBpcyBhIHRlc3QgZnVuY3Rpb24sIHBhc3MgdGhlIHBlZXIgZXZlbnQgaW4gcXVlc3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtCgkJCQllbHNlIGlmICh0eXBlb2Ygb3ZlcmxhcCA9PT0gJ2Z1bmN0aW9uJyAmJiAhb3ZlcmxhcChwZWVyRXZlbnQsIGV2ZW50KSkgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCgkJCQkvLyBpZiB3ZSBhcmUgY29tcHV0aW5nIGlmIHRoZSBnaXZlbiByYW5nZSBpcyBhbGxvd2FibGUgZm9yIGFuIGV2ZW50LCBjb25zaWRlciB0aGUgb3RoZXIgZXZlbnQncwoJCQkJLy8gRXZlbnRPYmplY3Qtc3BlY2lmaWMgb3IgU291cmNlLXNwZWNpZmljIGBvdmVybGFwYCBwcm9wZXJ0eQoJCQkJaWYgKGV2ZW50KSB7CgkJCQkJcGVlck92ZXJsYXAgPSBmaXJzdERlZmluZWQoCgkJCQkJCXBlZXJFdmVudC5vdmVybGFwLAoJCQkJCQkocGVlckV2ZW50LnNvdXJjZSB8fCB7fSkub3ZlcmxhcAoJCQkJCQkvLyB3ZSBhbHJlYWR5IGNvbnNpZGVyZWQgdGhlIGdsb2JhbCBgZXZlbnRPdmVybGFwYAoJCQkJCSk7CgkJCQkJaWYgKHBlZXJPdmVybGFwID09PSBmYWxzZSkgewoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJCS8vIGlmIHRoZSBwZWVyIGV2ZW50J3Mgb3ZlcmxhcCBpcyBhIHRlc3QgZnVuY3Rpb24sIHBhc3MgdGhlIHN1YmplY3QgZXZlbnQgYXMgdGhlIGZpcnN0IHBhcmFtCgkJCQkJaWYgKHR5cGVvZiBwZWVyT3ZlcmxhcCA9PT0gJ2Z1bmN0aW9uJyAmJiAhcGVlck92ZXJsYXAoZXZlbnQsIHBlZXJFdmVudCkpIHsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8vIEdpdmVuIGFuIGV2ZW50IGlucHV0IGZyb20gdGhlIEFQSSwgcHJvZHVjZXMgYW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cy4gUG9zc2libGUgZXZlbnQgaW5wdXRzOgoJLy8gJ2J1c2luZXNzSG91cnMnCgkvLyBBbiBldmVudCBJRCAobnVtYmVyIG9yIHN0cmluZykKCS8vIEFuIG9iamVjdCB3aXRoIHNwZWNpZmljIHN0YXJ0L2VuZCBkYXRlcyBvciBhIHJlY3VycmluZyBldmVudCAobGlrZSB3aGF0IGJ1c2luZXNzSG91cnMgYWNjZXB0cykKCWZ1bmN0aW9uIGNvbnN0cmFpbnRUb0V2ZW50cyhjb25zdHJhaW50SW5wdXQpIHsKCgkJaWYgKGNvbnN0cmFpbnRJbnB1dCA9PT0gJ2J1c2luZXNzSG91cnMnKSB7CgkJCXJldHVybiBnZXRCdXNpbmVzc0hvdXJzRXZlbnRzKCk7CgkJfQoKCQlpZiAodHlwZW9mIGNvbnN0cmFpbnRJbnB1dCA9PT0gJ29iamVjdCcpIHsKCQkJcmV0dXJuIGV4cGFuZEV2ZW50KGJ1aWxkRXZlbnRGcm9tSW5wdXQoY29uc3RyYWludElucHV0KSk7CgkJfQoKCQlyZXR1cm4gY2xpZW50RXZlbnRzKGNvbnN0cmFpbnRJbnB1dCk7IC8vIHByb2JhYmx5IGFuIElECgl9CgoKCS8vIERvZXMgdGhlIGV2ZW50J3MgZGF0ZSByYW5nZSBmdWxseSBjb250YWluIHRoZSBnaXZlbiByYW5nZT8KCS8vIHN0YXJ0L2VuZCBhbHJlYWR5IGFzc3VtZWQgdG8gaGF2ZSBzdHJpcHBlZCB6b25lcyA6KAoJZnVuY3Rpb24gZXZlbnRDb250YWluc1JhbmdlKGV2ZW50LCByYW5nZSkgewoJCXZhciBldmVudFN0YXJ0ID0gZXZlbnQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKTsKCQl2YXIgZXZlbnRFbmQgPSB0LmdldEV2ZW50RW5kKGV2ZW50KS5zdHJpcFpvbmUoKTsKCgkJcmV0dXJuIHJhbmdlLnN0YXJ0ID49IGV2ZW50U3RhcnQgJiYgcmFuZ2UuZW5kIDw9IGV2ZW50RW5kOwoJfQoKCgkvLyBEb2VzIHRoZSBldmVudCdzIGRhdGUgcmFuZ2UgaW50ZXJzZWN0IHdpdGggdGhlIGdpdmVuIHJhbmdlPwoJLy8gc3RhcnQvZW5kIGFscmVhZHkgYXNzdW1lZCB0byBoYXZlIHN0cmlwcGVkIHpvbmVzIDooCglmdW5jdGlvbiBldmVudEludGVyc2VjdHNSYW5nZShldmVudCwgcmFuZ2UpIHsKCQl2YXIgZXZlbnRTdGFydCA9IGV2ZW50LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCk7CgkJdmFyIGV2ZW50RW5kID0gdC5nZXRFdmVudEVuZChldmVudCkuc3RyaXBab25lKCk7CgoJCXJldHVybiByYW5nZS5zdGFydCA8IGV2ZW50RW5kICYmIHJhbmdlLmVuZCA+IGV2ZW50U3RhcnQ7Cgl9CgoKCXQuZ2V0RXZlbnRDYWNoZSA9IGZ1bmN0aW9uKCkgewoJCXJldHVybiBjYWNoZTsKCX07Cgp9CgoKLy8gUmV0dXJucyBhIGxpc3Qgb2YgZXZlbnRzIHRoYXQgdGhlIGdpdmVuIGV2ZW50IHNob3VsZCBiZSBjb21wYXJlZCBhZ2FpbnN0IHdoZW4gYmVpbmcgY29uc2lkZXJlZCBmb3IgYSBtb3ZlIHRvCi8vIHRoZSBzcGVjaWZpZWQgcmFuZ2UuIEF0dGFjaGVkIHRvIHRoZSBDYWxlbmRhcidzIHByb3RvdHlwZSBiZWNhdXNlIEV2ZW50TWFuYWdlciBpcyBhIG1peGluIGZvciBhIENhbGVuZGFyLgpDYWxlbmRhci5wcm90b3R5cGUuZ2V0UGVlckV2ZW50cyA9IGZ1bmN0aW9uKGV2ZW50LCByYW5nZSkgewoJdmFyIGNhY2hlID0gdGhpcy5nZXRFdmVudENhY2hlKCk7Cgl2YXIgcGVlckV2ZW50cyA9IFtdOwoJdmFyIGksIG90aGVyRXZlbnQ7CgoJZm9yIChpID0gMDsgaSA8IGNhY2hlLmxlbmd0aDsgaSsrKSB7CgkJb3RoZXJFdmVudCA9IGNhY2hlW2ldOwoJCWlmICgKCQkJIWV2ZW50IHx8CgkJCWV2ZW50Ll9pZCAhPT0gb3RoZXJFdmVudC5faWQgLy8gZG9uJ3QgY29tcGFyZSB0aGUgZXZlbnQgdG8gaXRzZWxmIG9yIG90aGVyIHJlbGF0ZWQgW3JlcGVhdGluZ10gZXZlbnRzCgkJKSB7CgkJCXBlZXJFdmVudHMucHVzaChvdGhlckV2ZW50KTsKCQl9Cgl9CgoJcmV0dXJuIHBlZXJFdmVudHM7Cn07CgoKLy8gdXBkYXRlcyB0aGUgImJhY2t1cCIgcHJvcGVydGllcywgd2hpY2ggYXJlIHByZXNlcnZlZCBpbiBvcmRlciB0byBjb21wdXRlIGRpZmZzIGxhdGVyIG9uLgpmdW5jdGlvbiBiYWNrdXBFdmVudERhdGVzKGV2ZW50KSB7CglldmVudC5fYWxsRGF5ID0gZXZlbnQuYWxsRGF5OwoJZXZlbnQuX3N0YXJ0ID0gZXZlbnQuc3RhcnQuY2xvbmUoKTsKCWV2ZW50Ll9lbmQgPSBldmVudC5lbmQgPyBldmVudC5lbmQuY2xvbmUoKSA6IG51bGw7Cn0KCjs7CgovKiBBbiBhYnN0cmFjdCBjbGFzcyBmb3IgdGhlICJiYXNpYyIgdmlld3MsIGFzIHdlbGwgYXMgbW9udGggdmlldy4gUmVuZGVycyBvbmUgb3IgbW9yZSByb3dzIG9mIGRheSBjZWxscy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIEl0IGlzIGEgbWFuYWdlciBmb3IgYSBEYXlHcmlkIHN1YmNvbXBvbmVudCwgd2hpY2ggZG9lcyBtb3N0IG9mIHRoZSBoZWF2eSBsaWZ0aW5nLgovLyBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgd2lkdGgvaGVpZ2h0LgoKdmFyIEJhc2ljVmlldyA9IFZpZXcuZXh0ZW5kKHsKCglkYXlHcmlkOiBudWxsLCAvLyB0aGUgbWFpbiBzdWJjb21wb25lbnQgdGhhdCBkb2VzIG1vc3Qgb2YgdGhlIGhlYXZ5IGxpZnRpbmcKCglkYXlOdW1iZXJzVmlzaWJsZTogZmFsc2UsIC8vIGRpc3BsYXkgZGF5IG51bWJlcnMgb24gZWFjaCBkYXkgY2VsbD8KCXdlZWtOdW1iZXJzVmlzaWJsZTogZmFsc2UsIC8vIGRpc3BsYXkgd2VlayBudW1iZXJzIGFsb25nIHRoZSBzaWRlPwoKCXdlZWtOdW1iZXJXaWR0aDogbnVsbCwgLy8gd2lkdGggb2YgYWxsIHRoZSB3ZWVrLW51bWJlciBjZWxscyBydW5uaW5nIGRvd24gdGhlIHNpZGUKCgloZWFkUm93RWw6IG51bGwsIC8vIHRoZSBmYWtlIHJvdyBlbGVtZW50IG9mIHRoZSBkYXktb2Ytd2VlayBoZWFkZXIKCgoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXlHcmlkID0gbmV3IERheUdyaWQodGhpcyk7CgkJdGhpcy5jb29yZE1hcCA9IHRoaXMuZGF5R3JpZC5jb29yZE1hcDsgLy8gdGhlIHZpZXcncyBkYXRlLXRvLWNlbGwgbWFwcGluZyBpcyBpZGVudGljYWwgdG8gdGhlIHN1YmNvbXBvbmVudCdzCgl9LAoKCgkvLyBTZXRzIHRoZSBkaXNwbGF5IHJhbmdlIGFuZCBjb21wdXRlcyBhbGwgbmVjZXNzYXJ5IGRhdGVzCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQlWaWV3LnByb3RvdHlwZS5zZXRSYW5nZS5jYWxsKHRoaXMsIHJhbmdlKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCXRoaXMuZGF5R3JpZC5icmVha09uV2Vla3MgPSAveWVhcnxtb250aHx3ZWVrLy50ZXN0KHRoaXMuaW50ZXJ2YWxVbml0KTsgLy8gZG8gYmVmb3JlIHNldFJhbmdlCgkJdGhpcy5kYXlHcmlkLnNldFJhbmdlKHJhbmdlKTsKCX0sCgoKCS8vIENvbXB1dGUgdGhlIHZhbHVlIHRvIGZlZWQgaW50byBzZXRSYW5nZS4gT3ZlcnJpZGVzIHN1cGVyY2xhc3MuCgljb21wdXRlUmFuZ2U6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgcmFuZ2UgPSBWaWV3LnByb3RvdHlwZS5jb21wdXRlUmFuZ2UuY2FsbCh0aGlzLCBkYXRlKTsgLy8gZ2V0IHZhbHVlIGZyb20gdGhlIHN1cGVyLW1ldGhvZAoKCQkvLyB5ZWFyIGFuZCBtb250aCB2aWV3cyBzaG91bGQgYmUgYWxpZ25lZCB3aXRoIHdlZWtzLiB0aGlzIGlzIGFscmVhZHkgZG9uZSBmb3Igd2VlawoJCWlmICgveWVhcnxtb250aC8udGVzdChyYW5nZS5pbnRlcnZhbFVuaXQpKSB7CgkJCXJhbmdlLnN0YXJ0LnN0YXJ0T2YoJ3dlZWsnKTsKCQkJcmFuZ2Uuc3RhcnQgPSB0aGlzLnNraXBIaWRkZW5EYXlzKHJhbmdlLnN0YXJ0KTsKCgkJCS8vIG1ha2UgZW5kLW9mLXdlZWsgaWYgbm90IGFscmVhZHkKCQkJaWYgKHJhbmdlLmVuZC53ZWVrZGF5KCkpIHsKCQkJCXJhbmdlLmVuZC5hZGQoMSwgJ3dlZWsnKS5zdGFydE9mKCd3ZWVrJyk7CgkJCQlyYW5nZS5lbmQgPSB0aGlzLnNraXBIaWRkZW5EYXlzKHJhbmdlLmVuZCwgLTEsIHRydWUpOyAvLyBleGNsdXNpdmVseSBtb3ZlIGJhY2t3YXJkcwoJCQl9CgkJfQoKCQlyZXR1cm4gcmFuZ2U7Cgl9LAoKCgkvLyBSZW5kZXJzIHRoZSB2aWV3IGludG8gYHRoaXMuZWxgLCB3aGljaCBzaG91bGQgYWxyZWFkeSBiZSBhc3NpZ25lZAoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoKCQl0aGlzLmRheU51bWJlcnNWaXNpYmxlID0gdGhpcy5kYXlHcmlkLnJvd0NudCA+IDE7IC8vIFRPRE86IG1ha2UgZ3JpZCByZXNwb25zaWJsZQoJCXRoaXMud2Vla051bWJlcnNWaXNpYmxlID0gdGhpcy5vcHQoJ3dlZWtOdW1iZXJzJyk7CgkJdGhpcy5kYXlHcmlkLm51bWJlcnNWaXNpYmxlID0gdGhpcy5kYXlOdW1iZXJzVmlzaWJsZSB8fCB0aGlzLndlZWtOdW1iZXJzVmlzaWJsZTsKCgkJdGhpcy5lbC5hZGRDbGFzcygnZmMtYmFzaWMtdmlldycpLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpOwoKCQl0aGlzLmhlYWRSb3dFbCA9IHRoaXMuZWwuZmluZCgndGhlYWQgLmZjLXJvdycpOwoKCQl0aGlzLnNjcm9sbGVyRWwgPSB0aGlzLmVsLmZpbmQoJy5mYy1kYXktZ3JpZC1jb250YWluZXInKTsKCQl0aGlzLmRheUdyaWQuY29vcmRNYXAuY29udGFpbmVyRWwgPSB0aGlzLnNjcm9sbGVyRWw7IC8vIGNvbnN0cmFpbiBjbGlja3MvZXRjIHRvIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBzY3JvbGxlcgoKCQl0aGlzLmRheUdyaWQuc2V0RWxlbWVudCh0aGlzLmVsLmZpbmQoJy5mYy1kYXktZ3JpZCcpKTsKCQl0aGlzLmRheUdyaWQucmVuZGVyRGF0ZXModGhpcy5oYXNSaWdpZFJvd3MoKSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIGNvbnRlbnQgb2YgdGhlIHZpZXcuIFNpbmNlIHdlIGhhdmVuJ3Qgc2VwYXJhdGVkIHNrZWxldG9uIHJlbmRlcmluZyBmcm9tIGRhdGUgcmVuZGVyaW5nLAoJLy8gYWx3YXlzIGNvbXBsZXRlbHkga2lsbCB0aGUgZGF5R3JpZCdzIHJlbmRlcmluZy4KCXVucmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckRhdGVzKCk7CgkJdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKTsKCX0sCgoKCXJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7Cgl9LAoKCgkvLyBCdWlsZHMgdGhlIEhUTUwgc2tlbGV0b24gZm9yIHRoZSB2aWV3LgoJLy8gVGhlIGRheS1ncmlkIGNvbXBvbmVudCB3aWxsIHJlbmRlciBpbnNpZGUgb2YgYSBjb250YWluZXIgZGVmaW5lZCBieSB0aGlzIEhUTUwuCglyZW5kZXJIdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJycgKwoJCQknPHRhYmxlPicgKwoJCQkJJzx0aGVhZCBjbGFzcz0iZmMtaGVhZCI+JyArCgkJCQkJJzx0cj4nICsKCQkJCQkJJzx0ZCBjbGFzcz0iJyArIHRoaXMud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIj4nICsKCQkJCQkJCXRoaXMuZGF5R3JpZC5oZWFkSHRtbCgpICsgLy8gcmVuZGVyIHRoZSBkYXktb2Ytd2VlayBoZWFkZXJzCgkJCQkJCSc8L3RkPicgKwoJCQkJCSc8L3RyPicgKwoJCQkJJzwvdGhlYWQ+JyArCgkJCQknPHRib2R5IGNsYXNzPSJmYy1ib2R5Ij4nICsKCQkJCQknPHRyPicgKwoJCQkJCQknPHRkIGNsYXNzPSInICsgdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIj4nICsKCQkJCQkJCSc8ZGl2IGNsYXNzPSJmYy1kYXktZ3JpZC1jb250YWluZXIiPicgKwoJCQkJCQkJCSc8ZGl2IGNsYXNzPSJmYy1kYXktZ3JpZCIvPicgKwoJCQkJCQkJJzwvZGl2PicgKwoJCQkJCQknPC90ZD4nICsKCQkJCQknPC90cj4nICsKCQkJCSc8L3Rib2R5PicgKwoJCQknPC90YWJsZT4nOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIHRoYXQgd2lsbCBnbyBiZWZvcmUgdGhlIGRheS1vZiB3ZWVrIGhlYWRlciBjZWxscy4KCS8vIFF1ZXJpZWQgYnkgdGhlIERheUdyaWQgc3ViY29tcG9uZW50IHdoZW4gZ2VuZXJhdGluZyByb3dzLiBPcmRlcmluZyBkZXBlbmRzIG9uIGlzUlRMLgoJaGVhZEludHJvSHRtbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMud2Vla051bWJlcnNWaXNpYmxlKSB7CgkJCXJldHVybiAnJyArCgkJCQknPHRoIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB0aGlzLndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJJzxzcGFuPicgKyAvLyBuZWVkZWQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQlodG1sRXNjYXBlKHRoaXMub3B0KCd3ZWVrTnVtYmVyVGl0bGUnKSkgKwoJCQkJCSc8L3NwYW4+JyArCgkJCQknPC90aD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IHdpbGwgZ28gYmVmb3JlIGNvbnRlbnQtc2tlbGV0b24gY2VsbHMgdGhhdCBkaXNwbGF5IHRoZSBkYXkvd2VlayBudW1iZXJzLgoJLy8gUXVlcmllZCBieSB0aGUgRGF5R3JpZCBzdWJjb21wb25lbnQuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCgludW1iZXJJbnRyb0h0bWw6IGZ1bmN0aW9uKHJvdykgewoJCWlmICh0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQlyZXR1cm4gJycgKwoJCQkJJzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcgKyB0aGlzLndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJJzxzcGFuPicgKyAvLyBuZWVkZWQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQl0aGlzLmRheUdyaWQuZ2V0Q2VsbChyb3csIDApLnN0YXJ0LmZvcm1hdCgndycpICsKCQkJCQknPC9zcGFuPicgKwoJCQkJJzwvdGQ+JzsKCQl9Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCBnb2VzIGJlZm9yZSB0aGUgZGF5IGJnIGNlbGxzIGZvciBlYWNoIGRheS1yb3cuCgkvLyBRdWVyaWVkIGJ5IHRoZSBEYXlHcmlkIHN1YmNvbXBvbmVudC4gT3JkZXJpbmcgZGVwZW5kcyBvbiBpc1JUTC4KCWRheUludHJvSHRtbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMud2Vla051bWJlcnNWaXNpYmxlKSB7CgkJCXJldHVybiAnPHRkIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnICsgdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIiAnICsKCQkJCXRoaXMud2Vla051bWJlclN0eWxlQXR0cigpICsgJz48L3RkPic7CgkJfQoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIHRoYXQgZ29lcyBiZWZvcmUgZXZlcnkgb3RoZXIgdHlwZSBvZiByb3cgZ2VuZXJhdGVkIGJ5IERheUdyaWQuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCgkvLyBBZmZlY3RzIGhlbHBlci1za2VsZXRvbiBhbmQgaGlnaGxpZ2h0LXNrZWxldG9uIHJvd3MuCglpbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcgKyB0aGlzLndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+PC90ZD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIDx0ZD5zIG9mIHRoZSAibnVtYmVyIiByb3cgaW4gdGhlIERheUdyaWQncyBjb250ZW50IHNrZWxldG9uLgoJLy8gVGhlIG51bWJlciByb3cgd2lsbCBvbmx5IGV4aXN0IGlmIGVpdGhlciBkYXkgbnVtYmVycyBvciB3ZWVrIG51bWJlcnMgYXJlIHR1cm5lZCBvbi4KCW51bWJlckNlbGxIdG1sOiBmdW5jdGlvbihjZWxsKSB7CgkJdmFyIGRhdGUgPSBjZWxsLnN0YXJ0OwoJCXZhciBjbGFzc2VzOwoKCQlpZiAoIXRoaXMuZGF5TnVtYmVyc1Zpc2libGUpIHsgLy8gaWYgdGhlcmUgYXJlIHdlZWsgbnVtYmVycyBidXQgbm90IGRheSBudW1iZXJzCgkJCXJldHVybiAnPHRkLz4nOyAvLyAgd2lsbCBjcmVhdGUgYW4gZW1wdHkgc3BhY2UgYWJvdmUgZXZlbnRzIDooCgkJfQoKCQljbGFzc2VzID0gdGhpcy5kYXlHcmlkLmdldERheUNsYXNzZXMoZGF0ZSk7CgkJY2xhc3Nlcy51bnNoaWZ0KCdmYy1kYXktbnVtYmVyJyk7CgoJCXJldHVybiAnJyArCgkJCSc8dGQgY2xhc3M9IicgKyBjbGFzc2VzLmpvaW4oJyAnKSArICciIGRhdGEtZGF0ZT0iJyArIGRhdGUuZm9ybWF0KCkgKyAnIj4nICsKCQkJCWRhdGUuZGF0ZSgpICsKCQkJJzwvdGQ+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyBhbiBIVE1MIGF0dHJpYnV0ZSBzdHJpbmcgZm9yIHNldHRpbmcgdGhlIHdpZHRoIG9mIHRoZSB3ZWVrIG51bWJlciBjb2x1bW4sIGlmIGl0IGlzIGtub3duCgl3ZWVrTnVtYmVyU3R5bGVBdHRyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy53ZWVrTnVtYmVyV2lkdGggIT09IG51bGwpIHsKCQkJcmV0dXJuICdzdHlsZT0id2lkdGg6JyArIHRoaXMud2Vla051bWJlcldpZHRoICsgJ3B4Iic7CgkJfQoJCXJldHVybiAnJzsKCX0sCgoKCS8vIERldGVybWluZXMgd2hldGhlciBlYWNoIHJvdyBzaG91bGQgaGF2ZSBhIGNvbnN0YW50IGhlaWdodAoJaGFzUmlnaWRSb3dzOiBmdW5jdGlvbigpIHsKCQl2YXIgZXZlbnRMaW1pdCA9IHRoaXMub3B0KCdldmVudExpbWl0Jyk7CgkJcmV0dXJuIGV2ZW50TGltaXQgJiYgdHlwZW9mIGV2ZW50TGltaXQgIT09ICdudW1iZXInOwoJfSwKCgoJLyogRGltZW5zaW9ucwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVmcmVzaGVzIHRoZSBob3Jpem9udGFsIGRpbWVuc2lvbnMgb2YgdGhlIHZpZXcKCXVwZGF0ZVdpZHRoOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy53ZWVrTnVtYmVyc1Zpc2libGUpIHsKCQkJLy8gTWFrZSBzdXJlIGFsbCB3ZWVrIG51bWJlciBjZWxscyBydW5uaW5nIGRvd24gdGhlIHNpZGUgaGF2ZSB0aGUgc2FtZSB3aWR0aC4KCQkJLy8gUmVjb3JkIHRoZSB3aWR0aCBmb3IgY2VsbHMgY3JlYXRlZCBsYXRlci4KCQkJdGhpcy53ZWVrTnVtYmVyV2lkdGggPSBtYXRjaENlbGxXaWR0aHMoCgkJCQl0aGlzLmVsLmZpbmQoJy5mYy13ZWVrLW51bWJlcicpCgkJCSk7CgkJfQoJfSwKCgoJLy8gQWRqdXN0cyB0aGUgdmVydGljYWwgZGltZW5zaW9ucyBvZiB0aGUgdmlldyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcwoJc2V0SGVpZ2h0OiBmdW5jdGlvbih0b3RhbEhlaWdodCwgaXNBdXRvKSB7CgkJdmFyIGV2ZW50TGltaXQgPSB0aGlzLm9wdCgnZXZlbnRMaW1pdCcpOwoJCXZhciBzY3JvbGxlckhlaWdodDsKCgkJLy8gcmVzZXQgYWxsIGhlaWdodHMgdG8gYmUgbmF0dXJhbAoJCXVuc2V0U2Nyb2xsZXIodGhpcy5zY3JvbGxlckVsKTsKCQl1bmNvbXBlbnNhdGVTY3JvbGwodGhpcy5oZWFkUm93RWwpOwoKCQl0aGlzLmRheUdyaWQucmVtb3ZlU2VnUG9wb3ZlcigpOyAvLyBraWxsIHRoZSAibW9yZSIgcG9wb3ZlciBpZiBkaXNwbGF5ZWQKCgkJLy8gaXMgdGhlIGV2ZW50IGxpbWl0IGEgY29uc3RhbnQgbGV2ZWwgbnVtYmVyPwoJCWlmIChldmVudExpbWl0ICYmIHR5cGVvZiBldmVudExpbWl0ID09PSAnbnVtYmVyJykgewoJCQl0aGlzLmRheUdyaWQubGltaXRSb3dzKGV2ZW50TGltaXQpOyAvLyBsaW1pdCB0aGUgbGV2ZWxzIGZpcnN0IHNvIHRoZSBoZWlnaHQgY2FuIHJlZGlzdHJpYnV0ZSBhZnRlcgoJCX0KCgkJc2Nyb2xsZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0b3RhbEhlaWdodCk7CgkJdGhpcy5zZXRHcmlkSGVpZ2h0KHNjcm9sbGVySGVpZ2h0LCBpc0F1dG8pOwoKCQkvLyBpcyB0aGUgZXZlbnQgbGltaXQgZHluYW1pY2FsbHkgY2FsY3VsYXRlZD8KCQlpZiAoZXZlbnRMaW1pdCAmJiB0eXBlb2YgZXZlbnRMaW1pdCAhPT0gJ251bWJlcicpIHsKCQkJdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhldmVudExpbWl0KTsgLy8gbGltaXQgdGhlIGxldmVscyBhZnRlciB0aGUgZ3JpZCdzIHJvdyBoZWlnaHRzIGhhdmUgYmVlbiBzZXQKCQl9CgoJCWlmICghaXNBdXRvICYmIHNldFBvdGVudGlhbFNjcm9sbGVyKHRoaXMuc2Nyb2xsZXJFbCwgc2Nyb2xsZXJIZWlnaHQpKSB7IC8vIHVzaW5nIHNjcm9sbGJhcnM/CgoJCQljb21wZW5zYXRlU2Nyb2xsKHRoaXMuaGVhZFJvd0VsLCBnZXRTY3JvbGxiYXJXaWR0aHModGhpcy5zY3JvbGxlckVsKSk7CgoJCQkvLyBkb2luZyB0aGUgc2Nyb2xsYmFyIGNvbXBlbnNhdGlvbiBtaWdodCBoYXZlIGNyZWF0ZWQgdGV4dCBvdmVyZmxvdyB3aGljaCBjcmVhdGVkIG1vcmUgaGVpZ2h0LiByZWRvCgkJCXNjcm9sbGVySGVpZ2h0ID0gdGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodG90YWxIZWlnaHQpOwoJCQl0aGlzLnNjcm9sbGVyRWwuaGVpZ2h0KHNjcm9sbGVySGVpZ2h0KTsKCQl9Cgl9LAoKCgkvLyBTZXRzIHRoZSBoZWlnaHQgb2YganVzdCB0aGUgRGF5R3JpZCBjb21wb25lbnQgaW4gdGhpcyB2aWV3CglzZXRHcmlkSGVpZ2h0OiBmdW5jdGlvbihoZWlnaHQsIGlzQXV0bykgewoJCWlmIChpc0F1dG8pIHsKCQkJdW5kaXN0cmlidXRlSGVpZ2h0KHRoaXMuZGF5R3JpZC5yb3dFbHMpOyAvLyBsZXQgdGhlIHJvd3MgYmUgdGhlaXIgbmF0dXJhbCBoZWlnaHQgd2l0aCBubyBleHBhbmRpbmcKCQl9CgkJZWxzZSB7CgkJCWRpc3RyaWJ1dGVIZWlnaHQodGhpcy5kYXlHcmlkLnJvd0VscywgaGVpZ2h0LCB0cnVlKTsgLy8gdHJ1ZSA9IGNvbXBlbnNhdGUgZm9yIGhlaWdodC1ob2dnaW5nIHJvd3MKCQl9Cgl9LAoKCgkvKiBFdmVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGV2ZW50cyBvbnRvIHRoZSB2aWV3IGFuZCBwb3B1bGF0ZXMgdGhlIHNlZ21lbnRzIGFycmF5CglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXRoaXMuZGF5R3JpZC5yZW5kZXJFdmVudHMoZXZlbnRzKTsKCgkJdGhpcy51cGRhdGVIZWlnaHQoKTsgLy8gbXVzdCBjb21wZW5zYXRlIGZvciBldmVudHMgdGhhdCBvdmVyZmxvdyB0aGUgcm93Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgYWxsIHNlZ21lbnQgb2JqZWN0cyB0aGF0IGFyZSByZW5kZXJlZCBpbiB0aGUgdmlldwoJZ2V0RXZlbnRTZWdzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLmdldEV2ZW50U2VncygpOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFsbCBldmVudCBlbGVtZW50cyBhbmQgY2xlYXJzIGludGVybmFsIHNlZ21lbnQgZGF0YQoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckV2ZW50cygpOwoKCQkvLyB3ZSBET04nVCBuZWVkIHRvIGNhbGwgdXBkYXRlSGVpZ2h0KCkgYmVjYXVzZToKCQkvLyBBKSBhIHJlbmRlckV2ZW50cygpIGNhbGwgYWx3YXlzIGhhcHBlbnMgYWZ0ZXIgdGhpcywgd2hpY2ggd2lsbCBldmVudHVhbGx5IGNhbGwgdXBkYXRlSGVpZ2h0KCkKCQkvLyBCKSBpbiBJRTgsIHRoaXMgY2F1c2VzIGEgZmxhc2ggd2hlbmV2ZXIgZXZlbnRzIGFyZSByZXJlbmRlcmVkCgl9LAoKCgkvKiBEcmFnZ2luZyAoZm9yIGJvdGggZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEEgcmV0dXJuZWQgdmFsdWUgb2YgYHRydWVgIHNpZ25hbHMgdGhhdCBhIG1vY2sgImhlbHBlciIgZXZlbnQgaGFzIGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoJCXJldHVybiB0aGlzLmRheUdyaWQucmVuZGVyRHJhZyhkcm9wTG9jYXRpb24sIHNlZyk7Cgl9LAoKCgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckRyYWcoKTsKCX0sCgoKCS8qIFNlbGVjdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGEgc2VsZWN0aW9uCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbihyYW5nZSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbnMgb2YgYSBzZWxlY3Rpb24KCXVucmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLmRheUdyaWQudW5yZW5kZXJTZWxlY3Rpb24oKTsKCX0KCn0pOwoKOzsKCi8qIEEgbW9udGggdmlldyB3aXRoIGRheSBjZWxscyBydW5uaW5nIGluIHJvd3MgKG9uZS1wZXItd2VlaykgYW5kIGNvbHVtbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgTW9udGhWaWV3ID0gQmFzaWNWaWV3LmV4dGVuZCh7CgoJLy8gUHJvZHVjZXMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCByYW5nZSB0byBkaXNwbGF5Cgljb21wdXRlUmFuZ2U6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgcmFuZ2UgPSBCYXNpY1ZpZXcucHJvdG90eXBlLmNvbXB1dGVSYW5nZS5jYWxsKHRoaXMsIGRhdGUpOyAvLyBnZXQgdmFsdWUgZnJvbSBzdXBlci1tZXRob2QKCQl2YXIgcm93Q250OwoKCQkvLyBlbnN1cmUgNiB3ZWVrcwoJCWlmICh0aGlzLmlzRml4ZWRXZWVrcygpKSB7CgkJCXJvd0NudCA9IE1hdGguY2VpbChyYW5nZS5lbmQuZGlmZihyYW5nZS5zdGFydCwgJ3dlZWtzJywgdHJ1ZSkpOyAvLyBjb3VsZCBiZSBwYXJ0aWFsIHdlZWtzIGR1ZSB0byBoaWRkZW5EYXlzCgkJCXJhbmdlLmVuZC5hZGQoNiAtIHJvd0NudCwgJ3dlZWtzJyk7CgkJfQoKCQlyZXR1cm4gcmFuZ2U7Cgl9LAoKCgkvLyBPdmVycmlkZXMgdGhlIGRlZmF1bHQgQmFzaWNWaWV3IGJlaGF2aW9yIHRvIGhhdmUgc3BlY2lhbCBtdWx0aS13ZWVrIGF1dG8taGVpZ2h0IGxvZ2ljCglzZXRHcmlkSGVpZ2h0OiBmdW5jdGlvbihoZWlnaHQsIGlzQXV0bykgewoKCQlpc0F1dG8gPSBpc0F1dG8gfHwgdGhpcy5vcHQoJ3dlZWtNb2RlJykgPT09ICd2YXJpYWJsZSc7IC8vIExFR0FDWTogd2Vla01vZGUgaXMgZGVwcmVjYXRlZAoKCQkvLyBpZiBhdXRvLCBtYWtlIHRoZSBoZWlnaHQgb2YgZWFjaCByb3cgdGhlIGhlaWdodCB0aGF0IGl0IHdvdWxkIGJlIGlmIHRoZXJlIHdlcmUgNiB3ZWVrcwoJCWlmIChpc0F1dG8pIHsKCQkJaGVpZ2h0ICo9IHRoaXMucm93Q250IC8gNjsKCQl9CgoJCWRpc3RyaWJ1dGVIZWlnaHQodGhpcy5kYXlHcmlkLnJvd0VscywgaGVpZ2h0LCAhaXNBdXRvKTsgLy8gaWYgYXV0bywgZG9uJ3QgY29tcGVuc2F0ZSBmb3IgaGVpZ2h0LWhvZ2dpbmcgcm93cwoJfSwKCgoJaXNGaXhlZFdlZWtzOiBmdW5jdGlvbigpIHsKCQl2YXIgd2Vla01vZGUgPSB0aGlzLm9wdCgnd2Vla01vZGUnKTsgLy8gTEVHQUNZOiB3ZWVrTW9kZSBpcyBkZXByZWNhdGVkCgkJaWYgKHdlZWtNb2RlKSB7CgkJCXJldHVybiB3ZWVrTW9kZSA9PT0gJ2ZpeGVkJzsgLy8gaWYgYW55IG90aGVyIHR5cGUgb2Ygd2Vla01vZGUsIGFzc3VtZSBOT1QgZml4ZWQKCQl9CgoJCXJldHVybiB0aGlzLm9wdCgnZml4ZWRXZWVrQ291bnQnKTsKCX0KCn0pOwoKOzsKCmZjVmlld3MuYmFzaWMgPSB7CgknY2xhc3MnOiBCYXNpY1ZpZXcKfTsKCmZjVmlld3MuYmFzaWNEYXkgPSB7Cgl0eXBlOiAnYmFzaWMnLAoJZHVyYXRpb246IHsgZGF5czogMSB9Cn07CgpmY1ZpZXdzLmJhc2ljV2VlayA9IHsKCXR5cGU6ICdiYXNpYycsCglkdXJhdGlvbjogeyB3ZWVrczogMSB9Cn07CgpmY1ZpZXdzLm1vbnRoID0gewoJJ2NsYXNzJzogTW9udGhWaWV3LAoJZHVyYXRpb246IHsgbW9udGhzOiAxIH0sIC8vIGltcG9ydGFudCBmb3IgcHJldi9uZXh0CglkZWZhdWx0czogewoJCWZpeGVkV2Vla0NvdW50OiB0cnVlCgl9Cn07Cjs7CgovKiBBbiBhYnN0cmFjdCBjbGFzcyBmb3IgYWxsIGFnZW5kYS1yZWxhdGVkIHZpZXdzLiBEaXNwbGF5cyBvbmUgbW9yZSBjb2x1bW5zIHdpdGggdGltZSBzbG90cyBydW5uaW5nIHZlcnRpY2FsbHkuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovLyBJcyBhIG1hbmFnZXIgZm9yIHRoZSBUaW1lR3JpZCBzdWJjb21wb25lbnQgYW5kIHBvc3NpYmx5IHRoZSBEYXlHcmlkIHN1YmNvbXBvbmVudCAoaWYgYWxsRGF5U2xvdCBpcyBvbikuCi8vIFJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB3aWR0aC9oZWlnaHQuCgp2YXIgQWdlbmRhVmlldyA9IFZpZXcuZXh0ZW5kKHsKCgl0aW1lR3JpZDogbnVsbCwgLy8gdGhlIG1haW4gdGltZS1ncmlkIHN1YmNvbXBvbmVudCBvZiB0aGlzIHZpZXcKCWRheUdyaWQ6IG51bGwsIC8vIHRoZSAiYWxsLWRheSIgc3ViY29tcG9uZW50LiBpZiBhbGwtZGF5IGlzIHR1cm5lZCBvZmYsIHRoaXMgd2lsbCBiZSBudWxsCgoJYXhpc1dpZHRoOiBudWxsLCAvLyB0aGUgd2lkdGggb2YgdGhlIHRpbWUgYXhpcyBydW5uaW5nIGRvd24gdGhlIHNpZGUKCglub1Njcm9sbFJvd0VsczogbnVsbCwgLy8gc2V0IG9mIGZha2Ugcm93IGVsZW1lbnRzIHRoYXQgbXVzdCBjb21wZW5zYXRlIHdoZW4gc2Nyb2xsZXJFbCBoYXMgc2Nyb2xsYmFycwoKCS8vIHdoZW4gdGhlIHRpbWUtZ3JpZCBpc24ndCB0YWxsIGVub3VnaCB0byBvY2N1cHkgdGhlIGdpdmVuIGhlaWdodCwgd2UgcmVuZGVyIGFuIDxocj4gdW5kZXJuZWF0aAoJYm90dG9tUnVsZUVsOiBudWxsLAoJYm90dG9tUnVsZUhlaWdodDogbnVsbCwKCgoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZCA9IG5ldyBUaW1lR3JpZCh0aGlzKTsKCgkJaWYgKHRoaXMub3B0KCdhbGxEYXlTbG90JykpIHsgLy8gc2hvdWxkIHdlIGRpc3BsYXkgdGhlICJhbGwtZGF5IiBhcmVhPwoJCQl0aGlzLmRheUdyaWQgPSBuZXcgRGF5R3JpZCh0aGlzKTsgLy8gdGhlIGFsbC1kYXkgc3ViY29tcG9uZW50IG9mIHRoaXMgdmlldwoKCQkJLy8gdGhlIGNvb3JkaW5hdGUgZ3JpZCB3aWxsIGJlIGEgY29tYmluYXRpb24gb2YgYm90aCBzdWJjb21wb25lbnRzJyBncmlkcwoJCQl0aGlzLmNvb3JkTWFwID0gbmV3IENvbWJvQ29vcmRNYXAoWwoJCQkJdGhpcy5kYXlHcmlkLmNvb3JkTWFwLAoJCQkJdGhpcy50aW1lR3JpZC5jb29yZE1hcAoJCQldKTsKCQl9CgkJZWxzZSB7CgkJCXRoaXMuY29vcmRNYXAgPSB0aGlzLnRpbWVHcmlkLmNvb3JkTWFwOwoJCX0KCX0sCgoKCS8qIFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gU2V0cyB0aGUgZGlzcGxheSByYW5nZSBhbmQgY29tcHV0ZXMgYWxsIG5lY2Vzc2FyeSBkYXRlcwoJc2V0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJVmlldy5wcm90b3R5cGUuc2V0UmFuZ2UuY2FsbCh0aGlzLCByYW5nZSk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoKCQl0aGlzLnRpbWVHcmlkLnNldFJhbmdlKHJhbmdlKTsKCQlpZiAodGhpcy5kYXlHcmlkKSB7CgkJCXRoaXMuZGF5R3JpZC5zZXRSYW5nZShyYW5nZSk7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyB0aGUgdmlldyBpbnRvIGB0aGlzLmVsYCwgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBhc3NpZ25lZAoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoKCQl0aGlzLmVsLmFkZENsYXNzKCdmYy1hZ2VuZGEtdmlldycpLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpOwoKCQkvLyB0aGUgZWxlbWVudCB0aGF0IHdyYXBzIHRoZSB0aW1lLWdyaWQgdGhhdCB3aWxsIHByb2JhYmx5IHNjcm9sbAoJCXRoaXMuc2Nyb2xsZXJFbCA9IHRoaXMuZWwuZmluZCgnLmZjLXRpbWUtZ3JpZC1jb250YWluZXInKTsKCQl0aGlzLnRpbWVHcmlkLmNvb3JkTWFwLmNvbnRhaW5lckVsID0gdGhpcy5zY3JvbGxlckVsOyAvLyBkb24ndCBhY2NlcHQgY2xpY2tzL2V0YyBvdXRzaWRlIG9mIHRoaXMKCgkJdGhpcy50aW1lR3JpZC5zZXRFbGVtZW50KHRoaXMuZWwuZmluZCgnLmZjLXRpbWUtZ3JpZCcpKTsKCQl0aGlzLnRpbWVHcmlkLnJlbmRlckRhdGVzKCk7CgoJCS8vIHRoZSA8aHI+IHRoYXQgc29tZXRpbWVzIGRpc3BsYXlzIHVuZGVyIHRoZSB0aW1lLWdyaWQKCQl0aGlzLmJvdHRvbVJ1bGVFbCA9ICQoJzxociBjbGFzcz0iZmMtZGl2aWRlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciLz4nKQoJCQkuYXBwZW5kVG8odGhpcy50aW1lR3JpZC5lbCk7IC8vIGluamVjdCBpdCBpbnRvIHRoZSB0aW1lLWdyaWQKCgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQuc2V0RWxlbWVudCh0aGlzLmVsLmZpbmQoJy5mYy1kYXktZ3JpZCcpKTsKCQkJdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKCk7CgoJCQkvLyBoYXZlIHRoZSBkYXktZ3JpZCBleHRlbmQgaXQncyBjb29yZGluYXRlIGFyZWEgb3ZlciB0aGUgPGhyPiBkaXZpZGluZyB0aGUgdHdvIGdyaWRzCgkJCXRoaXMuZGF5R3JpZC5ib3R0b21Db29yZFBhZGRpbmcgPSB0aGlzLmRheUdyaWQuZWwubmV4dCgnaHInKS5vdXRlckhlaWdodCgpOwoJCX0KCgkJdGhpcy5ub1Njcm9sbFJvd0VscyA9IHRoaXMuZWwuZmluZCgnLmZjLXJvdzpub3QoLmZjLXNjcm9sbGVyICopJyk7IC8vIGZha2Ugcm93cyBub3Qgd2l0aGluIHRoZSBzY3JvbGxlcgoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3LiBTaW5jZSB3ZSBoYXZlbid0IHNlcGFyYXRlZCBza2VsZXRvbiByZW5kZXJpbmcgZnJvbSBkYXRlIHJlbmRlcmluZywKCS8vIGFsd2F5cyBjb21wbGV0ZWx5IGtpbGwgZWFjaCBncmlkJ3MgcmVuZGVyaW5nLgoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC51bnJlbmRlckRhdGVzKCk7CgkJdGhpcy50aW1lR3JpZC5yZW1vdmVFbGVtZW50KCk7CgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyRGF0ZXMoKTsKCQkJdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKTsKCQl9Cgl9LAoKCglyZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnRpbWVHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKTsKCgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQucmVuZGVyQnVzaW5lc3NIb3VycygpOwoJCX0KCX0sCgoKCS8vIEJ1aWxkcyB0aGUgSFRNTCBza2VsZXRvbiBmb3IgdGhlIHZpZXcuCgkvLyBUaGUgZGF5LWdyaWQgYW5kIHRpbWUtZ3JpZCBjb21wb25lbnRzIHdpbGwgcmVuZGVyIGluc2lkZSBjb250YWluZXJzIGRlZmluZWQgYnkgdGhpcyBIVE1MLgoJcmVuZGVySHRtbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuICcnICsKCQkJJzx0YWJsZT4nICsKCQkJCSc8dGhlYWQgY2xhc3M9ImZjLWhlYWQiPicgKwoJCQkJCSc8dHI+JyArCgkJCQkJCSc8dGQgY2xhc3M9IicgKyB0aGlzLndpZGdldEhlYWRlckNsYXNzICsgJyI+JyArCgkJCQkJCQl0aGlzLnRpbWVHcmlkLmhlYWRIdG1sKCkgKyAvLyByZW5kZXIgdGhlIGRheS1vZi13ZWVrIGhlYWRlcnMKCQkJCQkJJzwvdGQ+JyArCgkJCQkJJzwvdHI+JyArCgkJCQknPC90aGVhZD4nICsKCQkJCSc8dGJvZHkgY2xhc3M9ImZjLWJvZHkiPicgKwoJCQkJCSc8dHI+JyArCgkJCQkJCSc8dGQgY2xhc3M9IicgKyB0aGlzLndpZGdldENvbnRlbnRDbGFzcyArICciPicgKwoJCQkJCQkJKHRoaXMuZGF5R3JpZCA/CgkJCQkJCQkJJzxkaXYgY2xhc3M9ImZjLWRheS1ncmlkIi8+JyArCgkJCQkJCQkJJzxociBjbGFzcz0iZmMtZGl2aWRlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciLz4nIDoKCQkJCQkJCQknJwoJCQkJCQkJCSkgKwoJCQkJCQkJJzxkaXYgY2xhc3M9ImZjLXRpbWUtZ3JpZC1jb250YWluZXIiPicgKwoJCQkJCQkJCSc8ZGl2IGNsYXNzPSJmYy10aW1lLWdyaWQiLz4nICsKCQkJCQkJCSc8L2Rpdj4nICsKCQkJCQkJJzwvdGQ+JyArCgkJCQkJJzwvdHI+JyArCgkJCQknPC90Ym9keT4nICsKCQkJJzwvdGFibGU+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IHdpbGwgZ28gYmVmb3JlIHRoZSBkYXktb2Ygd2VlayBoZWFkZXIgY2VsbHMuCgkvLyBRdWVyaWVkIGJ5IHRoZSBUaW1lR3JpZCBzdWJjb21wb25lbnQgd2hlbiBnZW5lcmF0aW5nIHJvd3MuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCgloZWFkSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgZGF0ZTsKCQl2YXIgd2Vla1RleHQ7CgoJCWlmICh0aGlzLm9wdCgnd2Vla051bWJlcnMnKSkgewoJCQlkYXRlID0gdGhpcy50aW1lR3JpZC5nZXRDZWxsKDApLnN0YXJ0OwoJCQl3ZWVrVGV4dCA9IGRhdGUuZm9ybWF0KHRoaXMub3B0KCdzbWFsbFdlZWtGb3JtYXQnKSk7CgoJCQlyZXR1cm4gJycgKwoJCQkJJzx0aCBjbGFzcz0iZmMtYXhpcyBmYy13ZWVrLW51bWJlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB0aGlzLmF4aXNTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJJzxzcGFuPicgKyAvLyBuZWVkZWQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQlodG1sRXNjYXBlKHdlZWtUZXh0KSArCgkJCQkJJzwvc3Bhbj4nICsKCQkJCSc8L3RoPic7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJzx0aCBjbGFzcz0iZmMtYXhpcyAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB0aGlzLmF4aXNTdHlsZUF0dHIoKSArICc+PC90aD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IGdvZXMgYmVmb3JlIHRoZSBhbGwtZGF5IGNlbGxzLgoJLy8gUXVlcmllZCBieSB0aGUgRGF5R3JpZCBzdWJjb21wb25lbnQgd2hlbiBnZW5lcmF0aW5nIHJvd3MuIE9yZGVyaW5nIGRlcGVuZHMgb24gaXNSVEwuCglkYXlJbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8dGQgY2xhc3M9ImZjLWF4aXMgJyArIHRoaXMud2lkZ2V0Q29udGVudENsYXNzICsgJyIgJyArIHRoaXMuYXhpc1N0eWxlQXR0cigpICsgJz4nICsKCQkJCSc8c3Bhbj4nICsgLy8gbmVlZGVkIGZvciBtYXRjaENlbGxXaWR0aHMKCQkJCQkodGhpcy5vcHQoJ2FsbERheUh0bWwnKSB8fCBodG1sRXNjYXBlKHRoaXMub3B0KCdhbGxEYXlUZXh0JykpKSArCgkJCQknPC9zcGFuPicgKwoJCQknPC90ZD4nOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIHRoYXQgZ29lcyBiZWZvcmUgdGhlIGJnIG9mIHRoZSBUaW1lR3JpZCBzbG90IGFyZWEuIExvbmcgdmVydGljYWwgY29sdW1uLgoJc2xvdEJnSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtYXhpcyAnICsgdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIiAnICsgdGhpcy5heGlzU3R5bGVBdHRyKCkgKyAnPjwvdGQ+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IGdvZXMgYmVmb3JlIGFsbCBvdGhlciB0eXBlcyBvZiBjZWxscy4KCS8vIEFmZmVjdHMgY29udGVudC1za2VsZXRvbiwgaGVscGVyLXNrZWxldG9uLCBoaWdobGlnaHQtc2tlbGV0b24gZm9yIGJvdGggdGhlIHRpbWUtZ3JpZCBhbmQgZGF5LWdyaWQuCgkvLyBRdWVyaWVkIGJ5IHRoZSBUaW1lR3JpZCBhbmQgRGF5R3JpZCBzdWJjb21wb25lbnRzIHdoZW4gZ2VuZXJhdGluZyByb3dzLiBPcmRlcmluZyBkZXBlbmRzIG9uIGlzUlRMLgoJaW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtYXhpcyIgJyArIHRoaXMuYXhpc1N0eWxlQXR0cigpICsgJz48L3RkPic7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gSFRNTCBhdHRyaWJ1dGUgc3RyaW5nIGZvciBzZXR0aW5nIHRoZSB3aWR0aCBvZiB0aGUgYXhpcywgaWYgaXQgaXMga25vd24KCWF4aXNTdHlsZUF0dHI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmF4aXNXaWR0aCAhPT0gbnVsbCkgewoJCQkgcmV0dXJuICdzdHlsZT0id2lkdGg6JyArIHRoaXMuYXhpc1dpZHRoICsgJ3B4Iic7CgkJfQoJCXJldHVybiAnJzsKCX0sCgoKCS8qIERpbWVuc2lvbnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXVwZGF0ZVNpemU6IGZ1bmN0aW9uKGlzUmVzaXplKSB7CgkJdGhpcy50aW1lR3JpZC51cGRhdGVTaXplKGlzUmVzaXplKTsKCgkJVmlldy5wcm90b3R5cGUudXBkYXRlU2l6ZS5jYWxsKHRoaXMsIGlzUmVzaXplKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgl9LAoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgdmlldwoJdXBkYXRlV2lkdGg6IGZ1bmN0aW9uKCkgewoJCS8vIG1ha2UgYWxsIGF4aXMgY2VsbHMgbGluZSB1cCwgYW5kIHJlY29yZCB0aGUgd2lkdGggc28gbmV3bHkgY3JlYXRlZCBheGlzIGNlbGxzIHdpbGwgaGF2ZSBpdAoJCXRoaXMuYXhpc1dpZHRoID0gbWF0Y2hDZWxsV2lkdGhzKHRoaXMuZWwuZmluZCgnLmZjLWF4aXMnKSk7Cgl9LAoKCgkvLyBBZGp1c3RzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzCglzZXRIZWlnaHQ6IGZ1bmN0aW9uKHRvdGFsSGVpZ2h0LCBpc0F1dG8pIHsKCQl2YXIgZXZlbnRMaW1pdDsKCQl2YXIgc2Nyb2xsZXJIZWlnaHQ7CgoJCWlmICh0aGlzLmJvdHRvbVJ1bGVIZWlnaHQgPT09IG51bGwpIHsKCQkJLy8gY2FsY3VsYXRlIHRoZSBoZWlnaHQgb2YgdGhlIHJ1bGUgdGhlIHZlcnkgZmlyc3QgdGltZQoJCQl0aGlzLmJvdHRvbVJ1bGVIZWlnaHQgPSB0aGlzLmJvdHRvbVJ1bGVFbC5vdXRlckhlaWdodCgpOwoJCX0KCQl0aGlzLmJvdHRvbVJ1bGVFbC5oaWRlKCk7IC8vIC5zaG93KCkgd2lsbCBiZSBjYWxsZWQgbGF0ZXIgaWYgdGhpcyA8aHI+IGlzIG5lY2Vzc2FyeQoKCQkvLyByZXNldCBhbGwgZGltZW5zaW9ucyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzdGF0ZQoJCXRoaXMuc2Nyb2xsZXJFbC5jc3MoJ292ZXJmbG93JywgJycpOwoJCXVuc2V0U2Nyb2xsZXIodGhpcy5zY3JvbGxlckVsKTsKCQl1bmNvbXBlbnNhdGVTY3JvbGwodGhpcy5ub1Njcm9sbFJvd0Vscyk7CgoJCS8vIGxpbWl0IG51bWJlciBvZiBldmVudHMgaW4gdGhlIGFsbC1kYXkgYXJlYQoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKTsgLy8ga2lsbCB0aGUgIm1vcmUiIHBvcG92ZXIgaWYgZGlzcGxheWVkCgoJCQlldmVudExpbWl0ID0gdGhpcy5vcHQoJ2V2ZW50TGltaXQnKTsKCQkJaWYgKGV2ZW50TGltaXQgJiYgdHlwZW9mIGV2ZW50TGltaXQgIT09ICdudW1iZXInKSB7CgkJCQlldmVudExpbWl0ID0gQUdFTkRBX0FMTF9EQVlfRVZFTlRfTElNSVQ7IC8vIG1ha2Ugc3VyZSAiYXV0byIgZ29lcyB0byBhIHJlYWwgbnVtYmVyCgkJCX0KCQkJaWYgKGV2ZW50TGltaXQpIHsKCQkJCXRoaXMuZGF5R3JpZC5saW1pdFJvd3MoZXZlbnRMaW1pdCk7CgkJCX0KCQl9CgoJCWlmICghaXNBdXRvKSB7IC8vIHNob3VsZCB3ZSBmb3JjZSBkaW1lbnNpb25zIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyLCBvciBsZXQgdGhlIGNvbnRlbnRzIGJlIG5hdHVyYWwgaGVpZ2h0PwoKCQkJc2Nyb2xsZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0b3RhbEhlaWdodCk7CgkJCWlmIChzZXRQb3RlbnRpYWxTY3JvbGxlcih0aGlzLnNjcm9sbGVyRWwsIHNjcm9sbGVySGVpZ2h0KSkgeyAvLyB1c2luZyBzY3JvbGxiYXJzPwoKCQkJCS8vIG1ha2UgdGhlIGFsbC1kYXkgYW5kIGhlYWRlciByb3dzIGxpbmVzIHVwCgkJCQljb21wZW5zYXRlU2Nyb2xsKHRoaXMubm9TY3JvbGxSb3dFbHMsIGdldFNjcm9sbGJhcldpZHRocyh0aGlzLnNjcm9sbGVyRWwpKTsKCgkJCQkvLyB0aGUgc2Nyb2xsYmFyIGNvbXBlbnNhdGlvbiBtaWdodCBoYXZlIGNoYW5nZWQgdGV4dCBmbG93LCB3aGljaCBtaWdodCBhZmZlY3QgaGVpZ2h0LCBzbyByZWNhbGN1bGF0ZQoJCQkJLy8gYW5kIHJlYXBwbHkgdGhlIGRlc2lyZWQgaGVpZ2h0IHRvIHRoZSBzY3JvbGxlci4KCQkJCXNjcm9sbGVySGVpZ2h0ID0gdGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodG90YWxIZWlnaHQpOwoJCQkJdGhpcy5zY3JvbGxlckVsLmhlaWdodChzY3JvbGxlckhlaWdodCk7CgkJCX0KCQkJZWxzZSB7IC8vIG5vIHNjcm9sbGJhcnMKCQkJCS8vIHN0aWxsLCBmb3JjZSBhIGhlaWdodCBhbmQgZGlzcGxheSB0aGUgYm90dG9tIHJ1bGUgKG1hcmtzIHRoZSBlbmQgb2YgZGF5KQoJCQkJdGhpcy5zY3JvbGxlckVsLmhlaWdodChzY3JvbGxlckhlaWdodCkuY3NzKCdvdmVyZmxvdycsICdoaWRkZW4nKTsgLy8gaW4gY2FzZSA8aHI+IGdvZXMgb3V0c2lkZQoJCQkJdGhpcy5ib3R0b21SdWxlRWwuc2hvdygpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGluaXRpYWwgcHJlLWNvbmZpZ3VyZWQgc2Nyb2xsIHN0YXRlIHByaW9yIHRvIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSBpdAoJY29tcHV0ZUluaXRpYWxTY3JvbGw6IGZ1bmN0aW9uKCkgewoJCXZhciBzY3JvbGxUaW1lID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub3B0KCdzY3JvbGxUaW1lJykpOwoJCXZhciB0b3AgPSB0aGlzLnRpbWVHcmlkLmNvbXB1dGVUaW1lVG9wKHNjcm9sbFRpbWUpOwoKCQkvLyB6b29tIGNhbiBnaXZlIHdlaXJkIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gcmF0aGVyIHNjcm9sbCBhIGxpdHRsZSBiaXQgZnVydGhlcgoJCXRvcCA9IE1hdGguY2VpbCh0b3ApOwoKCQlpZiAodG9wKSB7CgkJCXRvcCsrOyAvLyB0byBvdmVyY29tZSB0b3AgYm9yZGVyIHRoYXQgc2xvdHMgYmV5b25kIHRoZSBmaXJzdCBoYXZlLiBsb29rcyBiZXR0ZXIKCQl9CgoJCXJldHVybiB0b3A7Cgl9LAoKCgkvKiBFdmVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgZXZlbnRzIG9udG8gdGhlIHZpZXcgYW5kIHBvcHVsYXRlcyB0aGUgVmlldydzIHNlZ21lbnQgYXJyYXkKCXJlbmRlckV2ZW50czogZnVuY3Rpb24oZXZlbnRzKSB7CgkJdmFyIGRheUV2ZW50cyA9IFtdOwoJCXZhciB0aW1lZEV2ZW50cyA9IFtdOwoJCXZhciBkYXlTZWdzID0gW107CgkJdmFyIHRpbWVkU2VnczsKCQl2YXIgaTsKCgkJLy8gc2VwYXJhdGUgdGhlIGV2ZW50cyBpbnRvIGFsbC1kYXkgYW5kIHRpbWVkCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCQlpZiAoZXZlbnRzW2ldLmFsbERheSkgewoJCQkJZGF5RXZlbnRzLnB1c2goZXZlbnRzW2ldKTsKCQkJfQoJCQllbHNlIHsKCQkJCXRpbWVkRXZlbnRzLnB1c2goZXZlbnRzW2ldKTsKCQkJfQoJCX0KCgkJLy8gcmVuZGVyIHRoZSBldmVudHMgaW4gdGhlIHN1YmNvbXBvbmVudHMKCQl0aW1lZFNlZ3MgPSB0aGlzLnRpbWVHcmlkLnJlbmRlckV2ZW50cyh0aW1lZEV2ZW50cyk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQlkYXlTZWdzID0gdGhpcy5kYXlHcmlkLnJlbmRlckV2ZW50cyhkYXlFdmVudHMpOwoJCX0KCgkJLy8gdGhlIGFsbC1kYXkgYXJlYSBpcyBmbGV4aWJsZSBhbmQgbWlnaHQgaGF2ZSBhIGxvdCBvZiBldmVudHMsIHNvIHNoaWZ0IHRoZSBoZWlnaHQKCQl0aGlzLnVwZGF0ZUhlaWdodCgpOwoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCBzZWdtZW50IG9iamVjdHMgdGhhdCBhcmUgcmVuZGVyZWQgaW4gdGhlIHZpZXcKCWdldEV2ZW50U2VnczogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMudGltZUdyaWQuZ2V0RXZlbnRTZWdzKCkuY29uY2F0KAoJCQl0aGlzLmRheUdyaWQgPyB0aGlzLmRheUdyaWQuZ2V0RXZlbnRTZWdzKCkgOiBbXQoJCSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIGV2ZW50IGVsZW1lbnRzIGFuZCBjbGVhcnMgaW50ZXJuYWwgc2VnbWVudCBkYXRhCgl1bnJlbmRlckV2ZW50czogZnVuY3Rpb24oKSB7CgoJCS8vIHVucmVuZGVyIHRoZSBldmVudHMgaW4gdGhlIHN1YmNvbXBvbmVudHMKCQl0aGlzLnRpbWVHcmlkLnVucmVuZGVyRXZlbnRzKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQudW5yZW5kZXJFdmVudHMoKTsKCQl9CgoJCS8vIHdlIERPTidUIG5lZWQgdG8gY2FsbCB1cGRhdGVIZWlnaHQoKSBiZWNhdXNlOgoJCS8vIEEpIGEgcmVuZGVyRXZlbnRzKCkgY2FsbCBhbHdheXMgaGFwcGVucyBhZnRlciB0aGlzLCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgY2FsbCB1cGRhdGVIZWlnaHQoKQoJCS8vIEIpIGluIElFOCwgdGhpcyBjYXVzZXMgYSBmbGFzaCB3aGVuZXZlciBldmVudHMgYXJlIHJlcmVuZGVyZWQKCX0sCgoKCS8qIERyYWdnaW5nIChmb3IgZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEEgcmV0dXJuZWQgdmFsdWUgb2YgYHRydWVgIHNpZ25hbHMgdGhhdCBhIG1vY2sgImhlbHBlciIgZXZlbnQgaGFzIGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoJCWlmIChkcm9wTG9jYXRpb24uc3RhcnQuaGFzVGltZSgpKSB7CgkJCXJldHVybiB0aGlzLnRpbWVHcmlkLnJlbmRlckRyYWcoZHJvcExvY2F0aW9uLCBzZWcpOwoJCX0KCQllbHNlIGlmICh0aGlzLmRheUdyaWQpIHsKCQkJcmV0dXJuIHRoaXMuZGF5R3JpZC5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbiwgc2VnKTsKCQl9Cgl9LAoKCgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGltZUdyaWQudW5yZW5kZXJEcmFnKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQudW5yZW5kZXJEcmFnKCk7CgkJfQoJfSwKCgoJLyogU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYSBzZWxlY3Rpb24KCXJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24ocmFuZ2UpIHsKCQlpZiAocmFuZ2Uuc3RhcnQuaGFzVGltZSgpIHx8IHJhbmdlLmVuZC5oYXNUaW1lKCkpIHsKCQkJdGhpcy50aW1lR3JpZC5yZW5kZXJTZWxlY3Rpb24ocmFuZ2UpOwoJCX0KCQllbHNlIGlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbihyYW5nZSk7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb25zIG9mIGEgc2VsZWN0aW9uCgl1bnJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC51bnJlbmRlclNlbGVjdGlvbigpOwoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyU2VsZWN0aW9uKCk7CgkJfQoJfQoKfSk7Cgo7OwoKdmFyIEFHRU5EQV9BTExfREFZX0VWRU5UX0xJTUlUID0gNTsKCmZjVmlld3MuYWdlbmRhID0gewoJJ2NsYXNzJzogQWdlbmRhVmlldywKCWRlZmF1bHRzOiB7CgkJYWxsRGF5U2xvdDogdHJ1ZSwKCQlhbGxEYXlUZXh0OiAnYWxsLWRheScsCgkJc2xvdER1cmF0aW9uOiAnMDA6MzA6MDAnLAoJCW1pblRpbWU6ICcwMDowMDowMCcsCgkJbWF4VGltZTogJzI0OjAwOjAwJywKCQlzbG90RXZlbnRPdmVybGFwOiB0cnVlIC8vIGEgYmFkIG5hbWUuIGNvbmZ1c2VkIHdpdGggb3ZlcmxhcC9jb25zdHJhaW50IHN5c3RlbQoJfQp9OwoKZmNWaWV3cy5hZ2VuZGFEYXkgPSB7Cgl0eXBlOiAnYWdlbmRhJywKCWR1cmF0aW9uOiB7IGRheXM6IDEgfQp9OwoKZmNWaWV3cy5hZ2VuZGFXZWVrID0gewoJdHlwZTogJ2FnZW5kYScsCglkdXJhdGlvbjogeyB3ZWVrczogMSB9Cn07Cjs7CgpyZXR1cm4gZmM7IC8vIGV4cG9ydCBmb3IgTm9kZS9Db21tb25KUwp9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTUgQWRhbSBTaGF3CiAqLy5mY3tkaXJlY3Rpb246bHRyO3RleHQtYWxpZ246bGVmdH0uZmMtcnRse3RleHQtYWxpZ246cmlnaHR9Ym9keSAuZmN7Zm9udC1zaXplOjFlbX0uZmMtdW50aGVtZWQgLmZjLWRpdmlkZXIsLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyLC5mYy11bnRoZW1lZCAuZmMtcm93LC5mYy11bnRoZW1lZCB0Ym9keSwuZmMtdW50aGVtZWQgdGQsLmZjLXVudGhlbWVkIHRoLC5mYy11bnRoZW1lZCB0aGVhZHtib3JkZXItY29sb3I6I2RkZH0uZmMtdW50aGVtZWQgLmZjLXBvcG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5mYy11bnRoZW1lZCAuZmMtZGl2aWRlciwuZmMtdW50aGVtZWQgLmZjLXBvcG92ZXIgLmZjLWhlYWRlcntiYWNrZ3JvdW5kOiNlZWV9LmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3Nle2NvbG9yOiM2NjZ9LmZjLXVudGhlbWVkIC5mYy10b2RheXtiYWNrZ3JvdW5kOiNmY2Y4ZTN9LmZjLWhpZ2hsaWdodHtiYWNrZ3JvdW5kOiNiY2U4ZjE7b3BhY2l0eTouMztmaWx0ZXI6YWxwaGEob3BhY2l0eT0zMCl9LmZjLWJnZXZlbnR7YmFja2dyb3VuZDojOGZkZjgyO29wYWNpdHk6LjM7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MzApfS5mYy1ub25idXNpbmVzc3tiYWNrZ3JvdW5kOiNkN2Q3ZDd9LmZjLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MWVtO2hlaWdodDoxZW07bGluZS1oZWlnaHQ6MWVtO2ZvbnQtc2l6ZToxZW07dGV4dC1hbGlnbjpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2ZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyIsQ291cmllcixtb25vc3BhY2U7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1raHRtbC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5mYy1pY29uOmFmdGVye3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowIC0xZW19LmZjLWljb24tbGVmdC1zaW5nbGUtYXJyb3c6YWZ0ZXJ7Y29udGVudDoiXDAyMDM5Ijtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjIwMCU7dG9wOi03JTtsZWZ0OjMlfS5mYy1pY29uLXJpZ2h0LXNpbmdsZS1hcnJvdzphZnRlcntjb250ZW50OiJcMDIwM0EiO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MjAwJTt0b3A6LTclO2xlZnQ6LTMlfS5mYy1pY29uLWxlZnQtZG91YmxlLWFycm93OmFmdGVye2NvbnRlbnQ6IlwwMDBBQiI7Zm9udC1zaXplOjE2MCU7dG9wOi03JX0uZmMtaWNvbi1yaWdodC1kb3VibGUtYXJyb3c6YWZ0ZXJ7Y29udGVudDoiXDAwMEJCIjtmb250LXNpemU6MTYwJTt0b3A6LTclfS5mYy1pY29uLWxlZnQtdHJpYW5nbGU6YWZ0ZXJ7Y29udGVudDoiXDI1QzQiO2ZvbnQtc2l6ZToxMjUlO3RvcDozJTtsZWZ0Oi0yJX0uZmMtaWNvbi1yaWdodC10cmlhbmdsZTphZnRlcntjb250ZW50OiJcMjVCQSI7Zm9udC1zaXplOjEyNSU7dG9wOjMlO2xlZnQ6MiV9LmZjLWljb24tZG93bi10cmlhbmdsZTphZnRlcntjb250ZW50OiJcMjVCQyI7Zm9udC1zaXplOjEyNSU7dG9wOjIlfS5mYy1pY29uLXg6YWZ0ZXJ7Y29udGVudDoiXDAwMEQ3Ijtmb250LXNpemU6MjAwJTt0b3A6NiV9LmZjIGJ1dHRvbnstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7aGVpZ2h0OjIuMWVtO3BhZGRpbmc6MCAuNmVtO2ZvbnQtc2l6ZToxZW07d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyfS5mYyBidXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7bWFyZ2luOjA7cGFkZGluZzowfS5mYy1zdGF0ZS1kZWZhdWx0e2JvcmRlcjoxcHggc29saWR9LmZjLXN0YXRlLWRlZmF1bHQuZmMtY29ybmVyLWxlZnR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHh9LmZjLXN0YXRlLWRlZmF1bHQuZmMtY29ybmVyLXJpZ2h0e2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHh9LmZjIGJ1dHRvbiAuZmMtaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LS4wNWVtO21hcmdpbjowIC4yZW07dmVydGljYWwtYWxpZ246bWlkZGxlfS5mYy1zdGF0ZS1kZWZhdWx0e2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsMCAwLDAgMTAwJSxmcm9tKCNmZmYpLHRvKCNlNmU2ZTYpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojZTZlNmU2ICNlNmU2ZTYgI2JmYmZiZjtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMjUpO2NvbG9yOiMzMzM7dGV4dC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMiksMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KX0uZmMtc3RhdGUtYWN0aXZlLC5mYy1zdGF0ZS1kaXNhYmxlZCwuZmMtc3RhdGUtZG93biwuZmMtc3RhdGUtaG92ZXJ7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTZ9LmZjLXN0YXRlLWhvdmVye2NvbG9yOiMzMzM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNXB4Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXBvc2l0aW9uIC4xcyBsaW5lYXI7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gLjFzIGxpbmVhcjstby10cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gLjFzIGxpbmVhcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gLjFzIGxpbmVhcn0uZmMtc3RhdGUtYWN0aXZlLC5mYy1zdGF0ZS1kb3due2JhY2tncm91bmQtY29sb3I6I2NjYztiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwuMTUpLDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNSl9LmZjLXN0YXRlLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtvcGFjaXR5Oi42NTtmaWx0ZXI6YWxwaGEob3BhY2l0eT02NSk7Ym94LXNoYWRvdzpub25lfS5mYy1idXR0b24tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZjIC5mYy1idXR0b24tZ3JvdXA+KntmbG9hdDpsZWZ0O21hcmdpbjowIDAgMCAtMXB4fS5mYyAuZmMtYnV0dG9uLWdyb3VwPjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowfS5mYy1wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaGFkb3c6MCAycHggNnB4IHJnYmEoMCwwLDAsLjE1KX0uZmMtcG9wb3ZlciAuZmMtaGVhZGVye3BhZGRpbmc6MnB4IDRweH0uZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZXttYXJnaW46MCAycHh9LmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2V7Y3Vyc29yOnBvaW50ZXJ9LmZjLWx0ciAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZSwuZmMtcnRsIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3Nle2Zsb2F0OmxlZnR9LmZjLWx0ciAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSwuZmMtcnRsIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLXRpdGxle2Zsb2F0OnJpZ2h0fS5mYy11bnRoZW1lZCAuZmMtcG9wb3Zlcntib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0uZmMtdW50aGVtZWQgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2V7Zm9udC1zaXplOi45ZW07bWFyZ2luLXRvcDoycHh9LmZjLXBvcG92ZXI+LnVpLXdpZGdldC1oZWFkZXIrLnVpLXdpZGdldC1jb250ZW50e2JvcmRlci10b3A6MH0uZmMtZGl2aWRlcntib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweH1oci5mYy1kaXZpZGVye2hlaWdodDowO21hcmdpbjowO3BhZGRpbmc6MCAwIDJweDtib3JkZXItd2lkdGg6MXB4IDB9LmZjLWNsZWFye2NsZWFyOmJvdGh9LmZjLWJnLC5mYy1iZ2V2ZW50LXNrZWxldG9uLC5mYy1oZWxwZXItc2tlbGV0b24sLmZjLWhpZ2hsaWdodC1za2VsZXRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0uZmMtYmd7Ym90dG9tOjB9LmZjLWJnIHRhYmxle2hlaWdodDoxMDAlfS5mYyB0YWJsZXt3aWR0aDoxMDAlO3RhYmxlLWxheW91dDpmaXhlZDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MDtmb250LXNpemU6MWVtfS5mYyB0aHt0ZXh0LWFsaWduOmNlbnRlcn0uZmMgdGQsLmZjIHRoe2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O3BhZGRpbmc6MDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LmZjIHRkLmZjLXRvZGF5e2JvcmRlci1zdHlsZTpkb3VibGV9LmZjIC5mYy1yb3d7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowfS5mYy1yb3cgdGFibGV7Ym9yZGVyLWxlZnQ6MCBoaWRkZW4gdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjAgaGlkZGVuIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MCBoaWRkZW4gdHJhbnNwYXJlbnR9LmZjLXJvdzpmaXJzdC1jaGlsZCB0YWJsZXtib3JkZXItdG9wOjAgaGlkZGVuIHRyYW5zcGFyZW50fS5mYy1yb3d7cG9zaXRpb246cmVsYXRpdmV9LmZjLXJvdyAuZmMtYmd7ei1pbmRleDoxfS5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24sLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9ue2JvdHRvbTowfS5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24gdGFibGUsLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHRhYmxle2hlaWdodDoxMDAlfS5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24gdGQsLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHRke2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9ue3otaW5kZXg6Mn0uZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b257ei1pbmRleDozfS5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b257cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDo0O3BhZGRpbmctYm90dG9tOjJweH0uZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b257ei1pbmRleDo1fS5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGQsLmZjLXJvdyAuZmMtaGVscGVyLXNrZWxldG9uIHRke2JhY2tncm91bmQ6MCAwO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjB9LmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB0Ym9keSB0ZCwuZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGJvZHkgdGR7Ym9yZGVyLXRvcDowfS5mYy1zY3JvbGxlcntvdmVyZmxvdy15OnNjcm9sbDtvdmVyZmxvdy14OmhpZGRlbn0uZmMtc2Nyb2xsZXI+Kntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0uZmMtZXZlbnR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztmb250LXNpemU6Ljg1ZW07bGluZS1oZWlnaHQ6MS4zO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgIzNhODdhZDtiYWNrZ3JvdW5kLWNvbG9yOiMzYTg3YWQ7Zm9udC13ZWlnaHQ6NDAwfS5mYy1ldmVudCwuZmMtZXZlbnQ6aG92ZXIsLnVpLXdpZGdldCAuZmMtZXZlbnR7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0uZmMtZXZlbnQuZmMtZHJhZ2dhYmxlLC5mYy1ldmVudFtocmVmXXtjdXJzb3I6cG9pbnRlcn0uZmMtbm90LWFsbG93ZWQsLmZjLW5vdC1hbGxvd2VkIC5mYy1ldmVudHtjdXJzb3I6bm90LWFsbG93ZWR9LmZjLWV2ZW50IC5mYy1iZ3t6LWluZGV4OjE7YmFja2dyb3VuZDojZmZmO29wYWNpdHk6LjI1O2ZpbHRlcjphbHBoYShvcGFjaXR5PTI1KX0uZmMtZXZlbnQgLmZjLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5mYy1ldmVudCAuZmMtcmVzaXplcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjN9LmZjLWx0ciAuZmMtaC1ldmVudC5mYy1ub3Qtc3RhcnQsLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3QtZW5ke21hcmdpbi1sZWZ0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtwYWRkaW5nLWxlZnQ6MXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmZjLWx0ciAuZmMtaC1ldmVudC5mYy1ub3QtZW5kLC5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtbm90LXN0YXJ0e21hcmdpbi1yaWdodDowO2JvcmRlci1yaWdodC13aWR0aDowO3BhZGRpbmctcmlnaHQ6MXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZmMtaC1ldmVudCAuZmMtcmVzaXplcnt0b3A6LTFweDtib3R0b206LTFweDtsZWZ0Oi0xcHg7cmlnaHQ6LTFweDt3aWR0aDo1cHh9LmZjLWx0ciAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplciwuZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyOmFmdGVyLC5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLXN0YXJ0LXJlc2l6ZXI6YmVmb3JlLC5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyLC5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyOmFmdGVyLC5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVyOmJlZm9yZXtyaWdodDphdXRvO2N1cnNvcjp3LXJlc2l6ZX0uZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplciwuZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplcjphZnRlciwuZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplcjpiZWZvcmUsLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplciwuZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyOmFmdGVyLC5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLXN0YXJ0LXJlc2l6ZXI6YmVmb3Jle2xlZnQ6YXV0bztjdXJzb3I6ZS1yZXNpemV9LmZjLWRheS1ncmlkLWV2ZW50e21hcmdpbjoxcHggMnB4IDA7cGFkZGluZzowIDFweH0uZmMtZGF5LWdyaWQtZXZlbnQgLmZjLWNvbnRlbnR7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbn0uZmMtZGF5LWdyaWQtZXZlbnQgLmZjLXRpbWV7Zm9udC13ZWlnaHQ6NzAwfS5mYy1kYXktZ3JpZC1ldmVudCAuZmMtcmVzaXplcntsZWZ0Oi0zcHg7cmlnaHQ6LTNweDt3aWR0aDo3cHh9YS5mYy1tb3Jle21hcmdpbjoxcHggM3B4O2ZvbnQtc2l6ZTouODVlbTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZX1hLmZjLW1vcmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uZmMtbGltaXRlZHtkaXNwbGF5Om5vbmV9LmZjLWRheS1ncmlkIC5mYy1yb3d7ei1pbmRleDoxfS5mYy1tb3JlLXBvcG92ZXJ7ei1pbmRleDoyO3dpZHRoOjIyMHB4fS5mYy1tb3JlLXBvcG92ZXIgLmZjLWV2ZW50LWNvbnRhaW5lcntwYWRkaW5nOjEwcHh9LmZjLXRvb2xiYXJ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbToxZW19LmZjLXRvb2xiYXIgLmZjLWxlZnR7ZmxvYXQ6bGVmdH0uZmMtdG9vbGJhciAuZmMtcmlnaHR7ZmxvYXQ6cmlnaHR9LmZjLXRvb2xiYXIgLmZjLWNlbnRlcntkaXNwbGF5OmlubGluZS1ibG9ja30uZmMgLmZjLXRvb2xiYXI+Kj4qe2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6Ljc1ZW19LmZjIC5mYy10b29sYmFyPio+OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LmZjLXRvb2xiYXIgaDJ7bWFyZ2luOjB9LmZjLXRvb2xiYXIgYnV0dG9ue3Bvc2l0aW9uOnJlbGF0aXZlfS5mYy10b29sYmFyIC5mYy1zdGF0ZS1ob3ZlciwuZmMtdG9vbGJhciAudWktc3RhdGUtaG92ZXJ7ei1pbmRleDoyfS5mYy10b29sYmFyIC5mYy1zdGF0ZS1kb3due3otaW5kZXg6M30uZmMtdG9vbGJhciAuZmMtc3RhdGUtYWN0aXZlLC5mYy10b29sYmFyIC51aS1zdGF0ZS1hY3RpdmV7ei1pbmRleDo0fS5mYy10b29sYmFyIGJ1dHRvbjpmb2N1c3t6LWluZGV4OjV9LmZjLXZpZXctY29udGFpbmVyICosLmZjLXZpZXctY29udGFpbmVyIDphZnRlciwuZmMtdmlldy1jb250YWluZXIgOmJlZm9yZXstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9LmZjLXZpZXcsLmZjLXZpZXc+dGFibGV7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS5mYy1iYXNpY0RheS12aWV3IC5mYy1jb250ZW50LXNrZWxldG9uLC5mYy1iYXNpY1dlZWstdmlldyAuZmMtY29udGVudC1za2VsZXRvbntwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MWVtfS5mYy1iYXNpYy12aWV3IC5mYy1ib2R5IC5mYy1yb3d7bWluLWhlaWdodDo0ZW19LmZjLXJvdy5mYy1yaWdpZHtvdmVyZmxvdzpoaWRkZW59LmZjLXJvdy5mYy1yaWdpZCAuZmMtY29udGVudC1za2VsZXRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0uZmMtYmFzaWMtdmlldyAuZmMtZGF5LW51bWJlciwuZmMtYmFzaWMtdmlldyAuZmMtd2Vlay1udW1iZXJ7cGFkZGluZzowIDJweH0uZmMtYmFzaWMtdmlldyB0ZC5mYy1kYXktbnVtYmVyLC5mYy1iYXNpYy12aWV3IHRkLmZjLXdlZWstbnVtYmVyIHNwYW57cGFkZGluZy10b3A6MnB4O3BhZGRpbmctYm90dG9tOjJweH0uZmMtYmFzaWMtdmlldyAuZmMtd2Vlay1udW1iZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmZjLWJhc2ljLXZpZXcgLmZjLXdlZWstbnVtYmVyIHNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjEuMjVlbX0uZmMtbHRyIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktbnVtYmVye3RleHQtYWxpZ246cmlnaHR9LmZjLXJ0bCAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LW51bWJlcnt0ZXh0LWFsaWduOmxlZnR9LmZjLWRheS1udW1iZXIuZmMtb3RoZXItbW9udGh7b3BhY2l0eTouMztmaWx0ZXI6YWxwaGEob3BhY2l0eT0zMCl9LmZjLWFnZW5kYS12aWV3IC5mYy1kYXktZ3JpZHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmZjLWFnZW5kYS12aWV3IC5mYy1kYXktZ3JpZCAuZmMtcm93e21pbi1oZWlnaHQ6M2VtfS5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbntwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MWVtfS5mYyAuZmMtYXhpc3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZzowIDRweDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZjLWx0ciAuZmMtYXhpc3t0ZXh0LWFsaWduOnJpZ2h0fS5mYy1ydGwgLmZjLWF4aXN7dGV4dC1hbGlnbjpsZWZ0fS51aS13aWRnZXQgdGQuZmMtYXhpc3tmb250LXdlaWdodDo0MDB9LmZjLXRpbWUtZ3JpZCwuZmMtdGltZS1ncmlkLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LmZjLXRpbWUtZ3JpZHttaW4taGVpZ2h0OjEwMCV9LmZjLXRpbWUtZ3JpZCB0YWJsZXtib3JkZXI6MCBoaWRkZW4gdHJhbnNwYXJlbnR9LmZjLXRpbWUtZ3JpZD4uZmMtYmd7ei1pbmRleDoxfS5mYy10aW1lLWdyaWQgLmZjLXNsYXRzLC5mYy10aW1lLWdyaWQ+aHJ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQtc2tlbGV0b24sLmZjLXRpbWUtZ3JpZCAuZmMtY29udGVudC1za2VsZXRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0uZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50LXNrZWxldG9ue3otaW5kZXg6M30uZmMtdGltZS1ncmlkIC5mYy1oaWdobGlnaHQtc2tlbGV0b257ei1pbmRleDo0fS5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b257ei1pbmRleDo1fS5mYy10aW1lLWdyaWQgLmZjLWhlbHBlci1za2VsZXRvbnt6LWluZGV4OjZ9LmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMgdGR7aGVpZ2h0OjEuNWVtO2JvcmRlci1ib3R0b206MH0uZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAuZmMtbWlub3IgdGR7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWR9LmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMgLnVpLXdpZGdldC1jb250ZW50e2JhY2tncm91bmQ6MCAwfS5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodC1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmV9LmZjLXRpbWUtZ3JpZCAuZmMtaGlnaGxpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowfS5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQtY29udGFpbmVyLC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZX0uZmMtbHRyIC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lcnttYXJnaW46MCAyLjUlIDAgMnB4fS5mYy1ydGwgLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVye21hcmdpbjowIDJweCAwIDIuNSV9LmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudCwuZmMtdGltZS1ncmlkIC5mYy1ldmVudHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjF9LmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudHtsZWZ0OjA7cmlnaHQ6MH0uZmMtdi1ldmVudC5mYy1ub3Qtc3RhcnR7Ym9yZGVyLXRvcC13aWR0aDowO3BhZGRpbmctdG9wOjFweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uZmMtdi1ldmVudC5mYy1ub3QtZW5ke2JvcmRlci1ib3R0b20td2lkdGg6MDtwYWRkaW5nLWJvdHRvbToxcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjB9LmZjLXRpbWUtZ3JpZC1ldmVudHtvdmVyZmxvdzpoaWRkZW59LmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGltZSwuZmMtdGltZS1ncmlkLWV2ZW50IC5mYy10aXRsZXtwYWRkaW5nOjAgMXB4fS5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWV7Zm9udC1zaXplOi44NWVtO3doaXRlLXNwYWNlOm5vd3JhcH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy1jb250ZW50e3doaXRlLXNwYWNlOm5vd3JhcH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lLC5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpdGxle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lIHNwYW57ZGlzcGxheTpub25lfS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWU6YmVmb3Jle2NvbnRlbnQ6YXR0cihkYXRhLXN0YXJ0KX0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lOmFmdGVye2NvbnRlbnQ6IlwwMDBBMC1cMDAwQTAifS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpdGxle2ZvbnQtc2l6ZTouODVlbTtwYWRkaW5nOjB9LmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtcmVzaXplcntsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtoZWlnaHQ6OHB4O292ZXJmbG93OmhpZGRlbjtsaW5lLWhlaWdodDo4cHg7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpzLXJlc2l6ZX0uZmMtdGltZS1ncmlkLWV2ZW50IC5mYy1yZXNpemVyOmFmdGVye2NvbnRlbnQ6Ij0ifQ==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIKICogRG9jcyAmIExpY2Vuc2U6IGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE1IEFkYW0gU2hhdwogKi8KIWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWEocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmEoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gSihhLExhKX1mdW5jdGlvbiBkKGIpe3ZhciBjLGQ9e3ZpZXdzOmIudmlld3N8fHt9fTtyZXR1cm4gYS5lYWNoKGIsZnVuY3Rpb24oYixlKXsidmlld3MiIT1iJiYoYS5pc1BsYWluT2JqZWN0KGUpJiYhLyh0aW1lfGR1cmF0aW9ufGludGVydmFsKSQvaS50ZXN0KGIpJiYtMT09YS5pbkFycmF5KGIsTGEpPyhjPW51bGwsYS5lYWNoKGUsZnVuY3Rpb24oYSxlKXsvXihtb250aHx3ZWVrfGRheXxkZWZhdWx0fGJhc2ljKFdlZWt8RGF5KT98YWdlbmRhKFdlZWt8RGF5KT8pJC8udGVzdChhKT8oZC52aWV3c1thXXx8KGQudmlld3NbYV09e30pLGQudmlld3NbYV1bYl09ZSk6KGN8fChjPXt9KSxjW2FdPWUpfSksYyYmKGRbYl09YykpOmRbYl09ZSl9KSxkfWZ1bmN0aW9uIGUoYSxiKXtiLmxlZnQmJmEuY3NzKHsiYm9yZGVyLWxlZnQtd2lkdGgiOjEsIm1hcmdpbi1sZWZ0IjpiLmxlZnQtMX0pLGIucmlnaHQmJmEuY3NzKHsiYm9yZGVyLXJpZ2h0LXdpZHRoIjoxLCJtYXJnaW4tcmlnaHQiOmIucmlnaHQtMX0pfWZ1bmN0aW9uIGYoYSl7YS5jc3MoeyJtYXJnaW4tbGVmdCI6IiIsIm1hcmdpbi1yaWdodCI6IiIsImJvcmRlci1sZWZ0LXdpZHRoIjoiIiwiYm9yZGVyLXJpZ2h0LXdpZHRoIjoiIn0pfWZ1bmN0aW9uIGcoKXthKCJib2R5IikuYWRkQ2xhc3MoImZjLW5vdC1hbGxvd2VkIil9ZnVuY3Rpb24gaCgpe2EoImJvZHkiKS5yZW1vdmVDbGFzcygiZmMtbm90LWFsbG93ZWQiKX1mdW5jdGlvbiBpKGIsYyxkKXt2YXIgZT1NYXRoLmZsb29yKGMvYi5sZW5ndGgpLGY9TWF0aC5mbG9vcihjLWUqKGIubGVuZ3RoLTEpKSxnPVtdLGg9W10saT1bXSxrPTA7aihiKSxiLmVhY2goZnVuY3Rpb24oYyxkKXt2YXIgaj1jPT09Yi5sZW5ndGgtMT9mOmUsbD1hKGQpLm91dGVySGVpZ2h0KCEwKTtqPmw/KGcucHVzaChkKSxoLnB1c2gobCksaS5wdXNoKGEoZCkuaGVpZ2h0KCkpKTprKz1sfSksZCYmKGMtPWssZT1NYXRoLmZsb29yKGMvZy5sZW5ndGgpLGY9TWF0aC5mbG9vcihjLWUqKGcubGVuZ3RoLTEpKSksYShnKS5lYWNoKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yj09PWcubGVuZ3RoLTE/ZjplLGo9aFtiXSxrPWlbYl0sbD1kLShqLWspO2Q+aiYmYShjKS5oZWlnaHQobCl9KX1mdW5jdGlvbiBqKGEpe2EuaGVpZ2h0KCIiKX1mdW5jdGlvbiBrKGIpe3ZhciBjPTA7cmV0dXJuIGIuZmluZCgiPiAqIikuZWFjaChmdW5jdGlvbihiLGQpe3ZhciBlPWEoZCkub3V0ZXJXaWR0aCgpO2U+YyYmKGM9ZSl9KSxjKyssYi53aWR0aChjKSxjfWZ1bmN0aW9uIGwoYSxiKXtyZXR1cm4gYS5oZWlnaHQoYikuYWRkQ2xhc3MoImZjLXNjcm9sbGVyIiksYVswXS5zY3JvbGxIZWlnaHQtMT5hWzBdLmNsaWVudEhlaWdodD8hMDoobShhKSwhMSl9ZnVuY3Rpb24gbShhKXthLmhlaWdodCgiIikucmVtb3ZlQ2xhc3MoImZjLXNjcm9sbGVyIil9ZnVuY3Rpb24gbihiKXt2YXIgYz1iLmNzcygicG9zaXRpb24iKSxkPWIucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBiPWEodGhpcyk7cmV0dXJuLyhhdXRvfHNjcm9sbCkvLnRlc3QoYi5jc3MoIm92ZXJmbG93IikrYi5jc3MoIm92ZXJmbG93LXkiKStiLmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1jJiZkLmxlbmd0aD9kOmEoYlswXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9ZnVuY3Rpb24gbyhhKXt2YXIgYj1hLm9mZnNldCgpO3JldHVybntsZWZ0OmIubGVmdCxyaWdodDpiLmxlZnQrYS5vdXRlcldpZHRoKCksdG9wOmIudG9wLGJvdHRvbTpiLnRvcCthLm91dGVySGVpZ2h0KCl9fWZ1bmN0aW9uIHAoYSl7dmFyIGI9YS5vZmZzZXQoKSxjPXIoYSksZD1iLmxlZnQrdShhLCJib3JkZXItbGVmdC13aWR0aCIpK2MubGVmdCxlPWIudG9wK3UoYSwiYm9yZGVyLXRvcC13aWR0aCIpK2MudG9wO3JldHVybntsZWZ0OmQscmlnaHQ6ZCthWzBdLmNsaWVudFdpZHRoLHRvcDplLGJvdHRvbTplK2FbMF0uY2xpZW50SGVpZ2h0fX1mdW5jdGlvbiBxKGEpe3ZhciBiPWEub2Zmc2V0KCksYz1iLmxlZnQrdShhLCJib3JkZXItbGVmdC13aWR0aCIpK3UoYSwicGFkZGluZy1sZWZ0IiksZD1iLnRvcCt1KGEsImJvcmRlci10b3Atd2lkdGgiKSt1KGEsInBhZGRpbmctdG9wIik7cmV0dXJue2xlZnQ6YyxyaWdodDpjK2Eud2lkdGgoKSx0b3A6ZCxib3R0b206ZCthLmhlaWdodCgpfX1mdW5jdGlvbiByKGEpe3ZhciBiPWEuaW5uZXJXaWR0aCgpLWFbMF0uY2xpZW50V2lkdGgsYz17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOmEuaW5uZXJIZWlnaHQoKS1hWzBdLmNsaWVudEhlaWdodH07cmV0dXJuIHMoKSYmInJ0bCI9PWEuY3NzKCJkaXJlY3Rpb24iKT9jLmxlZnQ9YjpjLnJpZ2h0PWIsY31mdW5jdGlvbiBzKCl7cmV0dXJuIG51bGw9PT1NYSYmKE1hPXQoKSksTWF9ZnVuY3Rpb24gdCgpe3ZhciBiPWEoIjxkaXY+PGRpdi8+PC9kaXY+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMWUzLGxlZnQ6MCxib3JkZXI6MCxwYWRkaW5nOjAsb3ZlcmZsb3c6InNjcm9sbCIsZGlyZWN0aW9uOiJydGwifSkuYXBwZW5kVG8oImJvZHkiKSxjPWIuY2hpbGRyZW4oKSxkPWMub2Zmc2V0KCkubGVmdD5iLm9mZnNldCgpLmxlZnQ7cmV0dXJuIGIucmVtb3ZlKCksZH1mdW5jdGlvbiB1KGEsYil7cmV0dXJuIHBhcnNlRmxvYXQoYS5jc3MoYikpfHwwfWZ1bmN0aW9uIHYoYSl7cmV0dXJuIDE9PWEud2hpY2gmJiFhLmN0cmxLZXl9ZnVuY3Rpb24gdyhhLGIpe3ZhciBjPXtsZWZ0Ok1hdGgubWF4KGEubGVmdCxiLmxlZnQpLHJpZ2h0Ok1hdGgubWluKGEucmlnaHQsYi5yaWdodCksdG9wOk1hdGgubWF4KGEudG9wLGIudG9wKSxib3R0b206TWF0aC5taW4oYS5ib3R0b20sYi5ib3R0b20pfTtyZXR1cm4gYy5sZWZ0PGMucmlnaHQmJmMudG9wPGMuYm90dG9tP2M6ITF9ZnVuY3Rpb24geChhLGIpe3JldHVybntsZWZ0Ok1hdGgubWluKE1hdGgubWF4KGEubGVmdCxiLmxlZnQpLGIucmlnaHQpLHRvcDpNYXRoLm1pbihNYXRoLm1heChhLnRvcCxiLnRvcCksYi5ib3R0b20pfX1mdW5jdGlvbiB5KGEpe3JldHVybntsZWZ0OihhLmxlZnQrYS5yaWdodCkvMix0b3A6KGEudG9wK2EuYm90dG9tKS8yfX1mdW5jdGlvbiB6KGEsYil7cmV0dXJue2xlZnQ6YS5sZWZ0LWIubGVmdCx0b3A6YS50b3AtYi50b3B9fWZ1bmN0aW9uIEEoYSxiKXt2YXIgYyxkLGUsZixnPWEuc3RhcnQsaD1hLmVuZCxpPWIuc3RhcnQsaj1iLmVuZDtyZXR1cm4gaD5pJiZqPmc/KGc+PWk/KGM9Zy5jbG9uZSgpLGU9ITApOihjPWkuY2xvbmUoKSxlPSExKSxqPj1oPyhkPWguY2xvbmUoKSxmPSEwKTooZD1qLmNsb25lKCksZj0hMSkse3N0YXJ0OmMsZW5kOmQsaXNTdGFydDplLGlzRW5kOmZ9KTp2b2lkIDB9ZnVuY3Rpb24gQihhLGMpe3JldHVybiBiLmR1cmF0aW9uKHtkYXlzOmEuY2xvbmUoKS5zdHJpcFRpbWUoKS5kaWZmKGMuY2xvbmUoKS5zdHJpcFRpbWUoKSwiZGF5cyIpLG1zOmEudGltZSgpLWMudGltZSgpfSl9ZnVuY3Rpb24gQyhhLGMpe3JldHVybiBiLmR1cmF0aW9uKHtkYXlzOmEuY2xvbmUoKS5zdHJpcFRpbWUoKS5kaWZmKGMuY2xvbmUoKS5zdHJpcFRpbWUoKSwiZGF5cyIpfSl9ZnVuY3Rpb24gRChhLGMsZCl7cmV0dXJuIGIuZHVyYXRpb24oTWF0aC5yb3VuZChhLmRpZmYoYyxkLCEwKSksZCl9ZnVuY3Rpb24gRShhLGIpe3ZhciBjLGQsZTtmb3IoYz0wO2M8UmEubGVuZ3RoJiYoZD1SYVtjXSxlPUYoZCxhLGIpLCEoZT49MSYmVyhlKSkpO2MrKyk7cmV0dXJuIGR9ZnVuY3Rpb24gRihhLGMsZCl7cmV0dXJuIG51bGwhPWQ/ZC5kaWZmKGMsYSwhMCk6Yi5pc0R1cmF0aW9uKGMpP2MuYXMoYSk6Yy5lbmQuZGlmZihjLnN0YXJ0LGEsITApfWZ1bmN0aW9uIEcoYSl7cmV0dXJuIEJvb2xlYW4oYS5ob3VycygpfHxhLm1pbnV0ZXMoKXx8YS5zZWNvbmRzKCl8fGEubWlsbGlzZWNvbmRzKCkpfWZ1bmN0aW9uIEgoYSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfHxhIGluc3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiBJKGEpe3JldHVybi9eXGQrXDpcZCsoPzpcOlxkK1wuPyg/OlxkezN9KT8pPyQvLnRlc3QoYSl9ZnVuY3Rpb24gSihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpPXt9O2lmKGIpZm9yKGM9MDtjPGIubGVuZ3RoO2MrKyl7Zm9yKGQ9YltjXSxlPVtdLGY9YS5sZW5ndGgtMTtmPj0wO2YtLSlpZihnPWFbZl1bZF0sIm9iamVjdCI9PXR5cGVvZiBnKWUudW5zaGlmdChnKTtlbHNlIGlmKHZvaWQgMCE9PWcpe2lbZF09ZzticmVha31lLmxlbmd0aCYmKGlbZF09SihlKSl9Zm9yKGM9YS5sZW5ndGgtMTtjPj0wO2MtLSl7aD1hW2NdO2ZvcihkIGluIGgpZCBpbiBpfHwoaVtkXT1oW2RdKX1yZXR1cm4gaX1mdW5jdGlvbiBLKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtyZXR1cm4gYi5wcm90b3R5cGU9YSxuZXcgYn1mdW5jdGlvbiBMKGEsYil7Zm9yKHZhciBjIGluIGEpTihhLGMpJiYoYltjXT1hW2NdKX1mdW5jdGlvbiBNKGEsYil7dmFyIGMsZCxlPVsiY29uc3RydWN0b3IiLCJ0b1N0cmluZyIsInZhbHVlT2YiXTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWQ9ZVtjXSxhW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXSYmKGJbZF09YVtkXSl9ZnVuY3Rpb24gTihhLGIpe3JldHVybiBTYS5jYWxsKGEsYil9ZnVuY3Rpb24gTyhiKXtyZXR1cm4vdW5kZWZpbmVkfG51bGx8Ym9vbGVhbnxudW1iZXJ8c3RyaW5nLy50ZXN0KGEudHlwZShiKSl9ZnVuY3Rpb24gUChiLGMsZCl7aWYoYS5pc0Z1bmN0aW9uKGIpJiYoYj1bYl0pLGIpe3ZhciBlLGY7Zm9yKGU9MDtlPGIubGVuZ3RoO2UrKylmPWJbZV0uYXBwbHkoYyxkKXx8ZjtyZXR1cm4gZn19ZnVuY3Rpb24gUSgpe2Zvcih2YXIgYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspaWYodm9pZCAwIT09YXJndW1lbnRzW2FdKXJldHVybiBhcmd1bWVudHNbYV19ZnVuY3Rpb24gUihhKXtyZXR1cm4oYSsiIikucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLycvZywiJiMwMzk7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC9cbi9nLCI8YnIgLz4iKX1mdW5jdGlvbiBTKGEpe3JldHVybiBhLnJlcGxhY2UoLyYuKj87L2csIiIpfWZ1bmN0aW9uIFQoYil7dmFyIGM9W107cmV0dXJuIGEuZWFjaChiLGZ1bmN0aW9uKGEsYil7bnVsbCE9YiYmYy5wdXNoKGErIjoiK2IpfSksYy5qb2luKCI7Iil9ZnVuY3Rpb24gVShhKXtyZXR1cm4gYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpfWZ1bmN0aW9uIFYoYSxiKXtyZXR1cm4gYS1ifWZ1bmN0aW9uIFcoYSl7cmV0dXJuIGElMT09PTB9ZnVuY3Rpb24gWChhLGIpe3ZhciBjPWFbYl07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGMuYXBwbHkoYSxhcmd1bWVudHMpfX1mdW5jdGlvbiBZKGEsYil7dmFyIGMsZCxlLGYsZz1mdW5jdGlvbigpe3ZhciBoPStuZXcgRGF0ZS1mO2I+aCYmaD4wP2M9c2V0VGltZW91dChnLGItaCk6KGM9bnVsbCxhLmFwcGx5KGUsZCksY3x8KGU9ZD1udWxsKSl9O3JldHVybiBmdW5jdGlvbigpe2U9dGhpcyxkPWFyZ3VtZW50cyxmPStuZXcgRGF0ZSxjfHwoYz1zZXRUaW1lb3V0KGcsYikpfX1mdW5jdGlvbiBaKGMsZCxlKXt2YXIgZixnLGgsaSxqPWNbMF0saz0xPT1jLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBqO3JldHVybiBiLmlzTW9tZW50KGopPyhpPWIuYXBwbHkobnVsbCxjKSxfKGosaSkpOkgoail8fHZvaWQgMD09PWo/aT1iLmFwcGx5KG51bGwsYyk6KGY9ITEsZz0hMSxrP1RhLnRlc3Qoaik/KGorPSItMDEiLGM9W2pdLGY9ITAsZz0hMCk6KGg9VWEuZXhlYyhqKSkmJihmPSFoWzVdLGc9ITApOmEuaXNBcnJheShqKSYmKGc9ITApLGk9ZHx8Zj9iLnV0Yy5hcHBseShiLGMpOmIuYXBwbHkobnVsbCxjKSxmPyhpLl9hbWJpZ1RpbWU9ITAsaS5fYW1iaWdab25lPSEwKTplJiYoZz9pLl9hbWJpZ1pvbmU9ITA6ayYmKGkudXRjT2Zmc2V0P2kudXRjT2Zmc2V0KGopOmkuem9uZShqKSkpKSxpLl9mdWxsQ2FsZW5kYXI9ITAsaX1mdW5jdGlvbiAkKGEsYyl7dmFyIGQsZSxmPSExLGc9ITEsaD1hLmxlbmd0aCxpPVtdO2ZvcihkPTA7aD5kO2QrKyllPWFbZF0sYi5pc01vbWVudChlKXx8KGU9SmEubW9tZW50LnBhcnNlWm9uZShlKSksZj1mfHxlLl9hbWJpZ1RpbWUsZz1nfHxlLl9hbWJpZ1pvbmUsaS5wdXNoKGUpO2ZvcihkPTA7aD5kO2QrKyllPWlbZF0sY3x8IWZ8fGUuX2FtYmlnVGltZT9nJiYhZS5fYW1iaWdab25lJiYoaVtkXT1lLmNsb25lKCkuc3RyaXBab25lKCkpOmlbZF09ZS5jbG9uZSgpLnN0cmlwVGltZSgpO3JldHVybiBpfWZ1bmN0aW9uIF8oYSxiKXthLl9hbWJpZ1RpbWU/Yi5fYW1iaWdUaW1lPSEwOmIuX2FtYmlnVGltZSYmKGIuX2FtYmlnVGltZT0hMSksYS5fYW1iaWdab25lP2IuX2FtYmlnWm9uZT0hMDpiLl9hbWJpZ1pvbmUmJihiLl9hbWJpZ1pvbmU9ITEpfWZ1bmN0aW9uIGFhKGEsYil7YS55ZWFyKGJbMF18fDApLm1vbnRoKGJbMV18fDApLmRhdGUoYlsyXXx8MCkuaG91cnMoYlszXXx8MCkubWludXRlcyhiWzRdfHwwKS5zZWNvbmRzKGJbNV18fDApLm1pbGxpc2Vjb25kcyhiWzZdfHwwKX1mdW5jdGlvbiBiYShhLGIpe3JldHVybiBXYS5mb3JtYXQuY2FsbChhLGIpfWZ1bmN0aW9uIGNhKGEsYil7cmV0dXJuIGRhKGEsaWEoYikpfWZ1bmN0aW9uIGRhKGEsYil7dmFyIGMsZD0iIjtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWQrPWVhKGEsYltjXSk7cmV0dXJuIGR9ZnVuY3Rpb24gZWEoYSxiKXt2YXIgYyxkO3JldHVybiJzdHJpbmciPT10eXBlb2YgYj9iOihjPWIudG9rZW4pP1hhW2NdP1hhW2NdKGEpOmJhKGEsYyk6Yi5tYXliZSYmKGQ9ZGEoYSxiLm1heWJlKSxkLm1hdGNoKC9bMS05XS8pKT9kOiIifWZ1bmN0aW9uIGZhKGEsYixjLGQsZSl7dmFyIGY7cmV0dXJuIGE9SmEubW9tZW50LnBhcnNlWm9uZShhKSxiPUphLm1vbWVudC5wYXJzZVpvbmUoYiksZj0oYS5sb2NhbGVEYXRhfHxhLmxhbmcpLmNhbGwoYSksYz1mLmxvbmdEYXRlRm9ybWF0KGMpfHxjLGQ9ZHx8IiAtICIsZ2EoYSxiLGlhKGMpLGQsZSl9ZnVuY3Rpb24gZ2EoYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqPSIiLGs9IiIsbD0iIixtPSIiLG49IiI7Zm9yKGc9MDtnPGMubGVuZ3RoJiYoZj1oYShhLGIsY1tnXSksZiE9PSExKTtnKyspais9Zjtmb3IoaD1jLmxlbmd0aC0xO2g+ZyYmKGY9aGEoYSxiLGNbaF0pLGYhPT0hMSk7aC0tKWs9ZitrO2ZvcihpPWc7aD49aTtpKyspbCs9ZWEoYSxjW2ldKSxtKz1lYShiLGNbaV0pO3JldHVybihsfHxtKSYmKG49ZT9tK2QrbDpsK2QrbSksaituK2t9ZnVuY3Rpb24gaGEoYSxiLGMpe3ZhciBkLGU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBjP2M6KGQ9Yy50b2tlbikmJihlPVlhW2QuY2hhckF0KDApXSxlJiZhLmlzU2FtZShiLGUpKT9iYShhLGQpOiExfWZ1bmN0aW9uIGlhKGEpe3JldHVybiBhIGluIFphP1phW2FdOlphW2FdPWphKGEpfWZ1bmN0aW9uIGphKGEpe2Zvcih2YXIgYixjPVtdLGQ9L1xbKFteXF1dKilcXXxcKChbXlwpXSopXCl8KExUU3xMVHwoXHcpXDQqbz8pfChbXlx3XFtcKF0rKS9nO2I9ZC5leGVjKGEpOyliWzFdP2MucHVzaChiWzFdKTpiWzJdP2MucHVzaCh7bWF5YmU6amEoYlsyXSl9KTpiWzNdP2MucHVzaCh7dG9rZW46YlszXX0pOmJbNV0mJmMucHVzaChiWzVdKTtyZXR1cm4gY31mdW5jdGlvbiBrYSgpe31mdW5jdGlvbiBsYShhLGIpe3JldHVybiBhfHxiP2EmJmI/YS5ncmlkPT09Yi5ncmlkJiZhLnJvdz09PWIucm93JiZhLmNvbD09PWIuY29sOiExOiEwfWZ1bmN0aW9uIG1hKGEpe3ZhciBiPW9hKGEpO3JldHVybiJiYWNrZ3JvdW5kIj09PWJ8fCJpbnZlcnNlLWJhY2tncm91bmQiPT09Yn1mdW5jdGlvbiBuYShhKXtyZXR1cm4iaW52ZXJzZS1iYWNrZ3JvdW5kIj09PW9hKGEpfWZ1bmN0aW9uIG9hKGEpe3JldHVybiBRKChhLnNvdXJjZXx8e30pLnJlbmRlcmluZyxhLnJlbmRlcmluZyl9ZnVuY3Rpb24gcGEoYSl7dmFyIGIsYyxkPXt9O2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLChkW2MuX2lkXXx8KGRbYy5faWRdPVtdKSkucHVzaChjKTtyZXR1cm4gZH1mdW5jdGlvbiBxYShhLGIpe3JldHVybiBhLmV2ZW50U3RhcnRNUy1iLmV2ZW50U3RhcnRNU31mdW5jdGlvbiByYShhLGIpe3JldHVybiBhLmV2ZW50U3RhcnRNUy1iLmV2ZW50U3RhcnRNU3x8Yi5ldmVudER1cmF0aW9uTVMtYS5ldmVudER1cmF0aW9uTVN8fGIuZXZlbnQuYWxsRGF5LWEuZXZlbnQuYWxsRGF5fHwoYS5ldmVudC50aXRsZXx8IiIpLmxvY2FsZUNvbXBhcmUoYi5ldmVudC50aXRsZSl9ZnVuY3Rpb24gc2EoYyl7dmFyIGQsZSxmLGcsaD1KYS5kYXRhQXR0clByZWZpeDtyZXR1cm4gaCYmKGgrPSItIiksZD1jLmRhdGEoaCsiZXZlbnQiKXx8bnVsbCxkJiYoZD0ib2JqZWN0Ij09dHlwZW9mIGQ/YS5leHRlbmQoe30sZCk6e30sZT1kLnN0YXJ0LG51bGw9PWUmJihlPWQudGltZSksZj1kLmR1cmF0aW9uLGc9ZC5zdGljayxkZWxldGUgZC5zdGFydCxkZWxldGUgZC50aW1lLGRlbGV0ZSBkLmR1cmF0aW9uLGRlbGV0ZSBkLnN0aWNrKSxudWxsPT1lJiYoZT1jLmRhdGEoaCsic3RhcnQiKSksbnVsbD09ZSYmKGU9Yy5kYXRhKGgrInRpbWUiKSksbnVsbD09ZiYmKGY9Yy5kYXRhKGgrImR1cmF0aW9uIikpLG51bGw9PWcmJihnPWMuZGF0YShoKyJzdGljayIpKSxlPW51bGwhPWU/Yi5kdXJhdGlvbihlKTpudWxsLGY9bnVsbCE9Zj9iLmR1cmF0aW9uKGYpOm51bGwsZz1Cb29sZWFuKGcpLHtldmVudFByb3BzOmQsc3RhcnRUaW1lOmUsZHVyYXRpb246ZixzdGljazpnfX1mdW5jdGlvbiB0YShhLGIpe3ZhciBjLGQ7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylpZihkPWJbY10sZC5sZWZ0Q29sPD1hLnJpZ2h0Q29sJiZkLnJpZ2h0Q29sPj1hLmxlZnRDb2wpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdWEoYSxiKXtyZXR1cm4gYS5sZWZ0Q29sLWIubGVmdENvbH1mdW5jdGlvbiB2YShhKXt2YXIgYixjLGQ7aWYoYS5zb3J0KHJhKSxiPXdhKGEpLHhhKGIpLGM9YlswXSl7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl5YShjW2RdKTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXphKGNbZF0sMCwwKX19ZnVuY3Rpb24gd2EoYSl7dmFyIGIsYyxkLGU9W107Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7Zm9yKGM9YVtiXSxkPTA7ZDxlLmxlbmd0aCYmQWEoYyxlW2RdKS5sZW5ndGg7ZCsrKTtjLmxldmVsPWQsKGVbZF18fChlW2RdPVtdKSkucHVzaChjKX1yZXR1cm4gZX1mdW5jdGlvbiB4YShhKXt2YXIgYixjLGQsZSxmO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspZm9yKGM9YVtiXSxkPTA7ZDxjLmxlbmd0aDtkKyspZm9yKGU9Y1tkXSxlLmZvcndhcmRTZWdzPVtdLGY9YisxO2Y8YS5sZW5ndGg7ZisrKUFhKGUsYVtmXSxlLmZvcndhcmRTZWdzKX1mdW5jdGlvbiB5YShhKXt2YXIgYixjLGQ9YS5mb3J3YXJkU2VncyxlPTA7aWYodm9pZCAwPT09YS5mb3J3YXJkUHJlc3N1cmUpe2ZvcihiPTA7YjxkLmxlbmd0aDtiKyspYz1kW2JdLHlhKGMpLGU9TWF0aC5tYXgoZSwxK2MuZm9yd2FyZFByZXNzdXJlKTthLmZvcndhcmRQcmVzc3VyZT1lfX1mdW5jdGlvbiB6YShhLGIsYyl7dmFyIGQsZT1hLmZvcndhcmRTZWdzO2lmKHZvaWQgMD09PWEuZm9yd2FyZENvb3JkKWZvcihlLmxlbmd0aD8oZS5zb3J0KENhKSx6YShlWzBdLGIrMSxjKSxhLmZvcndhcmRDb29yZD1lWzBdLmJhY2t3YXJkQ29vcmQpOmEuZm9yd2FyZENvb3JkPTEsYS5iYWNrd2FyZENvb3JkPWEuZm9yd2FyZENvb3JkLShhLmZvcndhcmRDb29yZC1jKS8oYisxKSxkPTA7ZDxlLmxlbmd0aDtkKyspemEoZVtkXSwwLGEuZm9yd2FyZENvb3JkKX1mdW5jdGlvbiBBYShhLGIsYyl7Yz1jfHxbXTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKylCYShhLGJbZF0pJiZjLnB1c2goYltkXSk7cmV0dXJuIGN9ZnVuY3Rpb24gQmEoYSxiKXtyZXR1cm4gYS5ib3R0b20+Yi50b3AmJmEudG9wPGIuYm90dG9tfWZ1bmN0aW9uIENhKGEsYil7cmV0dXJuIGIuZm9yd2FyZFByZXNzdXJlLWEuZm9yd2FyZFByZXNzdXJlfHwoYS5iYWNrd2FyZENvb3JkfHwwKS0oYi5iYWNrd2FyZENvb3JkfHwwKXx8cmEoYSxiKX1mdW5jdGlvbiBEYShjLGQpe2Z1bmN0aW9uIGUoKXtVP2goKSYmKGsoKSxpKCkpOmYoKX1mdW5jdGlvbiBmKCl7Vj1QLnRoZW1lPyJ1aSI6ImZjIixjLmFkZENsYXNzKCJmYyIpLFAuaXNSVEw/Yy5hZGRDbGFzcygiZmMtcnRsIik6Yy5hZGRDbGFzcygiZmMtbHRyIiksUC50aGVtZT9jLmFkZENsYXNzKCJ1aS13aWRnZXQiKTpjLmFkZENsYXNzKCJmYy11bnRoZW1lZCIpLFU9YSgiPGRpdiBjbGFzcz0nZmMtdmlldy1jb250YWluZXInLz4iKS5wcmVwZW5kVG8oYyksUz1PLmhlYWRlcj1uZXcgR2EoTyxQKSxUPVMucmVuZGVyKCksVCYmYy5wcmVwZW5kKFQpLGkoUC5kZWZhdWx0VmlldyksUC5oYW5kbGVXaW5kb3dSZXNpemUmJihaPVkobSxQLndpbmRvd1Jlc2l6ZURlbGF5KSxhKHdpbmRvdykucmVzaXplKFopKX1mdW5jdGlvbiBnKCl7VyYmVy5yZW1vdmVFbGVtZW50KCksUy5yZW1vdmVFbGVtZW50KCksVS5yZW1vdmUoKSxjLnJlbW92ZUNsYXNzKCJmYyBmYy1sdHIgZmMtcnRsIGZjLXVudGhlbWVkIHVpLXdpZGdldCIpLFomJmEod2luZG93KS51bmJpbmQoInJlc2l6ZSIsWil9ZnVuY3Rpb24gaCgpe3JldHVybiBjLmlzKCI6dmlzaWJsZSIpfWZ1bmN0aW9uIGkoYil7ZGErKyxXJiZiJiZXLnR5cGUhPT1iJiYoUy5kZWFjdGl2YXRlQnV0dG9uKFcudHlwZSksSCgpLFcucmVtb3ZlRWxlbWVudCgpLFc9Ty52aWV3PW51bGwpLCFXJiZiJiYoVz1PLnZpZXc9Y2FbYl18fChjYVtiXT1PLmluc3RhbnRpYXRlVmlldyhiKSksVy5zZXRFbGVtZW50KGEoIjxkaXYgY2xhc3M9J2ZjLXZpZXcgZmMtIitiKyItdmlldycgLz4iKS5hcHBlbmRUbyhVKSksUy5hY3RpdmF0ZUJ1dHRvbihiKSksVyYmKCQ9Vy5tYXNzYWdlQ3VycmVudERhdGUoJCksVy5kaXNwbGF5aW5nJiYkLmlzV2l0aGluKFcuaW50ZXJ2YWxTdGFydCxXLmludGVydmFsRW5kKXx8aCgpJiYoSCgpLFcuZGlzcGxheSgkKSxJKCksdSgpLHYoKSxxKCkpKSxJKCksZGEtLX1mdW5jdGlvbiBqKGEpe3JldHVybiBoKCk/KGEmJmwoKSxkYSsrLFcudXBkYXRlU2l6ZSghMCksZGEtLSwhMCk6dm9pZCAwfWZ1bmN0aW9uIGsoKXtoKCkmJmwoKX1mdW5jdGlvbiBsKCl7WD0ibnVtYmVyIj09dHlwZW9mIFAuY29udGVudEhlaWdodD9QLmNvbnRlbnRIZWlnaHQ6Im51bWJlciI9PXR5cGVvZiBQLmhlaWdodD9QLmhlaWdodC0oVD9ULm91dGVySGVpZ2h0KCEwKTowKTpNYXRoLnJvdW5kKFUud2lkdGgoKS9NYXRoLm1heChQLmFzcGVjdFJhdGlvLC41KSl9ZnVuY3Rpb24gbShhKXshZGEmJmEudGFyZ2V0PT09d2luZG93JiZXLnN0YXJ0JiZqKCEwKSYmVy50cmlnZ2VyKCJ3aW5kb3dSZXNpemUiLGJhKX1mdW5jdGlvbiBuKCl7cCgpLHIoKX1mdW5jdGlvbiBvKCl7aCgpJiYoSCgpLFcuZGlzcGxheUV2ZW50cyhlYSksSSgpKX1mdW5jdGlvbiBwKCl7SCgpLFcuY2xlYXJFdmVudHMoKSxJKCl9ZnVuY3Rpb24gcSgpeyFQLmxhenlGZXRjaGluZ3x8XyhXLnN0YXJ0LFcuZW5kKT9yKCk6bygpfWZ1bmN0aW9uIHIoKXthYShXLnN0YXJ0LFcuZW5kKX1mdW5jdGlvbiBzKGEpe2VhPWEsbygpfWZ1bmN0aW9uIHQoKXtvKCl9ZnVuY3Rpb24gdSgpe1MudXBkYXRlVGl0bGUoVy50aXRsZSl9ZnVuY3Rpb24gdigpe3ZhciBhPU8uZ2V0Tm93KCk7YS5pc1dpdGhpbihXLmludGVydmFsU3RhcnQsVy5pbnRlcnZhbEVuZCk/Uy5kaXNhYmxlQnV0dG9uKCJ0b2RheSIpOlMuZW5hYmxlQnV0dG9uKCJ0b2RheSIpfWZ1bmN0aW9uIHcoYSxiKXtXLnNlbGVjdChPLmJ1aWxkU2VsZWN0UmFuZ2UuYXBwbHkoTyxhcmd1bWVudHMpKX1mdW5jdGlvbiB4KCl7VyYmVy51bnNlbGVjdCgpfWZ1bmN0aW9uIHkoKXskPVcuY29tcHV0ZVByZXZEYXRlKCQpLGkoKX1mdW5jdGlvbiB6KCl7JD1XLmNvbXB1dGVOZXh0RGF0ZSgkKSxpKCl9ZnVuY3Rpb24gQSgpeyQuYWRkKC0xLCJ5ZWFycyIpLGkoKX1mdW5jdGlvbiBCKCl7JC5hZGQoMSwieWVhcnMiKSxpKCl9ZnVuY3Rpb24gQygpeyQ9Ty5nZXROb3coKSxpKCl9ZnVuY3Rpb24gRChhKXskPU8ubW9tZW50KGEpLGkoKX1mdW5jdGlvbiBFKGEpeyQuYWRkKGIuZHVyYXRpb24oYSkpLGkoKX1mdW5jdGlvbiBGKGEsYil7dmFyIGM7Yj1ifHwiZGF5IixjPU8uZ2V0Vmlld1NwZWMoYil8fE8uZ2V0VW5pdFZpZXdTcGVjKGIpLCQ9YSxpKGM/Yy50eXBlOm51bGwpfWZ1bmN0aW9uIEcoKXtyZXR1cm4gJC5jbG9uZSgpfWZ1bmN0aW9uIEgoKXtVLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDpVLmhlaWdodCgpLG92ZXJmbG93OiJoaWRkZW4ifSl9ZnVuY3Rpb24gSSgpe1UuY3NzKHt3aWR0aDoiIixoZWlnaHQ6IiIsb3ZlcmZsb3c6IiJ9KX1mdW5jdGlvbiBKKCl7cmV0dXJuIE99ZnVuY3Rpb24gTCgpe3JldHVybiBXfWZ1bmN0aW9uIE0oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj9QW2FdOnZvaWQoKCJoZWlnaHQiPT1hfHwiY29udGVudEhlaWdodCI9PWF8fCJhc3BlY3RSYXRpbyI9PWEpJiYoUFthXT1iLGooITApKSl9ZnVuY3Rpb24gTihhLGIpe3JldHVybiBQW2FdP1BbYV0uYXBwbHkoYnx8YmEsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTp2b2lkIDB9dmFyIE89dGhpcztPLmluaXRPcHRpb25zKGR8fHt9KTt2YXIgUD10aGlzLm9wdGlvbnM7Ty5yZW5kZXI9ZSxPLmRlc3Ryb3k9ZyxPLnJlZmV0Y2hFdmVudHM9bixPLnJlcG9ydEV2ZW50cz1zLE8ucmVwb3J0RXZlbnRDaGFuZ2U9dCxPLnJlcmVuZGVyRXZlbnRzPW8sTy5jaGFuZ2VWaWV3PWksTy5zZWxlY3Q9dyxPLnVuc2VsZWN0PXgsTy5wcmV2PXksTy5uZXh0PXosTy5wcmV2WWVhcj1BLE8ubmV4dFllYXI9QixPLnRvZGF5PUMsTy5nb3RvRGF0ZT1ELE8uaW5jcmVtZW50RGF0ZT1FLE8uem9vbVRvPUYsTy5nZXREYXRlPUcsTy5nZXRDYWxlbmRhcj1KLE8uZ2V0Vmlldz1MLE8ub3B0aW9uPU0sTy50cmlnZ2VyPU47dmFyIFE9SyhGYShQLmxhbmcpKTtpZihQLm1vbnRoTmFtZXMmJihRLl9tb250aHM9UC5tb250aE5hbWVzKSxQLm1vbnRoTmFtZXNTaG9ydCYmKFEuX21vbnRoc1Nob3J0PVAubW9udGhOYW1lc1Nob3J0KSxQLmRheU5hbWVzJiYoUS5fd2Vla2RheXM9UC5kYXlOYW1lcyksUC5kYXlOYW1lc1Nob3J0JiYoUS5fd2Vla2RheXNTaG9ydD1QLmRheU5hbWVzU2hvcnQpLG51bGwhPVAuZmlyc3REYXkpe3ZhciBSPUsoUS5fd2Vlayk7Ui5kb3c9UC5maXJzdERheSxRLl93ZWVrPVJ9US5fZnVsbENhbGVuZGFyX3dlZWtDYWxjPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2E6ImxvY2FsIj09PWE/YToiaXNvIj09PWF8fCJJU08iPT09YT8iSVNPIjp2b2lkIDB9KFAud2Vla051bWJlckNhbGN1bGF0aW9uKSxPLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uPWIuZHVyYXRpb24oUC5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbiksTy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uPWIuZHVyYXRpb24oUC5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKSxPLm1vbWVudD1mdW5jdGlvbigpe3ZhciBhO3JldHVybiJsb2NhbCI9PT1QLnRpbWV6b25lPyhhPUphLm1vbWVudC5hcHBseShudWxsLGFyZ3VtZW50cyksYS5oYXNUaW1lKCkmJmEubG9jYWwoKSk6YT0iVVRDIj09PVAudGltZXpvbmU/SmEubW9tZW50LnV0Yy5hcHBseShudWxsLGFyZ3VtZW50cyk6SmEubW9tZW50LnBhcnNlWm9uZS5hcHBseShudWxsLGFyZ3VtZW50cyksIl9sb2NhbGUiaW4gYT9hLl9sb2NhbGU9UTphLl9sYW5nPVEsYX0sTy5nZXRJc0FtYmlnVGltZXpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4ibG9jYWwiIT09UC50aW1lem9uZSYmIlVUQyIhPT1QLnRpbWV6b25lfSxPLnJlem9uZURhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIE8ubW9tZW50KGEudG9BcnJheSgpKX0sTy5nZXROb3c9ZnVuY3Rpb24oKXt2YXIgYT1QLm5vdztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYSYmKGE9YSgpKSxPLm1vbWVudChhKX0sTy5nZXRFdmVudEVuZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5lbmQ/YS5lbmQuY2xvbmUoKTpPLmdldERlZmF1bHRFdmVudEVuZChhLmFsbERheSxhLnN0YXJ0KX0sTy5nZXREZWZhdWx0RXZlbnRFbmQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmNsb25lKCk7cmV0dXJuIGE/Yy5zdHJpcFRpbWUoKS5hZGQoTy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbik6Yy5hZGQoTy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKSxPLmdldElzQW1iaWdUaW1lem9uZSgpJiZjLnN0cmlwWm9uZSgpLGN9LE8uaHVtYW5pemVEdXJhdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4oYS5sb2NhbGV8fGEubGFuZykuY2FsbChhLFAubGFuZykuaHVtYW5pemUoKX0sSGEuY2FsbChPLFApO3ZhciBTLFQsVSxWLFcsWCxaLCQsXz1PLmlzRmV0Y2hOZWVkZWQsYWE9Ty5mZXRjaEV2ZW50cyxiYT1jWzBdLGNhPXt9LGRhPTAsZWE9W107JD1udWxsIT1QLmRlZmF1bHREYXRlP08ubW9tZW50KFAuZGVmYXVsdERhdGUpOk8uZ2V0Tm93KCksTy5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PVgmJmsoKSxYfSxPLmlzSGVpZ2h0QXV0bz1mdW5jdGlvbigpe3JldHVybiJhdXRvIj09PVAuY29udGVudEhlaWdodHx8ImF1dG8iPT09UC5oZWlnaHR9LE8uaW5pdGlhbGl6ZSgpfWZ1bmN0aW9uIEVhKGIpe2EuZWFjaChuYixmdW5jdGlvbihhLGMpe251bGw9PWJbYV0mJihiW2FdPWMoYikpfSl9ZnVuY3Rpb24gRmEoYSl7dmFyIGM9Yi5sb2NhbGVEYXRhfHxiLmxhbmdEYXRhO3JldHVybiBjLmNhbGwoYixhKXx8Yy5jYWxsKGIsImVuIil9ZnVuY3Rpb24gR2EoYixjKXtmdW5jdGlvbiBkKCl7dmFyIGI9Yy5oZWFkZXI7cmV0dXJuIG49Yy50aGVtZT8idWkiOiJmYyIsYj9vPWEoIjxkaXYgY2xhc3M9J2ZjLXRvb2xiYXInLz4iKS5hcHBlbmQoZigibGVmdCIpKS5hcHBlbmQoZigicmlnaHQiKSkuYXBwZW5kKGYoImNlbnRlciIpKS5hcHBlbmQoJzxkaXYgY2xhc3M9ImZjLWNsZWFyIi8+Jyk6dm9pZCAwfWZ1bmN0aW9uIGUoKXtvLnJlbW92ZSgpLG89YSgpfWZ1bmN0aW9uIGYoZCl7dmFyIGU9YSgnPGRpdiBjbGFzcz0iZmMtJytkKyciLz4nKSxmPWMuaGVhZGVyW2RdO3JldHVybiBmJiZhLmVhY2goZi5zcGxpdCgiICIpLGZ1bmN0aW9uKGQpe3ZhciBmLGc9YSgpLGg9ITA7YS5lYWNoKHRoaXMuc3BsaXQoIiwiKSxmdW5jdGlvbihkLGUpe3ZhciBmLGksaixrLGwsbSxvLHEscjsidGl0bGUiPT1lPyhnPWcuYWRkKGEoIjxoMj4mbmJzcDs8L2gyPiIpKSxoPSExKTooZj1iLmdldFZpZXdTcGVjKGUpLGY/KGk9ZnVuY3Rpb24oKXtiLmNoYW5nZVZpZXcoZSl9LHAucHVzaChlKSxqPWYuYnV0dG9uVGV4dE92ZXJyaWRlLGs9Zi5idXR0b25UZXh0RGVmYXVsdCk6YltlXSYmKGk9ZnVuY3Rpb24oKXtiW2VdKCl9LGo9KGIub3ZlcnJpZGVzLmJ1dHRvblRleHR8fHt9KVtlXSxrPWMuYnV0dG9uVGV4dFtlXSksaSYmKGw9Yy50aGVtZUJ1dHRvbkljb25zW2VdLG09Yy5idXR0b25JY29uc1tlXSxvPWo/UihqKTpsJiZjLnRoZW1lPyI8c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLSIrbCsiJz48L3NwYW4+IjptJiYhYy50aGVtZT8iPHNwYW4gY2xhc3M9J2ZjLWljb24gZmMtaWNvbi0iK20rIic+PC9zcGFuPiI6UihrKSxxPVsiZmMtIitlKyItYnV0dG9uIixuKyItYnV0dG9uIixuKyItc3RhdGUtZGVmYXVsdCJdLHI9YSgnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInK3Euam9pbigiICIpKyciPicrbysiPC9idXR0b24+IikuY2xpY2soZnVuY3Rpb24oKXtyLmhhc0NsYXNzKG4rIi1zdGF0ZS1kaXNhYmxlZCIpfHwoaSgpLChyLmhhc0NsYXNzKG4rIi1zdGF0ZS1hY3RpdmUiKXx8ci5oYXNDbGFzcyhuKyItc3RhdGUtZGlzYWJsZWQiKSkmJnIucmVtb3ZlQ2xhc3MobisiLXN0YXRlLWhvdmVyIikpfSkubW91c2Vkb3duKGZ1bmN0aW9uKCl7ci5ub3QoIi4iK24rIi1zdGF0ZS1hY3RpdmUiKS5ub3QoIi4iK24rIi1zdGF0ZS1kaXNhYmxlZCIpLmFkZENsYXNzKG4rIi1zdGF0ZS1kb3duIil9KS5tb3VzZXVwKGZ1bmN0aW9uKCl7ci5yZW1vdmVDbGFzcyhuKyItc3RhdGUtZG93biIpfSkuaG92ZXIoZnVuY3Rpb24oKXtyLm5vdCgiLiIrbisiLXN0YXRlLWFjdGl2ZSIpLm5vdCgiLiIrbisiLXN0YXRlLWRpc2FibGVkIikuYWRkQ2xhc3MobisiLXN0YXRlLWhvdmVyIil9LGZ1bmN0aW9uKCl7ci5yZW1vdmVDbGFzcyhuKyItc3RhdGUtaG92ZXIiKS5yZW1vdmVDbGFzcyhuKyItc3RhdGUtZG93biIpfSksZz1nLmFkZChyKSkpfSksaCYmZy5maXJzdCgpLmFkZENsYXNzKG4rIi1jb3JuZXItbGVmdCIpLmVuZCgpLmxhc3QoKS5hZGRDbGFzcyhuKyItY29ybmVyLXJpZ2h0IikuZW5kKCksZy5sZW5ndGg+MT8oZj1hKCI8ZGl2Lz4iKSxoJiZmLmFkZENsYXNzKCJmYy1idXR0b24tZ3JvdXAiKSxmLmFwcGVuZChnKSxlLmFwcGVuZChmKSk6ZS5hcHBlbmQoZyl9KSxlfWZ1bmN0aW9uIGcoYSl7by5maW5kKCJoMiIpLnRleHQoYSl9ZnVuY3Rpb24gaChhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5hZGRDbGFzcyhuKyItc3RhdGUtYWN0aXZlIil9ZnVuY3Rpb24gaShhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5yZW1vdmVDbGFzcyhuKyItc3RhdGUtYWN0aXZlIil9ZnVuY3Rpb24gaihhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5hdHRyKCJkaXNhYmxlZCIsImRpc2FibGVkIikuYWRkQ2xhc3MobisiLXN0YXRlLWRpc2FibGVkIil9ZnVuY3Rpb24gayhhKXtvLmZpbmQoIi5mYy0iK2ErIi1idXR0b24iKS5yZW1vdmVBdHRyKCJkaXNhYmxlZCIpLnJlbW92ZUNsYXNzKG4rIi1zdGF0ZS1kaXNhYmxlZCIpfWZ1bmN0aW9uIGwoKXtyZXR1cm4gcH12YXIgbT10aGlzO20ucmVuZGVyPWQsbS5yZW1vdmVFbGVtZW50PWUsbS51cGRhdGVUaXRsZT1nLG0uYWN0aXZhdGVCdXR0b249aCxtLmRlYWN0aXZhdGVCdXR0b249aSxtLmRpc2FibGVCdXR0b249aixtLmVuYWJsZUJ1dHRvbj1rLG0uZ2V0Vmlld3NXaXRoQnV0dG9ucz1sO3ZhciBuLG89YSgpLHA9W119ZnVuY3Rpb24gSGEoYyl7ZnVuY3Rpb24gZChhLGIpe3JldHVybiFOfHxhLmNsb25lKCkuc3RyaXBab25lKCk8Ti5jbG9uZSgpLnN0cmlwWm9uZSgpfHxiLmNsb25lKCkuc3RyaXBab25lKCk+Ui5jbG9uZSgpLnN0cmlwWm9uZSgpfWZ1bmN0aW9uIGUoYSxiKXtOPWEsUj1iLFg9W107dmFyIGM9KytWLGQ9VS5sZW5ndGg7Vz1kO2Zvcih2YXIgZT0wO2Q+ZTtlKyspZihVW2VdLGMpfWZ1bmN0aW9uIGYoYixjKXtnKGIsZnVuY3Rpb24oZCl7dmFyIGUsZixnLGg9YS5pc0FycmF5KGIuZXZlbnRzKTtpZihjPT1WKXtpZihkKWZvcihlPTA7ZTxkLmxlbmd0aDtlKyspZj1kW2VdLGc9aD9mOnMoZixiKSxnJiZYLnB1c2guYXBwbHkoWCx4KGcpKTtXLS0sV3x8UyhYKX19KX1mdW5jdGlvbiBnKGIsZCl7dmFyIGUsZixoPUphLnNvdXJjZUZldGNoZXJzO2ZvcihlPTA7ZTxoLmxlbmd0aDtlKyspe2lmKGY9aFtlXS5jYWxsKE0sYixOLmNsb25lKCksUi5jbG9uZSgpLGMudGltZXpvbmUsZCksZj09PSEwKXJldHVybjtpZigib2JqZWN0Ij09dHlwZW9mIGYpcmV0dXJuIHZvaWQgZyhmLGQpfXZhciBpPWIuZXZlbnRzO2lmKGkpYS5pc0Z1bmN0aW9uKGkpPyhNLnB1c2hMb2FkaW5nKCksaS5jYWxsKE0sTi5jbG9uZSgpLFIuY2xvbmUoKSxjLnRpbWV6b25lLGZ1bmN0aW9uKGEpe2QoYSksTS5wb3BMb2FkaW5nKCl9KSk6YS5pc0FycmF5KGkpP2QoaSk6ZCgpO2Vsc2V7dmFyIGo9Yi51cmw7aWYoail7dmFyIGssbD1iLnN1Y2Nlc3MsbT1iLmVycm9yLG49Yi5jb21wbGV0ZTtrPWEuaXNGdW5jdGlvbihiLmRhdGEpP2IuZGF0YSgpOmIuZGF0YTt2YXIgbz1hLmV4dGVuZCh7fSxrfHx7fSkscD1RKGIuc3RhcnRQYXJhbSxjLnN0YXJ0UGFyYW0pLHE9UShiLmVuZFBhcmFtLGMuZW5kUGFyYW0pLHI9UShiLnRpbWV6b25lUGFyYW0sYy50aW1lem9uZVBhcmFtKTtwJiYob1twXT1OLmZvcm1hdCgpKSxxJiYob1txXT1SLmZvcm1hdCgpKSxjLnRpbWV6b25lJiYibG9jYWwiIT1jLnRpbWV6b25lJiYob1tyXT1jLnRpbWV6b25lKSxNLnB1c2hMb2FkaW5nKCksYS5hamF4KGEuZXh0ZW5kKHt9LG9iLGIse2RhdGE6byxzdWNjZXNzOmZ1bmN0aW9uKGIpe2I9Ynx8W107dmFyIGM9UChsLHRoaXMsYXJndW1lbnRzKTthLmlzQXJyYXkoYykmJihiPWMpLGQoYil9LGVycm9yOmZ1bmN0aW9uKCl7UChtLHRoaXMsYXJndW1lbnRzKSxkKCl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7UChuLHRoaXMsYXJndW1lbnRzKSxNLnBvcExvYWRpbmcoKX19KSl9ZWxzZSBkKCl9fWZ1bmN0aW9uIGgoYSl7dmFyIGI9aShhKTtiJiYoVS5wdXNoKGIpLFcrKyxmKGIsVikpfWZ1bmN0aW9uIGkoYil7dmFyIGMsZCxlPUphLnNvdXJjZU5vcm1hbGl6ZXJzO2lmKGEuaXNGdW5jdGlvbihiKXx8YS5pc0FycmF5KGIpP2M9e2V2ZW50czpifToic3RyaW5nIj09dHlwZW9mIGI/Yz17dXJsOmJ9OiJvYmplY3QiPT10eXBlb2YgYiYmKGM9YS5leHRlbmQoe30sYikpLGMpe2ZvcihjLmNsYXNzTmFtZT8ic3RyaW5nIj09dHlwZW9mIGMuY2xhc3NOYW1lJiYoYy5jbGFzc05hbWU9Yy5jbGFzc05hbWUuc3BsaXQoL1xzKy8pKTpjLmNsYXNzTmFtZT1bXSxhLmlzQXJyYXkoYy5ldmVudHMpJiYoYy5vcmlnQXJyYXk9Yy5ldmVudHMsYy5ldmVudHM9YS5tYXAoYy5ldmVudHMsZnVuY3Rpb24oYSl7cmV0dXJuIHMoYSxjKX0pKSxkPTA7ZDxlLmxlbmd0aDtkKyspZVtkXS5jYWxsKE0sYyk7cmV0dXJuIGN9fWZ1bmN0aW9uIGooYil7VT1hLmdyZXAoVSxmdW5jdGlvbihhKXtyZXR1cm4hayhhLGIpfSksWD1hLmdyZXAoWCxmdW5jdGlvbihhKXtyZXR1cm4hayhhLnNvdXJjZSxiKX0pLFMoWCl9ZnVuY3Rpb24gayhhLGIpe3JldHVybiBhJiZiJiZsKGEpPT1sKGIpfWZ1bmN0aW9uIGwoYSl7cmV0dXJuKCJvYmplY3QiPT10eXBlb2YgYT9hLm9yaWdBcnJheXx8YS5nb29nbGVDYWxlbmRhcklkfHxhLnVybHx8YS5ldmVudHM6bnVsbCl8fGF9ZnVuY3Rpb24gbShhKXthLnN0YXJ0PU0ubW9tZW50KGEuc3RhcnQpLGEuZW5kP2EuZW5kPU0ubW9tZW50KGEuZW5kKTphLmVuZD1udWxsLHkoYSxuKGEpKSxTKFgpfWZ1bmN0aW9uIG4oYil7dmFyIGM9e307cmV0dXJuIGEuZWFjaChiLGZ1bmN0aW9uKGEsYil7byhhKSYmdm9pZCAwIT09YiYmTyhiKSYmKGNbYV09Yil9KSxjfWZ1bmN0aW9uIG8oYSl7cmV0dXJuIS9eX3xeKGlkfGFsbERheXxzdGFydHxlbmQpJC8udGVzdChhKX1mdW5jdGlvbiBwKGEsYil7dmFyIGMsZCxlLGY9cyhhKTtpZihmKXtmb3IoYz14KGYpLGQ9MDtkPGMubGVuZ3RoO2QrKyllPWNbZF0sZS5zb3VyY2V8fChiJiYoVC5ldmVudHMucHVzaChlKSxlLnNvdXJjZT1UKSxYLnB1c2goZSkpO3JldHVybiBTKFgpLGN9cmV0dXJuW119ZnVuY3Rpb24gcShiKXt2YXIgYyxkO2ZvcihudWxsPT1iP2I9ZnVuY3Rpb24oKXtyZXR1cm4hMH06YS5pc0Z1bmN0aW9uKGIpfHwoYz1iKyIiLGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX2lkPT1jfSksWD1hLmdyZXAoWCxiLCEwKSxkPTA7ZDxVLmxlbmd0aDtkKyspYS5pc0FycmF5KFVbZF0uZXZlbnRzKSYmKFVbZF0uZXZlbnRzPWEuZ3JlcChVW2RdLmV2ZW50cyxiLCEwKSk7UyhYKX1mdW5jdGlvbiByKGIpe3JldHVybiBhLmlzRnVuY3Rpb24oYik/YS5ncmVwKFgsYik6bnVsbCE9Yj8oYis9IiIsYS5ncmVwKFgsZnVuY3Rpb24oYSl7cmV0dXJuIGEuX2lkPT1ifSkpOlh9ZnVuY3Rpb24gcyhkLGUpe3ZhciBmLGcsaCxpPXt9O2lmKGMuZXZlbnREYXRhVHJhbnNmb3JtJiYoZD1jLmV2ZW50RGF0YVRyYW5zZm9ybShkKSksZSYmZS5ldmVudERhdGFUcmFuc2Zvcm0mJihkPWUuZXZlbnREYXRhVHJhbnNmb3JtKGQpKSxhLmV4dGVuZChpLGQpLGUmJihpLnNvdXJjZT1lKSxpLl9pZD1kLl9pZHx8KHZvaWQgMD09PWQuaWQ/Il9mYyIrcGIrKzpkLmlkKyIiKSxkLmNsYXNzTmFtZT8ic3RyaW5nIj09dHlwZW9mIGQuY2xhc3NOYW1lP2kuY2xhc3NOYW1lPWQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKTppLmNsYXNzTmFtZT1kLmNsYXNzTmFtZTppLmNsYXNzTmFtZT1bXSxmPWQuc3RhcnR8fGQuZGF0ZSxnPWQuZW5kLEkoZikmJihmPWIuZHVyYXRpb24oZikpLEkoZykmJihnPWIuZHVyYXRpb24oZykpLGQuZG93fHxiLmlzRHVyYXRpb24oZil8fGIuaXNEdXJhdGlvbihnKSlpLnN0YXJ0PWY/Yi5kdXJhdGlvbihmKTpudWxsLGkuZW5kPWc/Yi5kdXJhdGlvbihnKTpudWxsLGkuX3JlY3VycmluZz0hMDtlbHNle2lmKGYmJihmPU0ubW9tZW50KGYpLCFmLmlzVmFsaWQoKSkpcmV0dXJuITE7ZyYmKGc9TS5tb21lbnQoZyksZy5pc1ZhbGlkKCl8fChnPW51bGwpKSxoPWQuYWxsRGF5LHZvaWQgMD09PWgmJihoPVEoZT9lLmFsbERheURlZmF1bHQ6dm9pZCAwLGMuYWxsRGF5RGVmYXVsdCkpLHQoZixnLGgsaSl9cmV0dXJuIGl9ZnVuY3Rpb24gdChhLGIsYyxkKXtkLnN0YXJ0PWEsZC5lbmQ9YixkLmFsbERheT1jLHUoZCksSWEoZCl9ZnVuY3Rpb24gdShhKXt2KGEpLGEuZW5kJiYhYS5lbmQuaXNBZnRlcihhLnN0YXJ0KSYmKGEuZW5kPW51bGwpLGEuZW5kfHwoYy5mb3JjZUV2ZW50RHVyYXRpb24/YS5lbmQ9TS5nZXREZWZhdWx0RXZlbnRFbmQoYS5hbGxEYXksYS5zdGFydCk6YS5lbmQ9bnVsbCl9ZnVuY3Rpb24gdihhKXtudWxsPT1hLmFsbERheSYmKGEuYWxsRGF5PSEoYS5zdGFydC5oYXNUaW1lKCl8fGEuZW5kJiZhLmVuZC5oYXNUaW1lKCkpKSxhLmFsbERheT8oYS5zdGFydC5zdHJpcFRpbWUoKSxhLmVuZCYmYS5lbmQuc3RyaXBUaW1lKCkpOihhLnN0YXJ0Lmhhc1RpbWUoKXx8KGEuc3RhcnQ9TS5yZXpvbmVEYXRlKGEuc3RhcnQpKSxhLmVuZCYmIWEuZW5kLmhhc1RpbWUoKSYmKGEuZW5kPU0ucmV6b25lRGF0ZShhLmVuZCkpKX1mdW5jdGlvbiB3KGIpe3ZhciBjO3JldHVybiBiLmVuZHx8KGM9Yi5hbGxEYXksbnVsbD09YyYmKGM9IWIuc3RhcnQuaGFzVGltZSgpKSxiPWEuZXh0ZW5kKHt9LGIpLGIuZW5kPU0uZ2V0RGVmYXVsdEV2ZW50RW5kKGMsYi5zdGFydCkpLGJ9ZnVuY3Rpb24geChiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG49W107aWYoYz1jfHxOLGQ9ZHx8UixiKWlmKGIuX3JlY3VycmluZyl7aWYoZj1iLmRvdylmb3IoZT17fSxnPTA7ZzxmLmxlbmd0aDtnKyspZVtmW2ddXT0hMDtmb3IoaD1jLmNsb25lKCkuc3RyaXBUaW1lKCk7aC5pc0JlZm9yZShkKTspKCFlfHxlW2guZGF5KCldKSYmKGk9Yi5zdGFydCxqPWIuZW5kLGs9aC5jbG9uZSgpLGw9bnVsbCxpJiYoaz1rLnRpbWUoaSkpLGomJihsPWguY2xvbmUoKS50aW1lKGopKSxtPWEuZXh0ZW5kKHt9LGIpLHQoayxsLCFpJiYhaixtKSxuLnB1c2gobSkpLGguYWRkKDEsImRheXMiKX1lbHNlIG4ucHVzaChiKTtyZXR1cm4gbn1mdW5jdGlvbiB5KGIsYyxkKXtmdW5jdGlvbiBlKGEsYil7cmV0dXJuIGQ/RChhLGIsZCk6Yy5hbGxEYXk/QyhhLGIpOkIoYSxiKX12YXIgZixnLGgsaSxqLGssbD17fTtyZXR1cm4gYz1jfHx7fSxjLnN0YXJ0fHwoYy5zdGFydD1iLnN0YXJ0LmNsb25lKCkpLHZvaWQgMD09PWMuZW5kJiYoYy5lbmQ9Yi5lbmQ/Yi5lbmQuY2xvbmUoKTpudWxsKSxudWxsPT1jLmFsbERheSYmKGMuYWxsRGF5PWIuYWxsRGF5KSx1KGMpLGY9e3N0YXJ0OmIuX3N0YXJ0LmNsb25lKCksZW5kOmIuX2VuZD9iLl9lbmQuY2xvbmUoKTpNLmdldERlZmF1bHRFdmVudEVuZChiLl9hbGxEYXksYi5fc3RhcnQpLGFsbERheTpjLmFsbERheX0sdShmKSxnPW51bGwhPT1iLl9lbmQmJm51bGw9PT1jLmVuZCxoPWUoYy5zdGFydCxmLnN0YXJ0KSxjLmVuZD8oaT1lKGMuZW5kLGYuZW5kKSxqPWkuc3VidHJhY3QoaCkpOmo9bnVsbCxhLmVhY2goYyxmdW5jdGlvbihhLGIpe28oYSkmJnZvaWQgMCE9PWImJihsW2FdPWIpfSksaz16KHIoYi5faWQpLGcsYy5hbGxEYXksaCxqLGwpLHtkYXRlRGVsdGE6aCxkdXJhdGlvbkRlbHRhOmosdW5kbzprfX1mdW5jdGlvbiB6KGIsYyxkLGUsZixnKXt2YXIgaD1NLmdldElzQW1iaWdUaW1lem9uZSgpLGk9W107cmV0dXJuIGUmJiFlLnZhbHVlT2YoKSYmKGU9bnVsbCksZiYmIWYudmFsdWVPZigpJiYoZj1udWxsKSxhLmVhY2goYixmdW5jdGlvbihiLGope3ZhciBrLGw7az17c3RhcnQ6ai5zdGFydC5jbG9uZSgpLGVuZDpqLmVuZD9qLmVuZC5jbG9uZSgpOm51bGwsYWxsRGF5OmouYWxsRGF5fSxhLmVhY2goZyxmdW5jdGlvbihhKXtrW2FdPWpbYV19KSxsPXtzdGFydDpqLl9zdGFydCxlbmQ6ai5fZW5kLGFsbERheTpkfSx1KGwpLGM/bC5lbmQ9bnVsbDpmJiYhbC5lbmQmJihsLmVuZD1NLmdldERlZmF1bHRFdmVudEVuZChsLmFsbERheSxsLnN0YXJ0KSksZSYmKGwuc3RhcnQuYWRkKGUpLGwuZW5kJiZsLmVuZC5hZGQoZSkpLGYmJmwuZW5kLmFkZChmKSxoJiYhbC5hbGxEYXkmJihlfHxmKSYmKGwuc3RhcnQuc3RyaXBab25lKCksbC5lbmQmJmwuZW5kLnN0cmlwWm9uZSgpKSxhLmV4dGVuZChqLGcsbCksSWEoaiksaS5wdXNoKGZ1bmN0aW9uKCl7YS5leHRlbmQoaixrKSxJYShqKX0pfSksZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpW2FdKCl9fWZ1bmN0aW9uIEEoYil7dmFyIGQsZT1jLmJ1c2luZXNzSG91cnMsZj17Y2xhc3NOYW1lOiJmYy1ub25idXNpbmVzcyIsc3RhcnQ6IjA5OjAwIixlbmQ6IjE3OjAwIixkb3c6WzEsMiwzLDQsNV0scmVuZGVyaW5nOiJpbnZlcnNlLWJhY2tncm91bmQifSxnPU0uZ2V0VmlldygpO3JldHVybiBlJiYoZD1hLmV4dGVuZCh7fSxmLCJvYmplY3QiPT10eXBlb2YgZT9lOnt9KSksZD8oYiYmKGQuc3RhcnQ9bnVsbCxkLmVuZD1udWxsKSx4KHMoZCksZy5zdGFydCxnLmVuZCkpOltdfWZ1bmN0aW9uIEUoYSxiKXt2YXIgZD1iLnNvdXJjZXx8e30sZT1RKGIuY29uc3RyYWludCxkLmNvbnN0cmFpbnQsYy5ldmVudENvbnN0cmFpbnQpLGY9UShiLm92ZXJsYXAsZC5vdmVybGFwLGMuZXZlbnRPdmVybGFwKTtyZXR1cm4gYT13KGEpLEgoYSxlLGYsYil9ZnVuY3Rpb24gRihhKXtyZXR1cm4gSChhLGMuc2VsZWN0Q29uc3RyYWludCxjLnNlbGVjdE92ZXJsYXApfWZ1bmN0aW9uIEcoYixjKXt2YXIgZCxlO3JldHVybiBjJiYoZD1hLmV4dGVuZCh7fSxjLGIpLGU9eChzKGQpKVswXSksZT9FKGIsZSk6KGI9dyhiKSxGKGIpKX1mdW5jdGlvbiBIKGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosaztpZihiPWEuZXh0ZW5kKHt9LGIpLGIuc3RhcnQ9Yi5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGIuZW5kPWIuZW5kLmNsb25lKCkuc3RyaXBab25lKCksbnVsbCE9Yyl7Zm9yKGY9SihjKSxnPSExLGk9MDtpPGYubGVuZ3RoO2krKylpZihLKGZbaV0sYikpe2c9ITA7YnJlYWt9aWYoIWcpcmV0dXJuITF9Zm9yKGg9TS5nZXRQZWVyRXZlbnRzKGUsYiksaT0wO2k8aC5sZW5ndGg7aSsrKWlmKGo9aFtpXSxMKGosYikpe2lmKGQ9PT0hMSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZCYmIWQoaixlKSlyZXR1cm4hMTtpZihlKXtpZihrPVEoai5vdmVybGFwLChqLnNvdXJjZXx8e30pLm92ZXJsYXApLGs9PT0hMSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgayYmIWsoZSxqKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gSihhKXtyZXR1cm4iYnVzaW5lc3NIb3VycyI9PT1hP0EoKToib2JqZWN0Ij09dHlwZW9mIGE/eChzKGEpKTpyKGEpfWZ1bmN0aW9uIEsoYSxiKXt2YXIgYz1hLnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksZD1NLmdldEV2ZW50RW5kKGEpLnN0cmlwWm9uZSgpO3JldHVybiBiLnN0YXJ0Pj1jJiZiLmVuZDw9ZH1mdW5jdGlvbiBMKGEsYil7dmFyIGM9YS5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGQ9TS5nZXRFdmVudEVuZChhKS5zdHJpcFpvbmUoKTtyZXR1cm4gYi5zdGFydDxkJiZiLmVuZD5jfXZhciBNPXRoaXM7TS5pc0ZldGNoTmVlZGVkPWQsTS5mZXRjaEV2ZW50cz1lLE0uYWRkRXZlbnRTb3VyY2U9aCxNLnJlbW92ZUV2ZW50U291cmNlPWosTS51cGRhdGVFdmVudD1tLE0ucmVuZGVyRXZlbnQ9cCxNLnJlbW92ZUV2ZW50cz1xLE0uY2xpZW50RXZlbnRzPXIsTS5tdXRhdGVFdmVudD15LE0ubm9ybWFsaXplRXZlbnRSYW5nZT11LE0ubm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzPXYsTS5lbnN1cmVWaXNpYmxlRXZlbnRSYW5nZT13O3ZhciBOLFIsUz1NLnJlcG9ydEV2ZW50cyxUPXtldmVudHM6W119LFU9W1RdLFY9MCxXPTAsWD1bXTthLmVhY2goKGMuZXZlbnRzP1tjLmV2ZW50c106W10pLmNvbmNhdChjLmV2ZW50U291cmNlc3x8W10pLGZ1bmN0aW9uKGEsYil7dmFyIGM9aShiKTtjJiZVLnB1c2goYyl9KSxNLmdldEJ1c2luZXNzSG91cnNFdmVudHM9QSxNLmlzRXZlbnRSYW5nZUFsbG93ZWQ9RSxNLmlzU2VsZWN0aW9uUmFuZ2VBbGxvd2VkPUYsTS5pc0V4dGVybmFsRHJvcFJhbmdlQWxsb3dlZD1HLE0uZ2V0RXZlbnRDYWNoZT1mdW5jdGlvbigpe3JldHVybiBYfX1mdW5jdGlvbiBJYShhKXthLl9hbGxEYXk9YS5hbGxEYXksYS5fc3RhcnQ9YS5zdGFydC5jbG9uZSgpLGEuX2VuZD1hLmVuZD9hLmVuZC5jbG9uZSgpOm51bGx9dmFyIEphPWEuZnVsbENhbGVuZGFyPXt2ZXJzaW9uOiIyLjMuMiJ9LEthPUphLnZpZXdzPXt9O2EuZm4uZnVsbENhbGVuZGFyPWZ1bmN0aW9uKGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxkPXRoaXM7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlLGYpe3ZhciBnLGg9YShmKSxpPWguZGF0YSgiZnVsbENhbGVuZGFyIik7InN0cmluZyI9PXR5cGVvZiBiP2kmJmEuaXNGdW5jdGlvbihpW2JdKSYmKGc9aVtiXS5hcHBseShpLGMpLGV8fChkPWcpLCJkZXN0cm95Ij09PWImJmgucmVtb3ZlRGF0YSgiZnVsbENhbGVuZGFyIikpOml8fChpPW5ldyBqYihoLGIpLGguZGF0YSgiZnVsbENhbGVuZGFyIixpKSxpLnJlbmRlcigpKX0pLGR9O3ZhciBMYT1bImhlYWRlciIsImJ1dHRvblRleHQiLCJidXR0b25JY29ucyIsInRoZW1lQnV0dG9uSWNvbnMiXTtKYS5pbnRlcnNlY3Rpb25Ub1NlZz1BLEphLmFwcGx5QWxsPVAsSmEuZGVib3VuY2U9WSxKYS5pc0ludD1XLEphLmh0bWxFc2NhcGU9UixKYS5jc3NUb1N0cj1ULEphLnByb3h5PVgsSmEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyPVUsSmEuZ2V0Q2xpZW50UmVjdD1wLEphLmdldENvbnRlbnRSZWN0PXEsSmEuZ2V0U2Nyb2xsYmFyV2lkdGhzPXI7dmFyIE1hPW51bGw7SmEuY29tcHV0ZUludGVydmFsVW5pdD1FLEphLmR1cmF0aW9uSGFzVGltZT1HO3ZhciBOYSxPYSxQYSxRYT1bInN1biIsIm1vbiIsInR1ZSIsIndlZCIsInRodSIsImZyaSIsInNhdCJdLFJhPVsieWVhciIsIm1vbnRoIiwid2VlayIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCJdLFNhPXt9Lmhhc093blByb3BlcnR5LFRhPS9eXHMqXGR7NH0tXGRcZCQvLFVhPS9eXHMqXGR7NH0tKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KT8kLyxWYT1iLmZuLFdhPWEuZXh0ZW5kKHt9LFZhKTtKYS5tb21lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWihhcmd1bWVudHMpfSxKYS5tb21lbnQudXRjPWZ1bmN0aW9uKCl7dmFyIGE9Wihhcmd1bWVudHMsITApO3JldHVybiBhLmhhc1RpbWUoKSYmYS51dGMoKSxhfSxKYS5tb21lbnQucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIFooYXJndW1lbnRzLCEwLCEwKX0sVmEuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYT1XYS5jbG9uZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIF8odGhpcyxhKSx0aGlzLl9mdWxsQ2FsZW5kYXImJihhLl9mdWxsQ2FsZW5kYXI9ITApLGF9LFZhLndlZWs9VmEud2Vla3M9ZnVuY3Rpb24oYSl7dmFyIGI9KHRoaXMuX2xvY2FsZXx8dGhpcy5fbGFuZykuX2Z1bGxDYWxlbmRhcl93ZWVrQ2FsYztyZXR1cm4gbnVsbD09YSYmImZ1bmN0aW9uIj09dHlwZW9mIGI/Yih0aGlzKToiSVNPIj09PWI/V2EuaXNvV2Vlay5hcHBseSh0aGlzLGFyZ3VtZW50cyk6V2Eud2Vlay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFZhLnRpbWU9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuX2Z1bGxDYWxlbmRhcilyZXR1cm4gV2EudGltZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYobnVsbD09YSlyZXR1cm4gYi5kdXJhdGlvbih7aG91cnM6dGhpcy5ob3VycygpLG1pbnV0ZXM6dGhpcy5taW51dGVzKCksc2Vjb25kczp0aGlzLnNlY29uZHMoKSxtaWxsaXNlY29uZHM6dGhpcy5taWxsaXNlY29uZHMoKX0pO3RoaXMuX2FtYmlnVGltZT0hMSxiLmlzRHVyYXRpb24oYSl8fGIuaXNNb21lbnQoYSl8fChhPWIuZHVyYXRpb24oYSkpO3ZhciBjPTA7cmV0dXJuIGIuaXNEdXJhdGlvbihhKSYmKGM9MjQqTWF0aC5mbG9vcihhLmFzRGF5cygpKSksdGhpcy5ob3VycyhjK2EuaG91cnMoKSkubWludXRlcyhhLm1pbnV0ZXMoKSkuc2Vjb25kcyhhLnNlY29uZHMoKSkubWlsbGlzZWNvbmRzKGEubWlsbGlzZWNvbmRzKCkpfSxWYS5zdHJpcFRpbWU9ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4gdGhpcy5fYW1iaWdUaW1lfHwoYT10aGlzLnRvQXJyYXkoKSx0aGlzLnV0YygpLE9hKHRoaXMsYS5zbGljZSgwLDMpKSx0aGlzLl9hbWJpZ1RpbWU9ITAsdGhpcy5fYW1iaWdab25lPSEwKSx0aGlzfSxWYS5oYXNUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2FtYmlnVGltZX0sVmEuc3RyaXBab25lPWZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4gdGhpcy5fYW1iaWdab25lfHwoYT10aGlzLnRvQXJyYXkoKSxiPXRoaXMuX2FtYmlnVGltZSx0aGlzLnV0YygpLE9hKHRoaXMsYSksdGhpcy5fYW1iaWdUaW1lPWJ8fCExLHRoaXMuX2FtYmlnWm9uZT0hMCksdGhpc30sVmEuaGFzWm9uZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLl9hbWJpZ1pvbmV9LFZhLmxvY2FsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50b0FycmF5KCksYj10aGlzLl9hbWJpZ1pvbmU7cmV0dXJuIFdhLmxvY2FsLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9hbWJpZ1RpbWU9ITEsdGhpcy5fYW1iaWdab25lPSExLGImJlBhKHRoaXMsYSksdGhpc30sVmEudXRjPWZ1bmN0aW9uKCl7cmV0dXJuIFdhLnV0Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fYW1iaWdUaW1lPSExLHRoaXMuX2FtYmlnWm9uZT0hMSx0aGlzfSxhLmVhY2goWyJ6b25lIiwidXRjT2Zmc2V0Il0sZnVuY3Rpb24oYSxiKXtXYVtiXSYmKFZhW2JdPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiYodGhpcy5fYW1iaWdUaW1lPSExLHRoaXMuX2FtYmlnWm9uZT0hMSksV2FbYl0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9KSxWYS5mb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnVsbENhbGVuZGFyJiZhcmd1bWVudHNbMF0/Y2EodGhpcyxhcmd1bWVudHNbMF0pOnRoaXMuX2FtYmlnVGltZT9iYSh0aGlzLCJZWVlZLU1NLUREIik6dGhpcy5fYW1iaWdab25lP2JhKHRoaXMsIllZWVktTU0tRERbVF1ISDptbTpzcyIpOldhLmZvcm1hdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFZhLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FtYmlnVGltZT9iYSh0aGlzLCJZWVlZLU1NLUREIik6dGhpcy5fYW1iaWdab25lP2JhKHRoaXMsIllZWVktTU0tRERbVF1ISDptbTpzcyIpOldhLnRvSVNPU3RyaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVmEuaXNXaXRoaW49ZnVuY3Rpb24oYSxiKXt2YXIgYz0kKFt0aGlzLGEsYl0pO3JldHVybiBjWzBdPj1jWzFdJiZjWzBdPGNbMl19LFZhLmlzU2FtZT1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiB0aGlzLl9mdWxsQ2FsZW5kYXI/Yj8oYz0kKFt0aGlzLGFdLCEwKSxXYS5pc1NhbWUuY2FsbChjWzBdLGNbMV0sYikpOihhPUphLm1vbWVudC5wYXJzZVpvbmUoYSksV2EuaXNTYW1lLmNhbGwodGhpcyxhKSYmQm9vbGVhbih0aGlzLl9hbWJpZ1RpbWUpPT09Qm9vbGVhbihhLl9hbWJpZ1RpbWUpJiZCb29sZWFuKHRoaXMuX2FtYmlnWm9uZSk9PT1Cb29sZWFuKGEuX2FtYmlnWm9uZSkpOldhLmlzU2FtZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGEuZWFjaChbImlzQmVmb3JlIiwiaXNBZnRlciJdLGZ1bmN0aW9uKGEsYil7VmFbYl09ZnVuY3Rpb24oYSxjKXt2YXIgZDtyZXR1cm4gdGhpcy5fZnVsbENhbGVuZGFyPyhkPSQoW3RoaXMsYV0pLFdhW2JdLmNhbGwoZFswXSxkWzFdLGMpKTpXYVtiXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSksTmE9Il9kImluIGIoKSYmInVwZGF0ZU9mZnNldCJpbiBiLE9hPU5hP2Z1bmN0aW9uKGEsYyl7YS5fZC5zZXRUaW1lKERhdGUuVVRDLmFwcGx5KERhdGUsYykpLGIudXBkYXRlT2Zmc2V0KGEsITEpfTphYSxQYT1OYT9mdW5jdGlvbihhLGMpe2EuX2Quc2V0VGltZSgrbmV3IERhdGUoY1swXXx8MCxjWzFdfHwwLGNbMl18fDAsY1szXXx8MCxjWzRdfHwwLGNbNV18fDAsY1s2XXx8MCkpLGIudXBkYXRlT2Zmc2V0KGEsITEpfTphYTt2YXIgWGE9e3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGJhKGEsImEiKS5jaGFyQXQoMCl9LFQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGJhKGEsIkEiKS5jaGFyQXQoMCl9fTtKYS5mb3JtYXRSYW5nZT1mYTt2YXIgWWE9e1k6InllYXIiLE06Im1vbnRoIixEOiJkYXkiLGQ6ImRheSIsQToic2Vjb25kIixhOiJzZWNvbmQiLFQ6InNlY29uZCIsdDoic2Vjb25kIixIOiJzZWNvbmQiLGg6InNlY29uZCIsbToic2Vjb25kIixzOiJzZWNvbmQifSxaYT17fTtKYS5DbGFzcz1rYSxrYS5leHRlbmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzO3JldHVybiBhPWF8fHt9LE4oYSwiY29uc3RydWN0b3IiKSYmKGI9YS5jb25zdHJ1Y3RvciksImZ1bmN0aW9uIiE9dHlwZW9mIGImJihiPWEuY29uc3RydWN0b3I9ZnVuY3Rpb24oKXtjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLGIucHJvdG90eXBlPUsoYy5wcm90b3R5cGUpLEwoYSxiLnByb3RvdHlwZSksTShhLGIucHJvdG90eXBlKSxMKGMsYiksYn0sa2EubWl4aW49ZnVuY3Rpb24oYSl7TChhLnByb3RvdHlwZXx8YSx0aGlzLnByb3RvdHlwZSl9O3ZhciAkYT1rYS5leHRlbmQoe2lzSGlkZGVuOiEwLG9wdGlvbnM6bnVsbCxlbDpudWxsLGRvY3VtZW50TW91c2Vkb3duUHJveHk6bnVsbCxtYXJnaW46MTAsY29uc3RydWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPWF8fHt9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5pc0hpZGRlbiYmKHRoaXMuZWx8fHRoaXMucmVuZGVyKCksdGhpcy5lbC5zaG93KCksdGhpcy5wb3NpdGlvbigpLHRoaXMuaXNIaWRkZW49ITEsdGhpcy50cmlnZ2VyKCJzaG93IikpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5pc0hpZGRlbnx8KHRoaXMuZWwuaGlkZSgpLHRoaXMuaXNIaWRkZW49ITAsdGhpcy50cmlnZ2VyKCJoaWRlIikpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9dGhpcy5vcHRpb25zO3RoaXMuZWw9YSgnPGRpdiBjbGFzcz0iZmMtcG9wb3ZlciIvPicpLmFkZENsYXNzKGMuY2xhc3NOYW1lfHwiIikuY3NzKHt0b3A6MCxsZWZ0OjB9KS5hcHBlbmQoYy5jb250ZW50KS5hcHBlbmRUbyhjLnBhcmVudEVsKSx0aGlzLmVsLm9uKCJjbGljayIsIi5mYy1jbG9zZSIsZnVuY3Rpb24oKXtiLmhpZGUoKX0pLGMuYXV0b0hpZGUmJmEoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLHRoaXMuZG9jdW1lbnRNb3VzZWRvd25Qcm94eT1YKHRoaXMsImRvY3VtZW50TW91c2Vkb3duIikpfSxkb2N1bWVudE1vdXNlZG93bjpmdW5jdGlvbihiKXt0aGlzLmVsJiYhYShiLnRhcmdldCkuY2xvc2VzdCh0aGlzLmVsKS5sZW5ndGgmJnRoaXMuaGlkZSgpfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy5oaWRlKCksdGhpcy5lbCYmKHRoaXMuZWwucmVtb3ZlKCksdGhpcy5lbD1udWxsKSxhKGRvY3VtZW50KS5vZmYoIm1vdXNlZG93biIsdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KX0scG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGc9dGhpcy5vcHRpb25zLGg9dGhpcy5lbC5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKSxpPXRoaXMuZWwub3V0ZXJXaWR0aCgpLGo9dGhpcy5lbC5vdXRlckhlaWdodCgpLGs9YSh3aW5kb3cpLGw9bih0aGlzLmVsKTtlPWcudG9wfHwwLGY9dm9pZCAwIT09Zy5sZWZ0P2cubGVmdDp2b2lkIDAhPT1nLnJpZ2h0P2cucmlnaHQtaTowLGwuaXMod2luZG93KXx8bC5pcyhkb2N1bWVudCk/KGw9ayxiPTAsYz0wKTooZD1sLm9mZnNldCgpLGI9ZC50b3AsYz1kLmxlZnQpLGIrPWsuc2Nyb2xsVG9wKCksYys9ay5zY3JvbGxMZWZ0KCksZy52aWV3cG9ydENvbnN0cmFpbiE9PSExJiYoZT1NYXRoLm1pbihlLGIrbC5vdXRlckhlaWdodCgpLWotdGhpcy5tYXJnaW4pLGU9TWF0aC5tYXgoZSxiK3RoaXMubWFyZ2luKSxmPU1hdGgubWluKGYsYytsLm91dGVyV2lkdGgoKS1pLXRoaXMubWFyZ2luKSxmPU1hdGgubWF4KGYsYyt0aGlzLm1hcmdpbikpLHRoaXMuZWwuY3NzKHt0b3A6ZS1oLnRvcCxsZWZ0OmYtaC5sZWZ0fSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zW2FdJiZ0aGlzLm9wdGlvbnNbYV0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfX0pLF9hPWthLmV4dGVuZCh7Z3JpZDpudWxsLHJvd0Nvb3JkczpudWxsLGNvbENvb3JkczpudWxsLGNvbnRhaW5lckVsOm51bGwsYm91bmRzOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5ncmlkPWF9LGJ1aWxkOmZ1bmN0aW9uKCl7dGhpcy5ncmlkLmJ1aWxkKCksdGhpcy5yb3dDb29yZHM9dGhpcy5ncmlkLmNvbXB1dGVSb3dDb29yZHMoKSx0aGlzLmNvbENvb3Jkcz10aGlzLmdyaWQuY29tcHV0ZUNvbENvb3JkcygpLHRoaXMuY29tcHV0ZUJvdW5kcygpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZ3JpZC5jbGVhcigpLHRoaXMucm93Q29vcmRzPW51bGwsdGhpcy5jb2xDb29yZHM9bnVsbH0sZ2V0Q2VsbDpmdW5jdGlvbihiLGMpe3ZhciBkLGUsZixnPXRoaXMucm93Q29vcmRzLGg9Zy5sZW5ndGgsaT10aGlzLmNvbENvb3JkcyxqPWkubGVuZ3RoLGs9bnVsbCxsPW51bGw7aWYodGhpcy5pbkJvdW5kcyhiLGMpKXtmb3IoZD0wO2g+ZDtkKyspaWYoZT1nW2RdLGM+PWUudG9wJiZjPGUuYm90dG9tKXtrPWQ7YnJlYWt9Zm9yKGQ9MDtqPmQ7ZCsrKWlmKGU9aVtkXSxiPj1lLmxlZnQmJmI8ZS5yaWdodCl7bD1kO2JyZWFrfWlmKG51bGwhPT1rJiZudWxsIT09bClyZXR1cm4gZj10aGlzLmdyaWQuZ2V0Q2VsbChrLGwpLGYuZ3JpZD10aGlzLmdyaWQsYS5leHRlbmQoZixnW2tdLGlbbF0pLGZ9cmV0dXJuIG51bGx9LGNvbXB1dGVCb3VuZHM6ZnVuY3Rpb24oKXt0aGlzLmJvdW5kcz10aGlzLmNvbnRhaW5lckVsP3AodGhpcy5jb250YWluZXJFbCk6bnVsbH0saW5Cb3VuZHM6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmJvdW5kcztyZXR1cm4gYz9hPj1jLmxlZnQmJmE8Yy5yaWdodCYmYj49Yy50b3AmJmI8Yy5ib3R0b206ITB9fSksYWI9a2EuZXh0ZW5kKHtjb29yZE1hcHM6bnVsbCxjb25zdHJ1Y3RvcjpmdW5jdGlvbihhKXt0aGlzLmNvb3JkTWFwcz1hfSxidWlsZDpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5jb29yZE1hcHM7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyliW2FdLmJ1aWxkKCl9LGdldENlbGw6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMuY29vcmRNYXBzLGU9bnVsbDtmb3IoYz0wO2M8ZC5sZW5ndGgmJiFlO2MrKyllPWRbY10uZ2V0Q2VsbChhLGIpO3JldHVybiBlfSxjbGVhcjpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5jb29yZE1hcHM7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyliW2FdLmNsZWFyKCl9fSksYmI9SmEuRHJhZ0xpc3RlbmVyPWthLmV4dGVuZCh7b3B0aW9uczpudWxsLGlzTGlzdGVuaW5nOiExLGlzRHJhZ2dpbmc6ITEsb3JpZ2luWDpudWxsLG9yaWdpblk6bnVsbCxtb3VzZW1vdmVQcm94eTpudWxsLG1vdXNldXBQcm94eTpudWxsLHN1YmplY3RFbDpudWxsLHN1YmplY3RIcmVmOm51bGwsc2Nyb2xsRWw6bnVsbCxzY3JvbGxCb3VuZHM6bnVsbCxzY3JvbGxUb3BWZWw6bnVsbCwKc2Nyb2xsTGVmdFZlbDpudWxsLHNjcm9sbEludGVydmFsSWQ6bnVsbCxzY3JvbGxIYW5kbGVyUHJveHk6bnVsbCxzY3JvbGxTZW5zaXRpdml0eTozMCxzY3JvbGxTcGVlZDoyMDAsc2Nyb2xsSW50ZXJ2YWxNczo1MCxjb25zdHJ1Y3RvcjpmdW5jdGlvbihhKXthPWF8fHt9LHRoaXMub3B0aW9ucz1hLHRoaXMuc3ViamVjdEVsPWEuc3ViamVjdEVsfSxtb3VzZWRvd246ZnVuY3Rpb24oYSl7dihhKSYmKGEucHJldmVudERlZmF1bHQoKSx0aGlzLnN0YXJ0TGlzdGVuaW5nKGEpLHRoaXMub3B0aW9ucy5kaXN0YW5jZXx8dGhpcy5zdGFydERyYWcoYSkpfSxzdGFydExpc3RlbmluZzpmdW5jdGlvbihiKXt2YXIgYzt0aGlzLmlzTGlzdGVuaW5nfHwoYiYmdGhpcy5vcHRpb25zLnNjcm9sbCYmKGM9bihhKGIudGFyZ2V0KSksYy5pcyh3aW5kb3cpfHxjLmlzKGRvY3VtZW50KXx8KHRoaXMuc2Nyb2xsRWw9Yyx0aGlzLnNjcm9sbEhhbmRsZXJQcm94eT1ZKFgodGhpcywic2Nyb2xsSGFuZGxlciIpLDEwMCksdGhpcy5zY3JvbGxFbC5vbigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXJQcm94eSkpKSxhKGRvY3VtZW50KS5vbigibW91c2Vtb3ZlIix0aGlzLm1vdXNlbW92ZVByb3h5PVgodGhpcywibW91c2Vtb3ZlIikpLm9uKCJtb3VzZXVwIix0aGlzLm1vdXNldXBQcm94eT1YKHRoaXMsIm1vdXNldXAiKSkub24oInNlbGVjdHN0YXJ0Iix0aGlzLnByZXZlbnREZWZhdWx0KSxiPyh0aGlzLm9yaWdpblg9Yi5wYWdlWCx0aGlzLm9yaWdpblk9Yi5wYWdlWSk6KHRoaXMub3JpZ2luWD0wLHRoaXMub3JpZ2luWT0wKSx0aGlzLmlzTGlzdGVuaW5nPSEwLHRoaXMubGlzdGVuU3RhcnQoYikpfSxsaXN0ZW5TdGFydDpmdW5jdGlvbihhKXt0aGlzLnRyaWdnZXIoImxpc3RlblN0YXJ0IixhKX0sbW91c2Vtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hLnBhZ2VYLXRoaXMub3JpZ2luWCxlPWEucGFnZVktdGhpcy5vcmlnaW5ZO3RoaXMuaXNEcmFnZ2luZ3x8KGI9dGhpcy5vcHRpb25zLmRpc3RhbmNlfHwxLGM9ZCpkK2UqZSxjPj1iKmImJnRoaXMuc3RhcnREcmFnKGEpKSx0aGlzLmlzRHJhZ2dpbmcmJnRoaXMuZHJhZyhkLGUsYSl9LHN0YXJ0RHJhZzpmdW5jdGlvbihhKXt0aGlzLmlzTGlzdGVuaW5nfHx0aGlzLnN0YXJ0TGlzdGVuaW5nKCksdGhpcy5pc0RyYWdnaW5nfHwodGhpcy5pc0RyYWdnaW5nPSEwLHRoaXMuZHJhZ1N0YXJ0KGEpKX0sZHJhZ1N0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuc3ViamVjdEVsO3RoaXMudHJpZ2dlcigiZHJhZ1N0YXJ0IixhKSwodGhpcy5zdWJqZWN0SHJlZj1iP2IuYXR0cigiaHJlZiIpOm51bGwpJiZiLnJlbW92ZUF0dHIoImhyZWYiKX0sZHJhZzpmdW5jdGlvbihhLGIsYyl7dGhpcy50cmlnZ2VyKCJkcmFnIixhLGIsYyksdGhpcy51cGRhdGVTY3JvbGwoYyl9LG1vdXNldXA6ZnVuY3Rpb24oYSl7dGhpcy5zdG9wTGlzdGVuaW5nKGEpfSxzdG9wRHJhZzpmdW5jdGlvbihhKXt0aGlzLmlzRHJhZ2dpbmcmJih0aGlzLnN0b3BTY3JvbGxpbmcoKSx0aGlzLmRyYWdTdG9wKGEpLHRoaXMuaXNEcmFnZ2luZz0hMSl9LGRyYWdTdG9wOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy50cmlnZ2VyKCJkcmFnU3RvcCIsYSksc2V0VGltZW91dChmdW5jdGlvbigpe2Iuc3ViamVjdEhyZWYmJmIuc3ViamVjdEVsLmF0dHIoImhyZWYiLGIuc3ViamVjdEhyZWYpfSwwKX0sc3RvcExpc3RlbmluZzpmdW5jdGlvbihiKXt0aGlzLnN0b3BEcmFnKGIpLHRoaXMuaXNMaXN0ZW5pbmcmJih0aGlzLnNjcm9sbEVsJiYodGhpcy5zY3JvbGxFbC5vZmYoInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyUHJveHkpLHRoaXMuc2Nyb2xsSGFuZGxlclByb3h5PW51bGwpLGEoZG9jdW1lbnQpLm9mZigibW91c2Vtb3ZlIix0aGlzLm1vdXNlbW92ZVByb3h5KS5vZmYoIm1vdXNldXAiLHRoaXMubW91c2V1cFByb3h5KS5vZmYoInNlbGVjdHN0YXJ0Iix0aGlzLnByZXZlbnREZWZhdWx0KSx0aGlzLm1vdXNlbW92ZVByb3h5PW51bGwsdGhpcy5tb3VzZXVwUHJveHk9bnVsbCx0aGlzLmlzTGlzdGVuaW5nPSExLHRoaXMubGlzdGVuU3RvcChiKSl9LGxpc3RlblN0b3A6ZnVuY3Rpb24oYSl7dGhpcy50cmlnZ2VyKCJsaXN0ZW5TdG9wIixhKX0sdHJpZ2dlcjpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnNbYV0mJnRoaXMub3B0aW9uc1thXS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9LHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKX0sY29tcHV0ZVNjcm9sbEJvdW5kczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2Nyb2xsRWw7dGhpcy5zY3JvbGxCb3VuZHM9YT9vKGEpOm51bGx9LHVwZGF0ZVNjcm9sbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmPXRoaXMuc2Nyb2xsU2Vuc2l0aXZpdHksZz10aGlzLnNjcm9sbEJvdW5kcyxoPTAsaT0wO2cmJihiPShmLShhLnBhZ2VZLWcudG9wKSkvZixjPShmLShnLmJvdHRvbS1hLnBhZ2VZKSkvZixkPShmLShhLnBhZ2VYLWcubGVmdCkpL2YsZT0oZi0oZy5yaWdodC1hLnBhZ2VYKSkvZixiPj0wJiYxPj1iP2g9Yip0aGlzLnNjcm9sbFNwZWVkKi0xOmM+PTAmJjE+PWMmJihoPWMqdGhpcy5zY3JvbGxTcGVlZCksZD49MCYmMT49ZD9pPWQqdGhpcy5zY3JvbGxTcGVlZCotMTplPj0wJiYxPj1lJiYoaT1lKnRoaXMuc2Nyb2xsU3BlZWQpKSx0aGlzLnNldFNjcm9sbFZlbChoLGkpfSxzZXRTY3JvbGxWZWw6ZnVuY3Rpb24oYSxiKXt0aGlzLnNjcm9sbFRvcFZlbD1hLHRoaXMuc2Nyb2xsTGVmdFZlbD1iLHRoaXMuY29uc3RyYWluU2Nyb2xsVmVsKCksIXRoaXMuc2Nyb2xsVG9wVmVsJiYhdGhpcy5zY3JvbGxMZWZ0VmVsfHx0aGlzLnNjcm9sbEludGVydmFsSWR8fCh0aGlzLnNjcm9sbEludGVydmFsSWQ9c2V0SW50ZXJ2YWwoWCh0aGlzLCJzY3JvbGxJbnRlcnZhbEZ1bmMiKSx0aGlzLnNjcm9sbEludGVydmFsTXMpKX0sY29uc3RyYWluU2Nyb2xsVmVsOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zY3JvbGxFbDt0aGlzLnNjcm9sbFRvcFZlbDwwP2Euc2Nyb2xsVG9wKCk8PTAmJih0aGlzLnNjcm9sbFRvcFZlbD0wKTp0aGlzLnNjcm9sbFRvcFZlbD4wJiZhLnNjcm9sbFRvcCgpK2FbMF0uY2xpZW50SGVpZ2h0Pj1hWzBdLnNjcm9sbEhlaWdodCYmKHRoaXMuc2Nyb2xsVG9wVmVsPTApLHRoaXMuc2Nyb2xsTGVmdFZlbDwwP2Euc2Nyb2xsTGVmdCgpPD0wJiYodGhpcy5zY3JvbGxMZWZ0VmVsPTApOnRoaXMuc2Nyb2xsTGVmdFZlbD4wJiZhLnNjcm9sbExlZnQoKSthWzBdLmNsaWVudFdpZHRoPj1hWzBdLnNjcm9sbFdpZHRoJiYodGhpcy5zY3JvbGxMZWZ0VmVsPTApfSxzY3JvbGxJbnRlcnZhbEZ1bmM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNjcm9sbEVsLGI9dGhpcy5zY3JvbGxJbnRlcnZhbE1zLzFlMzt0aGlzLnNjcm9sbFRvcFZlbCYmYS5zY3JvbGxUb3AoYS5zY3JvbGxUb3AoKSt0aGlzLnNjcm9sbFRvcFZlbCpiKSx0aGlzLnNjcm9sbExlZnRWZWwmJmEuc2Nyb2xsTGVmdChhLnNjcm9sbExlZnQoKSt0aGlzLnNjcm9sbExlZnRWZWwqYiksdGhpcy5jb25zdHJhaW5TY3JvbGxWZWwoKSx0aGlzLnNjcm9sbFRvcFZlbHx8dGhpcy5zY3JvbGxMZWZ0VmVsfHx0aGlzLnN0b3BTY3JvbGxpbmcoKX0sc3RvcFNjcm9sbGluZzpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSW50ZXJ2YWxJZCYmKGNsZWFySW50ZXJ2YWwodGhpcy5zY3JvbGxJbnRlcnZhbElkKSx0aGlzLnNjcm9sbEludGVydmFsSWQ9bnVsbCx0aGlzLnNjcm9sbFN0b3AoKSl9LHNjcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEludGVydmFsSWR8fHRoaXMuc2Nyb2xsU3RvcCgpfSxzY3JvbGxTdG9wOmZ1bmN0aW9uKCl7fX0pLGNiPWJiLmV4dGVuZCh7Y29vcmRNYXA6bnVsbCxvcmlnQ2VsbDpudWxsLGNlbGw6bnVsbCxjb29yZEFkanVzdDpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKGEsYil7YmIucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcyxiKSx0aGlzLmNvb3JkTWFwPWF9LGxpc3RlblN0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXMuc3ViamVjdEVsO2JiLnByb3RvdHlwZS5saXN0ZW5TdGFydC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5jb21wdXRlQ29vcmRzKCksYT8oYz17bGVmdDphLnBhZ2VYLHRvcDphLnBhZ2VZfSxkPWMsZSYmKGI9byhlKSxkPXgoZCxiKSksdGhpcy5vcmlnQ2VsbD10aGlzLmdldENlbGwoZC5sZWZ0LGQudG9wKSxlJiZ0aGlzLm9wdGlvbnMuc3ViamVjdENlbnRlciYmKHRoaXMub3JpZ0NlbGwmJihiPXcodGhpcy5vcmlnQ2VsbCxiKXx8YiksZD15KGIpKSx0aGlzLmNvb3JkQWRqdXN0PXooZCxjKSk6KHRoaXMub3JpZ0NlbGw9bnVsbCx0aGlzLmNvb3JkQWRqdXN0PW51bGwpfSxjb21wdXRlQ29vcmRzOmZ1bmN0aW9uKCl7dGhpcy5jb29yZE1hcC5idWlsZCgpLHRoaXMuY29tcHV0ZVNjcm9sbEJvdW5kcygpfSxkcmFnU3RhcnQ6ZnVuY3Rpb24oYSl7dmFyIGI7YmIucHJvdG90eXBlLmRyYWdTdGFydC5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj10aGlzLmdldENlbGwoYS5wYWdlWCxhLnBhZ2VZKSxiJiZ0aGlzLmNlbGxPdmVyKGIpfSxkcmFnOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtiYi5wcm90b3R5cGUuZHJhZy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZD10aGlzLmdldENlbGwoYy5wYWdlWCxjLnBhZ2VZKSxsYShkLHRoaXMuY2VsbCl8fCh0aGlzLmNlbGwmJnRoaXMuY2VsbE91dCgpLGQmJnRoaXMuY2VsbE92ZXIoZCkpfSxkcmFnU3RvcDpmdW5jdGlvbigpe3RoaXMuY2VsbERvbmUoKSxiYi5wcm90b3R5cGUuZHJhZ1N0b3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjZWxsT3ZlcjpmdW5jdGlvbihhKXt0aGlzLmNlbGw9YSx0aGlzLnRyaWdnZXIoImNlbGxPdmVyIixhLGxhKGEsdGhpcy5vcmlnQ2VsbCksdGhpcy5vcmlnQ2VsbCl9LGNlbGxPdXQ6ZnVuY3Rpb24oKXt0aGlzLmNlbGwmJih0aGlzLnRyaWdnZXIoImNlbGxPdXQiLHRoaXMuY2VsbCksdGhpcy5jZWxsRG9uZSgpLHRoaXMuY2VsbD1udWxsKX0sY2VsbERvbmU6ZnVuY3Rpb24oKXt0aGlzLmNlbGwmJnRoaXMudHJpZ2dlcigiY2VsbERvbmUiLHRoaXMuY2VsbCl9LGxpc3RlblN0b3A6ZnVuY3Rpb24oKXtiYi5wcm90b3R5cGUubGlzdGVuU3RvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5vcmlnQ2VsbD10aGlzLmNlbGw9bnVsbCx0aGlzLmNvb3JkTWFwLmNsZWFyKCl9LHNjcm9sbFN0b3A6ZnVuY3Rpb24oKXtiYi5wcm90b3R5cGUuc2Nyb2xsU3RvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5jb21wdXRlQ29vcmRzKCl9LGdldENlbGw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jb29yZEFkanVzdCYmKGErPXRoaXMuY29vcmRBZGp1c3QubGVmdCxiKz10aGlzLmNvb3JkQWRqdXN0LnRvcCksdGhpcy5jb29yZE1hcC5nZXRDZWxsKGEsYil9fSksZGI9a2EuZXh0ZW5kKHtvcHRpb25zOm51bGwsc291cmNlRWw6bnVsbCxlbDpudWxsLHBhcmVudEVsOm51bGwsdG9wMDpudWxsLGxlZnQwOm51bGwsbW91c2VZMDpudWxsLG1vdXNlWDA6bnVsbCx0b3BEZWx0YTpudWxsLGxlZnREZWx0YTpudWxsLG1vdXNlbW92ZVByb3h5Om51bGwsaXNGb2xsb3dpbmc6ITEsaXNIaWRkZW46ITEsaXNBbmltYXRpbmc6ITEsY29uc3RydWN0b3I6ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yz1jfHx7fSx0aGlzLnNvdXJjZUVsPWIsdGhpcy5wYXJlbnRFbD1jLnBhcmVudEVsP2EoYy5wYXJlbnRFbCk6Yi5wYXJlbnQoKX0sc3RhcnQ6ZnVuY3Rpb24oYil7dGhpcy5pc0ZvbGxvd2luZ3x8KHRoaXMuaXNGb2xsb3dpbmc9ITAsdGhpcy5tb3VzZVkwPWIucGFnZVksdGhpcy5tb3VzZVgwPWIucGFnZVgsdGhpcy50b3BEZWx0YT0wLHRoaXMubGVmdERlbHRhPTAsdGhpcy5pc0hpZGRlbnx8dGhpcy51cGRhdGVQb3NpdGlvbigpLGEoZG9jdW1lbnQpLm9uKCJtb3VzZW1vdmUiLHRoaXMubW91c2Vtb3ZlUHJveHk9WCh0aGlzLCJtb3VzZW1vdmUiKSkpfSxzdG9wOmZ1bmN0aW9uKGIsYyl7ZnVuY3Rpb24gZCgpe3RoaXMuaXNBbmltYXRpbmc9ITEsZS5yZW1vdmVFbGVtZW50KCksdGhpcy50b3AwPXRoaXMubGVmdDA9bnVsbCxjJiZjKCl9dmFyIGU9dGhpcyxmPXRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbjt0aGlzLmlzRm9sbG93aW5nJiYhdGhpcy5pc0FuaW1hdGluZyYmKHRoaXMuaXNGb2xsb3dpbmc9ITEsYShkb2N1bWVudCkub2ZmKCJtb3VzZW1vdmUiLHRoaXMubW91c2Vtb3ZlUHJveHkpLGImJmYmJiF0aGlzLmlzSGlkZGVuPyh0aGlzLmlzQW5pbWF0aW5nPSEwLHRoaXMuZWwuYW5pbWF0ZSh7dG9wOnRoaXMudG9wMCxsZWZ0OnRoaXMubGVmdDB9LHtkdXJhdGlvbjpmLGNvbXBsZXRlOmR9KSk6ZCgpKX0sZ2V0RWw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVsO3JldHVybiBhfHwodGhpcy5zb3VyY2VFbC53aWR0aCgpLGE9dGhpcy5lbD10aGlzLnNvdXJjZUVsLmNsb25lKCkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6IiIsZGlzcGxheTp0aGlzLmlzSGlkZGVuPyJub25lIjoiIixtYXJnaW46MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIix3aWR0aDp0aGlzLnNvdXJjZUVsLndpZHRoKCksaGVpZ2h0OnRoaXMuc291cmNlRWwuaGVpZ2h0KCksb3BhY2l0eTp0aGlzLm9wdGlvbnMub3BhY2l0eXx8IiIsekluZGV4OnRoaXMub3B0aW9ucy56SW5kZXh9KS5hcHBlbmRUbyh0aGlzLnBhcmVudEVsKSksYX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuZWwmJih0aGlzLmVsLnJlbW92ZSgpLHRoaXMuZWw9bnVsbCl9LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGEsYjt0aGlzLmdldEVsKCksbnVsbD09PXRoaXMudG9wMCYmKHRoaXMuc291cmNlRWwud2lkdGgoKSxhPXRoaXMuc291cmNlRWwub2Zmc2V0KCksYj10aGlzLmVsLm9mZnNldFBhcmVudCgpLm9mZnNldCgpLHRoaXMudG9wMD1hLnRvcC1iLnRvcCx0aGlzLmxlZnQwPWEubGVmdC1iLmxlZnQpLHRoaXMuZWwuY3NzKHt0b3A6dGhpcy50b3AwK3RoaXMudG9wRGVsdGEsbGVmdDp0aGlzLmxlZnQwK3RoaXMubGVmdERlbHRhfSl9LG1vdXNlbW92ZTpmdW5jdGlvbihhKXt0aGlzLnRvcERlbHRhPWEucGFnZVktdGhpcy5tb3VzZVkwLHRoaXMubGVmdERlbHRhPWEucGFnZVgtdGhpcy5tb3VzZVgwLHRoaXMuaXNIaWRkZW58fHRoaXMudXBkYXRlUG9zaXRpb24oKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuaXNIaWRkZW58fCh0aGlzLmlzSGlkZGVuPSEwLHRoaXMuZWwmJnRoaXMuZWwuaGlkZSgpKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuaXNIaWRkZW4mJih0aGlzLmlzSGlkZGVuPSExLHRoaXMudXBkYXRlUG9zaXRpb24oKSx0aGlzLmdldEVsKCkuc2hvdygpKX19KSxlYj1rYS5leHRlbmQoe3ZpZXc6bnVsbCxpc1JUTDpudWxsLGNlbGxIdG1sOiI8dGQvPiIsY29uc3RydWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy52aWV3PWEsdGhpcy5pc1JUTD1hLm9wdCgiaXNSVEwiKX0scm93SHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT10aGlzLmdldEh0bWxSZW5kZXJlcigiY2VsbCIsYSksZj0iIjtmb3IoYj1ifHwwLGM9MDtjPHRoaXMuY29sQ250O2MrKylkPXRoaXMuZ2V0Q2VsbChiLGMpLGYrPWUoZCk7cmV0dXJuIGY9dGhpcy5ib29rZW5kQ2VsbHMoZixhLGIpLCI8dHI+IitmKyI8L3RyPiJ9LGJvb2tlbmRDZWxsczpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5nZXRIdG1sUmVuZGVyZXIoImludHJvIixiKShjfHwwKSxlPXRoaXMuZ2V0SHRtbFJlbmRlcmVyKCJvdXRybyIsYikoY3x8MCksZj10aGlzLmlzUlRMP2U6ZCxnPXRoaXMuaXNSVEw/ZDplO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9mK2ErZzphLnByZXBlbmQoZikuYXBwZW5kKGcpfSxnZXRIdG1sUmVuZGVyZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnPXRoaXMudmlldztyZXR1cm4gYz1hKyJIdG1sIixiJiYoZD1iK1UoYSkrIkh0bWwiKSxkJiYoZj1nW2RdKT9lPWc6ZCYmKGY9dGhpc1tkXSk/ZT10aGlzOihmPWdbY10pP2U9ZzooZj10aGlzW2NdKSYmKGU9dGhpcyksImZ1bmN0aW9uIj09dHlwZW9mIGY/ZnVuY3Rpb24oKXtyZXR1cm4gZi5hcHBseShlLGFyZ3VtZW50cyl8fCIifTpmdW5jdGlvbigpe3JldHVybiBmfHwiIn19fSksZmI9SmEuR3JpZD1lYi5leHRlbmQoe3N0YXJ0Om51bGwsZW5kOm51bGwscm93Q250OjAsY29sQ250OjAsZWw6bnVsbCxjb29yZE1hcDpudWxsLGVsc0J5RmlsbDpudWxsLGV4dGVybmFsRHJhZ1N0YXJ0UHJveHk6bnVsbCxjb2xIZWFkRm9ybWF0Om51bGwsZXZlbnRUaW1lRm9ybWF0Om51bGwsZGlzcGxheUV2ZW50VGltZTpudWxsLGRpc3BsYXlFdmVudEVuZDpudWxsLGNlbGxEdXJhdGlvbjpudWxsLGxhcmdlVW5pdDpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7ZWIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuY29vcmRNYXA9bmV3IF9hKHRoaXMpLHRoaXMuZWxzQnlGaWxsPXt9LHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eT1YKHRoaXMsImV4dGVybmFsRHJhZ1N0YXJ0Iil9LGNvbXB1dGVDb2xIZWFkRm9ybWF0OmZ1bmN0aW9uKCl7fSxjb21wdXRlRXZlbnRUaW1lRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5vcHQoInNtYWxsVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50VGltZTpmdW5jdGlvbigpe3JldHVybiEwfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHNldFJhbmdlOmZ1bmN0aW9uKGEpe3RoaXMuc3RhcnQ9YS5zdGFydC5jbG9uZSgpLHRoaXMuZW5kPWEuZW5kLmNsb25lKCksdGhpcy5yYW5nZVVwZGF0ZWQoKSx0aGlzLnByb2Nlc3NSYW5nZU9wdGlvbnMoKX0scmFuZ2VVcGRhdGVkOmZ1bmN0aW9uKCl7fSxwcm9jZXNzUmFuZ2VPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGEsYixjPXRoaXMudmlldzt0aGlzLmNvbEhlYWRGb3JtYXQ9Yy5vcHQoImNvbHVtbkZvcm1hdCIpfHx0aGlzLmNvbXB1dGVDb2xIZWFkRm9ybWF0KCksdGhpcy5ldmVudFRpbWVGb3JtYXQ9Yy5vcHQoImV2ZW50VGltZUZvcm1hdCIpfHxjLm9wdCgidGltZUZvcm1hdCIpfHx0aGlzLmNvbXB1dGVFdmVudFRpbWVGb3JtYXQoKSxhPWMub3B0KCJkaXNwbGF5RXZlbnRUaW1lIiksbnVsbD09YSYmKGE9dGhpcy5jb21wdXRlRGlzcGxheUV2ZW50VGltZSgpKSxiPWMub3B0KCJkaXNwbGF5RXZlbnRFbmQiKSxudWxsPT1iJiYoYj10aGlzLmNvbXB1dGVEaXNwbGF5RXZlbnRFbmQoKSksdGhpcy5kaXNwbGF5RXZlbnRUaW1lPWEsdGhpcy5kaXNwbGF5RXZlbnRFbmQ9Yn0sYnVpbGQ6ZnVuY3Rpb24oKXt9LGNsZWFyOmZ1bmN0aW9uKCl7fSxyYW5nZVRvU2VnczpmdW5jdGlvbihhKXt9LGRpZmZEYXRlczpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmxhcmdlVW5pdD9EKGEsYix0aGlzLmxhcmdlVW5pdCk6QihhLGIpfSxnZXRDZWxsOmZ1bmN0aW9uKGIsYyl7dmFyIGQ7cmV0dXJuIG51bGw9PWMmJigibnVtYmVyIj09dHlwZW9mIGI/KGM9YiV0aGlzLmNvbENudCxiPU1hdGguZmxvb3IoYi90aGlzLmNvbENudCkpOihjPWIuY29sLGI9Yi5yb3cpKSxkPXtyb3c6Yixjb2w6Y30sYS5leHRlbmQoZCx0aGlzLmdldFJvd0RhdGEoYiksdGhpcy5nZXRDb2xEYXRhKGMpKSxhLmV4dGVuZChkLHRoaXMuY29tcHV0ZUNlbGxSYW5nZShkKSksZH0sY29tcHV0ZUNlbGxSYW5nZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbXB1dGVDZWxsRGF0ZShhKTtyZXR1cm57c3RhcnQ6YixlbmQ6Yi5jbG9uZSgpLmFkZCh0aGlzLmNlbGxEdXJhdGlvbil9fSxjb21wdXRlQ2VsbERhdGU6ZnVuY3Rpb24oYSl7fSxnZXRSb3dEYXRhOmZ1bmN0aW9uKGEpe3JldHVybnt9fSxnZXRDb2xEYXRhOmZ1bmN0aW9uKGEpe3JldHVybnt9fSxnZXRSb3dFbDpmdW5jdGlvbihhKXt9LGdldENvbEVsOmZ1bmN0aW9uKGEpe30sZ2V0Q2VsbERheUVsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldENvbEVsKGEuY29sKXx8dGhpcy5nZXRSb3dFbChhLnJvdyl9LGNvbXB1dGVSb3dDb29yZHM6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZD1bXTtmb3IoYT0wO2E8dGhpcy5yb3dDbnQ7YSsrKWI9dGhpcy5nZXRSb3dFbChhKSxjPWIub2Zmc2V0KCkudG9wLGQucHVzaCh7dG9wOmMsYm90dG9tOmMrYi5vdXRlckhlaWdodCgpfSk7cmV0dXJuIGR9LGNvbXB1dGVDb2xDb29yZHM6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZD1bXTtmb3IoYT0wO2E8dGhpcy5jb2xDbnQ7YSsrKWI9dGhpcy5nZXRDb2xFbChhKSxjPWIub2Zmc2V0KCkubGVmdCxkLnB1c2goe2xlZnQ6YyxyaWdodDpjK2Iub3V0ZXJXaWR0aCgpfSk7cmV0dXJuIGR9LHNldEVsZW1lbnQ6ZnVuY3Rpb24oYil7dmFyIGM9dGhpczt0aGlzLmVsPWIsYi5vbigibW91c2Vkb3duIixmdW5jdGlvbihiKXthKGIudGFyZ2V0KS5pcygiLmZjLWV2ZW50LWNvbnRhaW5lciAqLCAuZmMtbW9yZSIpfHxhKGIudGFyZ2V0KS5jbG9zZXN0KCIuZmMtcG9wb3ZlciIpLmxlbmd0aHx8Yy5kYXlNb3VzZWRvd24oYil9KSx0aGlzLmJpbmRTZWdIYW5kbGVycygpLHRoaXMuYmluZEdsb2JhbEhhbmRsZXJzKCl9LHJlbW92ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt0aGlzLnVuYmluZEdsb2JhbEhhbmRsZXJzKCksdGhpcy5lbC5yZW1vdmUoKX0scmVuZGVyU2tlbGV0b246ZnVuY3Rpb24oKXt9LHJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7fSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7fSxiaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vbigiZHJhZ3N0YXJ0IHNvcnRzdGFydCIsdGhpcy5leHRlcm5hbERyYWdTdGFydFByb3h5KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vZmYoImRyYWdzdGFydCBzb3J0c3RhcnQiLHRoaXMuZXh0ZXJuYWxEcmFnU3RhcnRQcm94eSl9LGRheU1vdXNlZG93bjpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcyxlPXRoaXMudmlldyxmPWUub3B0KCJzZWxlY3RhYmxlIiksaT1uZXcgY2IodGhpcy5jb29yZE1hcCx7c2Nyb2xsOmUub3B0KCJkcmFnU2Nyb2xsIiksZHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7ZS51bnNlbGVjdCgpfSxjZWxsT3ZlcjpmdW5jdGlvbihhLGUsaCl7aCYmKGI9ZT9hOm51bGwsZiYmKGM9ZC5jb21wdXRlU2VsZWN0aW9uKGgsYSksYz9kLnJlbmRlclNlbGVjdGlvbihjKTpnKCkpKX0sY2VsbE91dDpmdW5jdGlvbihhKXtiPW51bGwsYz1udWxsLGQudW5yZW5kZXJTZWxlY3Rpb24oKSxoKCl9LGxpc3RlblN0b3A6ZnVuY3Rpb24oYSl7YiYmZS50cmlnZ2VyRGF5Q2xpY2soYixkLmdldENlbGxEYXlFbChiKSxhKSxjJiZlLnJlcG9ydFNlbGVjdGlvbihjLGEpLGgoKX19KTtpLm1vdXNlZG93bihhKX0scmVuZGVyUmFuZ2VIZWxwZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmZhYnJpY2F0ZUhlbHBlckV2ZW50KGEsYik7dGhpcy5yZW5kZXJIZWxwZXIoYyxiKX0sZmFicmljYXRlSGVscGVyRXZlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iP0soYi5ldmVudCk6e307cmV0dXJuIGMuc3RhcnQ9YS5zdGFydC5jbG9uZSgpLGMuZW5kPWEuZW5kP2EuZW5kLmNsb25lKCk6bnVsbCxjLmFsbERheT1udWxsLHRoaXMudmlldy5jYWxlbmRhci5ub3JtYWxpemVFdmVudFJhbmdlKGMpLGMuY2xhc3NOYW1lPShjLmNsYXNzTmFtZXx8W10pLmNvbmNhdCgiZmMtaGVscGVyIiksYnx8KGMuZWRpdGFibGU9ITEpLGN9LHJlbmRlckhlbHBlcjpmdW5jdGlvbihhLGIpe30sdW5yZW5kZXJIZWxwZXI6ZnVuY3Rpb24oKXt9LHJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbihhKXt0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLnNlbGVjdGlvblJhbmdlVG9TZWdzKGEpKX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCl9LGNvbXB1dGVTZWxlY3Rpb246ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVthLnN0YXJ0LGEuZW5kLGIuc3RhcnQsYi5lbmRdO3JldHVybiBkLnNvcnQoViksYz17c3RhcnQ6ZFswXS5jbG9uZSgpLGVuZDpkWzNdLmNsb25lKCl9LHRoaXMudmlldy5jYWxlbmRhci5pc1NlbGVjdGlvblJhbmdlQWxsb3dlZChjKT9jOm51bGx9LHNlbGVjdGlvblJhbmdlVG9TZWdzOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJhbmdlVG9TZWdzKGEpfSxyZW5kZXJIaWdobGlnaHQ6ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJGaWxsKCJoaWdobGlnaHQiLGEpfSx1bnJlbmRlckhpZ2hsaWdodDpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJGaWxsKCJoaWdobGlnaHQiKX0saGlnaGxpZ2h0U2VnQ2xhc3NlczpmdW5jdGlvbigpe3JldHVyblsiZmMtaGlnaGxpZ2h0Il19LHJlbmRlckZpbGw6ZnVuY3Rpb24oYSxiKXt9LHVucmVuZGVyRmlsbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVsc0J5RmlsbFthXTtiJiYoYi5yZW1vdmUoKSxkZWxldGUgdGhpcy5lbHNCeUZpbGxbYV0pfSxyZW5kZXJGaWxsU2VnRWxzOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT10aGlzLGY9dGhpc1tiKyJTZWdFbCJdLGc9IiIsaD1bXTtpZihjLmxlbmd0aCl7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylnKz10aGlzLmZpbGxTZWdIdG1sKGIsY1tkXSk7YShnKS5lYWNoKGZ1bmN0aW9uKGIsZCl7dmFyIGc9Y1tiXSxpPWEoZCk7ZiYmKGk9Zi5jYWxsKGUsZyxpKSksaSYmKGk9YShpKSxpLmlzKGUuZmlsbFNlZ1RhZykmJihnLmVsPWksaC5wdXNoKGcpKSl9KX1yZXR1cm4gaH0sZmlsbFNlZ1RhZzoiZGl2IixmaWxsU2VnSHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbYSsiU2VnQ2xhc3NlcyJdLGQ9dGhpc1thKyJTZWdDc3MiXSxlPWM/Yy5jYWxsKHRoaXMsYik6W10sZj1UKGQ/ZC5jYWxsKHRoaXMsYik6e30pO3JldHVybiI8Iit0aGlzLmZpbGxTZWdUYWcrKGUubGVuZ3RoPycgY2xhc3M9IicrZS5qb2luKCIgIikrJyInOiIiKSsoZj8nIHN0eWxlPSInK2YrJyInOiIiKSsiIC8+In0saGVhZEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzcz0iZmMtcm93ICcrdGhpcy52aWV3LndpZGdldEhlYWRlckNsYXNzKyciPjx0YWJsZT48dGhlYWQ+Jyt0aGlzLnJvd0h0bWwoImhlYWQiKSsiPC90aGVhZD48L3RhYmxlPjwvZGl2PiJ9LGhlYWRDZWxsSHRtbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcsYz1hLnN0YXJ0O3JldHVybic8dGggY2xhc3M9ImZjLWRheS1oZWFkZXIgJytiLndpZGdldEhlYWRlckNsYXNzKyIgZmMtIitRYVtjLmRheSgpXSsnIj4nK1IoYy5mb3JtYXQodGhpcy5jb2xIZWFkRm9ybWF0KSkrIjwvdGg+In0sYmdDZWxsSHRtbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcsYz1hLnN0YXJ0LGQ9dGhpcy5nZXREYXlDbGFzc2VzKGMpO3JldHVybiBkLnVuc2hpZnQoImZjLWRheSIsYi53aWRnZXRDb250ZW50Q2xhc3MpLCc8dGQgY2xhc3M9IicrZC5qb2luKCIgIikrJyIgZGF0YS1kYXRlPSInK2MuZm9ybWF0KCJZWVlZLU1NLUREIikrJyI+PC90ZD4nfSxnZXREYXlDbGFzc2VzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudmlldyxjPWIuY2FsZW5kYXIuZ2V0Tm93KCkuc3RyaXBUaW1lKCksZD1bImZjLSIrUWFbYS5kYXkoKV1dO3JldHVybiAxPT1iLmludGVydmFsRHVyYXRpb24uYXMoIm1vbnRocyIpJiZhLm1vbnRoKCkhPWIuaW50ZXJ2YWxTdGFydC5tb250aCgpJiZkLnB1c2goImZjLW90aGVyLW1vbnRoIiksYS5pc1NhbWUoYywiZGF5Iik/ZC5wdXNoKCJmYy10b2RheSIsYi5oaWdobGlnaHRTdGF0ZUNsYXNzKTpjPmE/ZC5wdXNoKCJmYy1wYXN0Iik6ZC5wdXNoKCJmYy1mdXR1cmUiKSxkfX0pO2ZiLm1peGluKHttb3VzZWRPdmVyU2VnOm51bGwsaXNEcmFnZ2luZ1NlZzohMSxpc1Jlc2l6aW5nU2VnOiExLGlzRHJhZ2dpbmdFeHRlcm5hbDohMSxzZWdzOm51bGwscmVuZGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLmV2ZW50c1RvU2VncyhhKSxlPVtdLGY9W107Zm9yKGI9MDtiPGQubGVuZ3RoO2IrKyljPWRbYl0sbWEoYy5ldmVudCk/ZS5wdXNoKGMpOmYucHVzaChjKTtlPXRoaXMucmVuZGVyQmdTZWdzKGUpfHxlLGY9dGhpcy5yZW5kZXJGZ1NlZ3MoZil8fGYsdGhpcy5zZWdzPWUuY29uY2F0KGYpfSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe3RoaXMudHJpZ2dlclNlZ01vdXNlb3V0KCksdGhpcy51bnJlbmRlckZnU2VncygpLHRoaXMudW5yZW5kZXJCZ1NlZ3MoKSx0aGlzLnNlZ3M9bnVsbH0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vnc3x8W119LHJlbmRlckZnU2VnczpmdW5jdGlvbihhKXt9LHVucmVuZGVyRmdTZWdzOmZ1bmN0aW9uKCl7fSxyZW5kZXJGZ1NlZ0VsczpmdW5jdGlvbihiLGMpe3ZhciBkLGU9dGhpcy52aWV3LGY9IiIsZz1bXTtpZihiLmxlbmd0aCl7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKylmKz10aGlzLmZnU2VnSHRtbChiW2RdLGMpO2EoZikuZWFjaChmdW5jdGlvbihjLGQpe3ZhciBmPWJbY10saD1lLnJlc29sdmVFdmVudEVsKGYuZXZlbnQsYShkKSk7aCYmKGguZGF0YSgiZmMtc2VnIixmKSxmLmVsPWgsZy5wdXNoKGYpKX0pfXJldHVybiBnfSxmZ1NlZ0h0bWw6ZnVuY3Rpb24oYSxiKXt9LHJlbmRlckJnU2VnczpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW5kZXJGaWxsKCJiZ0V2ZW50IixhKX0sdW5yZW5kZXJCZ1NlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyRmlsbCgiYmdFdmVudCIpfSxiZ0V2ZW50U2VnRWw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy52aWV3LnJlc29sdmVFdmVudEVsKGEuZXZlbnQsYil9LGJnRXZlbnRTZWdDbGFzc2VzOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZXZlbnQsYz1iLnNvdXJjZXx8e307cmV0dXJuWyJmYy1iZ2V2ZW50Il0uY29uY2F0KGIuY2xhc3NOYW1lLGMuY2xhc3NOYW1lfHxbXSl9LGJnRXZlbnRTZWdDc3M6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy52aWV3LGM9YS5ldmVudCxkPWMuc291cmNlfHx7fTtyZXR1cm57ImJhY2tncm91bmQtY29sb3IiOmMuYmFja2dyb3VuZENvbG9yfHxjLmNvbG9yfHxkLmJhY2tncm91bmRDb2xvcnx8ZC5jb2xvcnx8Yi5vcHQoImV2ZW50QmFja2dyb3VuZENvbG9yIil8fGIub3B0KCJldmVudENvbG9yIil9fSxidXNpbmVzc0hvdXJzU2VnQ2xhc3NlczpmdW5jdGlvbihhKXtyZXR1cm5bImZjLW5vbmJ1c2luZXNzIiwiZmMtYmdldmVudCJdfSxiaW5kU2VnSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9dGhpcy52aWV3O2EuZWFjaCh7bW91c2VlbnRlcjpmdW5jdGlvbihhLGMpe2IudHJpZ2dlclNlZ01vdXNlb3ZlcihhLGMpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKGEsYyl7Yi50cmlnZ2VyU2VnTW91c2VvdXQoYSxjKX0sY2xpY2s6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy50cmlnZ2VyKCJldmVudENsaWNrIix0aGlzLGEuZXZlbnQsYil9LG1vdXNlZG93bjpmdW5jdGlvbihkLGUpe2EoZS50YXJnZXQpLmlzKCIuZmMtcmVzaXplciIpJiZjLmlzRXZlbnRSZXNpemFibGUoZC5ldmVudCk/Yi5zZWdSZXNpemVNb3VzZWRvd24oZCxlLGEoZS50YXJnZXQpLmlzKCIuZmMtc3RhcnQtcmVzaXplciIpKTpjLmlzRXZlbnREcmFnZ2FibGUoZC5ldmVudCkmJmIuc2VnRHJhZ01vdXNlZG93bihkLGUpfX0sZnVuY3Rpb24oYyxkKXtiLmVsLm9uKGMsIi5mYy1ldmVudC1jb250YWluZXIgPiAqIixmdW5jdGlvbihjKXt2YXIgZT1hKHRoaXMpLmRhdGEoImZjLXNlZyIpO3JldHVybiFlfHxiLmlzRHJhZ2dpbmdTZWd8fGIuaXNSZXNpemluZ1NlZz92b2lkIDA6ZC5jYWxsKHRoaXMsZSxjKX0pfSl9LHRyaWdnZXJTZWdNb3VzZW92ZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLm1vdXNlZE92ZXJTZWd8fCh0aGlzLm1vdXNlZE92ZXJTZWc9YSx0aGlzLnZpZXcudHJpZ2dlcigiZXZlbnRNb3VzZW92ZXIiLGEuZWxbMF0sYS5ldmVudCxiKSl9LHRyaWdnZXJTZWdNb3VzZW91dDpmdW5jdGlvbihhLGIpe2I9Ynx8e30sdGhpcy5tb3VzZWRPdmVyU2VnJiYoYT1hfHx0aGlzLm1vdXNlZE92ZXJTZWcsdGhpcy5tb3VzZWRPdmVyU2VnPW51bGwsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50TW91c2VvdXQiLGEuZWxbMF0sYS5ldmVudCxiKSl9LHNlZ0RyYWdNb3VzZWRvd246ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMsZT10aGlzLnZpZXcsZj1lLmNhbGVuZGFyLGk9YS5lbCxqPWEuZXZlbnQsaz1uZXcgZGIoYS5lbCx7cGFyZW50RWw6ZS5lbCxvcGFjaXR5OmUub3B0KCJkcmFnT3BhY2l0eSIpLHJldmVydER1cmF0aW9uOmUub3B0KCJkcmFnUmV2ZXJ0RHVyYXRpb24iKSx6SW5kZXg6Mn0pLGw9bmV3IGNiKGUuY29vcmRNYXAse2Rpc3RhbmNlOjUsc2Nyb2xsOmUub3B0KCJkcmFnU2Nyb2xsIiksc3ViamVjdEVsOmksc3ViamVjdENlbnRlcjohMCxsaXN0ZW5TdGFydDpmdW5jdGlvbihhKXtrLmhpZGUoKSxrLnN0YXJ0KGEpfSxkcmFnU3RhcnQ6ZnVuY3Rpb24oYil7ZC50cmlnZ2VyU2VnTW91c2VvdXQoYSxiKSxkLnNlZ0RyYWdTdGFydChhLGIpLGUuaGlkZUV2ZW50KGopfSxjZWxsT3ZlcjpmdW5jdGlvbihiLGgsaSl7YS5jZWxsJiYoaT1hLmNlbGwpLGM9ZC5jb21wdXRlRXZlbnREcm9wKGksYixqKSxjJiYhZi5pc0V2ZW50UmFuZ2VBbGxvd2VkKGMsaikmJihnKCksYz1udWxsKSxjJiZlLnJlbmRlckRyYWcoYyxhKT9rLmhpZGUoKTprLnNob3coKSxoJiYoYz1udWxsKX0sY2VsbE91dDpmdW5jdGlvbigpe2UudW5yZW5kZXJEcmFnKCksay5zaG93KCksYz1udWxsfSxjZWxsRG9uZTpmdW5jdGlvbigpe2goKX0sZHJhZ1N0b3A6ZnVuY3Rpb24oYil7ay5zdG9wKCFjLGZ1bmN0aW9uKCl7ZS51bnJlbmRlckRyYWcoKSxlLnNob3dFdmVudChqKSxkLnNlZ0RyYWdTdG9wKGEsYiksYyYmZS5yZXBvcnRFdmVudERyb3AoaixjLHRoaXMubGFyZ2VVbml0LGksYil9KX0sbGlzdGVuU3RvcDpmdW5jdGlvbigpe2suc3RvcCgpfX0pO2wubW91c2Vkb3duKGIpfSxzZWdEcmFnU3RhcnQ6ZnVuY3Rpb24oYSxiKXt0aGlzLmlzRHJhZ2dpbmdTZWc9ITAsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50RHJhZ1N0YXJ0IixhLmVsWzBdLGEuZXZlbnQsYix7fSl9LHNlZ0RyYWdTdG9wOmZ1bmN0aW9uKGEsYil7dGhpcy5pc0RyYWdnaW5nU2VnPSExLHRoaXMudmlldy50cmlnZ2VyKCJldmVudERyYWdTdG9wIixhLmVsWzBdLGEuZXZlbnQsYix7fSl9LGNvbXB1dGVFdmVudERyb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj10aGlzLnZpZXcuY2FsZW5kYXIsZz1hLnN0YXJ0LGg9Yi5zdGFydDtyZXR1cm4gZy5oYXNUaW1lKCk9PT1oLmhhc1RpbWUoKT8oZD10aGlzLmRpZmZEYXRlcyhoLGcpLGMuYWxsRGF5JiZHKGQpPyhlPXtzdGFydDpjLnN0YXJ0LmNsb25lKCksZW5kOmYuZ2V0RXZlbnRFbmQoYyksYWxsRGF5OiExfSxmLm5vcm1hbGl6ZUV2ZW50UmFuZ2VUaW1lcyhlKSk6ZT17c3RhcnQ6Yy5zdGFydC5jbG9uZSgpLGVuZDpjLmVuZD9jLmVuZC5jbG9uZSgpOm51bGwsYWxsRGF5OmMuYWxsRGF5fSxlLnN0YXJ0LmFkZChkKSxlLmVuZCYmZS5lbmQuYWRkKGQpKTplPXtzdGFydDpoLmNsb25lKCksZW5kOm51bGwsYWxsRGF5OiFoLmhhc1RpbWUoKX0sZX0sYXBwbHlEcmFnT3BhY2l0eTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcub3B0KCJkcmFnT3BhY2l0eSIpO251bGwhPWImJmEuZWFjaChmdW5jdGlvbihhLGMpe2Muc3R5bGUub3BhY2l0eT1ifSl9LGV4dGVybmFsRHJhZ1N0YXJ0OmZ1bmN0aW9uKGIsYyl7dmFyIGQsZSxmPXRoaXMudmlldztmLm9wdCgiZHJvcHBhYmxlIikmJihkPWEoKGM/Yy5pdGVtOm51bGwpfHxiLnRhcmdldCksZT1mLm9wdCgiZHJvcEFjY2VwdCIpLChhLmlzRnVuY3Rpb24oZSk/ZS5jYWxsKGRbMF0sZCk6ZC5pcyhlKSkmJih0aGlzLmlzRHJhZ2dpbmdFeHRlcm5hbHx8dGhpcy5saXN0ZW5Ub0V4dGVybmFsRHJhZyhkLGIsYykpKX0sbGlzdGVuVG9FeHRlcm5hbERyYWc6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj10aGlzLGk9c2EoYSk7ZD1uZXcgY2IodGhpcy5jb29yZE1hcCx7bGlzdGVuU3RhcnQ6ZnVuY3Rpb24oKXtmLmlzRHJhZ2dpbmdFeHRlcm5hbD0hMH0sY2VsbE92ZXI6ZnVuY3Rpb24oYSl7ZT1mLmNvbXB1dGVFeHRlcm5hbERyb3AoYSxpKSxlP2YucmVuZGVyRHJhZyhlKTpnKCl9LGNlbGxPdXQ6ZnVuY3Rpb24oKXtlPW51bGwsZi51bnJlbmRlckRyYWcoKSxoKCl9LGRyYWdTdG9wOmZ1bmN0aW9uKCl7Zi51bnJlbmRlckRyYWcoKSxoKCksZSYmZi52aWV3LnJlcG9ydEV4dGVybmFsRHJvcChpLGUsYSxiLGMpfSxsaXN0ZW5TdG9wOmZ1bmN0aW9uKCl7Zi5pc0RyYWdnaW5nRXh0ZXJuYWw9ITF9fSksZC5zdGFydERyYWcoYil9LGNvbXB1dGVFeHRlcm5hbERyb3A6ZnVuY3Rpb24oYSxiKXt2YXIgYz17c3RhcnQ6YS5zdGFydC5jbG9uZSgpLGVuZDpudWxsfTtyZXR1cm4gYi5zdGFydFRpbWUmJiFjLnN0YXJ0Lmhhc1RpbWUoKSYmYy5zdGFydC50aW1lKGIuc3RhcnRUaW1lKSxiLmR1cmF0aW9uJiYoYy5lbmQ9Yy5zdGFydC5jbG9uZSgpLmFkZChiLmR1cmF0aW9uKSksdGhpcy52aWV3LmNhbGVuZGFyLmlzRXh0ZXJuYWxEcm9wUmFuZ2VBbGxvd2VkKGMsYi5ldmVudFByb3BzKT9jOm51bGx9LHJlbmRlckRyYWc6ZnVuY3Rpb24oYSxiKXt9LHVucmVuZGVyRHJhZzpmdW5jdGlvbigpe30sc2VnUmVzaXplTW91c2Vkb3duOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9dGhpcyxpPXRoaXMudmlldyxqPWkuY2FsZW5kYXIsaz1hLmVsLGw9YS5ldmVudCxtPWouZ2V0RXZlbnRFbmQobCk7ZD1uZXcgY2IodGhpcy5jb29yZE1hcCx7ZGlzdGFuY2U6NSxzY3JvbGw6aS5vcHQoImRyYWdTY3JvbGwiKSxzdWJqZWN0RWw6ayxkcmFnU3RhcnQ6ZnVuY3Rpb24oYil7Zi50cmlnZ2VyU2VnTW91c2VvdXQoYSxiKSxmLnNlZ1Jlc2l6ZVN0YXJ0KGEsYil9LGNlbGxPdmVyOmZ1bmN0aW9uKGIsZCxoKXtlPWM/Zi5jb21wdXRlRXZlbnRTdGFydFJlc2l6ZShoLGIsbCk6Zi5jb21wdXRlRXZlbnRFbmRSZXNpemUoaCxiLGwpLGUmJihqLmlzRXZlbnRSYW5nZUFsbG93ZWQoZSxsKT9lLnN0YXJ0LmlzU2FtZShsLnN0YXJ0KSYmZS5lbmQuaXNTYW1lKG0pJiYoZT1udWxsKTooZygpLGU9bnVsbCkpLGUmJihpLmhpZGVFdmVudChsKSxmLnJlbmRlckV2ZW50UmVzaXplKGUsYSkpfSxjZWxsT3V0OmZ1bmN0aW9uKCl7ZT1udWxsfSxjZWxsRG9uZTpmdW5jdGlvbigpe2YudW5yZW5kZXJFdmVudFJlc2l6ZSgpLGkuc2hvd0V2ZW50KGwpLGgoKX0sZHJhZ1N0b3A6ZnVuY3Rpb24oYil7Zi5zZWdSZXNpemVTdG9wKGEsYiksZSYmaS5yZXBvcnRFdmVudFJlc2l6ZShsLGUsdGhpcy5sYXJnZVVuaXQsayxiKX19KSxkLm1vdXNlZG93bihiKX0sc2VnUmVzaXplU3RhcnQ6ZnVuY3Rpb24oYSxiKXt0aGlzLmlzUmVzaXppbmdTZWc9ITAsdGhpcy52aWV3LnRyaWdnZXIoImV2ZW50UmVzaXplU3RhcnQiLGEuZWxbMF0sYS5ldmVudCxiLHt9KX0sc2VnUmVzaXplU3RvcDpmdW5jdGlvbihhLGIpe3RoaXMuaXNSZXNpemluZ1NlZz0hMSx0aGlzLnZpZXcudHJpZ2dlcigiZXZlbnRSZXNpemVTdG9wIixhLmVsWzBdLGEuZXZlbnQsYix7fSl9LGNvbXB1dGVFdmVudFN0YXJ0UmVzaXplOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5jb21wdXRlRXZlbnRSZXNpemUoInN0YXJ0IixhLGIsYyl9LGNvbXB1dGVFdmVudEVuZFJlc2l6ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuY29tcHV0ZUV2ZW50UmVzaXplKCJlbmQiLGEsYixjKX0sY29tcHV0ZUV2ZW50UmVzaXplOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz10aGlzLnZpZXcuY2FsZW5kYXIsaD10aGlzLmRpZmZEYXRlcyhjW2FdLGJbYV0pO3JldHVybiBlPXtzdGFydDpkLnN0YXJ0LmNsb25lKCksZW5kOmcuZ2V0RXZlbnRFbmQoZCksYWxsRGF5OmQuYWxsRGF5fSxlLmFsbERheSYmRyhoKSYmKGUuYWxsRGF5PSExLGcubm9ybWFsaXplRXZlbnRSYW5nZVRpbWVzKGUpKSxlW2FdLmFkZChoKSxlLnN0YXJ0LmlzQmVmb3JlKGUuZW5kKXx8KGY9ZC5hbGxEYXk/Zy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjpnLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24sdGhpcy5jZWxsRHVyYXRpb24mJnRoaXMuY2VsbER1cmF0aW9uPGYmJihmPXRoaXMuY2VsbER1cmF0aW9uKSwic3RhcnQiPT1hP2Uuc3RhcnQ9ZS5lbmQuY2xvbmUoKS5zdWJ0cmFjdChmKTplLmVuZD1lLnN0YXJ0LmNsb25lKCkuYWRkKGYpKSxlfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbihhLGIpe30sdW5yZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbigpe30sZ2V0RXZlbnRUaW1lVGV4dDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWImJihiPXRoaXMuZXZlbnRUaW1lRm9ybWF0KSxudWxsPT1jJiYoYz10aGlzLmRpc3BsYXlFdmVudEVuZCksdGhpcy5kaXNwbGF5RXZlbnRUaW1lJiZhLnN0YXJ0Lmhhc1RpbWUoKT9jJiZhLmVuZD90aGlzLnZpZXcuZm9ybWF0UmFuZ2UoYSxiKTphLnN0YXJ0LmZvcm1hdChiKToiIn0sZ2V0U2VnQ2xhc3NlczpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5ldmVudCxlPVsiZmMtZXZlbnQiLGEuaXNTdGFydD8iZmMtc3RhcnQiOiJmYy1ub3Qtc3RhcnQiLGEuaXNFbmQ/ImZjLWVuZCI6ImZjLW5vdC1lbmQiXS5jb25jYXQoZC5jbGFzc05hbWUsZC5zb3VyY2U/ZC5zb3VyY2UuY2xhc3NOYW1lOltdKTtyZXR1cm4gYiYmZS5wdXNoKCJmYy1kcmFnZ2FibGUiKSxjJiZlLnB1c2goImZjLXJlc2l6YWJsZSIpLGV9LGdldEV2ZW50U2tpbkNzczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnZpZXcsYz1hLnNvdXJjZXx8e30sZD1hLmNvbG9yLGU9Yy5jb2xvcixmPWIub3B0KCJldmVudENvbG9yIik7cmV0dXJueyJiYWNrZ3JvdW5kLWNvbG9yIjphLmJhY2tncm91bmRDb2xvcnx8ZHx8Yy5iYWNrZ3JvdW5kQ29sb3J8fGV8fGIub3B0KCJldmVudEJhY2tncm91bmRDb2xvciIpfHxmLCJib3JkZXItY29sb3IiOmEuYm9yZGVyQ29sb3J8fGR8fGMuYm9yZGVyQ29sb3J8fGV8fGIub3B0KCJldmVudEJvcmRlckNvbG9yIil8fGYsY29sb3I6YS50ZXh0Q29sb3J8fGMudGV4dENvbG9yfHxiLm9wdCgiZXZlbnRUZXh0Q29sb3IiKX19LGV2ZW50c1RvU2VnczpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dGhpcy5ldmVudHNUb1JhbmdlcyhhKSxlPVtdO2ZvcihjPTA7YzxkLmxlbmd0aDtjKyspZS5wdXNoLmFwcGx5KGUsdGhpcy5ldmVudFJhbmdlVG9TZWdzKGRbY10sYikpO3JldHVybiBlfSxldmVudHNUb1JhbmdlczpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9cGEoYiksZT1bXTtyZXR1cm4gYS5lYWNoKGQsZnVuY3Rpb24oYSxiKXtiLmxlbmd0aCYmZS5wdXNoLmFwcGx5KGUsbmEoYlswXSk/Yy5ldmVudHNUb0ludmVyc2VSYW5nZXMoYik6Yy5ldmVudHNUb05vcm1hbFJhbmdlcyhiKSl9KSxlfSxldmVudHNUb05vcm1hbFJhbmdlczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmPXRoaXMudmlldy5jYWxlbmRhcixnPVtdO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLGQ9Yy5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpLGU9Zi5nZXRFdmVudEVuZChjKS5zdHJpcFpvbmUoKSxnLnB1c2goe2V2ZW50OmMsc3RhcnQ6ZCxlbmQ6ZSxldmVudFN0YXJ0TVM6K2QsZXZlbnREdXJhdGlvbk1TOmUtZH0pO3JldHVybiBnfSxldmVudHNUb0ludmVyc2VSYW5nZXM6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPXRoaXMudmlldyxlPWQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKSxmPWQuZW5kLmNsb25lKCkuc3RyaXBab25lKCksZz10aGlzLmV2ZW50c1RvTm9ybWFsUmFuZ2VzKGEpLGg9W10saT1hWzBdLGo9ZTtmb3IoZy5zb3J0KHFhKSxiPTA7YjxnLmxlbmd0aDtiKyspYz1nW2JdLGMuc3RhcnQ+aiYmaC5wdXNoKHtldmVudDppLHN0YXJ0OmosZW5kOmMuc3RhcnR9KSxqPWMuZW5kO3JldHVybiBmPmomJmgucHVzaCh7ZXZlbnQ6aSxzdGFydDpqLGVuZDpmfSksaH0sZXZlbnRSYW5nZVRvU2VnczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtmb3IoYT10aGlzLnZpZXcuY2FsZW5kYXIuZW5zdXJlVmlzaWJsZUV2ZW50UmFuZ2UoYSksYz1iP2IoYSk6dGhpcy5yYW5nZVRvU2VncyhhKSxkPTA7ZDxjLmxlbmd0aDtkKyspZT1jW2RdLGUuZXZlbnQ9YS5ldmVudCxlLmV2ZW50U3RhcnRNUz1hLmV2ZW50U3RhcnRNUyxlLmV2ZW50RHVyYXRpb25NUz1hLmV2ZW50RHVyYXRpb25NUztyZXR1cm4gY319KSxKYS5jb21wYXJlU2Vncz1yYSxKYS5kYXRhQXR0clByZWZpeD0iIjt2YXIgZ2I9ZmIuZXh0ZW5kKHtudW1iZXJzVmlzaWJsZTohMSxib3R0b21Db29yZFBhZGRpbmc6MCxicmVha09uV2Vla3M6bnVsbCxjZWxsRGF0ZXM6bnVsbCxkYXlUb0NlbGxPZmZzZXRzOm51bGwscm93RWxzOm51bGwsZGF5RWxzOm51bGwsaGVscGVyRWxzOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24oKXtmYi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5jZWxsRHVyYXRpb249Yi5kdXJhdGlvbigxLCJkYXkiKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpcy52aWV3LGY9dGhpcy5yb3dDbnQsZz10aGlzLmNvbENudCxoPWYqZyxpPSIiO2ZvcihiPTA7Zj5iO2IrKylpKz10aGlzLmRheVJvd0h0bWwoYixhKTtmb3IodGhpcy5lbC5odG1sKGkpLHRoaXMucm93RWxzPXRoaXMuZWwuZmluZCgiLmZjLXJvdyIpLHRoaXMuZGF5RWxzPXRoaXMuZWwuZmluZCgiLmZjLWRheSIpLGM9MDtoPmM7YysrKWQ9dGhpcy5nZXRDZWxsKGMpLGUudHJpZ2dlcigiZGF5UmVuZGVyIixudWxsLGQuc3RhcnQsdGhpcy5kYXlFbHMuZXEoYykpfSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVTZWdQb3BvdmVyKCl9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnZpZXcuY2FsZW5kYXIuZ2V0QnVzaW5lc3NIb3Vyc0V2ZW50cyghMCksYj10aGlzLmV2ZW50c1RvU2VncyhhKTt0aGlzLnJlbmRlckZpbGwoImJ1c2luZXNzSG91cnMiLGIsImJnZXZlbnQiKX0sZGF5Um93SHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMudmlldyxkPVsiZmMtcm93IiwiZmMtd2VlayIsYy53aWRnZXRDb250ZW50Q2xhc3NdO3JldHVybiBiJiZkLnB1c2goImZjLXJpZ2lkIiksJzxkaXYgY2xhc3M9IicrZC5qb2luKCIgIikrJyI+PGRpdiBjbGFzcz0iZmMtYmciPjx0YWJsZT4nK3RoaXMucm93SHRtbCgiZGF5IixhKSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPSJmYy1jb250ZW50LXNrZWxldG9uIj48dGFibGU+JysodGhpcy5udW1iZXJzVmlzaWJsZT8iPHRoZWFkPiIrdGhpcy5yb3dIdG1sKCJudW1iZXIiLGEpKyI8L3RoZWFkPiI6IiIpKyI8L3RhYmxlPjwvZGl2PjwvZGl2PiJ9LGRheUNlbGxIdG1sOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJnQ2VsbEh0bWwoYSl9LGNvbXB1dGVDb2xIZWFkRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm93Q250PjE/ImRkZCI6dGhpcy5jb2xDbnQ+MT90aGlzLnZpZXcub3B0KCJkYXlPZk1vbnRoRm9ybWF0Iik6ImRkZGQifSxjb21wdXRlRXZlbnRUaW1lRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5vcHQoImV4dHJhU21hbGxUaW1lRm9ybWF0Iil9LGNvbXB1dGVEaXNwbGF5RXZlbnRFbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09dGhpcy5jb2xDbnR9LHJhbmdlVXBkYXRlZDpmdW5jdGlvbigpe3ZhciBhLGIsYyxkO2lmKHRoaXMudXBkYXRlQ2VsbERhdGVzKCksYT10aGlzLmNlbGxEYXRlcyx0aGlzLmJyZWFrT25XZWVrcyl7Zm9yKGI9YVswXS5kYXkoKSxkPTE7ZDxhLmxlbmd0aCYmYVtkXS5kYXkoKSE9YjtkKyspO2M9TWF0aC5jZWlsKGEubGVuZ3RoL2QpfWVsc2UgYz0xLGQ9YS5sZW5ndGg7dGhpcy5yb3dDbnQ9Yyx0aGlzLmNvbENudD1kfSx1cGRhdGVDZWxsRGF0ZXM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy52aWV3LGI9dGhpcy5zdGFydC5jbG9uZSgpLGM9W10sZD0tMSxlPVtdO2IuaXNCZWZvcmUodGhpcy5lbmQpOylhLmlzSGlkZGVuRGF5KGIpP2UucHVzaChkKy41KTooZCsrLGUucHVzaChkKSxjLnB1c2goYi5jbG9uZSgpKSksYi5hZGQoMSwiZGF5cyIpO3RoaXMuY2VsbERhdGVzPWMsdGhpcy5kYXlUb0NlbGxPZmZzZXRzPWV9LGNvbXB1dGVDZWxsRGF0ZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbENudCxjPWEucm93KmIrKHRoaXMuaXNSVEw/Yi1hLmNvbC0xOmEuY29sKTtyZXR1cm4gdGhpcy5jZWxsRGF0ZXNbY10uY2xvbmUoKX0sZ2V0Um93RWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm93RWxzLmVxKGEpfSxnZXRDb2xFbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXlFbHMuZXEoYSl9LGdldENlbGxEYXlFbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXlFbHMuZXEoYS5yb3cqdGhpcy5jb2xDbnQrYS5jb2wpfSxjb21wdXRlUm93Q29vcmRzOmZ1bmN0aW9uKCl7dmFyIGE9ZmIucHJvdG90eXBlLmNvbXB1dGVSb3dDb29yZHMuY2FsbCh0aGlzKTtyZXR1cm4gYVthLmxlbmd0aC0xXS5ib3R0b20rPXRoaXMuYm90dG9tQ29vcmRQYWRkaW5nLGF9LHJhbmdlVG9TZWdzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGw9dGhpcy5pc1JUTCxtPXRoaXMucm93Q250LG49dGhpcy5jb2xDbnQsbz1bXTtmb3IoYT10aGlzLnZpZXcuY29tcHV0ZURheVJhbmdlKGEpLGI9dGhpcy5kYXRlVG9DZWxsT2Zmc2V0KGEuc3RhcnQpLGM9dGhpcy5kYXRlVG9DZWxsT2Zmc2V0KGEuZW5kLnN1YnRyYWN0KDEsImRheXMiKSksZD0wO20+ZDtkKyspZT1kKm4sZj1lK24tMSxpPU1hdGgubWF4KGUsYiksaj1NYXRoLm1pbihmLGMpLGk9TWF0aC5jZWlsKGkpLGo9TWF0aC5mbG9vcihqKSxqPj1pJiYoZz1pPT09YixoPWo9PT1jLGktPWUsai09ZSxrPXtyb3c6ZCxpc1N0YXJ0OmcsaXNFbmQ6aH0sbD8oay5sZWZ0Q29sPW4tai0xLGsucmlnaHRDb2w9bi1pLTEpOihrLmxlZnRDb2w9aSxrLnJpZ2h0Q29sPWopLG8ucHVzaChrKSk7cmV0dXJuIG99LGRhdGVUb0NlbGxPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5kYXlUb0NlbGxPZmZzZXRzLGM9YS5kaWZmKHRoaXMuc3RhcnQsImRheXMiKTtyZXR1cm4gMD5jP2JbMF0tMTpjPj1iLmxlbmd0aD9iW2IubGVuZ3RoLTFdKzE6YltjXX0scmVuZGVyRHJhZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoYSkpLGImJiFiLmVsLmNsb3Nlc3QodGhpcy5lbCkubGVuZ3RoPyh0aGlzLnJlbmRlclJhbmdlSGVscGVyKGEsYiksdGhpcy5hcHBseURyYWdPcGFjaXR5KHRoaXMuaGVscGVyRWxzKSwhMCk6dm9pZCAwfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCksdGhpcy51bnJlbmRlckhlbHBlcigpfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbihhLGIpe3RoaXMucmVuZGVySGlnaGxpZ2h0KHRoaXMuZXZlbnRSYW5nZVRvU2VncyhhKSksdGhpcy5yZW5kZXJSYW5nZUhlbHBlcihhLGIpfSx1bnJlbmRlckV2ZW50UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckhpZ2hsaWdodCgpLHRoaXMudW5yZW5kZXJIZWxwZXIoKX0scmVuZGVySGVscGVyOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT1bXSxmPXRoaXMuZXZlbnRzVG9TZWdzKFtiXSk7Zj10aGlzLnJlbmRlckZnU2VnRWxzKGYpLGQ9dGhpcy5yZW5kZXJTZWdSb3dzKGYpLHRoaXMucm93RWxzLmVhY2goZnVuY3Rpb24oYixmKXt2YXIgZyxoPWEoZiksaT1hKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iPjx0YWJsZS8+PC9kaXY+Jyk7Zz1jJiZjLnJvdz09PWI/Yy5lbC5wb3NpdGlvbigpLnRvcDpoLmZpbmQoIi5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IikucG9zaXRpb24oKS50b3AsaS5jc3MoInRvcCIsZykuZmluZCgidGFibGUiKS5hcHBlbmQoZFtiXS50Ym9keUVsKSxoLmFwcGVuZChpKSxlLnB1c2goaVswXSl9KSx0aGlzLmhlbHBlckVscz1hKGUpfSx1bnJlbmRlckhlbHBlcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyRWxzJiYodGhpcy5oZWxwZXJFbHMucmVtb3ZlKCksdGhpcy5oZWxwZXJFbHM9bnVsbCl9LGZpbGxTZWdUYWc6InRkIixyZW5kZXJGaWxsOmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGcsaD1bXTtmb3IoYz10aGlzLnJlbmRlckZpbGxTZWdFbHMoYixjKSxlPTA7ZTxjLmxlbmd0aDtlKyspZj1jW2VdLGc9dGhpcy5yZW5kZXJGaWxsUm93KGIsZixkKSx0aGlzLnJvd0Vscy5lcShmLnJvdykuYXBwZW5kKGcpLGgucHVzaChnWzBdKTtyZXR1cm4gdGhpcy5lbHNCeUZpbGxbYl09YShoKSxjfSxyZW5kZXJGaWxsUm93OmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGc9dGhpcy5jb2xDbnQsaD1jLmxlZnRDb2wsaT1jLnJpZ2h0Q29sKzE7cmV0dXJuIGQ9ZHx8Yi50b0xvd2VyQ2FzZSgpLGU9YSgnPGRpdiBjbGFzcz0iZmMtJytkKyctc2tlbGV0b24iPjx0YWJsZT48dHIvPjwvdGFibGU+PC9kaXY+JyksZj1lLmZpbmQoInRyIiksaD4wJiZmLmFwcGVuZCgnPHRkIGNvbHNwYW49IicraCsnIi8+JyksZi5hcHBlbmQoYy5lbC5hdHRyKCJjb2xzcGFuIixpLWgpKSxnPmkmJmYuYXBwZW5kKCc8dGQgY29sc3Bhbj0iJysoZy1pKSsnIi8+JyksdGhpcy5ib29rZW5kQ2VsbHMoZixiKSxlfX0pO2diLm1peGluKHtyb3dTdHJ1Y3RzOm51bGwsdW5yZW5kZXJFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKSxmYi5wcm90b3R5cGUudW5yZW5kZXJFdmVudHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRFdmVudFNlZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gZmIucHJvdG90eXBlLmdldEV2ZW50U2Vncy5jYWxsKHRoaXMpLmNvbmNhdCh0aGlzLnBvcG92ZXJTZWdzfHxbXSl9LHJlbmRlckJnU2VnczpmdW5jdGlvbihiKXt2YXIgYz1hLmdyZXAoYixmdW5jdGlvbihhKXtyZXR1cm4gYS5ldmVudC5hbGxEYXl9KTtyZXR1cm4gZmIucHJvdG90eXBlLnJlbmRlckJnU2Vncy5jYWxsKHRoaXMsYyl9LHJlbmRlckZnU2VnczpmdW5jdGlvbihiKXt2YXIgYztyZXR1cm4gYj10aGlzLnJlbmRlckZnU2VnRWxzKGIpLGM9dGhpcy5yb3dTdHJ1Y3RzPXRoaXMucmVuZGVyU2VnUm93cyhiKSx0aGlzLnJvd0Vscy5lYWNoKGZ1bmN0aW9uKGIsZCl7YShkKS5maW5kKCIuZmMtY29udGVudC1za2VsZXRvbiA+IHRhYmxlIikuYXBwZW5kKGNbYl0udGJvZHlFbCl9KSxifSx1bnJlbmRlckZnU2VnczpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPXRoaXMucm93U3RydWN0c3x8W107YT1iLnBvcCgpOylhLnRib2R5RWwucmVtb3ZlKCk7dGhpcy5yb3dTdHJ1Y3RzPW51bGx9LHJlbmRlclNlZ1Jvd3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPVtdO2ZvcihiPXRoaXMuZ3JvdXBTZWdSb3dzKGEpLGM9MDtjPGIubGVuZ3RoO2MrKylkLnB1c2godGhpcy5yZW5kZXJTZWdSb3coYyxiW2NdKSk7cmV0dXJuIGR9LGZnU2VnSHRtbDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT10aGlzLnZpZXcsZj1hLmV2ZW50LGc9ZS5pc0V2ZW50RHJhZ2dhYmxlKGYpLGg9IWImJmYuYWxsRGF5JiZhLmlzU3RhcnQmJmUuaXNFdmVudFJlc2l6YWJsZUZyb21TdGFydChmKSxpPSFiJiZmLmFsbERheSYmYS5pc0VuZCYmZS5pc0V2ZW50UmVzaXphYmxlRnJvbUVuZChmKSxqPXRoaXMuZ2V0U2VnQ2xhc3NlcyhhLGcsaHx8aSksaz1UKHRoaXMuZ2V0RXZlbnRTa2luQ3NzKGYpKSxsPSIiO3JldHVybiBqLnVuc2hpZnQoImZjLWRheS1ncmlkLWV2ZW50IiwiZmMtaC1ldmVudCIpLGEuaXNTdGFydCYmKGM9dGhpcy5nZXRFdmVudFRpbWVUZXh0KGYpLGMmJihsPSc8c3BhbiBjbGFzcz0iZmMtdGltZSI+JytSKGMpKyI8L3NwYW4+IikpLGQ9JzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JysoUihmLnRpdGxlfHwiIil8fCImbmJzcDsiKSsiPC9zcGFuPiIsJzxhIGNsYXNzPSInK2ouam9pbigiICIpKyciJysoZi51cmw/JyBocmVmPSInK1IoZi51cmwpKyciJzoiIikrKGs/JyBzdHlsZT0iJytrKyciJzoiIikrJz48ZGl2IGNsYXNzPSJmYy1jb250ZW50Ij4nKyh0aGlzLmlzUlRMP2QrIiAiK2w6bCsiICIrZCkrIjwvZGl2PiIrKGg/JzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtc3RhcnQtcmVzaXplciIgLz4nOiIiKSsoaT8nPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nOiIiKSsiPC9hPiJ9LHJlbmRlclNlZ1JvdzpmdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGQoYil7Zm9yKDtiPmc7KWs9KHJbZS0xXXx8W10pW2ddLGs/ay5hdHRyKCJyb3dzcGFuIixwYXJzZUludChrLmF0dHIoInJvd3NwYW4iKXx8MSwxMCkrMSk6KGs9YSgiPHRkLz4iKSxoLmFwcGVuZChrKSkscVtlXVtnXT1rLHJbZV1bZ109ayxnKyt9dmFyIGUsZixnLGgsaSxqLGssbD10aGlzLmNvbENudCxtPXRoaXMuYnVpbGRTZWdMZXZlbHMoYyksbj1NYXRoLm1heCgxLG0ubGVuZ3RoKSxvPWEoIjx0Ym9keS8+IikscD1bXSxxPVtdLHI9W107Zm9yKGU9MDtuPmU7ZSsrKXtpZihmPW1bZV0sZz0wLGg9YSgiPHRyLz4iKSxwLnB1c2goW10pLHEucHVzaChbXSksci5wdXNoKFtdKSxmKWZvcihpPTA7aTxmLmxlbmd0aDtpKyspe2ZvcihqPWZbaV0sZChqLmxlZnRDb2wpLGs9YSgnPHRkIGNsYXNzPSJmYy1ldmVudC1jb250YWluZXIiLz4nKS5hcHBlbmQoai5lbCksai5sZWZ0Q29sIT1qLnJpZ2h0Q29sP2suYXR0cigiY29sc3BhbiIsai5yaWdodENvbC1qLmxlZnRDb2wrMSk6cltlXVtnXT1rO2c8PWoucmlnaHRDb2w7KXFbZV1bZ109ayxwW2VdW2ddPWosZysrO2guYXBwZW5kKGspfWQobCksdGhpcy5ib29rZW5kQ2VsbHMoaCwiZXZlbnRTa2VsZXRvbiIpLG8uYXBwZW5kKGgpfXJldHVybntyb3c6Yix0Ym9keUVsOm8sY2VsbE1hdHJpeDpxLHNlZ01hdHJpeDpwLHNlZ0xldmVsczptLHNlZ3M6Y319LGJ1aWxkU2VnTGV2ZWxzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPVtdO2ZvcihhLnNvcnQocmEpLGI9MDtiPGEubGVuZ3RoO2IrKyl7Zm9yKGM9YVtiXSxkPTA7ZDxlLmxlbmd0aCYmdGEoYyxlW2RdKTtkKyspO2MubGV2ZWw9ZCwoZVtkXXx8KGVbZF09W10pKS5wdXNoKGMpfWZvcihkPTA7ZDxlLmxlbmd0aDtkKyspZVtkXS5zb3J0KHVhKTtyZXR1cm4gZX0sZ3JvdXBTZWdSb3dzOmZ1bmN0aW9uKGEpe3ZhciBiLGM9W107Zm9yKGI9MDtiPHRoaXMucm93Q250O2IrKyljLnB1c2goW10pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspY1thW2JdLnJvd10ucHVzaChhW2JdKTtyZXR1cm4gY319KSxnYi5taXhpbih7c2VnUG9wb3ZlcjpudWxsLHBvcG92ZXJTZWdzOm51bGwscmVtb3ZlU2VnUG9wb3ZlcjpmdW5jdGlvbigpe3RoaXMuc2VnUG9wb3ZlciYmdGhpcy5zZWdQb3BvdmVyLmhpZGUoKX0sbGltaXRSb3dzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLnJvd1N0cnVjdHN8fFtdO2ZvcihiPTA7YjxkLmxlbmd0aDtiKyspdGhpcy51bmxpbWl0Um93KGIpLGM9YT8ibnVtYmVyIj09dHlwZW9mIGE/YTp0aGlzLmNvbXB1dGVSb3dMZXZlbExpbWl0KGIpOiExLGMhPT0hMSYmdGhpcy5saW1pdFJvdyhiLGMpfSxjb21wdXRlUm93TGV2ZWxMaW1pdDpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGIsYyl7Zj1NYXRoLm1heChmLGEoYykub3V0ZXJIZWlnaHQoKSl9dmFyIGQsZSxmLGc9dGhpcy5yb3dFbHMuZXEoYiksaD1nLmhlaWdodCgpLGk9dGhpcy5yb3dTdHJ1Y3RzW2JdLnRib2R5RWwuY2hpbGRyZW4oKTtmb3IoZD0wO2Q8aS5sZW5ndGg7ZCsrKWlmKGU9aS5lcShkKS5yZW1vdmVDbGFzcygiZmMtbGltaXRlZCIpLGY9MCxlLmZpbmQoIj4gdGQgPiA6Zmlyc3QtY2hpbGQiKS5lYWNoKGMpLGUucG9zaXRpb24oKS50b3ArZj5oKXJldHVybiBkO3JldHVybiExfSxsaW1pdFJvdzpmdW5jdGlvbihiLGMpe2Z1bmN0aW9uIGQoZCl7Zm9yKDtkPng7KWU9dS5nZXRDZWxsKGIseCksaz11LmdldENlbGxTZWdzKGUsYyksay5sZW5ndGgmJihuPWdbYy0xXVt4XSx0PXUucmVuZGVyTW9yZUxpbmsoZSxrKSxzPWEoIjxkaXYvPiIpLmFwcGVuZCh0KSxuLmFwcGVuZChzKSx3LnB1c2goc1swXSkpLHgrK312YXIgZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PXRoaXMsdj10aGlzLnJvd1N0cnVjdHNbYl0sdz1bXSx4PTA7aWYoYyYmYzx2LnNlZ0xldmVscy5sZW5ndGgpe2ZvcihmPXYuc2VnTGV2ZWxzW2MtMV0sZz12LmNlbGxNYXRyaXgsaD12LnRib2R5RWwuY2hpbGRyZW4oKS5zbGljZShjKS5hZGRDbGFzcygiZmMtbGltaXRlZCIpLmdldCgpLGk9MDtpPGYubGVuZ3RoO2krKyl7Zm9yKGo9ZltpXSxkKGoubGVmdENvbCksbT1bXSxsPTA7eDw9ai5yaWdodENvbDspZT10aGlzLmdldENlbGwoYix4KSxrPXRoaXMuZ2V0Q2VsbFNlZ3MoZSxjKSxtLnB1c2goayksbCs9ay5sZW5ndGgseCsrO2lmKGwpe2ZvcihuPWdbYy0xXVtqLmxlZnRDb2xdLG89bi5hdHRyKCJyb3dzcGFuIil8fDEscD1bXSxxPTA7cTxtLmxlbmd0aDtxKyspcj1hKCc8dGQgY2xhc3M9ImZjLW1vcmUtY2VsbCIvPicpLmF0dHIoInJvd3NwYW4iLG8pLGs9bVtxXSxlPXRoaXMuZ2V0Q2VsbChiLGoubGVmdENvbCtxKSx0PXRoaXMucmVuZGVyTW9yZUxpbmsoZSxbal0uY29uY2F0KGspKSxzPWEoIjxkaXYvPiIpLmFwcGVuZCh0KSxyLmFwcGVuZChzKSxwLnB1c2goclswXSksdy5wdXNoKHJbMF0pO24uYWRkQ2xhc3MoImZjLWxpbWl0ZWQiKS5hZnRlcihhKHApKSxoLnB1c2goblswXSl9fWQodGhpcy5jb2xDbnQpLHYubW9yZUVscz1hKHcpLHYubGltaXRlZEVscz1hKGgpfX0sdW5saW1pdFJvdzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnJvd1N0cnVjdHNbYV07Yi5tb3JlRWxzJiYoYi5tb3JlRWxzLnJlbW92ZSgpLGIubW9yZUVscz1udWxsKSxiLmxpbWl0ZWRFbHMmJihiLmxpbWl0ZWRFbHMucmVtb3ZlQ2xhc3MoImZjLWxpbWl0ZWQiKSxiLmxpbWl0ZWRFbHM9bnVsbCl9LHJlbmRlck1vcmVMaW5rOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcyxlPXRoaXMudmlldztyZXR1cm4gYSgnPGEgY2xhc3M9ImZjLW1vcmUiLz4nKS50ZXh0KHRoaXMuZ2V0TW9yZUxpbmtUZXh0KGMubGVuZ3RoKSkub24oImNsaWNrIixmdW5jdGlvbihmKXt2YXIgZz1lLm9wdCgiZXZlbnRMaW1pdENsaWNrIiksaD1iLnN0YXJ0LGk9YSh0aGlzKSxqPWQuZ2V0Q2VsbERheUVsKGIpLGs9ZC5nZXRDZWxsU2VncyhiKSxsPWQucmVzbGljZURheVNlZ3MoayxoKSxtPWQucmVzbGljZURheVNlZ3MoYyxoKTsiZnVuY3Rpb24iPT10eXBlb2YgZyYmKGc9ZS50cmlnZ2VyKCJldmVudExpbWl0Q2xpY2siLG51bGwse2RhdGU6aCxkYXlFbDpqLG1vcmVFbDppLHNlZ3M6bCxoaWRkZW5TZWdzOm19LGYpKSwicG9wb3ZlciI9PT1nP2Quc2hvd1NlZ1BvcG92ZXIoYixpLGwpOiJzdHJpbmciPT10eXBlb2YgZyYmZS5jYWxlbmRhci56b29tVG8oaCxnKX0pfSxzaG93U2VnUG9wb3ZlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXRoaXMsZz10aGlzLnZpZXcsaD1iLnBhcmVudCgpO2Q9MT09dGhpcy5yb3dDbnQ/Zy5lbDp0aGlzLnJvd0Vscy5lcShhLnJvdyksZT17Y2xhc3NOYW1lOiJmYy1tb3JlLXBvcG92ZXIiLGNvbnRlbnQ6dGhpcy5yZW5kZXJTZWdQb3BvdmVyQ29udGVudChhLGMpLHBhcmVudEVsOnRoaXMuZWwsdG9wOmQub2Zmc2V0KCkudG9wLGF1dG9IaWRlOiEwLHZpZXdwb3J0Q29uc3RyYWluOmcub3B0KCJwb3BvdmVyVmlld3BvcnRDb25zdHJhaW4iKSxoaWRlOmZ1bmN0aW9uKCl7Zi5zZWdQb3BvdmVyLnJlbW92ZUVsZW1lbnQoKSxmLnNlZ1BvcG92ZXI9bnVsbCxmLnBvcG92ZXJTZWdzPW51bGx9fSx0aGlzLmlzUlRMP2UucmlnaHQ9aC5vZmZzZXQoKS5sZWZ0K2gub3V0ZXJXaWR0aCgpKzE6ZS5sZWZ0PWgub2Zmc2V0KCkubGVmdC0xLHRoaXMuc2VnUG9wb3Zlcj1uZXcgJGEoZSksdGhpcy5zZWdQb3BvdmVyLnNob3coKX0scmVuZGVyU2VnUG9wb3ZlckNvbnRlbnQ6ZnVuY3Rpb24oYixjKXt2YXIgZCxlPXRoaXMudmlldyxmPWUub3B0KCJ0aGVtZSIpLGc9Yi5zdGFydC5mb3JtYXQoZS5vcHQoImRheVBvcG92ZXJGb3JtYXQiKSksaD1hKCc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJytlLndpZGdldEhlYWRlckNsYXNzKyciPjxzcGFuIGNsYXNzPSJmYy1jbG9zZSAnKyhmPyJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI6ImZjLWljb24gZmMtaWNvbi14IikrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JytSKGcpKyc8L3NwYW4+PGRpdiBjbGFzcz0iZmMtY2xlYXIiLz48L2Rpdj48ZGl2IGNsYXNzPSJmYy1ib2R5ICcrZS53aWRnZXRDb250ZW50Q2xhc3MrJyI+PGRpdiBjbGFzcz0iZmMtZXZlbnQtY29udGFpbmVyIj48L2Rpdj48L2Rpdj4nKSxpPWguZmluZCgiLmZjLWV2ZW50LWNvbnRhaW5lciIpO2ZvcihjPXRoaXMucmVuZGVyRmdTZWdFbHMoYywhMCksdGhpcy5wb3BvdmVyU2Vncz1jLGQ9MDtkPGMubGVuZ3RoO2QrKyljW2RdLmNlbGw9YiwKaS5hcHBlbmQoY1tkXS5lbCk7cmV0dXJuIGh9LHJlc2xpY2VEYXlTZWdzOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9YS5tYXAoYixmdW5jdGlvbihhKXtyZXR1cm4gYS5ldmVudH0pLGU9Yy5jbG9uZSgpLnN0cmlwVGltZSgpLGY9ZS5jbG9uZSgpLmFkZCgxLCJkYXlzIiksZz17c3RhcnQ6ZSxlbmQ6Zn07cmV0dXJuIGI9dGhpcy5ldmVudHNUb1NlZ3MoZCxmdW5jdGlvbihhKXt2YXIgYj1BKGEsZyk7cmV0dXJuIGI/W2JdOltdfSksYi5zb3J0KHJhKSxifSxnZXRNb3JlTGlua1RleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy52aWV3Lm9wdCgiZXZlbnRMaW1pdFRleHQiKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYj9iKGEpOiIrIithKyIgIitifSxnZXRDZWxsU2VnczpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPXRoaXMucm93U3RydWN0c1thLnJvd10uc2VnTWF0cml4LGU9Ynx8MCxmPVtdO2U8ZC5sZW5ndGg7KWM9ZFtlXVthLmNvbF0sYyYmZi5wdXNoKGMpLGUrKztyZXR1cm4gZn19KTt2YXIgaGI9ZmIuZXh0ZW5kKHtzbG90RHVyYXRpb246bnVsbCxzbmFwRHVyYXRpb246bnVsbCxtaW5UaW1lOm51bGwsbWF4VGltZTpudWxsLGNvbERhdGVzOm51bGwsYXhpc0Zvcm1hdDpudWxsLGRheUVsczpudWxsLHNsYXRFbHM6bnVsbCxzbGF0VG9wczpudWxsLGhlbHBlckVsOm51bGwsYnVzaW5lc3NIb3VyU2VnczpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7ZmIuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucHJvY2Vzc09wdGlvbnMoKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmVsLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpLHRoaXMuZGF5RWxzPXRoaXMuZWwuZmluZCgiLmZjLWRheSIpLHRoaXMuc2xhdEVscz10aGlzLmVsLmZpbmQoIi5mYy1zbGF0cyB0ciIpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52aWV3LmNhbGVuZGFyLmdldEJ1c2luZXNzSG91cnNFdmVudHMoKTt0aGlzLmJ1c2luZXNzSG91clNlZ3M9dGhpcy5yZW5kZXJGaWxsKCJidXNpbmVzc0hvdXJzIix0aGlzLmV2ZW50c1RvU2VncyhhKSwiYmdldmVudCIpfSxyZW5kZXJIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuJzxkaXYgY2xhc3M9ImZjLWJnIj48dGFibGU+Jyt0aGlzLnJvd0h0bWwoInNsb3RCZyIpKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9ImZjLXNsYXRzIj48dGFibGU+Jyt0aGlzLnNsYXRSb3dIdG1sKCkrIjwvdGFibGU+PC9kaXY+In0sc2xvdEJnQ2VsbEh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYmdDZWxsSHRtbChhKX0sc2xhdFJvd0h0bWw6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYyxkLGU9dGhpcy52aWV3LGY9dGhpcy5pc1JUTCxnPSIiLGg9dGhpcy5zbG90RHVyYXRpb24uYXNNaW51dGVzKCklMTU9PT0wLGk9Yi5kdXJhdGlvbigrdGhpcy5taW5UaW1lKTtpPHRoaXMubWF4VGltZTspYT10aGlzLnN0YXJ0LmNsb25lKCkudGltZShpKSxjPWEubWludXRlcygpLGQ9Jzx0ZCBjbGFzcz0iZmMtYXhpcyBmYy10aW1lICcrZS53aWRnZXRDb250ZW50Q2xhc3MrJyIgJytlLmF4aXNTdHlsZUF0dHIoKSsiPiIrKGgmJmM/IiI6IjxzcGFuPiIrUihhLmZvcm1hdCh0aGlzLmF4aXNGb3JtYXQpKSsiPC9zcGFuPiIpKyI8L3RkPiIsZys9Ijx0ciAiKyhjPydjbGFzcz0iZmMtbWlub3IiJzoiIikrIj4iKyhmPyIiOmQpKyc8dGQgY2xhc3M9IicrZS53aWRnZXRDb250ZW50Q2xhc3MrJyIvPicrKGY/ZDoiIikrIjwvdHI+IixpLmFkZCh0aGlzLnNsb3REdXJhdGlvbik7cmV0dXJuIGd9LHByb2Nlc3NPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy52aWV3LGM9YS5vcHQoInNsb3REdXJhdGlvbiIpLGQ9YS5vcHQoInNuYXBEdXJhdGlvbiIpO2M9Yi5kdXJhdGlvbihjKSxkPWQ/Yi5kdXJhdGlvbihkKTpjLHRoaXMuc2xvdER1cmF0aW9uPWMsdGhpcy5zbmFwRHVyYXRpb249ZCx0aGlzLmNlbGxEdXJhdGlvbj1kLHRoaXMubWluVGltZT1iLmR1cmF0aW9uKGEub3B0KCJtaW5UaW1lIikpLHRoaXMubWF4VGltZT1iLmR1cmF0aW9uKGEub3B0KCJtYXhUaW1lIikpLHRoaXMuYXhpc0Zvcm1hdD1hLm9wdCgiYXhpc0Zvcm1hdCIpfHxhLm9wdCgic21hbGxUaW1lRm9ybWF0Iil9LGNvbXB1dGVDb2xIZWFkRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sQ250PjE/dGhpcy52aWV3Lm9wdCgiZGF5T2ZNb250aEZvcm1hdCIpOiJkZGRkIn0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJub01lcmlkaWVtVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHJhbmdlVXBkYXRlZDpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy52aWV3LGM9W107Zm9yKGE9dGhpcy5zdGFydC5jbG9uZSgpO2EuaXNCZWZvcmUodGhpcy5lbmQpOyljLnB1c2goYS5jbG9uZSgpKSxhLmFkZCgxLCJkYXkiKSxhPWIuc2tpcEhpZGRlbkRheXMoYSk7dGhpcy5pc1JUTCYmYy5yZXZlcnNlKCksdGhpcy5jb2xEYXRlcz1jLHRoaXMuY29sQ250PWMubGVuZ3RoLHRoaXMucm93Q250PU1hdGguY2VpbCgodGhpcy5tYXhUaW1lLXRoaXMubWluVGltZSkvdGhpcy5zbmFwRHVyYXRpb24pfSxjb21wdXRlQ2VsbERhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb2xEYXRlc1thLmNvbF0sYz10aGlzLmNvbXB1dGVTbmFwVGltZShhLnJvdyk7cmV0dXJuIGI9dGhpcy52aWV3LmNhbGVuZGFyLnJlem9uZURhdGUoYiksYi50aW1lKGMpLGJ9LGdldENvbEVsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRheUVscy5lcShhKX0sY29tcHV0ZVNuYXBUaW1lOmZ1bmN0aW9uKGEpe3JldHVybiBiLmR1cmF0aW9uKHRoaXMubWluVGltZSt0aGlzLnNuYXBEdXJhdGlvbiphKX0scmFuZ2VUb1NlZ3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZj10aGlzLmNvbENudCxnPVtdO2ZvcihhPXtzdGFydDphLnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksZW5kOmEuZW5kLmNsb25lKCkuc3RyaXBab25lKCl9LGM9MDtmPmM7YysrKWQ9dGhpcy5jb2xEYXRlc1tjXSxlPXtzdGFydDpkLmNsb25lKCkudGltZSh0aGlzLm1pblRpbWUpLGVuZDpkLmNsb25lKCkudGltZSh0aGlzLm1heFRpbWUpfSxiPUEoYSxlKSxiJiYoYi5jb2w9YyxnLnB1c2goYikpO3JldHVybiBnfSx1cGRhdGVTaXplOmZ1bmN0aW9uKGEpe3RoaXMuY29tcHV0ZVNsYXRUb3BzKCksYSYmdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHMoKX0sY29tcHV0ZVJvd0Nvb3JkczpmdW5jdGlvbigpe3ZhciBhLGIsYz10aGlzLmVsLm9mZnNldCgpLnRvcCxkPVtdO2ZvcihhPTA7YTx0aGlzLnJvd0NudDthKyspYj17dG9wOmMrdGhpcy5jb21wdXRlVGltZVRvcCh0aGlzLmNvbXB1dGVTbmFwVGltZShhKSl9LGE+MCYmKGRbYS0xXS5ib3R0b209Yi50b3ApLGQucHVzaChiKTtyZXR1cm4gYi5ib3R0b209Yi50b3ArdGhpcy5jb21wdXRlVGltZVRvcCh0aGlzLmNvbXB1dGVTbmFwVGltZShhKSksZH0sY29tcHV0ZURhdGVUb3A6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5jb21wdXRlVGltZVRvcChiLmR1cmF0aW9uKGEuY2xvbmUoKS5zdHJpcFpvbmUoKS1jLmNsb25lKCkuc3RyaXBUaW1lKCkpKX0sY29tcHV0ZVRpbWVUb3A6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZj0oYS10aGlzLm1pblRpbWUpL3RoaXMuc2xvdER1cmF0aW9uO3JldHVybiBmPU1hdGgubWF4KDAsZiksZj1NYXRoLm1pbih0aGlzLnNsYXRFbHMubGVuZ3RoLGYpLGI9TWF0aC5mbG9vcihmKSxjPWYtYixkPXRoaXMuc2xhdFRvcHNbYl0sYz8oZT10aGlzLnNsYXRUb3BzW2IrMV0sZCsoZS1kKSpjKTpkfSxjb21wdXRlU2xhdFRvcHM6ZnVuY3Rpb24oKXt2YXIgYixjPVtdO3RoaXMuc2xhdEVscy5lYWNoKGZ1bmN0aW9uKGQsZSl7Yj1hKGUpLnBvc2l0aW9uKCkudG9wLGMucHVzaChiKX0pLGMucHVzaChiK3RoaXMuc2xhdEVscy5sYXN0KCkub3V0ZXJIZWlnaHQoKSksdGhpcy5zbGF0VG9wcz1jfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/KHRoaXMucmVuZGVyUmFuZ2VIZWxwZXIoYSxiKSx0aGlzLmFwcGx5RHJhZ09wYWNpdHkodGhpcy5oZWxwZXJFbCksITApOnZvaWQgdGhpcy5yZW5kZXJIaWdobGlnaHQodGhpcy5ldmVudFJhbmdlVG9TZWdzKGEpKX0sdW5yZW5kZXJEcmFnOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckhlbHBlcigpLHRoaXMudW5yZW5kZXJIaWdobGlnaHQoKX0scmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24oYSxiKXt0aGlzLnJlbmRlclJhbmdlSGVscGVyKGEsYil9LHVucmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGVscGVyKCl9LHJlbmRlckhlbHBlcjpmdW5jdGlvbihiLGMpe3ZhciBkLGUsZixnLGg9dGhpcy5ldmVudHNUb1NlZ3MoW2JdKTtmb3IoaD10aGlzLnJlbmRlckZnU2VnRWxzKGgpLGQ9dGhpcy5yZW5kZXJTZWdUYWJsZShoKSxlPTA7ZTxoLmxlbmd0aDtlKyspZj1oW2VdLGMmJmMuY29sPT09Zi5jb2wmJihnPWMuZWwsZi5lbC5jc3Moe2xlZnQ6Zy5jc3MoImxlZnQiKSxyaWdodDpnLmNzcygicmlnaHQiKSwibWFyZ2luLWxlZnQiOmcuY3NzKCJtYXJnaW4tbGVmdCIpLCJtYXJnaW4tcmlnaHQiOmcuY3NzKCJtYXJnaW4tcmlnaHQiKX0pKTt0aGlzLmhlbHBlckVsPWEoJzxkaXYgY2xhc3M9ImZjLWhlbHBlci1za2VsZXRvbiIvPicpLmFwcGVuZChkKS5hcHBlbmRUbyh0aGlzLmVsKX0sdW5yZW5kZXJIZWxwZXI6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlckVsJiYodGhpcy5oZWxwZXJFbC5yZW1vdmUoKSx0aGlzLmhlbHBlckVsPW51bGwpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oYSl7dGhpcy52aWV3Lm9wdCgic2VsZWN0SGVscGVyIik/dGhpcy5yZW5kZXJSYW5nZUhlbHBlcihhKTp0aGlzLnJlbmRlckhpZ2hsaWdodCh0aGlzLnNlbGVjdGlvblJhbmdlVG9TZWdzKGEpKX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGVscGVyKCksdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpfSxyZW5kZXJGaWxsOmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbjtpZihjLmxlbmd0aCl7Zm9yKGM9dGhpcy5yZW5kZXJGaWxsU2VnRWxzKGIsYyksZT10aGlzLmdyb3VwU2VnQ29scyhjKSxkPWR8fGIudG9Mb3dlckNhc2UoKSxmPWEoJzxkaXYgY2xhc3M9ImZjLScrZCsnLXNrZWxldG9uIj48dGFibGU+PHRyLz48L3RhYmxlPjwvZGl2PicpLGc9Zi5maW5kKCJ0ciIpLGg9MDtoPGUubGVuZ3RoO2grKylpZihpPWVbaF0saj1hKCI8dGQvPiIpLmFwcGVuZFRvKGcpLGkubGVuZ3RoKWZvcihrPWEoJzxkaXYgY2xhc3M9ImZjLScrZCsnLWNvbnRhaW5lciIvPicpLmFwcGVuZFRvKGopLGw9dGhpcy5jb2xEYXRlc1toXSxtPTA7bTxpLmxlbmd0aDttKyspbj1pW21dLGsuYXBwZW5kKG4uZWwuY3NzKHt0b3A6dGhpcy5jb21wdXRlRGF0ZVRvcChuLnN0YXJ0LGwpLGJvdHRvbTotdGhpcy5jb21wdXRlRGF0ZVRvcChuLmVuZCxsKX0pKTt0aGlzLmJvb2tlbmRDZWxscyhnLGIpLHRoaXMuZWwuYXBwZW5kKGYpLHRoaXMuZWxzQnlGaWxsW2JdPWZ9cmV0dXJuIGN9fSk7aGIubWl4aW4oe2V2ZW50U2tlbGV0b25FbDpudWxsLHJlbmRlckZnU2VnczpmdW5jdGlvbihiKXtyZXR1cm4gYj10aGlzLnJlbmRlckZnU2VnRWxzKGIpLHRoaXMuZWwuYXBwZW5kKHRoaXMuZXZlbnRTa2VsZXRvbkVsPWEoJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iLz4nKS5hcHBlbmQodGhpcy5yZW5kZXJTZWdUYWJsZShiKSkpLGJ9LHVucmVuZGVyRmdTZWdzOmZ1bmN0aW9uKGEpe3RoaXMuZXZlbnRTa2VsZXRvbkVsJiYodGhpcy5ldmVudFNrZWxldG9uRWwucmVtb3ZlKCksdGhpcy5ldmVudFNrZWxldG9uRWw9bnVsbCl9LHJlbmRlclNlZ1RhYmxlOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZSxmLGcsaCxpPWEoIjx0YWJsZT48dHIvPjwvdGFibGU+Iiksaj1pLmZpbmQoInRyIik7Zm9yKGM9dGhpcy5ncm91cFNlZ0NvbHMoYiksdGhpcy5jb21wdXRlU2VnVmVydGljYWxzKGIpLGY9MDtmPGMubGVuZ3RoO2YrKyl7Zm9yKGc9Y1tmXSx2YShnKSxoPWEoJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciIvPicpLGQ9MDtkPGcubGVuZ3RoO2QrKyllPWdbZF0sZS5lbC5jc3ModGhpcy5nZW5lcmF0ZVNlZ1Bvc2l0aW9uQ3NzKGUpKSxlLmJvdHRvbS1lLnRvcDwzMCYmZS5lbC5hZGRDbGFzcygiZmMtc2hvcnQiKSxoLmFwcGVuZChlLmVsKTtqLmFwcGVuZChhKCI8dGQvPiIpLmFwcGVuZChoKSl9cmV0dXJuIHRoaXMuYm9va2VuZENlbGxzKGosImV2ZW50U2tlbGV0b24iKSxpfSx1cGRhdGVTZWdWZXJ0aWNhbHM6ZnVuY3Rpb24oKXt2YXIgYSxiPSh0aGlzLnNlZ3N8fFtdKS5jb25jYXQodGhpcy5idXNpbmVzc0hvdXJTZWdzfHxbXSk7Zm9yKHRoaXMuY29tcHV0ZVNlZ1ZlcnRpY2FscyhiKSxhPTA7YTxiLmxlbmd0aDthKyspYlthXS5lbC5jc3ModGhpcy5nZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzKGJbYV0pKX0sY29tcHV0ZVNlZ1ZlcnRpY2FsczpmdW5jdGlvbihhKXt2YXIgYixjO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYz1hW2JdLGMudG9wPXRoaXMuY29tcHV0ZURhdGVUb3AoYy5zdGFydCxjLnN0YXJ0KSxjLmJvdHRvbT10aGlzLmNvbXB1dGVEYXRlVG9wKGMuZW5kLGMuc3RhcnQpfSxmZ1NlZ0h0bWw6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzLnZpZXcsZz1hLmV2ZW50LGg9Zi5pc0V2ZW50RHJhZ2dhYmxlKGcpLGk9IWImJmEuaXNTdGFydCYmZi5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KGcpLGo9IWImJmEuaXNFbmQmJmYuaXNFdmVudFJlc2l6YWJsZUZyb21FbmQoZyksaz10aGlzLmdldFNlZ0NsYXNzZXMoYSxoLGl8fGopLGw9VCh0aGlzLmdldEV2ZW50U2tpbkNzcyhnKSk7cmV0dXJuIGsudW5zaGlmdCgiZmMtdGltZS1ncmlkLWV2ZW50IiwiZmMtdi1ldmVudCIpLGYuaXNNdWx0aURheUV2ZW50KGcpPyhhLmlzU3RhcnR8fGEuaXNFbmQpJiYoYz10aGlzLmdldEV2ZW50VGltZVRleHQoYSksZD10aGlzLmdldEV2ZW50VGltZVRleHQoYSwiTFQiKSxlPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChhLG51bGwsITEpKTooYz10aGlzLmdldEV2ZW50VGltZVRleHQoZyksZD10aGlzLmdldEV2ZW50VGltZVRleHQoZywiTFQiKSxlPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChnLG51bGwsITEpKSwnPGEgY2xhc3M9Iicray5qb2luKCIgIikrJyInKyhnLnVybD8nIGhyZWY9IicrUihnLnVybCkrJyInOiIiKSsobD8nIHN0eWxlPSInK2wrJyInOiIiKSsnPjxkaXYgY2xhc3M9ImZjLWNvbnRlbnQiPicrKGM/JzxkaXYgY2xhc3M9ImZjLXRpbWUiIGRhdGEtc3RhcnQ9IicrUihlKSsnIiBkYXRhLWZ1bGw9IicrUihkKSsnIj48c3Bhbj4nK1IoYykrIjwvc3Bhbj48L2Rpdj4iOiIiKSsoZy50aXRsZT8nPGRpdiBjbGFzcz0iZmMtdGl0bGUiPicrUihnLnRpdGxlKSsiPC9kaXY+IjoiIikrJzwvZGl2PjxkaXYgY2xhc3M9ImZjLWJnIi8+Jysoaj8nPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nOiIiKSsiPC9hPiJ9LGdlbmVyYXRlU2VnUG9zaXRpb25Dc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPXRoaXMudmlldy5vcHQoInNsb3RFdmVudE92ZXJsYXAiKSxlPWEuYmFja3dhcmRDb29yZCxmPWEuZm9yd2FyZENvb3JkLGc9dGhpcy5nZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzKGEpO3JldHVybiBkJiYoZj1NYXRoLm1pbigxLGUrMiooZi1lKSkpLHRoaXMuaXNSVEw/KGI9MS1mLGM9ZSk6KGI9ZSxjPTEtZiksZy56SW5kZXg9YS5sZXZlbCsxLGcubGVmdD0xMDAqYisiJSIsZy5yaWdodD0xMDAqYysiJSIsZCYmYS5mb3J3YXJkUHJlc3N1cmUmJihnW3RoaXMuaXNSVEw/Im1hcmdpbkxlZnQiOiJtYXJnaW5SaWdodCJdPTIwKSxnfSxnZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzOmZ1bmN0aW9uKGEpe3JldHVybnt0b3A6YS50b3AsYm90dG9tOi1hLmJvdHRvbX19LGdyb3VwU2VnQ29sczpmdW5jdGlvbihhKXt2YXIgYixjPVtdO2ZvcihiPTA7Yjx0aGlzLmNvbENudDtiKyspYy5wdXNoKFtdKTtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWNbYVtiXS5jb2xdLnB1c2goYVtiXSk7cmV0dXJuIGN9fSk7dmFyIGliPUphLlZpZXc9a2EuZXh0ZW5kKHt0eXBlOm51bGwsbmFtZTpudWxsLHRpdGxlOm51bGwsY2FsZW5kYXI6bnVsbCxvcHRpb25zOm51bGwsY29vcmRNYXA6bnVsbCxlbDpudWxsLGRpc3BsYXlpbmc6bnVsbCxpc1NrZWxldG9uUmVuZGVyZWQ6ITEsaXNFdmVudHNSZW5kZXJlZDohMSxzdGFydDpudWxsLGVuZDpudWxsLGludGVydmFsU3RhcnQ6bnVsbCxpbnRlcnZhbEVuZDpudWxsLGludGVydmFsRHVyYXRpb246bnVsbCxpbnRlcnZhbFVuaXQ6bnVsbCxpc1JUTDohMSxpc1NlbGVjdGVkOiExLHNjcm9sbGVyRWw6bnVsbCxzY3JvbGxUb3A6bnVsbCx3aWRnZXRIZWFkZXJDbGFzczpudWxsLHdpZGdldENvbnRlbnRDbGFzczpudWxsLGhpZ2hsaWdodFN0YXRlQ2xhc3M6bnVsbCxuZXh0RGF5VGhyZXNob2xkOm51bGwsaXNIaWRkZW5EYXlIYXNoOm51bGwsZG9jdW1lbnRNb3VzZWRvd25Qcm94eTpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKGEsYyxkLGUpe3RoaXMuY2FsZW5kYXI9YSx0aGlzLnR5cGU9dGhpcy5uYW1lPWMsdGhpcy5vcHRpb25zPWQsdGhpcy5pbnRlcnZhbER1cmF0aW9uPWV8fGIuZHVyYXRpb24oMSwiZGF5IiksdGhpcy5uZXh0RGF5VGhyZXNob2xkPWIuZHVyYXRpb24odGhpcy5vcHQoIm5leHREYXlUaHJlc2hvbGQiKSksdGhpcy5pbml0VGhlbWluZ1Byb3BzKCksdGhpcy5pbml0SGlkZGVuRGF5cygpLHRoaXMuaXNSVEw9dGhpcy5vcHQoImlzUlRMIiksdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5PVgodGhpcywiZG9jdW1lbnRNb3VzZWRvd24iKSx0aGlzLmluaXRpYWxpemUoKX0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sb3B0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9wdGlvbnNbYV19LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNhbGVuZGFyO3JldHVybiBjLnRyaWdnZXIuYXBwbHkoYyxbYSxifHx0aGlzXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLFt0aGlzXSkpfSxzZXREYXRlOmZ1bmN0aW9uKGEpe3RoaXMuc2V0UmFuZ2UodGhpcy5jb21wdXRlUmFuZ2UoYSkpfSxzZXRSYW5nZTpmdW5jdGlvbihiKXthLmV4dGVuZCh0aGlzLGIpLHRoaXMudXBkYXRlVGl0bGUoKX0sY29tcHV0ZVJhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1FKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbiksZT1hLmNsb25lKCkuc3RhcnRPZihkKSxmPWUuY2xvbmUoKS5hZGQodGhpcy5pbnRlcnZhbER1cmF0aW9uKTtyZXR1cm4veWVhcnxtb250aHx3ZWVrfGRheS8udGVzdChkKT8oZS5zdHJpcFRpbWUoKSxmLnN0cmlwVGltZSgpKTooZS5oYXNUaW1lKCl8fChlPXRoaXMuY2FsZW5kYXIucmV6b25lRGF0ZShlKSksZi5oYXNUaW1lKCl8fChmPXRoaXMuY2FsZW5kYXIucmV6b25lRGF0ZShmKSkpLGI9ZS5jbG9uZSgpLGI9dGhpcy5za2lwSGlkZGVuRGF5cyhiKSxjPWYuY2xvbmUoKSxjPXRoaXMuc2tpcEhpZGRlbkRheXMoYywtMSwhMCkse2ludGVydmFsVW5pdDpkLGludGVydmFsU3RhcnQ6ZSxpbnRlcnZhbEVuZDpmLHN0YXJ0OmIsZW5kOmN9fSxjb21wdXRlUHJldkRhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWFzc2FnZUN1cnJlbnREYXRlKGEuY2xvbmUoKS5zdGFydE9mKHRoaXMuaW50ZXJ2YWxVbml0KS5zdWJ0cmFjdCh0aGlzLmludGVydmFsRHVyYXRpb24pLC0xKX0sY29tcHV0ZU5leHREYXRlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hc3NhZ2VDdXJyZW50RGF0ZShhLmNsb25lKCkuc3RhcnRPZih0aGlzLmludGVydmFsVW5pdCkuYWRkKHRoaXMuaW50ZXJ2YWxEdXJhdGlvbikpfSxtYXNzYWdlQ3VycmVudERhdGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pbnRlcnZhbER1cmF0aW9uLmFzKCJkYXlzIik8PTEmJnRoaXMuaXNIaWRkZW5EYXkoYSkmJihhPXRoaXMuc2tpcEhpZGRlbkRheXMoYSxiKSxhLnN0YXJ0T2YoImRheSIpKSxhfSx1cGRhdGVUaXRsZTpmdW5jdGlvbigpe3RoaXMudGl0bGU9dGhpcy5jb21wdXRlVGl0bGUoKX0sY29tcHV0ZVRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZm9ybWF0UmFuZ2Uoe3N0YXJ0OnRoaXMuaW50ZXJ2YWxTdGFydCxlbmQ6dGhpcy5pbnRlcnZhbEVuZH0sdGhpcy5vcHQoInRpdGxlRm9ybWF0Iil8fHRoaXMuY29tcHV0ZVRpdGxlRm9ybWF0KCksdGhpcy5vcHQoInRpdGxlUmFuZ2VTZXBhcmF0b3IiKSl9LGNvbXB1dGVUaXRsZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiJ5ZWFyIj09dGhpcy5pbnRlcnZhbFVuaXQ/IllZWVkiOiJtb250aCI9PXRoaXMuaW50ZXJ2YWxVbml0P3RoaXMub3B0KCJtb250aFllYXJGb3JtYXQiKTp0aGlzLmludGVydmFsRHVyYXRpb24uYXMoImRheXMiKT4xPyJsbCI6IkxMIn0sZm9ybWF0UmFuZ2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZW5kO3JldHVybiBkLmhhc1RpbWUoKXx8KGQ9ZC5jbG9uZSgpLnN1YnRyYWN0KDEpKSxmYShhLnN0YXJ0LGQsYixjLHRoaXMub3B0KCJpc1JUTCIpKX0sc2V0RWxlbWVudDpmdW5jdGlvbihhKXt0aGlzLmVsPWEsdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuY2xlYXIoKSx0aGlzLmlzU2tlbGV0b25SZW5kZXJlZCYmKHRoaXMudW5yZW5kZXJTa2VsZXRvbigpLHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkPSExKSx0aGlzLnVuYmluZEdsb2JhbEhhbmRsZXJzKCksdGhpcy5lbC5yZW1vdmUoKX0sZGlzcGxheTpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9bnVsbDtyZXR1cm4gdGhpcy5kaXNwbGF5aW5nJiYoZD10aGlzLnF1ZXJ5U2Nyb2xsKCkpLHRoaXMuY2xlYXIoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGMuZGlzcGxheWluZz1hLndoZW4oYy5kaXNwbGF5VmlldyhiKSkudGhlbihmdW5jdGlvbigpe2MuZm9yY2VTY3JvbGwoYy5jb21wdXRlSW5pdGlhbFNjcm9sbChkKSksYy50cmlnZ2VyUmVuZGVyKCl9KX0pfSxjbGVhcjpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz10aGlzLmRpc3BsYXlpbmc7cmV0dXJuIGM/Yy50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGIuZGlzcGxheWluZz1udWxsLGIuY2xlYXJFdmVudHMoKSxiLmNsZWFyVmlldygpfSk6YS53aGVuKCl9LGRpc3BsYXlWaWV3OmZ1bmN0aW9uKGEpe3RoaXMuaXNTa2VsZXRvblJlbmRlcmVkfHwodGhpcy5yZW5kZXJTa2VsZXRvbigpLHRoaXMuaXNTa2VsZXRvblJlbmRlcmVkPSEwKSx0aGlzLnNldERhdGUoYSksdGhpcy5yZW5kZXImJnRoaXMucmVuZGVyKCksdGhpcy5yZW5kZXJEYXRlcygpLHRoaXMudXBkYXRlU2l6ZSgpLHRoaXMucmVuZGVyQnVzaW5lc3NIb3VycygpfSxjbGVhclZpZXc6ZnVuY3Rpb24oKXt0aGlzLnVuc2VsZWN0KCksdGhpcy50cmlnZ2VyVW5yZW5kZXIoKSx0aGlzLnVucmVuZGVyQnVzaW5lc3NIb3VycygpLHRoaXMudW5yZW5kZXJEYXRlcygpLHRoaXMuZGVzdHJveSYmdGhpcy5kZXN0cm95KCl9LHJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7fSx1bnJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7fSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe30sdW5yZW5kZXJEYXRlczpmdW5jdGlvbigpe30scmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe30sdW5yZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7fSx0cmlnZ2VyUmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJ2aWV3UmVuZGVyIix0aGlzLHRoaXMsdGhpcy5lbCl9LHRyaWdnZXJVbnJlbmRlcjpmdW5jdGlvbigpe3RoaXMudHJpZ2dlcigidmlld0Rlc3Ryb3kiLHRoaXMsdGhpcyx0aGlzLmVsKX0sYmluZEdsb2JhbEhhbmRsZXJzOmZ1bmN0aW9uKCl7YShkb2N1bWVudCkub24oIm1vdXNlZG93biIsdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS5vZmYoIm1vdXNlZG93biIsdGhpcy5kb2N1bWVudE1vdXNlZG93blByb3h5KX0saW5pdFRoZW1pbmdQcm9wczpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0KCJ0aGVtZSIpPyJ1aSI6ImZjIjt0aGlzLndpZGdldEhlYWRlckNsYXNzPWErIi13aWRnZXQtaGVhZGVyIix0aGlzLndpZGdldENvbnRlbnRDbGFzcz1hKyItd2lkZ2V0LWNvbnRlbnQiLHRoaXMuaGlnaGxpZ2h0U3RhdGVDbGFzcz1hKyItc3RhdGUtaGlnaGxpZ2h0In0sdXBkYXRlU2l6ZTpmdW5jdGlvbihhKXt2YXIgYjthJiYoYj10aGlzLnF1ZXJ5U2Nyb2xsKCkpLHRoaXMudXBkYXRlSGVpZ2h0KGEpLHRoaXMudXBkYXRlV2lkdGgoYSksYSYmdGhpcy5zZXRTY3JvbGwoYil9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKGEpe30sdXBkYXRlSGVpZ2h0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2FsZW5kYXI7dGhpcy5zZXRIZWlnaHQoYi5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0KCksYi5pc0hlaWdodEF1dG8oKSl9LHNldEhlaWdodDpmdW5jdGlvbihhLGIpe30sY29tcHV0ZVNjcm9sbGVySGVpZ2h0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD10aGlzLnNjcm9sbGVyRWw7cmV0dXJuIGI9dGhpcy5lbC5hZGQoZCksYi5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsbGVmdDotMX0pLGM9dGhpcy5lbC5vdXRlckhlaWdodCgpLWQuaGVpZ2h0KCksYi5jc3Moe3Bvc2l0aW9uOiIiLGxlZnQ6IiJ9KSxhLWN9LGNvbXB1dGVJbml0aWFsU2Nyb2xsOmZ1bmN0aW9uKGEpe3JldHVybiAwfSxxdWVyeVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbGVyRWw/dGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcCgpOnZvaWQgMH0sc2V0U2Nyb2xsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNjcm9sbGVyRWw/dGhpcy5zY3JvbGxlckVsLnNjcm9sbFRvcChhKTp2b2lkIDB9LGZvcmNlU2Nyb2xsOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5zZXRTY3JvbGwoYSksc2V0VGltZW91dChmdW5jdGlvbigpe2Iuc2V0U2Nyb2xsKGEpfSwwKX0sZGlzcGxheUV2ZW50czpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnF1ZXJ5U2Nyb2xsKCk7dGhpcy5jbGVhckV2ZW50cygpLHRoaXMucmVuZGVyRXZlbnRzKGEpLHRoaXMuaXNFdmVudHNSZW5kZXJlZD0hMCx0aGlzLnNldFNjcm9sbChiKSx0aGlzLnRyaWdnZXJFdmVudFJlbmRlcigpfSxjbGVhckV2ZW50czpmdW5jdGlvbigpe3RoaXMuaXNFdmVudHNSZW5kZXJlZCYmKHRoaXMudHJpZ2dlckV2ZW50VW5yZW5kZXIoKSx0aGlzLmRlc3Ryb3lFdmVudHMmJnRoaXMuZGVzdHJveUV2ZW50cygpLHRoaXMudW5yZW5kZXJFdmVudHMoKSx0aGlzLmlzRXZlbnRzUmVuZGVyZWQ9ITEpfSxyZW5kZXJFdmVudHM6ZnVuY3Rpb24oYSl7fSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe30sdHJpZ2dlckV2ZW50UmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihhKXt0aGlzLnRyaWdnZXIoImV2ZW50QWZ0ZXJSZW5kZXIiLGEuZXZlbnQsYS5ldmVudCxhLmVsKX0pLHRoaXMudHJpZ2dlcigiZXZlbnRBZnRlckFsbFJlbmRlciIpfSx0cmlnZ2VyRXZlbnRVbnJlbmRlcjpmdW5jdGlvbigpe3RoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oYSl7dGhpcy50cmlnZ2VyKCJldmVudERlc3Ryb3kiLGEuZXZlbnQsYS5ldmVudCxhLmVsKX0pfSxyZXNvbHZlRXZlbnRFbDpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudHJpZ2dlcigiZXZlbnRSZW5kZXIiLGIsYixjKTtyZXR1cm4gZD09PSExP2M9bnVsbDpkJiZkIT09ITAmJihjPWEoZCkpLGN9LHNob3dFdmVudDpmdW5jdGlvbihhKXt0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKGEpe2EuZWwuY3NzKCJ2aXNpYmlsaXR5IiwiIil9LGEpfSxoaWRlRXZlbnQ6ZnVuY3Rpb24oYSl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihhKXthLmVsLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpfSxhKX0scmVuZGVyZWRFdmVudFNlZ0VhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMuZ2V0RXZlbnRTZWdzKCk7Zm9yKGM9MDtjPGQubGVuZ3RoO2MrKyliJiZkW2NdLmV2ZW50Ll9pZCE9PWIuX2lkfHxkW2NdLmVsJiZhLmNhbGwodGhpcyxkW2NdKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGlzRXZlbnREcmFnZ2FibGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5zb3VyY2V8fHt9O3JldHVybiBRKGEuc3RhcnRFZGl0YWJsZSxiLnN0YXJ0RWRpdGFibGUsdGhpcy5vcHQoImV2ZW50U3RhcnRFZGl0YWJsZSIpLGEuZWRpdGFibGUsYi5lZGl0YWJsZSx0aGlzLm9wdCgiZWRpdGFibGUiKSl9LHJlcG9ydEV2ZW50RHJvcDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPXRoaXMuY2FsZW5kYXIsZz1mLm11dGF0ZUV2ZW50KGEsYixjKSxoPWZ1bmN0aW9uKCl7Zy51bmRvKCksZi5yZXBvcnRFdmVudENoYW5nZSgpfTt0aGlzLnRyaWdnZXJFdmVudERyb3AoYSxnLmRhdGVEZWx0YSxoLGQsZSksZi5yZXBvcnRFdmVudENoYW5nZSgpfSx0cmlnZ2VyRXZlbnREcm9wOmZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy50cmlnZ2VyKCJldmVudERyb3AiLGRbMF0sYSxiLGMsZSx7fSl9LHJlcG9ydEV4dGVybmFsRHJvcDpmdW5jdGlvbihiLGMsZCxlLGYpe3ZhciBnLGgsaT1iLmV2ZW50UHJvcHM7aSYmKGc9YS5leHRlbmQoe30saSxjKSxoPXRoaXMuY2FsZW5kYXIucmVuZGVyRXZlbnQoZyxiLnN0aWNrKVswXSksdGhpcy50cmlnZ2VyRXh0ZXJuYWxEcm9wKGgsYyxkLGUsZil9LHRyaWdnZXJFeHRlcm5hbERyb3A6ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnRyaWdnZXIoImRyb3AiLGNbMF0sYi5zdGFydCxkLGUpLGEmJnRoaXMudHJpZ2dlcigiZXZlbnRSZWNlaXZlIixudWxsLGEpfSxyZW5kZXJEcmFnOmZ1bmN0aW9uKGEsYil7fSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt9LGlzRXZlbnRSZXNpemFibGVGcm9tU3RhcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub3B0KCJldmVudFJlc2l6YWJsZUZyb21TdGFydCIpJiZ0aGlzLmlzRXZlbnRSZXNpemFibGUoYSl9LGlzRXZlbnRSZXNpemFibGVGcm9tRW5kOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlzRXZlbnRSZXNpemFibGUoYSl9LGlzRXZlbnRSZXNpemFibGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5zb3VyY2V8fHt9O3JldHVybiBRKGEuZHVyYXRpb25FZGl0YWJsZSxiLmR1cmF0aW9uRWRpdGFibGUsdGhpcy5vcHQoImV2ZW50RHVyYXRpb25FZGl0YWJsZSIpLGEuZWRpdGFibGUsYi5lZGl0YWJsZSx0aGlzLm9wdCgiZWRpdGFibGUiKSl9LHJlcG9ydEV2ZW50UmVzaXplOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9dGhpcy5jYWxlbmRhcixnPWYubXV0YXRlRXZlbnQoYSxiLGMpLGg9ZnVuY3Rpb24oKXtnLnVuZG8oKSxmLnJlcG9ydEV2ZW50Q2hhbmdlKCl9O3RoaXMudHJpZ2dlckV2ZW50UmVzaXplKGEsZy5kdXJhdGlvbkRlbHRhLGgsZCxlKSxmLnJlcG9ydEV2ZW50Q2hhbmdlKCl9LHRyaWdnZXJFdmVudFJlc2l6ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMudHJpZ2dlcigiZXZlbnRSZXNpemUiLGRbMF0sYSxiLGMsZSx7fSl9LHNlbGVjdDpmdW5jdGlvbihhLGIpe3RoaXMudW5zZWxlY3QoYiksdGhpcy5yZW5kZXJTZWxlY3Rpb24oYSksdGhpcy5yZXBvcnRTZWxlY3Rpb24oYSxiKX0scmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKGEpe30scmVwb3J0U2VsZWN0aW9uOmZ1bmN0aW9uKGEsYil7dGhpcy5pc1NlbGVjdGVkPSEwLHRoaXMudHJpZ2dlclNlbGVjdChhLGIpfSx0cmlnZ2VyU2VsZWN0OmZ1bmN0aW9uKGEsYil7dGhpcy50cmlnZ2VyKCJzZWxlY3QiLG51bGwsYS5zdGFydCxhLmVuZCxiKX0sdW5zZWxlY3Q6ZnVuY3Rpb24oYSl7dGhpcy5pc1NlbGVjdGVkJiYodGhpcy5pc1NlbGVjdGVkPSExLHRoaXMuZGVzdHJveVNlbGVjdGlvbiYmdGhpcy5kZXN0cm95U2VsZWN0aW9uKCksdGhpcy51bnJlbmRlclNlbGVjdGlvbigpLHRoaXMudHJpZ2dlcigidW5zZWxlY3QiLG51bGwsYSkpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe30sZG9jdW1lbnRNb3VzZWRvd246ZnVuY3Rpb24oYil7dmFyIGM7dGhpcy5pc1NlbGVjdGVkJiZ0aGlzLm9wdCgidW5zZWxlY3RBdXRvIikmJnYoYikmJihjPXRoaXMub3B0KCJ1bnNlbGVjdENhbmNlbCIpLGMmJmEoYi50YXJnZXQpLmNsb3Nlc3QoYykubGVuZ3RofHx0aGlzLnVuc2VsZWN0KGIpKX0sdHJpZ2dlckRheUNsaWNrOmZ1bmN0aW9uKGEsYixjKXt0aGlzLnRyaWdnZXIoImRheUNsaWNrIixiLGEuc3RhcnQsYyl9LGluaXRIaWRkZW5EYXlzOmZ1bmN0aW9uKCl7dmFyIGIsYz10aGlzLm9wdCgiaGlkZGVuRGF5cyIpfHxbXSxkPVtdLGU9MDtmb3IodGhpcy5vcHQoIndlZWtlbmRzIik9PT0hMSYmYy5wdXNoKDAsNiksYj0wOzc+YjtiKyspKGRbYl09LTEhPT1hLmluQXJyYXkoYixjKSl8fGUrKztpZighZSl0aHJvdyJpbnZhbGlkIGhpZGRlbkRheXMiO3RoaXMuaXNIaWRkZW5EYXlIYXNoPWR9LGlzSGlkZGVuRGF5OmZ1bmN0aW9uKGEpe3JldHVybiBiLmlzTW9tZW50KGEpJiYoYT1hLmRheSgpKSx0aGlzLmlzSGlkZGVuRGF5SGFzaFthXX0sc2tpcEhpZGRlbkRheXM6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuY2xvbmUoKTtmb3IoYj1ifHwxO3RoaXMuaXNIaWRkZW5EYXlIYXNoWyhkLmRheSgpKyhjP2I6MCkrNyklN107KWQuYWRkKGIsImRheXMiKTtyZXR1cm4gZH0sY29tcHV0ZURheVJhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiLGM9YS5zdGFydC5jbG9uZSgpLnN0cmlwVGltZSgpLGQ9YS5lbmQsZT1udWxsO3JldHVybiBkJiYoZT1kLmNsb25lKCkuc3RyaXBUaW1lKCksYj0rZC50aW1lKCksYiYmYj49dGhpcy5uZXh0RGF5VGhyZXNob2xkJiZlLmFkZCgxLCJkYXlzIikpLCghZHx8Yz49ZSkmJihlPWMuY2xvbmUoKS5hZGQoMSwiZGF5cyIpKSx7c3RhcnQ6YyxlbmQ6ZX19LGlzTXVsdGlEYXlFdmVudDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbXB1dGVEYXlSYW5nZShhKTtyZXR1cm4gYi5lbmQuZGlmZihiLnN0YXJ0LCJkYXlzIik+MX19KSxqYj1KYS5DYWxlbmRhcj1rYS5leHRlbmQoe2RpckRlZmF1bHRzOm51bGwsbGFuZ0RlZmF1bHRzOm51bGwsb3ZlcnJpZGVzOm51bGwsb3B0aW9uczpudWxsLHZpZXdTcGVjQ2FjaGU6bnVsbCx2aWV3Om51bGwsaGVhZGVyOm51bGwsbG9hZGluZ0xldmVsOjAsY29uc3RydWN0b3I6RGEsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe30saW5pdE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGIsZSxmLGc7YT1kKGEpLGI9YS5sYW5nLGU9a2JbYl0sZXx8KGI9amIuZGVmYXVsdHMubGFuZyxlPWtiW2JdfHx7fSksZj1RKGEuaXNSVEwsZS5pc1JUTCxqYi5kZWZhdWx0cy5pc1JUTCksZz1mP2piLnJ0bERlZmF1bHRzOnt9LHRoaXMuZGlyRGVmYXVsdHM9Zyx0aGlzLmxhbmdEZWZhdWx0cz1lLHRoaXMub3ZlcnJpZGVzPWEsdGhpcy5vcHRpb25zPWMoW2piLmRlZmF1bHRzLGcsZSxhXSksRWEodGhpcy5vcHRpb25zKSx0aGlzLnZpZXdTcGVjQ2FjaGU9e319LGdldFZpZXdTcGVjOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudmlld1NwZWNDYWNoZTtyZXR1cm4gYlthXXx8KGJbYV09dGhpcy5idWlsZFZpZXdTcGVjKGEpKX0sZ2V0VW5pdFZpZXdTcGVjOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZTtpZigtMSE9YS5pbkFycmF5KGIsUmEpKWZvcihjPXRoaXMuaGVhZGVyLmdldFZpZXdzV2l0aEJ1dHRvbnMoKSxhLmVhY2goSmEudmlld3MsZnVuY3Rpb24oYSl7Yy5wdXNoKGEpfSksZD0wO2Q8Yy5sZW5ndGg7ZCsrKWlmKGU9dGhpcy5nZXRWaWV3U3BlYyhjW2RdKSxlJiZlLnNpbmdsZVVuaXQ9PWIpcmV0dXJuIGV9LGJ1aWxkVmlld1NwZWM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkLGUsZixnLGg9dGhpcy5vdmVycmlkZXMudmlld3N8fHt9LGk9W10saj1bXSxrPVtdLGw9YTtsOylkPUthW2xdLGU9aFtsXSxsPW51bGwsImZ1bmN0aW9uIj09dHlwZW9mIGQmJihkPXsiY2xhc3MiOmR9KSxkJiYoaS51bnNoaWZ0KGQpLGoudW5zaGlmdChkLmRlZmF1bHRzfHx7fSksZj1mfHxkLmR1cmF0aW9uLGw9bHx8ZC50eXBlKSxlJiYoay51bnNoaWZ0KGUpLGY9Znx8ZS5kdXJhdGlvbixsPWx8fGUudHlwZSk7cmV0dXJuIGQ9SihpKSxkLnR5cGU9YSxkWyJjbGFzcyJdPyhmJiYoZj1iLmR1cmF0aW9uKGYpLGYudmFsdWVPZigpJiYoZC5kdXJhdGlvbj1mLGc9RShmKSwxPT09Zi5hcyhnKSYmKGQuc2luZ2xlVW5pdD1nLGsudW5zaGlmdChoW2ddfHx7fSkpKSksZC5kZWZhdWx0cz1jKGopLGQub3ZlcnJpZGVzPWMoayksdGhpcy5idWlsZFZpZXdTcGVjT3B0aW9ucyhkKSx0aGlzLmJ1aWxkVmlld1NwZWNCdXR0b25UZXh0KGQsYSksZCk6ITF9LGJ1aWxkVmlld1NwZWNPcHRpb25zOmZ1bmN0aW9uKGEpe2Eub3B0aW9ucz1jKFtqYi5kZWZhdWx0cyxhLmRlZmF1bHRzLHRoaXMuZGlyRGVmYXVsdHMsdGhpcy5sYW5nRGVmYXVsdHMsdGhpcy5vdmVycmlkZXMsYS5vdmVycmlkZXNdKSxFYShhLm9wdGlvbnMpfSxidWlsZFZpZXdTcGVjQnV0dG9uVGV4dDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYyl7dmFyIGQ9Yy5idXR0b25UZXh0fHx7fTtyZXR1cm4gZFtiXXx8KGEuc2luZ2xlVW5pdD9kW2Euc2luZ2xlVW5pdF06bnVsbCl9YS5idXR0b25UZXh0T3ZlcnJpZGU9Yyh0aGlzLm92ZXJyaWRlcyl8fGEub3ZlcnJpZGVzLmJ1dHRvblRleHQsYS5idXR0b25UZXh0RGVmYXVsdD1jKHRoaXMubGFuZ0RlZmF1bHRzKXx8Yyh0aGlzLmRpckRlZmF1bHRzKXx8YS5kZWZhdWx0cy5idXR0b25UZXh0fHxjKGpiLmRlZmF1bHRzKXx8KGEuZHVyYXRpb24/dGhpcy5odW1hbml6ZUR1cmF0aW9uKGEuZHVyYXRpb24pOm51bGwpfHxifSxpbnN0YW50aWF0ZVZpZXc6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRWaWV3U3BlYyhhKTtyZXR1cm4gbmV3IGJbImNsYXNzIl0odGhpcyxhLGIub3B0aW9ucyxiLmR1cmF0aW9uKX0saXNWYWxpZFZpZXdUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBCb29sZWFuKHRoaXMuZ2V0Vmlld1NwZWMoYSkpfSxwdXNoTG9hZGluZzpmdW5jdGlvbigpe3RoaXMubG9hZGluZ0xldmVsKyt8fHRoaXMudHJpZ2dlcigibG9hZGluZyIsbnVsbCwhMCx0aGlzLnZpZXcpfSxwb3BMb2FkaW5nOmZ1bmN0aW9uKCl7LS10aGlzLmxvYWRpbmdMZXZlbHx8dGhpcy50cmlnZ2VyKCJsb2FkaW5nIixudWxsLCExLHRoaXMudmlldyl9LGJ1aWxkU2VsZWN0UmFuZ2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT10aGlzLm1vbWVudChhKSxiPWI/dGhpcy5tb21lbnQoYik6YS5oYXNUaW1lKCk/YS5jbG9uZSgpLmFkZCh0aGlzLmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOmEuY2xvbmUoKS5hZGQodGhpcy5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbikse3N0YXJ0OmEsZW5kOmJ9fX0pO2piLmRlZmF1bHRzPXt0aXRsZVJhbmdlU2VwYXJhdG9yOiIg4oCUICIsbW9udGhZZWFyRm9ybWF0OiJNTU1NIFlZWVkiLGRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb246IjAyOjAwOjAwIixkZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjp7ZGF5czoxfSxmb3JjZUV2ZW50RHVyYXRpb246ITEsbmV4dERheVRocmVzaG9sZDoiMDk6MDA6MDAiLGRlZmF1bHRWaWV3OiJtb250aCIsYXNwZWN0UmF0aW86MS4zNSxoZWFkZXI6e2xlZnQ6InRpdGxlIixjZW50ZXI6IiIscmlnaHQ6InRvZGF5IHByZXYsbmV4dCJ9LHdlZWtlbmRzOiEwLHdlZWtOdW1iZXJzOiExLHdlZWtOdW1iZXJUaXRsZToiVyIsd2Vla051bWJlckNhbGN1bGF0aW9uOiJsb2NhbCIsc2Nyb2xsVGltZToiMDY6MDA6MDAiLGxhenlGZXRjaGluZzohMCxzdGFydFBhcmFtOiJzdGFydCIsZW5kUGFyYW06ImVuZCIsdGltZXpvbmVQYXJhbToidGltZXpvbmUiLHRpbWV6b25lOiExLGlzUlRMOiExLGJ1dHRvblRleHQ6e3ByZXY6InByZXYiLG5leHQ6Im5leHQiLHByZXZZZWFyOiJwcmV2IHllYXIiLG5leHRZZWFyOiJuZXh0IHllYXIiLHllYXI6InllYXIiLHRvZGF5OiJ0b2RheSIsbW9udGg6Im1vbnRoIix3ZWVrOiJ3ZWVrIixkYXk6ImRheSJ9LGJ1dHRvbkljb25zOntwcmV2OiJsZWZ0LXNpbmdsZS1hcnJvdyIsbmV4dDoicmlnaHQtc2luZ2xlLWFycm93IixwcmV2WWVhcjoibGVmdC1kb3VibGUtYXJyb3ciLG5leHRZZWFyOiJyaWdodC1kb3VibGUtYXJyb3cifSx0aGVtZTohMSx0aGVtZUJ1dHRvbkljb25zOntwcmV2OiJjaXJjbGUtdHJpYW5nbGUtdyIsbmV4dDoiY2lyY2xlLXRyaWFuZ2xlLWUiLHByZXZZZWFyOiJzZWVrLXByZXYiLG5leHRZZWFyOiJzZWVrLW5leHQifSxkcmFnT3BhY2l0eTouNzUsZHJhZ1JldmVydER1cmF0aW9uOjUwMCxkcmFnU2Nyb2xsOiEwLHVuc2VsZWN0QXV0bzohMCxkcm9wQWNjZXB0OiIqIixldmVudExpbWl0OiExLGV2ZW50TGltaXRUZXh0OiJtb3JlIixldmVudExpbWl0Q2xpY2s6InBvcG92ZXIiLGRheVBvcG92ZXJGb3JtYXQ6IkxMIixoYW5kbGVXaW5kb3dSZXNpemU6ITAsd2luZG93UmVzaXplRGVsYXk6MjAwfSxqYi5lbmdsaXNoRGVmYXVsdHM9e2RheVBvcG92ZXJGb3JtYXQ6ImRkZGQsIE1NTU0gRCJ9LGpiLnJ0bERlZmF1bHRzPXtoZWFkZXI6e2xlZnQ6Im5leHQscHJldiB0b2RheSIsY2VudGVyOiIiLHJpZ2h0OiJ0aXRsZSJ9LGJ1dHRvbkljb25zOntwcmV2OiJyaWdodC1zaW5nbGUtYXJyb3ciLG5leHQ6ImxlZnQtc2luZ2xlLWFycm93IixwcmV2WWVhcjoicmlnaHQtZG91YmxlLWFycm93IixuZXh0WWVhcjoibGVmdC1kb3VibGUtYXJyb3cifSx0aGVtZUJ1dHRvbkljb25zOntwcmV2OiJjaXJjbGUtdHJpYW5nbGUtZSIsbmV4dDoiY2lyY2xlLXRyaWFuZ2xlLXciLG5leHRZZWFyOiJzZWVrLXByZXYiLHByZXZZZWFyOiJzZWVrLW5leHQifX07dmFyIGtiPUphLmxhbmdzPXt9O0phLmRhdGVwaWNrZXJMYW5nPWZ1bmN0aW9uKGIsYyxkKXt2YXIgZT1rYltiXXx8KGtiW2JdPXt9KTtlLmlzUlRMPWQuaXNSVEwsZS53ZWVrTnVtYmVyVGl0bGU9ZC53ZWVrSGVhZGVyLGEuZWFjaChsYixmdW5jdGlvbihhLGIpe2VbYV09YihkKX0pLGEuZGF0ZXBpY2tlciYmKGEuZGF0ZXBpY2tlci5yZWdpb25hbFtjXT1hLmRhdGVwaWNrZXIucmVnaW9uYWxbYl09ZCxhLmRhdGVwaWNrZXIucmVnaW9uYWwuZW49YS5kYXRlcGlja2VyLnJlZ2lvbmFsWyIiXSxhLmRhdGVwaWNrZXIuc2V0RGVmYXVsdHMoZCkpfSxKYS5sYW5nPWZ1bmN0aW9uKGIsZCl7dmFyIGUsZjtlPWtiW2JdfHwoa2JbYl09e30pLGQmJihlPWtiW2JdPWMoW2UsZF0pKSxmPUZhKGIpLGEuZWFjaChtYixmdW5jdGlvbihhLGIpe251bGw9PWVbYV0mJihlW2FdPWIoZixlKSl9KSxqYi5kZWZhdWx0cy5sYW5nPWJ9O3ZhciBsYj17YnV0dG9uVGV4dDpmdW5jdGlvbihhKXtyZXR1cm57cHJldjpTKGEucHJldlRleHQpLG5leHQ6UyhhLm5leHRUZXh0KSx0b2RheTpTKGEuY3VycmVudFRleHQpfX0sbW9udGhZZWFyRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnNob3dNb250aEFmdGVyWWVhcj8iWVlZWVsiK2EueWVhclN1ZmZpeCsiXSBNTU1NIjoiTU1NTSBZWVlZWyIrYS55ZWFyU3VmZml4KyJdIn19LG1iPXtkYXlPZk1vbnRoRm9ybWF0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sb25nRGF0ZUZvcm1hdCgibCIpO3JldHVybiBjPWMucmVwbGFjZSgvXlkrW15cd1xzXSp8W15cd1xzXSpZKyQvZywiIiksYi5pc1JUTD9jKz0iIGRkZCI6Yz0iZGRkICIrYyxjfSxtZWRpdW1UaW1lRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoL1xzKmEkL2ksImEiKX0sc21hbGxUaW1lRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIig6bW0pIikucmVwbGFjZSgvKFxXbW0pJC8sIigkMSkiKS5yZXBsYWNlKC9ccyphJC9pLCJhIil9LGV4dHJhU21hbGxUaW1lRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIig6bW0pIikucmVwbGFjZSgvKFxXbW0pJC8sIigkMSkiKS5yZXBsYWNlKC9ccyphJC9pLCJ0Iil9LGhvdXJGb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubG9uZ0RhdGVGb3JtYXQoIkxUIikucmVwbGFjZSgiOm1tIiwiIikucmVwbGFjZSgvKFxXbW0pJC8sIiIpLnJlcGxhY2UoL1xzKmEkL2ksImEiKX0sbm9NZXJpZGllbVRpbWVGb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubG9uZ0RhdGVGb3JtYXQoIkxUIikucmVwbGFjZSgvXHMqYSQvaSwiIil9fSxuYj17c21hbGxEYXlEYXRlRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmlzUlRMPyJEIGRkIjoiZGQgRCJ9LHdlZWtGb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaXNSVEw/IndbICIrYS53ZWVrTnVtYmVyVGl0bGUrIl0iOiJbIithLndlZWtOdW1iZXJUaXRsZSsiIF13In0sc21hbGxXZWVrRm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmlzUlRMPyJ3WyIrYS53ZWVrTnVtYmVyVGl0bGUrIl0iOiJbIithLndlZWtOdW1iZXJUaXRsZSsiXXcifX07SmEubGFuZygiZW4iLGpiLmVuZ2xpc2hEZWZhdWx0cyksSmEuc291cmNlTm9ybWFsaXplcnM9W10sSmEuc291cmNlRmV0Y2hlcnM9W107dmFyIG9iPXtkYXRhVHlwZToianNvbiIsY2FjaGU6ITF9LHBiPTE7amIucHJvdG90eXBlLmdldFBlZXJFdmVudHM9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5nZXRFdmVudENhY2hlKCksZj1bXTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWQ9ZVtjXSxhJiZhLl9pZD09PWQuX2lkfHxmLnB1c2goZCk7cmV0dXJuIGZ9O3ZhciBxYj1pYi5leHRlbmQoe2RheUdyaWQ6bnVsbCxkYXlOdW1iZXJzVmlzaWJsZTohMSx3ZWVrTnVtYmVyc1Zpc2libGU6ITEsd2Vla051bWJlcldpZHRoOm51bGwsaGVhZFJvd0VsOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZD1uZXcgZ2IodGhpcyksdGhpcy5jb29yZE1hcD10aGlzLmRheUdyaWQuY29vcmRNYXB9LHNldFJhbmdlOmZ1bmN0aW9uKGEpe2liLnByb3RvdHlwZS5zZXRSYW5nZS5jYWxsKHRoaXMsYSksdGhpcy5kYXlHcmlkLmJyZWFrT25XZWVrcz0veWVhcnxtb250aHx3ZWVrLy50ZXN0KHRoaXMuaW50ZXJ2YWxVbml0KSx0aGlzLmRheUdyaWQuc2V0UmFuZ2UoYSl9LGNvbXB1dGVSYW5nZTpmdW5jdGlvbihhKXt2YXIgYj1pYi5wcm90b3R5cGUuY29tcHV0ZVJhbmdlLmNhbGwodGhpcyxhKTtyZXR1cm4veWVhcnxtb250aC8udGVzdChiLmludGVydmFsVW5pdCkmJihiLnN0YXJ0LnN0YXJ0T2YoIndlZWsiKSxiLnN0YXJ0PXRoaXMuc2tpcEhpZGRlbkRheXMoYi5zdGFydCksYi5lbmQud2Vla2RheSgpJiYoYi5lbmQuYWRkKDEsIndlZWsiKS5zdGFydE9mKCJ3ZWVrIiksYi5lbmQ9dGhpcy5za2lwSGlkZGVuRGF5cyhiLmVuZCwtMSwhMCkpKSxifSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe3RoaXMuZGF5TnVtYmVyc1Zpc2libGU9dGhpcy5kYXlHcmlkLnJvd0NudD4xLHRoaXMud2Vla051bWJlcnNWaXNpYmxlPXRoaXMub3B0KCJ3ZWVrTnVtYmVycyIpLHRoaXMuZGF5R3JpZC5udW1iZXJzVmlzaWJsZT10aGlzLmRheU51bWJlcnNWaXNpYmxlfHx0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSx0aGlzLmVsLmFkZENsYXNzKCJmYy1iYXNpYy12aWV3IikuaHRtbCh0aGlzLnJlbmRlckh0bWwoKSksdGhpcy5oZWFkUm93RWw9dGhpcy5lbC5maW5kKCJ0aGVhZCAuZmMtcm93IiksdGhpcy5zY3JvbGxlckVsPXRoaXMuZWwuZmluZCgiLmZjLWRheS1ncmlkLWNvbnRhaW5lciIpLHRoaXMuZGF5R3JpZC5jb29yZE1hcC5jb250YWluZXJFbD10aGlzLnNjcm9sbGVyRWwsdGhpcy5kYXlHcmlkLnNldEVsZW1lbnQodGhpcy5lbC5maW5kKCIuZmMtZGF5LWdyaWQiKSksdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKHRoaXMuaGFzUmlnaWRSb3dzKCkpfSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnVucmVuZGVyRGF0ZXMoKSx0aGlzLmRheUdyaWQucmVtb3ZlRWxlbWVudCgpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKX0scmVuZGVySHRtbDpmdW5jdGlvbigpe3JldHVybic8dGFibGU+PHRoZWFkIGNsYXNzPSJmYy1oZWFkIj48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0SGVhZGVyQ2xhc3MrJyI+Jyt0aGlzLmRheUdyaWQuaGVhZEh0bWwoKSsnPC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSJmYy1ib2R5Ij48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0Q29udGVudENsYXNzKyciPjxkaXYgY2xhc3M9ImZjLWRheS1ncmlkLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiLz48L2Rpdj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPid9LGhlYWRJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrTnVtYmVyc1Zpc2libGU/Jzx0aCBjbGFzcz0iZmMtd2Vlay1udW1iZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciICcrdGhpcy53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48c3Bhbj4iK1IodGhpcy5vcHQoIndlZWtOdW1iZXJUaXRsZSIpKSsiPC9zcGFuPjwvdGg+Ijp2b2lkIDB9LG51bWJlckludHJvSHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy53ZWVrTnVtYmVyc1Zpc2libGU/Jzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcrdGhpcy53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48c3Bhbj4iK3RoaXMuZGF5R3JpZC5nZXRDZWxsKGEsMCkuc3RhcnQuZm9ybWF0KCJ3IikrIjwvc3Bhbj48L3RkPiI6dm9pZCAwfSxkYXlJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrTnVtYmVyc1Zpc2libGU/Jzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIgJyt0aGlzLndpZGdldENvbnRlbnRDbGFzcysnIiAnK3RoaXMud2Vla051bWJlclN0eWxlQXR0cigpKyI+PC90ZD4iOnZvaWQgMH0saW50cm9IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla051bWJlcnNWaXNpYmxlPyc8dGQgY2xhc3M9ImZjLXdlZWstbnVtYmVyIiAnK3RoaXMud2Vla051bWJlclN0eWxlQXR0cigpKyI+PC90ZD4iOnZvaWQgMH0sbnVtYmVyQ2VsbEh0bWw6ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnN0YXJ0O3JldHVybiB0aGlzLmRheU51bWJlcnNWaXNpYmxlPyhiPXRoaXMuZGF5R3JpZC5nZXREYXlDbGFzc2VzKGMpLGIudW5zaGlmdCgiZmMtZGF5LW51bWJlciIpLCc8dGQgY2xhc3M9IicrYi5qb2luKCIgIikrJyIgZGF0YS1kYXRlPSInK2MuZm9ybWF0KCkrJyI+JytjLmRhdGUoKSsiPC90ZD4iKToiPHRkLz4ifSx3ZWVrTnVtYmVyU3R5bGVBdHRyOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLndlZWtOdW1iZXJXaWR0aD8nc3R5bGU9IndpZHRoOicrdGhpcy53ZWVrTnVtYmVyV2lkdGgrJ3B4Iic6IiJ9LGhhc1JpZ2lkUm93czpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0KCJldmVudExpbWl0Iik7cmV0dXJuIGEmJiJudW1iZXIiIT10eXBlb2YgYX0sdXBkYXRlV2lkdGg6ZnVuY3Rpb24oKXt0aGlzLndlZWtOdW1iZXJzVmlzaWJsZSYmKHRoaXMud2Vla051bWJlcldpZHRoPWsodGhpcy5lbC5maW5kKCIuZmMtd2Vlay1udW1iZXIiKSkpfSxzZXRIZWlnaHQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXRoaXMub3B0KCJldmVudExpbWl0Iik7bSh0aGlzLnNjcm9sbGVyRWwpLGYodGhpcy5oZWFkUm93RWwpLHRoaXMuZGF5R3JpZC5yZW1vdmVTZWdQb3BvdmVyKCksZCYmIm51bWJlciI9PXR5cGVvZiBkJiZ0aGlzLmRheUdyaWQubGltaXRSb3dzKGQpLGM9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQoYSksdGhpcy5zZXRHcmlkSGVpZ2h0KGMsYiksZCYmIm51bWJlciIhPXR5cGVvZiBkJiZ0aGlzLmRheUdyaWQubGltaXRSb3dzKGQpLCFiJiZsKHRoaXMuc2Nyb2xsZXJFbCxjKSYmKGUodGhpcy5oZWFkUm93RWwscih0aGlzLnNjcm9sbGVyRWwpKSxjPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KGEpLHRoaXMuc2Nyb2xsZXJFbC5oZWlnaHQoYykpfSxzZXRHcmlkSGVpZ2h0OmZ1bmN0aW9uKGEsYil7Yj9qKHRoaXMuZGF5R3JpZC5yb3dFbHMpOmkodGhpcy5kYXlHcmlkLnJvd0VscyxhLCEwKX0scmVuZGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3RoaXMuZGF5R3JpZC5yZW5kZXJFdmVudHMoYSksdGhpcy51cGRhdGVIZWlnaHQoKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5R3JpZC5nZXRFdmVudFNlZ3MoKX0sdW5yZW5kZXJFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJFdmVudHMoKX0scmVuZGVyRHJhZzpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmRheUdyaWQucmVuZGVyRHJhZyhhLGIpfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJEcmFnKCl9LHJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbihhKXt0aGlzLmRheUdyaWQucmVuZGVyU2VsZWN0aW9uKGEpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZC51bnJlbmRlclNlbGVjdGlvbigpfX0pLHJiPXFiLmV4dGVuZCh7Y29tcHV0ZVJhbmdlOmZ1bmN0aW9uKGEpe3ZhciBiLGM9cWIucHJvdG90eXBlLmNvbXB1dGVSYW5nZS5jYWxsKHRoaXMsYSk7cmV0dXJuIHRoaXMuaXNGaXhlZFdlZWtzKCkmJihiPU1hdGguY2VpbChjLmVuZC5kaWZmKGMuc3RhcnQsIndlZWtzIiwhMCkpLGMuZW5kLmFkZCg2LWIsIndlZWtzIikpLGN9LHNldEdyaWRIZWlnaHQ6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJ2YXJpYWJsZSI9PT10aGlzLm9wdCgid2Vla01vZGUiKSxiJiYoYSo9dGhpcy5yb3dDbnQvNiksaSh0aGlzLmRheUdyaWQucm93RWxzLGEsIWIpfSxpc0ZpeGVkV2Vla3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdCgid2Vla01vZGUiKTtyZXR1cm4gYT8iZml4ZWQiPT09YTp0aGlzLm9wdCgiZml4ZWRXZWVrQ291bnQiKX19KTtLYS5iYXNpYz17ImNsYXNzIjpxYn0sS2EuYmFzaWNEYXk9e3R5cGU6ImJhc2ljIixkdXJhdGlvbjp7ZGF5czoxfX0sS2EuYmFzaWNXZWVrPXt0eXBlOiJiYXNpYyIsZHVyYXRpb246e3dlZWtzOjF9fSxLYS5tb250aD17ImNsYXNzIjpyYixkdXJhdGlvbjp7bW9udGhzOjF9LGRlZmF1bHRzOntmaXhlZFdlZWtDb3VudDohMH19O3ZhciBzYj1pYi5leHRlbmQoe3RpbWVHcmlkOm51bGwsZGF5R3JpZDpudWxsLGF4aXNXaWR0aDpudWxsLG5vU2Nyb2xsUm93RWxzOm51bGwsYm90dG9tUnVsZUVsOm51bGwsYm90dG9tUnVsZUhlaWdodDpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkPW5ldyBoYih0aGlzKSx0aGlzLm9wdCgiYWxsRGF5U2xvdCIpPyh0aGlzLmRheUdyaWQ9bmV3IGdiKHRoaXMpLHRoaXMuY29vcmRNYXA9bmV3IGFiKFt0aGlzLmRheUdyaWQuY29vcmRNYXAsdGhpcy50aW1lR3JpZC5jb29yZE1hcF0pKTp0aGlzLmNvb3JkTWFwPXRoaXMudGltZUdyaWQuY29vcmRNYXB9LHNldFJhbmdlOmZ1bmN0aW9uKGEpe2liLnByb3RvdHlwZS5zZXRSYW5nZS5jYWxsKHRoaXMsYSksdGhpcy50aW1lR3JpZC5zZXRSYW5nZShhKSx0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC5zZXRSYW5nZShhKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmVsLmFkZENsYXNzKCJmYy1hZ2VuZGEtdmlldyIpLmh0bWwodGhpcy5yZW5kZXJIdG1sKCkpLHRoaXMuc2Nyb2xsZXJFbD10aGlzLmVsLmZpbmQoIi5mYy10aW1lLWdyaWQtY29udGFpbmVyIiksdGhpcy50aW1lR3JpZC5jb29yZE1hcC5jb250YWluZXJFbD10aGlzLnNjcm9sbGVyRWwsdGhpcy50aW1lR3JpZC5zZXRFbGVtZW50KHRoaXMuZWwuZmluZCgiLmZjLXRpbWUtZ3JpZCIpKSx0aGlzLnRpbWVHcmlkLnJlbmRlckRhdGVzKCksdGhpcy5ib3R0b21SdWxlRWw9YSgnPGhyIGNsYXNzPSJmYy1kaXZpZGVyICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIi8+JykuYXBwZW5kVG8odGhpcy50aW1lR3JpZC5lbCksdGhpcy5kYXlHcmlkJiYodGhpcy5kYXlHcmlkLnNldEVsZW1lbnQodGhpcy5lbC5maW5kKCIuZmMtZGF5LWdyaWQiKSksdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKCksdGhpcy5kYXlHcmlkLmJvdHRvbUNvb3JkUGFkZGluZz10aGlzLmRheUdyaWQuZWwubmV4dCgiaHIiKS5vdXRlckhlaWdodCgpKSx0aGlzLm5vU2Nyb2xsUm93RWxzPXRoaXMuZWwuZmluZCgiLmZjLXJvdzpub3QoLmZjLXNjcm9sbGVyICopIil9LHVucmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyRGF0ZXMoKSx0aGlzLnRpbWVHcmlkLnJlbW92ZUVsZW1lbnQoKSx0aGlzLmRheUdyaWQmJih0aGlzLmRheUdyaWQudW5yZW5kZXJEYXRlcygpLHRoaXMuZGF5R3JpZC5yZW1vdmVFbGVtZW50KCkpfSxyZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQucmVuZGVyQnVzaW5lc3NIb3VycygpfSxyZW5kZXJIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuJzx0YWJsZT48dGhlYWQgY2xhc3M9ImZjLWhlYWQiPjx0cj48dGQgY2xhc3M9IicrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIj4nK3RoaXMudGltZUdyaWQuaGVhZEh0bWwoKSsnPC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSJmYy1ib2R5Ij48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0Q29udGVudENsYXNzKyciPicrKHRoaXMuZGF5R3JpZD8nPGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiLz48aHIgY2xhc3M9ImZjLWRpdmlkZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciLz4nOiIiKSsnPGRpdiBjbGFzcz0iZmMtdGltZS1ncmlkLWNvbnRhaW5lciI+PGRpdiBjbGFzcz0iZmMtdGltZS1ncmlkIi8+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4nfSxoZWFkSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIGEsYjtyZXR1cm4gdGhpcy5vcHQoIndlZWtOdW1iZXJzIik/KGE9dGhpcy50aW1lR3JpZC5nZXRDZWxsKDApLnN0YXJ0LGI9YS5mb3JtYXQodGhpcy5vcHQoInNtYWxsV2Vla0Zvcm1hdCIpKSwnPHRoIGNsYXNzPSJmYy1heGlzIGZjLXdlZWstbnVtYmVyICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIiAnK3RoaXMuYXhpc1N0eWxlQXR0cigpKyI+PHNwYW4+IitSKGIpKyI8L3NwYW4+PC90aD4iKTonPHRoIGNsYXNzPSJmYy1heGlzICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIiAnK3RoaXMuYXhpc1N0eWxlQXR0cigpKyI+PC90aD4ifSxkYXlJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzICcrdGhpcy53aWRnZXRDb250ZW50Q2xhc3MrJyIgJyt0aGlzLmF4aXNTdHlsZUF0dHIoKSsiPjxzcGFuPiIrKHRoaXMub3B0KCJhbGxEYXlIdG1sIil8fFIodGhpcy5vcHQoImFsbERheVRleHQiKSkpKyI8L3NwYW4+PC90ZD4ifSxzbG90QmdJbnRyb0h0bWw6ZnVuY3Rpb24oKXtyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzICcrdGhpcy53aWRnZXRDb250ZW50Q2xhc3MrJyIgJyt0aGlzLmF4aXNTdHlsZUF0dHIoKSsiPjwvdGQ+In0saW50cm9IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuJzx0ZCBjbGFzcz0iZmMtYXhpcyIgJyt0aGlzLmF4aXNTdHlsZUF0dHIoKSsiPjwvdGQ+In0sYXhpc1N0eWxlQXR0cjpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5heGlzV2lkdGg/J3N0eWxlPSJ3aWR0aDonK3RoaXMuYXhpc1dpZHRoKydweCInOiIifSx1cGRhdGVTaXplOmZ1bmN0aW9uKGEpe3RoaXMudGltZUdyaWQudXBkYXRlU2l6ZShhKSxpYi5wcm90b3R5cGUudXBkYXRlU2l6ZS5jYWxsKHRoaXMsYSl9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKCl7dGhpcy5heGlzV2lkdGg9ayh0aGlzLmVsLmZpbmQoIi5mYy1heGlzIikpfSxzZXRIZWlnaHQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO251bGw9PT10aGlzLmJvdHRvbVJ1bGVIZWlnaHQmJih0aGlzLmJvdHRvbVJ1bGVIZWlnaHQ9dGhpcy5ib3R0b21SdWxlRWwub3V0ZXJIZWlnaHQoKSksdGhpcy5ib3R0b21SdWxlRWwuaGlkZSgpLHRoaXMuc2Nyb2xsZXJFbC5jc3MoIm92ZXJmbG93IiwiIiksbSh0aGlzLnNjcm9sbGVyRWwpLGYodGhpcy5ub1Njcm9sbFJvd0VscyksdGhpcy5kYXlHcmlkJiYodGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKSxjPXRoaXMub3B0KCJldmVudExpbWl0IiksYyYmIm51bWJlciIhPXR5cGVvZiBjJiYoYz10YiksYyYmdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhjKSksYnx8KGQ9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQoYSksbCh0aGlzLnNjcm9sbGVyRWwsZCk/KGUodGhpcy5ub1Njcm9sbFJvd0VscyxyKHRoaXMuc2Nyb2xsZXJFbCkpLGQ9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQoYSksdGhpcy5zY3JvbGxlckVsLmhlaWdodChkKSk6KHRoaXMuc2Nyb2xsZXJFbC5oZWlnaHQoZCkuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLHRoaXMuYm90dG9tUnVsZUVsLnNob3coKSkpfSxjb21wdXRlSW5pdGlhbFNjcm9sbDpmdW5jdGlvbigpe3ZhciBhPWIuZHVyYXRpb24odGhpcy5vcHQoInNjcm9sbFRpbWUiKSksYz10aGlzLnRpbWVHcmlkLmNvbXB1dGVUaW1lVG9wKGEpO3JldHVybiBjPU1hdGguY2VpbChjKSxjJiZjKyssY30scmVuZGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1bXSxlPVtdLGY9W107Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylhW2NdLmFsbERheT9kLnB1c2goYVtjXSk6ZS5wdXNoKGFbY10pO2I9dGhpcy50aW1lR3JpZC5yZW5kZXJFdmVudHMoZSksdGhpcy5kYXlHcmlkJiYoZj10aGlzLmRheUdyaWQucmVuZGVyRXZlbnRzKGQpKSx0aGlzLnVwZGF0ZUhlaWdodCgpfSxnZXRFdmVudFNlZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aW1lR3JpZC5nZXRFdmVudFNlZ3MoKS5jb25jYXQodGhpcy5kYXlHcmlkP3RoaXMuZGF5R3JpZC5nZXRFdmVudFNlZ3MoKTpbXSl9LHVucmVuZGVyRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlckV2ZW50cygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyRXZlbnRzKCl9LHJlbmRlckRyYWc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdGFydC5oYXNUaW1lKCk/dGhpcy50aW1lR3JpZC5yZW5kZXJEcmFnKGEsYik6dGhpcy5kYXlHcmlkP3RoaXMuZGF5R3JpZC5yZW5kZXJEcmFnKGEsYik6dm9pZCAwfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyRHJhZygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyRHJhZygpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oYSl7YS5zdGFydC5oYXNUaW1lKCl8fGEuZW5kLmhhc1RpbWUoKT90aGlzLnRpbWVHcmlkLnJlbmRlclNlbGVjdGlvbihhKTp0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC5yZW5kZXJTZWxlY3Rpb24oYSl9LHVucmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlclNlbGVjdGlvbigpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyU2VsZWN0aW9uKCl9fSksdGI9NTtyZXR1cm4gS2EuYWdlbmRhPXsiY2xhc3MiOnNiLGRlZmF1bHRzOnthbGxEYXlTbG90OiEwLGFsbERheVRleHQ6ImFsbC1kYXkiLHNsb3REdXJhdGlvbjoiMDA6MzA6MDAiLG1pblRpbWU6IjAwOjAwOjAwIixtYXhUaW1lOiIyNDowMDowMCIsc2xvdEV2ZW50T3ZlcmxhcDohMH19LEthLmFnZW5kYURheT17dHlwZToiYWdlbmRhIixkdXJhdGlvbjp7ZGF5czoxfX0sS2EuYWdlbmRhV2Vlaz17dHlwZToiYWdlbmRhIixkdXJhdGlvbjp7d2Vla3M6MX19LEphfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.print.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIgUHJpbnQgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTUgQWRhbSBTaGF3CiAqLwoKLyoKICogSW5jbHVkZSB0aGlzIHN0eWxlc2hlZXQgb24geW91ciBwYWdlIHRvIGdldCBhIG1vcmUgcHJpbnRlci1mcmllbmRseSBjYWxlbmRhci4KICogV2hlbiBpbmNsdWRpbmcgdGhpcyBzdHlsZXNoZWV0LCB1c2UgdGhlIG1lZGlhPSdwcmludCcgYXR0cmlidXRlIG9mIHRoZSA8bGluaz4gdGFnLgogKiBNYWtlIHN1cmUgdG8gaW5jbHVkZSB0aGlzIHN0eWxlc2hlZXQgSU4gQURESVRJT04gdG8gdGhlIHJlZ3VsYXIgZnVsbGNhbGVuZGFyLmNzcy4KICovCgouZmMgewoJbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCgovKiBHbG9iYWwgRXZlbnQgUmVzdHlsaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ldmVudCB7CgliYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7Cgljb2xvcjogIzAwMCAhaW1wb3J0YW50OwoJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwp9CgouZmMtZXZlbnQgLmZjLXJlc2l6ZXIgewoJZGlzcGxheTogbm9uZTsKfQoKCi8qIFRhYmxlICYgRGF5LVJvdyBSZXN0eWxpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdGgsCnRkLApociwKdGhlYWQsCnRib2R5LAouZmMtcm93IHsKCWJvcmRlci1jb2xvcjogI2NjYyAhaW1wb3J0YW50OwoJYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50Owp9CgovKiBraWxsIHRoZSBvdmVybGFpZCwgYWJzb2x1dGVseS1wb3NpdGlvbmVkIGNvbW1vbiBjb21wb25lbnRzICovCi5mYy1iZywKLmZjLWJnZXZlbnQtc2tlbGV0b24sCi5mYy1oaWdobGlnaHQtc2tlbGV0b24sCi5mYy1oZWxwZXItc2tlbGV0b24gewoJZGlzcGxheTogbm9uZTsKfQoKLyogZG9uJ3QgZm9yY2UgYSBtaW4taGVpZ2h0IG9uIHJvd3MgKGZvciBEYXlHcmlkKSAqLwouZmMgdGJvZHkgLmZjLXJvdyB7CgloZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgLyogdW5kbyBoZWlnaHQgdGhhdCBKUyBzZXQgaW4gZGlzdHJpYnV0ZUhlaWdodCAqLwoJbWluLWhlaWdodDogMCAhaW1wb3J0YW50OyAvKiB1bmRvIHRoZSBtaW4taGVpZ2h0IGZyb20gZWFjaCB2aWV3J3Mgc3BlY2lmaWMgc3R5bGVzaGVldCAqLwp9CgouZmMgdGJvZHkgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB7Cglwb3NpdGlvbjogc3RhdGljOyAvKiB1bmRvIC5mYy1yaWdpZCAqLwoJcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgLyogdXNlIGEgbW9yZSBib3JkZXItZnJpZW5kbHkgbWV0aG9kIGZvciB0aGlzLi4uICovCn0KCi5mYyB0Ym9keSAuZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQgeyAvKiBvbmx5IHdvcmtzIGluIG5ld2VyIGJyb3dzZXJzICovCglwYWRkaW5nLWJvdHRvbTogMWVtOyAvKiAuLi5naXZlcyBzcGFjZSB3aXRoaW4gdGhlIHNrZWxldG9uLiBhbHNvIGVuc3VyZXMgbWluIGhlaWdodCBpbiBhIHdheSAqLwp9CgouZmMgdGJvZHkgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB0YWJsZSB7CgkvKiBwcm92aWRlcyBhIG1pbi1oZWlnaHQgZm9yIHRoZSByb3csIGJ1dCBvbmx5IGVmZmVjdGl2ZSBmb3IgSUUsIHdoaWNoIGV4YWdnZXJhdGVzIHRoaXMgdmFsdWUsCgkgICBtYWtpbmcgaXQgbG9vayBtb3JlIGxpa2UgM2VtLiBmb3Igb3RoZXIgYnJvd2VycywgaXQgd2lsbCBhbHJlYWR5IGJlIHRoaXMgdGFsbCAqLwoJaGVpZ2h0OiAxZW07Cn0KCgovKiBVbmRvIG1vbnRoLXZpZXcgZXZlbnQgbGltaXRpbmcuIERpc3BsYXkgYWxsIGV2ZW50cyBhbmQgaGlkZSB0aGUgIm1vcmUiIGxpbmtzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1tb3JlLWNlbGwsCi5mYy1tb3JlIHsKCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLmZjIHRyLmZjLWxpbWl0ZWQgewoJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5mYyB0ZC5mYy1saW1pdGVkIHsKCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKfQoKLmZjLXBvcG92ZXIgewoJZGlzcGxheTogbm9uZTsgLyogbmV2ZXIgZGlzcGxheSB0aGUgIm1vcmUuLiIgcG9wb3ZlciBpbiBwcmludCBtb2RlICovCn0KCgovKiBUaW1lR3JpZCBSZXN0eWxpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogdW5kbyB0aGUgbWluLWhlaWdodCAxMDAlIHRyaWNrIHVzZWQgdG8gZmlsbCB0aGUgY29udGFpbmVyJ3MgaGVpZ2h0ICovCi5mYy10aW1lLWdyaWQgewoJbWluLWhlaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBkb24ndCBkaXNwbGF5IHRoZSBzaWRlIGF4aXMgYXQgYWxsICgiYWxsLWRheSIgYW5kIHRpbWUgY2VsbHMpICovCi5mYy1hZ2VuZGEtdmlldyAuZmMtYXhpcyB7CglkaXNwbGF5OiBub25lOwp9CgovKiBkb24ndCBkaXNwbGF5IHRoZSBob3Jpem9udGFsIGxpbmVzICovCi5mYy1zbGF0cywKLmZjLXRpbWUtZ3JpZCBociB7IC8qIHRoaXMgaHIgaXMgdXNlZCB3aGVuIGhlaWdodCBpcyB1bmRlcnVzZWQgYW5kIG5lZWRzIHRvIGJlIGZpbGxlZCAqLwoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyAvKiBpbXBvcnRhbnQgb3ZlcnJpZGVzIGlubGluZSBkZWNsYXJhdGlvbiAqLwp9CgovKiBsZXQgdGhlIGNvbnRhaW5lciB0aGF0IGhvbGRzIHRoZSBldmVudHMgYmUgbmF0dXJhbGx5IHBvc2l0aW9uZWQgYW5kIGNyZWF0ZSByZWFsIGhlaWdodCAqLwouZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiBzdGF0aWM7Cn0KCi8qIGluIGNhc2UgdGhlcmUgYXJlIG5vIGV2ZW50cywgd2Ugc3RpbGwgd2FudCBzb21lIGhlaWdodCAqLwouZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9uIHRhYmxlIHsKCWhlaWdodDogNGVtOwp9CgovKiBraWxsIHRoZSBob3Jpem9udGFsIHNwYWNpbmcgbWFkZSBieSB0aGUgZXZlbnQgY29udGFpbmVyLiBldmVudCBtYXJnaW5zIHdpbGwgYmUgZG9uZSBiZWxvdyAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXIgewoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCgovKiBUaW1lR3JpZCAqRXZlbnQqIFJlc3R5bGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBuYXR1cmFsbHkgcG9zaXRpb24gZXZlbnRzLCB2ZXJ0aWNhbGx5IHN0YWNraW5nIHRoZW0gKi8KLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQgewoJcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50OwoJbWFyZ2luOiAzcHggMnB4ICFpbXBvcnRhbnQ7Cn0KCi8qIGZvciBldmVudHMgdGhhdCBjb250aW51ZSB0byBhIGZ1dHVyZSBkYXksIGdpdmUgdGhlIGJvdHRvbSBib3JkZXIgYmFjayAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3QtZW5kIHsKCWJvcmRlci1ib3R0b20td2lkdGg6IDFweCAhaW1wb3J0YW50Owp9CgovKiBpbmRpY2F0ZSB0aGUgZXZlbnQgY29udGludWVzIHZpYSAiLi4uIiB0ZXh0ICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LmZjLW5vdC1lbmQ6YWZ0ZXIgewoJY29udGVudDogIi4uLiI7Cn0KCi8qIGZvciBldmVudHMgdGhhdCBhcmUgY29udGludWF0aW9ucyBmcm9tIHByZXZpb3VzIGRheXMsIGdpdmUgdGhlIHRvcCBib3JkZXIgYmFjayAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3Qtc3RhcnQgewoJYm9yZGVyLXRvcC13aWR0aDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi8qIGluZGljYXRlIHRoZSBldmVudCBpcyBhIGNvbnRpbnVhdGlvbiB2aWEgIi4uLiIgdGV4dCAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3Qtc3RhcnQ6YmVmb3JlIHsKCWNvbnRlbnQ6ICIuLi4iOwp9CgovKiB0aW1lICovCgovKiB1bmRvIGEgcHJldmlvdXMgZGVjbGFyYXRpb24gYW5kIGxldCB0aGUgdGltZSB0ZXh0IHNwYW4gdG8gYSBzZWNvbmQgbGluZSAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudCAuZmMtdGltZSB7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7Cn0KCi8qIGhpZGUgdGhlIHRoZSB0aW1lIHRoYXQgaXMgbm9ybWFsbHkgZGlzcGxheWVkLi4uICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50IC5mYy10aW1lIHNwYW4gewoJZGlzcGxheTogbm9uZTsKfQoKLyogLi4ucmVwbGFjZSBpdCB3aXRoIGEgbW9yZSB2ZXJib3NlIHZlcnNpb24gKGluY2x1ZGVzIEFNL1BNKSBzdG9yZWQgaW4gYW4gaHRtbCBhdHRyaWJ1dGUgKi8KLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQgLmZjLXRpbWU6YWZ0ZXIgewoJY29udGVudDogYXR0cihkYXRhLWZ1bGwpOwp9CgoKLyogVmVydGljYWwgU2Nyb2xsZXIgJiBDb250YWluZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIGtpbGwgdGhlIHNjcm9sbGJhcnMgYW5kIGFsbG93IG5hdHVyYWwgaGVpZ2h0ICovCi5mYy1zY3JvbGxlciwKLmZjLWRheS1ncmlkLWNvbnRhaW5lciwgICAgLyogdGhlc2UgZGl2cyBtaWdodCBiZSBhc3NpZ25lZCBoZWlnaHQsIHdoaWNoIHdlIG5lZWQgdG8gY2xlYXJlZCAqLwouZmMtdGltZS1ncmlkLWNvbnRhaW5lciB7ICAvKiAqLwoJb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKCWhlaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgovKiBraWxsIHRoZSBob3Jpem9udGFsIGJvcmRlci9wYWRkaW5nIHVzZWQgdG8gY29tcGVuc2F0ZSBmb3Igc2Nyb2xsYmFycyAqLwouZmMtcm93IHsKCWJvcmRlcjogMCAhaW1wb3J0YW50OwoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCgovKiBCdXR0b24gQ29udHJvbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLWJ1dHRvbi1ncm91cCwKLmZjIGJ1dHRvbiB7CglkaXNwbGF5OiBub25lOyAvKiBkb24ndCBkaXNwbGF5IGFueSBidXR0b24tcmVsYXRlZCBjb250cm9scyAqLwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/gcal.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2Mi4zLjIgR29vZ2xlIENhbGVuZGFyIFBsdWdpbgogKiBEb2NzICYgTGljZW5zZTogaHR0cDovL2Z1bGxjYWxlbmRhci5pby8KICogKGMpIDIwMTUgQWRhbSBTaGF3CiAqLwogCihmdW5jdGlvbihmYWN0b3J5KSB7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJZGVmaW5lKFsgJ2pxdWVyeScgXSwgZmFjdG9yeSk7Cgl9CgllbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsgLy8gTm9kZS9Db21tb25KUwoJCW1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSk7Cgl9CgllbHNlIHsKCQlmYWN0b3J5KGpRdWVyeSk7Cgl9Cn0pKGZ1bmN0aW9uKCQpIHsKCgp2YXIgQVBJX0JBU0UgPSAnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY2FsZW5kYXIvdjMvY2FsZW5kYXJzJzsKdmFyIGZjID0gJC5mdWxsQ2FsZW5kYXI7CnZhciBhcHBseUFsbCA9IGZjLmFwcGx5QWxsOwoKCmZjLnNvdXJjZU5vcm1hbGl6ZXJzLnB1c2goZnVuY3Rpb24oc291cmNlT3B0aW9ucykgewoJdmFyIGdvb2dsZUNhbGVuZGFySWQgPSBzb3VyY2VPcHRpb25zLmdvb2dsZUNhbGVuZGFySWQ7Cgl2YXIgdXJsID0gc291cmNlT3B0aW9ucy51cmw7Cgl2YXIgbWF0Y2g7CgoJLy8gaWYgdGhlIEdvb2dsZSBDYWxlbmRhciBJRCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IGRlZmluZWQKCWlmICghZ29vZ2xlQ2FsZW5kYXJJZCAmJiB1cmwpIHsKCgkJLy8gZGV0ZWN0IGlmIHRoZSBJRCB3YXMgc3BlY2lmaWVkIGFzIGEgc2luZ2xlIHN0cmluZy4KCQkvLyB3aWxsIG1hdGNoIGNhbGVuZGFycyBsaWtlICJhc2RmMTIzNEBjYWxlbmRhci5nb29nbGUuY29tIiBpbiBhZGRpdGlvbiB0byBwZXJzb24gZW1haWwgY2FsZW5kYXJzLgoJCWlmICgvXlteXC9dK0AoW15cL1wuXStcLikqKGdvb2dsZXxnb29nbGVtYWlsfGdtYWlsKVwuY29tJC8udGVzdCh1cmwpKSB7CgkJCWdvb2dsZUNhbGVuZGFySWQgPSB1cmw7CgkJfQoJCS8vIHRyeSB0byBzY3JhcGUgaXQgb3V0IG9mIGEgVjEgb3IgVjMgQVBJIGZlZWQgVVJMCgkJZWxzZSBpZiAoCgkJCShtYXRjaCA9IC9eaHR0cHM6XC9cL3d3dy5nb29nbGVhcGlzLmNvbVwvY2FsZW5kYXJcL3YzXC9jYWxlbmRhcnNcLyhbXlwvXSopLy5leGVjKHVybCkpIHx8CgkJCShtYXRjaCA9IC9eaHR0cHM/OlwvXC93d3cuZ29vZ2xlLmNvbVwvY2FsZW5kYXJcL2ZlZWRzXC8oW15cL10qKS8uZXhlYyh1cmwpKQoJCSkgewoJCQlnb29nbGVDYWxlbmRhcklkID0gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzFdKTsKCQl9CgoJCWlmIChnb29nbGVDYWxlbmRhcklkKSB7CgkJCXNvdXJjZU9wdGlvbnMuZ29vZ2xlQ2FsZW5kYXJJZCA9IGdvb2dsZUNhbGVuZGFySWQ7CgkJfQoJfQoKCglpZiAoZ29vZ2xlQ2FsZW5kYXJJZCkgeyAvLyBpcyB0aGlzIGEgR29vZ2xlIENhbGVuZGFyPwoKCQkvLyBtYWtlIGVhY2ggR29vZ2xlIENhbGVuZGFyIHNvdXJjZSB1bmVkaXRhYmxlIGJ5IGRlZmF1bHQKCQlpZiAoc291cmNlT3B0aW9ucy5lZGl0YWJsZSA9PSBudWxsKSB7CgkJCXNvdXJjZU9wdGlvbnMuZWRpdGFibGUgPSBmYWxzZTsKCQl9CgoJCS8vIFdlIHdhbnQgcmVtb3ZlRXZlbnRTb3VyY2UgdG8gd29yaywgYnV0IGl0IHdvbid0IGtub3cgYWJvdXQgdGhlIGdvb2dsZUNhbGVuZGFySWQgcHJpbWl0aXZlLgoJCS8vIFNob2Vob3JuIGl0IGludG8gdGhlIHVybCwgd2hpY2ggd2lsbCBmdW5jdGlvbiBhcyB0aGUgdW5pcXVlIHByaW1pdGl2ZS4gV29uJ3QgY2F1c2Ugc2lkZSBlZmZlY3RzLgoJCS8vIFRoaXMgaGFjayBpcyBvYnNvbGV0ZSBzaW5jZSAyLjIuMywgYnV0IGtlZXAgaXQgc28gdGhpcyBwbHVnaW4gZmlsZSBpcyBjb21wYXRpYmxlIHdpdGggb2xkIHZlcnNpb25zLgoJCXNvdXJjZU9wdGlvbnMudXJsID0gZ29vZ2xlQ2FsZW5kYXJJZDsKCX0KfSk7CgoKZmMuc291cmNlRmV0Y2hlcnMucHVzaChmdW5jdGlvbihzb3VyY2VPcHRpb25zLCBzdGFydCwgZW5kLCB0aW1lem9uZSkgewoJaWYgKHNvdXJjZU9wdGlvbnMuZ29vZ2xlQ2FsZW5kYXJJZCkgewoJCXJldHVybiB0cmFuc2Zvcm1PcHRpb25zKHNvdXJjZU9wdGlvbnMsIHN0YXJ0LCBlbmQsIHRpbWV6b25lLCB0aGlzKTsgLy8gYHRoaXNgIGlzIHRoZSBjYWxlbmRhcgoJfQp9KTsKCgpmdW5jdGlvbiB0cmFuc2Zvcm1PcHRpb25zKHNvdXJjZU9wdGlvbnMsIHN0YXJ0LCBlbmQsIHRpbWV6b25lLCBjYWxlbmRhcikgewoJdmFyIHVybCA9IEFQSV9CQVNFICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KHNvdXJjZU9wdGlvbnMuZ29vZ2xlQ2FsZW5kYXJJZCkgKyAnL2V2ZW50cz9jYWxsYmFjaz0/JzsgLy8ganNvbnAKCXZhciBhcGlLZXkgPSBzb3VyY2VPcHRpb25zLmdvb2dsZUNhbGVuZGFyQXBpS2V5IHx8IGNhbGVuZGFyLm9wdGlvbnMuZ29vZ2xlQ2FsZW5kYXJBcGlLZXk7Cgl2YXIgc3VjY2VzcyA9IHNvdXJjZU9wdGlvbnMuc3VjY2VzczsKCXZhciBkYXRhOwoJdmFyIHRpbWV6b25lQXJnOyAvLyBwb3B1bGF0ZWQgd2hlbiBhIHNwZWNpZmljIHRpbWV6b25lLiBlc2NhcGVkIHRvIEdvb2dsZSdzIGxpa2luZwoKCWZ1bmN0aW9uIHJlcG9ydEVycm9yKG1lc3NhZ2UsIGFwaUVycm9yT2JqcykgewoJCXZhciBlcnJvck9ianMgPSBhcGlFcnJvck9ianMgfHwgWyB7IG1lc3NhZ2U6IG1lc3NhZ2UgfSBdOyAvLyB0byBiZSBwYXNzZWQgaW50byBlcnJvciBoYW5kbGVycwoJCXZhciBjb25zb2xlT2JqID0gd2luZG93LmNvbnNvbGU7CgkJdmFyIGNvbnNvbGVXYXJuRnVuYyA9IGNvbnNvbGVPYmogPyAoY29uc29sZU9iai53YXJuIHx8IGNvbnNvbGVPYmoubG9nKSA6IG51bGw7CgoJCS8vIGNhbGwgZXJyb3IgaGFuZGxlcnMKCQkoc291cmNlT3B0aW9ucy5nb29nbGVDYWxlbmRhckVycm9yIHx8ICQubm9vcCkuYXBwbHkoY2FsZW5kYXIsIGVycm9yT2Jqcyk7CgkJKGNhbGVuZGFyLm9wdGlvbnMuZ29vZ2xlQ2FsZW5kYXJFcnJvciB8fCAkLm5vb3ApLmFwcGx5KGNhbGVuZGFyLCBlcnJvck9ianMpOwoKCQkvLyBwcmludCBlcnJvciB0byBkZWJ1ZyBjb25zb2xlCgkJaWYgKGNvbnNvbGVXYXJuRnVuYykgewoJCQljb25zb2xlV2FybkZ1bmMuYXBwbHkoY29uc29sZU9iaiwgWyBtZXNzYWdlIF0uY29uY2F0KGFwaUVycm9yT2JqcyB8fCBbXSkpOwoJCX0KCX0KCglpZiAoIWFwaUtleSkgewoJCXJlcG9ydEVycm9yKCJTcGVjaWZ5IGEgZ29vZ2xlQ2FsZW5kYXJBcGlLZXkuIFNlZSBodHRwOi8vZnVsbGNhbGVuZGFyLmlvL2RvY3MvZ29vZ2xlX2NhbGVuZGFyLyIpOwoJCXJldHVybiB7fTsgLy8gYW4gZW1wdHkgc291cmNlIHRvIHVzZSBpbnN0ZWFkLiB3b24ndCBmZXRjaCBhbnl0aGluZy4KCX0KCgkvLyBUaGUgQVBJIGV4cGVjdHMgYW4gSVNPODYwMSBkYXRldGltZSB3aXRoIGEgdGltZSBhbmQgdGltZXpvbmUgcGFydC4KCS8vIFNpbmNlIHRoZSBjYWxlbmRhcidzIHRpbWV6b25lIG9mZnNldCBpc24ndCBhbHdheXMga25vd24sIHJlcXVlc3QgdGhlIGRhdGUgaW4gVVRDIGFuZCBwYWQgaXQgYnkgYSBkYXkgb24gZWFjaAoJLy8gc2lkZSwgZ3VhcmFudGVlaW5nIHdlIHdpbGwgcmVjZWl2ZSBhbGwgZXZlbnRzIGluIHRoZSBkZXNpcmVkIHJhbmdlLCBhbGJlaXQgYSBzdXBlcnNldC4KCS8vIC51dGMoKSB3aWxsIHNldCBhIHpvbmUgYW5kIGdpdmUgaXQgYSAwMDowMDowMCB0aW1lLgoJaWYgKCFzdGFydC5oYXNab25lKCkpIHsKCQlzdGFydCA9IHN0YXJ0LmNsb25lKCkudXRjKCkuYWRkKC0xLCAnZGF5Jyk7Cgl9CglpZiAoIWVuZC5oYXNab25lKCkpIHsKCQllbmQgPSBlbmQuY2xvbmUoKS51dGMoKS5hZGQoMSwgJ2RheScpOwoJfQoKCS8vIHdoZW4gc2VuZGluZyB0aW1lem9uZSBuYW1lcyB0byBHb29nbGUsIG9ubHkgYWNjZXB0cyB1bmRlcnNjb3Jlcywgbm90IHNwYWNlcwoJaWYgKHRpbWV6b25lICYmIHRpbWV6b25lICE9ICdsb2NhbCcpIHsKCQl0aW1lem9uZUFyZyA9IHRpbWV6b25lLnJlcGxhY2UoJyAnLCAnXycpOwoJfQoKCWRhdGEgPSAkLmV4dGVuZCh7fSwgc291cmNlT3B0aW9ucy5kYXRhIHx8IHt9LCB7CgkJa2V5OiBhcGlLZXksCgkJdGltZU1pbjogc3RhcnQuZm9ybWF0KCksCgkJdGltZU1heDogZW5kLmZvcm1hdCgpLAoJCXRpbWVab25lOiB0aW1lem9uZUFyZywKCQlzaW5nbGVFdmVudHM6IHRydWUsCgkJbWF4UmVzdWx0czogOTk5OQoJfSk7CgoJcmV0dXJuICQuZXh0ZW5kKHt9LCBzb3VyY2VPcHRpb25zLCB7CgkJZ29vZ2xlQ2FsZW5kYXJJZDogbnVsbCwgLy8gcHJldmVudHMgc291cmNlLW5vcm1hbGl6aW5nIGZyb20gaGFwcGVuaW5nIGFnYWluCgkJdXJsOiB1cmwsCgkJZGF0YTogZGF0YSwKCQlzdGFydFBhcmFtOiBmYWxzZSwgLy8gYGZhbHNlYCBvbWl0cyB0aGlzIHBhcmFtZXRlci4gd2UgYWxyZWFkeSBpbmNsdWRlZCBpdCBhYm92ZQoJCWVuZFBhcmFtOiBmYWxzZSwgLy8gc2FtZQoJCXRpbWV6b25lUGFyYW06IGZhbHNlLCAvLyBzYW1lCgkJc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgewoJCQl2YXIgZXZlbnRzID0gW107CgkJCXZhciBzdWNjZXNzQXJnczsKCQkJdmFyIHN1Y2Nlc3NSZXM7CgoJCQlpZiAoZGF0YS5lcnJvcikgewoJCQkJcmVwb3J0RXJyb3IoJ0dvb2dsZSBDYWxlbmRhciBBUEk6ICcgKyBkYXRhLmVycm9yLm1lc3NhZ2UsIGRhdGEuZXJyb3IuZXJyb3JzKTsKCQkJfQoJCQllbHNlIGlmIChkYXRhLml0ZW1zKSB7CgkJCQkkLmVhY2goZGF0YS5pdGVtcywgZnVuY3Rpb24oaSwgZW50cnkpIHsKCQkJCQl2YXIgdXJsID0gZW50cnkuaHRtbExpbms7CgoJCQkJCS8vIG1ha2UgdGhlIFVSTHMgZm9yIGVhY2ggZXZlbnQgc2hvdyB0aW1lcyBpbiB0aGUgY29ycmVjdCB0aW1lem9uZQoJCQkJCWlmICh0aW1lem9uZUFyZykgewoJCQkJCQl1cmwgPSBpbmplY3RRc0NvbXBvbmVudCh1cmwsICdjdHo9JyArIHRpbWV6b25lQXJnKTsKCQkJCQl9CgoJCQkJCWV2ZW50cy5wdXNoKHsKCQkJCQkJaWQ6IGVudHJ5LmlkLAoJCQkJCQl0aXRsZTogZW50cnkuc3VtbWFyeSwKCQkJCQkJc3RhcnQ6IGVudHJ5LnN0YXJ0LmRhdGVUaW1lIHx8IGVudHJ5LnN0YXJ0LmRhdGUsIC8vIHRyeSB0aW1lZC4gd2lsbCBmYWxsIGJhY2sgdG8gYWxsLWRheQoJCQkJCQllbmQ6IGVudHJ5LmVuZC5kYXRlVGltZSB8fCBlbnRyeS5lbmQuZGF0ZSwgLy8gc2FtZQoJCQkJCQl1cmw6IHVybCwKCQkJCQkJbG9jYXRpb246IGVudHJ5LmxvY2F0aW9uLAoJCQkJCQlkZXNjcmlwdGlvbjogZW50cnkuZGVzY3JpcHRpb24KCQkJCQl9KTsKCQkJCX0pOwoKCQkJCS8vIGNhbGwgdGhlIHN1Y2Nlc3MgaGFuZGxlcihzKSBhbmQgYWxsb3cgaXQgdG8gcmV0dXJuIGEgbmV3IGV2ZW50cyBhcnJheQoJCQkJc3VjY2Vzc0FyZ3MgPSBbIGV2ZW50cyBdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsgLy8gZm9yd2FyZCBvdGhlciBqcSBhcmdzCgkJCQlzdWNjZXNzUmVzID0gYXBwbHlBbGwoc3VjY2VzcywgdGhpcywgc3VjY2Vzc0FyZ3MpOwoJCQkJaWYgKCQuaXNBcnJheShzdWNjZXNzUmVzKSkgewoJCQkJCXJldHVybiBzdWNjZXNzUmVzOwoJCQkJfQoJCQl9CgoJCQlyZXR1cm4gZXZlbnRzOwoJCX0KCX0pOwp9CgoKLy8gSW5qZWN0cyBhIHN0cmluZyBsaWtlICJhcmc9dmFsdWUiIGludG8gdGhlIHF1ZXJ5c3RyaW5nIG9mIGEgVVJMCmZ1bmN0aW9uIGluamVjdFFzQ29tcG9uZW50KHVybCwgY29tcG9uZW50KSB7CgkvLyBpbmplY3QgaXQgYWZ0ZXIgdGhlIHF1ZXJ5c3RyaW5nIGJ1dCBiZWZvcmUgdGhlIGZyYWdtZW50CglyZXR1cm4gdXJsLnJlcGxhY2UoLyhcPy4qPyk/KCN8JCkvLCBmdW5jdGlvbih3aG9sZSwgcXMsIGhhc2gpIHsKCQlyZXR1cm4gKHFzID8gcXMgKyAnJicgOiAnPycpICsgY29tcG9uZW50ICsgaGFzaDsKCX0pOwp9CgoKfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang-all.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXshZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJhci1tYSIse21vbnRoczoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itin2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImFyLW1hIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2YoiLCLYtNio2KfYtyIsItii2LDYp9ixIiwi2YbZitiz2KfZhiIsItmF2KfZitmIIiwi2K3YstmK2LHYp9mGIiwi2KrZhdmI2LIiLCLYotioIiwi2KPZitmE2YjZhCIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYXItbWEiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkifSl9KCksZnVuY3Rpb24oKXt2YXIgYz17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSxkPXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYXItc2EiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXItc2EiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhci1zYSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImFyLXRuIix7bW9udGhzOiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Itis2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXItdG4iLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhci10biIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPXsxOiLZoSIsMjoi2aIiLDM6ItmjIiw0OiLZpCIsNToi2aUiLDY6ItmmIiw3OiLZpyIsODoi2agiLDk6ItmpIiwwOiLZoCJ9LGQ9eyLZoSI6IjEiLCLZoiI6IjIiLCLZoyI6IjMiLCLZpCI6IjQiLCLZpSI6IjUiLCLZpiI6IjYiLCLZpyI6IjciLCLZqCI6IjgiLCLZqSI6IjkiLCLZoCI6IjAifSxlPWZ1bmN0aW9uKGEpe3JldHVybiAwPT09YT8wOjE9PT1hPzE6Mj09PWE/MjphJTEwMD49MyYmMTA+PWElMTAwPzM6YSUxMDA+PTExPzQ6NX0sZj17czpbItij2YLZhCDZhdmGINir2KfZhtmK2KkiLCLYq9in2YbZitipINmI2KfYrdiv2KkiLFsi2KvYp9mG2YrYqtin2YYiLCLYq9in2YbZitiq2YrZhiJdLCIlZCDYq9mI2KfZhiIsIiVkINir2KfZhtmK2KkiLCIlZCDYq9in2YbZitipIl0sbTpbItij2YLZhCDZhdmGINiv2YLZitmC2KkiLCLYr9mC2YrZgtipINmI2KfYrdiv2KkiLFsi2K/ZgtmK2YLYqtin2YYiLCLYr9mC2YrZgtiq2YrZhiJdLCIlZCDYr9mC2KfYptmCIiwiJWQg2K/ZgtmK2YLYqSIsIiVkINiv2YLZitmC2KkiXSxoOlsi2KPZgtmEINmF2YYg2LPYp9i52KkiLCLYs9in2LnYqSDZiNin2K3Yr9ipIixbItiz2KfYudiq2KfZhiIsItiz2KfYudiq2YrZhiJdLCIlZCDYs9in2LnYp9iqIiwiJWQg2LPYp9i52KkiLCIlZCDYs9in2LnYqSJdLGQ6WyLYo9mC2YQg2YXZhiDZitmI2YUiLCLZitmI2YUg2YjYp9it2K8iLFsi2YrZiNmF2KfZhiIsItmK2YjZhdmK2YYiXSwiJWQg2KPZitin2YUiLCIlZCDZitmI2YXZi9inIiwiJWQg2YrZiNmFIl0sTTpbItij2YLZhCDZhdmGINi02YfYsSIsIti02YfYsSDZiNin2K3YryIsWyLYtNmH2LHYp9mGIiwi2LTZh9ix2YrZhiJdLCIlZCDYo9i02YfYsSIsIiVkINi02YfYsdinIiwiJWQg2LTZh9ixIl0seTpbItij2YLZhCDZhdmGINi52KfZhSIsIti52KfZhSDZiNin2K3YryIsWyLYudin2YXYp9mGIiwi2LnYp9mF2YrZhiJdLCIlZCDYo9i52YjYp9mFIiwiJWQg2LnYp9mF2YvYpyIsIiVkINi52KfZhSJdfSxnPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiLGMsZCxnKXt2YXIgaD1lKGIpLGk9ZlthXVtlKGIpXTtyZXR1cm4gMj09PWgmJihpPWlbYz8wOjFdKSxpLnJlcGxhY2UoLyVkL2ksYil9fSxoPVsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2Yog2YrZhtin2YrYsSIsIti02KjYp9i3INmB2KjYsdin2YrYsSIsItii2LDYp9ixINmF2KfYsdizIiwi2YbZitiz2KfZhiDYo9io2LHZitmEIiwi2KPZitin2LEg2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYg2YrZiNmG2YrZiCIsItiq2YXZiNiyINmK2YjZhNmK2YgiLCLYotioINij2LrYs9i32LMiLCLYo9mK2YTZiNmEINiz2KjYqtmF2KjYsSIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCDYo9mD2KrZiNio2LEiLCLYqti02LHZitmGINin2YTYq9in2YbZiiDZhtmI2YHZhdio2LEiLCLZg9in2YbZiNmGINin2YTYo9mI2YQg2K/Zitiz2YXYqNixIl07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYXIiLHttb250aHM6aCxtb250aHNTaG9ydDpoLHdlZWtkYXlzOiLYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItitX9mGX9irX9ixX9iuX9isX9izIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LG1lcmlkaWVtUGFyc2U6L9i1fNmFLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLZhSI9PT1hfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDEyPmE/Iti1Ijoi2YUifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Itio2LnYryAlcyIscGFzdDoi2YXZhtiwICVzIixzOmcoInMiKSxtOmcoIm0iKSxtbTpnKCJtIiksaDpnKCJoIiksaGg6ZygiaCIpLGQ6ZygiZCIpLGRkOmcoImQiKSxNOmcoIk0iKSxNTTpnKCJNIikseTpnKCJ5IikseXk6ZygieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGRbYV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gY1thXX0pLnJlcGxhY2UoLywvZywi2IwiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJhciIsImFyIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItmD2KfZhtmI2YYg2KfZhNir2KfZhtmKIiwi2LTYqNin2LciLCLYotiw2KfYsSIsItmG2YrYs9in2YYiLCLZhdin2YrZiCIsItit2LLZitix2KfZhiIsItiq2YXZiNiyIiwi2KLYqCIsItij2YrZhNmI2YQiLCLYqti02LHZitmGINin2YTYo9mI2YQiLCLYqti02LHZitmGINin2YTYq9in2YbZiiIsItmD2KfZhtmI2YYg2KfZhNij2YjZhCJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6Nixpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImFyIix7YnV0dG9uVGV4dDp7bW9udGg6Iti02YfYsSIsd2Vlazoi2KPYs9io2YjYuSIsZGF5OiLZitmI2YUiLGxpc3Q6Itij2KzZhtiv2KkifSxhbGxEYXlUZXh0OiLYp9mE2YrZiNmFINmD2YTZhyIsZXZlbnRMaW1pdFRleHQ6Itij2K7YsdmJIn0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYmciLHttb250aHM6ItGP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItGP0L3RgF/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiLQvdC10LTQtdC70Y9f0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNGP0LTQsF/Rh9C10YLQstGK0YDRgtGK0Lpf0L/QtdGC0YrQul/RgdGK0LHQvtGC0LAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQlNC90LXRgSDQsl0gTFQiLG5leHREYXk6IlvQo9GC0YDQtSDQsl0gTFQiLG5leHRXZWVrOiJkZGRkIFvQsl0gTFQiLGxhc3REYXk6IlvQktGH0LXRgNCwINCyXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIlvQkiDQuNC30LzQuNC90LDQu9Cw0YLQsF0gZGRkZCBb0LJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvQkiDQuNC30LzQuNC90LDQu9C40Y9dIGRkZGQgW9CyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLRgdC70LXQtCAlcyIscGFzdDoi0L/RgNC10LTQuCAlcyIsczoi0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgiLG06ItC80LjQvdGD0YLQsCIsbW06IiVkINC80LjQvdGD0YLQuCIsaDoi0YfQsNGBIixoaDoiJWQg0YfQsNGB0LAiLGQ6ItC00LXQvSIsZGQ6IiVkINC00L3QuCIsTToi0LzQtdGB0LXRhiIsTU06IiVkINC80LXRgdC10YbQsCIseToi0LPQvtC00LjQvdCwIix5eToiJWQg0LPQvtC00LjQvdC4In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPWElMTAwO3JldHVybiAwPT09YT9hKyIt0LXQsiI6MD09PWM/YSsiLdC10L0iOmM+MTAmJjIwPmM/YSsiLdGC0LgiOjE9PT1iP2ErIi3QstC4IjoyPT09Yj9hKyIt0YDQuCI6Nz09PWJ8fDg9PT1iP2ErIi3QvNC4IjphKyIt0YLQuCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJiZyIsImJnIix7Y2xvc2VUZXh0OiLQt9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDO9C90LDQt9Cw0LQiLG5leHRUZXh0OiLQvdCw0L/RgNC10LQmI3gzRTsiLG5leHRCaWdUZXh0OiImI3gzRTsmI3gzRTsiLGN1cnJlbnRUZXh0OiLQtNC90LXRgSIsbW9udGhOYW1lczpbItCv0L3Rg9Cw0YDQuCIsItCk0LXQstGA0YPQsNGA0LgiLCLQnNCw0YDRgiIsItCQ0L/RgNC40LsiLCLQnNCw0LkiLCLQrtC90LgiLCLQrtC70LgiLCLQkNCy0LPRg9GB0YIiLCLQodC10L/RgtC10LzQstGA0LgiLCLQntC60YLQvtC80LLRgNC4Iiwi0J3QvtC10LzQstGA0LgiLCLQlNC10LrQtdC80LLRgNC4Il0sbW9udGhOYW1lc1Nob3J0Olsi0K/QvdGDIiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNC5Iiwi0K7QvdC4Iiwi0K7Qu9C4Iiwi0JDQstCzIiwi0KHQtdC/Iiwi0J7QutGCIiwi0J3QvtCyIiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQndC10LTQtdC70Y8iLCLQn9C+0L3QtdC00LXQu9C90LjQuiIsItCS0YLQvtGA0L3QuNC6Iiwi0KHRgNGP0LTQsCIsItCn0LXRgtCy0YrRgNGC0YrQuiIsItCf0LXRgtGK0LoiLCLQodGK0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0J3QtdC0Iiwi0J/QvtC9Iiwi0JLRgtC+Iiwi0KHRgNGPIiwi0KfQtdGCIiwi0J/QtdGCIiwi0KHRitCxIl0sZGF5TmFtZXNNaW46WyLQndC1Iiwi0J/QviIsItCS0YIiLCLQodGAIiwi0KfQtSIsItCf0LUiLCLQodGKIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYmciLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0LXRhiIsd2Vlazoi0KHQtdC00LzQuNGG0LAiLGRheToi0JTQtdC9IixsaXN0OiLQk9GA0LDRhNC40LoifSxhbGxEYXlUZXh0OiLQptGP0Lsg0LTQtdC9IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK9C+0YnQtSAiK2F9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJjYSIse21vbnRoczoiZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXIuX2Fici5fbWFpLl9qdW4uX2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksd2Vla2RheXM6ImRpdW1lbmdlX2RpbGx1bnNfZGltYXJ0c19kaW1lY3Jlc19kaWpvdXNfZGl2ZW5kcmVzX2Rpc3NhYnRlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRnLl9kbC5fZHQuX2RjLl9kai5fZHYuX2RzLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRGdfRGxfRHRfRGNfRGpfRHZfRHMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbYXZ1aSBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltkZW3DoCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthaGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJmYSAlcyIsczoidW5zIHNlZ29ucyIsbToidW4gbWludXQiLG1tOiIlZCBtaW51dHMiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yZXMiLGQ6InVuIGRpYSIsZGQ6IiVkIGRpZXMiLE06InVuIG1lcyIsTU06IiVkIG1lc29zIix5OiJ1biBhbnkiLHl5OiIlZCBhbnlzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fMOofGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7dmFyIGM9MT09PWE/InIiOjI9PT1hPyJuIjozPT09YT8iciI6ND09PWE/InQiOiLDqCI7cmV0dXJuKCJ3Ij09PWJ8fCJXIj09PWIpJiYoYz0iYSIpLGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImNhIiwiY2EiLHtjbG9zZVRleHQ6IlRhbmNhIixwcmV2VGV4dDoiQW50ZXJpb3IiLG5leHRUZXh0OiJTZWfDvGVudCIsY3VycmVudFRleHQ6IkF2dWkiLG1vbnRoTmFtZXM6WyJnZW5lciIsImZlYnJlciIsIm1hcsOnIiwiYWJyaWwiLCJtYWlnIiwianVueSIsImp1bGlvbCIsImFnb3N0Iiwic2V0ZW1icmUiLCJvY3R1YnJlIiwibm92ZW1icmUiLCJkZXNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImdlbiIsImZlYiIsIm1hcsOnIiwiYWJyIiwibWFpZyIsImp1bnkiLCJqdWwiLCJhZyIsInNldCIsIm9jdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzOlsiZGl1bWVuZ2UiLCJkaWxsdW5zIiwiZGltYXJ0cyIsImRpbWVjcmVzIiwiZGlqb3VzIiwiZGl2ZW5kcmVzIiwiZGlzc2FidGUiXSxkYXlOYW1lc1Nob3J0OlsiZGciLCJkbCIsImR0IiwiZGMiLCJkaiIsImR2IiwiZHMiXSxkYXlOYW1lc01pbjpbImRnIiwiZGwiLCJkdCIsImRjIiwiZGoiLCJkdiIsImRzIl0sd2Vla0hlYWRlcjoiU2V0IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImNhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2V0bWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvdCBlbCBkaWEiLGV2ZW50TGltaXRUZXh0OiJtw6lzIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYT4xJiY1PmEmJjEhPT1+fihhLzEwKX1mdW5jdGlvbiBkKGEsYixkLGUpe3ZhciBmPWErIiAiO3N3aXRjaChkKXtjYXNlInMiOnJldHVybiBifHxlPyJww6FyIHNla3VuZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBiPyJtaW51dGEiOmU/Im1pbnV0dSI6Im1pbnV0b3UiO2Nhc2UibW0iOnJldHVybiBifHxlP2YrKGMoYSk/Im1pbnV0eSI6Im1pbnV0Iik6ZisibWludXRhbWkiO2Nhc2UiaCI6cmV0dXJuIGI/ImhvZGluYSI6ZT8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iaG9kaW55IjoiaG9kaW4iKTpmKyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4gYnx8ZT8iZGVuIjoiZG5lbSI7Y2FzZSJkZCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iZG55IjoiZG7DrSIpOmYrImRueSI7Y2FzZSJNIjpyZXR1cm4gYnx8ZT8ibcSbc8OtYyI6Im3Em3PDrWNlbSI7Y2FzZSJNTSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8ibcSbc8OtY2UiOiJtxJtzw61jxa8iKTpmKyJtxJtzw61jaSI7Y2FzZSJ5IjpyZXR1cm4gYnx8ZT8icm9rIjoicm9rZW0iO2Nhc2UieXkiOnJldHVybiBifHxlP2YrKGMoYSk/InJva3kiOiJsZXQiKTpmKyJsZXR5In19dmFyIGU9ImxlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMiLnNwbGl0KCJfIiksZj0ibGVkX8O6bm9fYsWZZV9kdWJfa3bEm1/EjXZuX8SNdmNfc3JwX3rDocWZX8WZw61qX2xpc19wcm8iLnNwbGl0KCJfIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiY3MiLHttb250aHM6ZSxtb250aHNTaG9ydDpmLG1vbnRoc1BhcnNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXTtmb3IoYz0wOzEyPmM7YysrKWRbY109bmV3IFJlZ0V4cCgiXiIrYVtjXSsiJHxeIitiW2NdKyIkIiwiaSIpO3JldHVybiBkfShlLGYpLHdlZWtkYXlzOiJuZWTEm2xlX3BvbmTEm2zDrV/DunRlcsO9X3N0xZllZGFfxI10dnJ0ZWtfcMOhdGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgdl0gTFQiLG5leHREYXk6Ilt6w610cmEgdl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3YgbmVkxJtsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlt2ZSBzdMWZZWR1IHZdIExUIjtjYXNlIDQ6cmV0dXJuIlt2ZSDEjXR2cnRlayB2XSBMVCI7Y2FzZSA1OnJldHVybiJbdiBww6F0ZWsgdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IHZdIExUIn19LGxhc3REYXk6Ilt2xI1lcmEgdl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsb3UgbmVkxJtsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW21pbnVsw6ldIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bG91IHN0xZllZHUgdl0gTFQiO2Nhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bMO9XSBkZGRkIFt2XSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWxvdSBzb2JvdHUgdl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InDFmWVkICVzIixzOmQsbTpkLG1tOmQsaDpkLGhoOmQsZDpkLGRkOmQsTTpkLE1NOmQseTpkLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJjcyIsImNzIix7Y2xvc2VUZXh0OiJaYXbFmcOtdCIscHJldlRleHQ6IiYjeDNDO0TFmcOtdmUiLG5leHRUZXh0OiJQb3pkxJtqaSYjeDNFOyIsY3VycmVudFRleHQ6Ik55bsOtIixtb250aE5hbWVzOlsibGVkZW4iLCLDum5vciIsImLFmWV6ZW4iLCJkdWJlbiIsImt2xJt0ZW4iLCLEjWVydmVuIiwixI1lcnZlbmVjIiwic3JwZW4iLCJ6w6HFmcOtIiwixZnDrWplbiIsImxpc3RvcGFkIiwicHJvc2luZWMiXSxtb250aE5hbWVzU2hvcnQ6WyJsZWQiLCLDum5vIiwiYsWZZSIsImR1YiIsImt2xJsiLCLEjWVyIiwixI12YyIsInNycCIsInrDocWZIiwixZnDrWoiLCJsaXMiLCJwcm8iXSxkYXlOYW1lczpbIm5lZMSbbGUiLCJwb25kxJtsw60iLCLDunRlcsO9Iiwic3TFmWVkYSIsIsSNdHZydGVrIiwicMOhdGVrIiwic29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIm5lIiwicG8iLCLDunQiLCJzdCIsIsSNdCIsInDDoSIsInNvIl0sZGF5TmFtZXNNaW46WyJuZSIsInBvIiwiw7p0Iiwic3QiLCLEjXQiLCJww6EiLCJzbyJdLHdlZWtIZWFkZXI6IlTDvWQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiY3MiLHtidXR0b25UZXh0Onttb250aDoiTcSbc8OtYyIsd2VlazoiVMO9ZGVuIixkYXk6IkRlbiIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiQ2Vsw70gZGVuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK2RhbMWhw606ICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImRhIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InPDuF9tYV90aV9vbl90b19mcl9sw7giLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgW2QuXSBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltJIG1vcmdlbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW0kgZ8OlciBrbC5dIExUIixsYXN0V2VlazoiW3NpZHN0ZV0gZGRkZCBba2xdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6ImbDpSBzZWt1bmRlciIsbToiZXQgbWludXQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdlIixNOiJlbiBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImRhIiwiZGEiLHtjbG9zZVRleHQ6Ikx1ayIscHJldlRleHQ6IiYjeDNDO0ZvcnJpZ2UiLG5leHRUZXh0OiJOw6ZzdGUmI3gzRTsiLGN1cnJlbnRUZXh0OiJJZGFnIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk1hcnRzIiwiQXByaWwiLCJNYWoiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTw7huZGFnIiwiTWFuZGFnIiwiVGlyc2RhZyIsIk9uc2RhZyIsIlRvcnNkYWciLCJGcmVkYWciLCJMw7hyZGFnIl0sZGF5TmFtZXNTaG9ydDpbIlPDuG4iLCJNYW4iLCJUaXIiLCJPbnMiLCJUb3IiLCJGcmUiLCJMw7hyIl0sZGF5TmFtZXNNaW46WyJTw7giLCJNYSIsIlRpIiwiT24iLCJUbyIsIkZyIiwiTMO4Il0sd2Vla0hlYWRlcjoiVWdlIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImRhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DpW5lZCIsd2VlazoiVWdlIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWdlbiIsZXZlbnRMaW1pdFRleHQ6ImZsZXJlIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxkKXt2YXIgZT17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbYSsiIFRhZ2UiLGErIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOlthKyIgTW9uYXRlIixhKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbYSsiIEphaHJlIixhKyIgSmFocmVuIl19O3JldHVybiBiP2VbY11bMF06ZVtjXVsxXX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJkZS1hdCIse21vbnRoczoiSsOkbm5lcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKw6RuLl9GZWJyLl9NcnouX0Fwci5fTWFpX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6IltNb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbR2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixtOmMsbW06IiVkIE1pbnV0ZW4iLGg6YyxoaDoiJWQgU3R1bmRlbiIsZDpjLGRkOmMsTTpjLE1NOmMseTpjLHl5OmN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJkZS1hdCIsImRlIix7Y2xvc2VUZXh0OiJTY2hsaWXDn2VuIixwcmV2VGV4dDoiJiN4M0M7WnVyw7xjayIsbmV4dFRleHQ6IlZvciYjeDNFOyIsY3VycmVudFRleHQ6IkhldXRlIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk3DpHJ6IiwiQXByaWwiLCJNYWkiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlemVtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTcOkciIsIkFwciIsIk1haSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiU29ubnRhZyIsIk1vbnRhZyIsIkRpZW5zdGFnIiwiTWl0dHdvY2giLCJEb25uZXJzdGFnIiwiRnJlaXRhZyIsIlNhbXN0YWciXSxkYXlOYW1lc1Nob3J0OlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSxkYXlOYW1lc01pbjpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiS1ciLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZGUtYXQiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrIHdlaXRlcmUgIithfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxkKXt2YXIgZT17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbYSsiIFRhZ2UiLGErIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOlthKyIgTW9uYXRlIixhKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbYSsiIEphaHJlIixhKyIgSmFocmVuIl19O3JldHVybiBiP2VbY11bMF06ZVtjXVsxXX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJkZSIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmVici5fTXJ6Ll9BcHIuX01haV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbTW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW0dlc3Rlcm4gdW1dIExUIFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsbTpjLG1tOiIlZCBNaW51dGVuIixoOmMsaGg6IiVkIFN0dW5kZW4iLGQ6YyxkZDpjLE06YyxNTTpjLHk6Yyx5eTpjfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZGUiLCJkZSIse2Nsb3NlVGV4dDoiU2NobGllw59lbiIscHJldlRleHQ6IiYjeDNDO1p1csO8Y2siLG5leHRUZXh0OiJWb3ImI3gzRTsiLGN1cnJlbnRUZXh0OiJIZXV0ZSIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNw6RyeiIsIkFwcmlsIiwiTWFpIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXplbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DpHIiLCJBcHIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIlNvbm50YWciLCJNb250YWciLCJEaWVuc3RhZyIsIk1pdHR3b2NoIiwiRG9ubmVyc3RhZyIsIkZyZWl0YWciLCJTYW1zdGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sZGF5TmFtZXNNaW46WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IktXIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImRlIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1vbmF0Iix3ZWVrOiJXb2NoZSIsZGF5OiJUYWciLGxpc3Q6IlRlcm1pbsO8YmVyc2ljaHQifSxhbGxEYXlUZXh0OiJHYW56dMOkZ2lnIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyB3ZWl0ZXJlICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImVsIix7bW9udGhzTm9taW5hdGl2ZUVsOiLOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+BzrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+Fz4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HOuc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+CIi5zcGxpdCgiXyIpLG1vbnRoc0dlbml0aXZlRWw6Is6ZzrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzOsc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/Phc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/Oo861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UiLnNwbGl0KCJfIiksbW9udGhzOmZ1bmN0aW9uKGEsYil7cmV0dXJuL0QvLnRlc3QoYi5zdWJzdHJpbmcoMCxiLmluZGV4T2YoIk1NTU0iKSkpP3RoaXMuX21vbnRoc0dlbml0aXZlRWxbYS5tb250aCgpXTp0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbYS5tb250aCgpXX0sbW9udGhzU2hvcnQ6Is6ZzrHOvV/Ops61zrJfzpzOsc+BX86Rz4DPgV/OnM6xz4pfzpnOv8+Fzr1fzpnOv8+FzrtfzpHPhc6zX86jzrXPgF/On866z4Rfzp3Ov861X86UzrXOuiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoizprPhc+BzrnOsc66zq5fzpTOtc+Fz4TOrc+BzrFfzqTPgc6vz4TOt1/OpM61z4TOrM+Bz4TOt1/OoM6tzrzPgM+EzrdfzqDOsc+BzrHPg866zrXPhc6uX86jzqzOss6yzrHPhM6/Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Is6az4XPgV/OlM61z4VfzqTPgc65X86kzrXPhF/OoM61zrxfzqDOsc+BX86jzrHOsiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoizprPhV/OlM61X86kz4FfzqTOtV/OoM61X86gzrFfzqPOsSIuc3BsaXQoIl8iKSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE+MTE/Yz8izrzOvCI6Is6czpwiOmM/Is+AzrwiOiLOoM6cIn0saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4izrwiPT09KGErIiIpLnRvTG93ZXJDYXNlKClbMF19LG1lcmlkaWVtUGFyc2U6L1vOoM6cXVwuP86cP1wuPy9pLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IlvOo86uzrzOtc+BzrEge31dIExUIixuZXh0RGF5OiJbzpHPjc+BzrnOvyB7fV0gTFQiLG5leHRXZWVrOiJkZGRkIFt7fV0gTFQiLGxhc3REYXk6IlvOp864zrXPgiB7fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgNjpyZXR1cm4iW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10gZGRkZCBbe31dIExUIjtkZWZhdWx0OnJldHVybiJbz4TOt869IM+Az4HOv863zrPOv8+NzrzOtc69zrddIGRkZGQgW3t9XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LGNhbGVuZGFyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fY2FsZW5kYXJFbFthXSxkPWImJmIuaG91cnMoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYyYmKGM9Yy5hcHBseShiKSksYy5yZXBsYWNlKCJ7fSIsZCUxMj09PTE/Is+Dz4TOtyI6Is+Dz4TOuc+CIil9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLPg861ICVzIixwYXN0OiIlcyDPgM+BzrnOvSIsczoizrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xIixtOiLOrc69zrEgzrvOtc+Az4TPjCIsbW06IiVkIM67zrXPgM+EzqwiLGg6Is68zq/OsSDPjs+BzrEiLGhoOiIlZCDPjs+BzrXPgiIsZDoizrzOr86xIM68zq3Pgc6xIixkZDoiJWQgzrzOrc+BzrXPgiIsTToizq3Ovc6xz4IgzrzOrs69zrHPgiIsTU06IiVkIM68zq7Ovc61z4IiLHk6Is6tzr3Osc+CIM+Hz4HPjM69zr/PgiIseXk6IiVkIM+Hz4HPjM69zrnOsSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfc63LyxvcmRpbmFsOiIlZM63Iix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZWwiLCJlbCIse2Nsb3NlVGV4dDoizprOu861zq/Pg865zrzOvyIscHJldlRleHQ6Is6gz4HOv863zrPOv8+NzrzOtc69zr/PgiIsbmV4dFRleHQ6Is6Vz4DPjM68zrXOvc6/z4IiLGN1cnJlbnRUZXh0OiLOo86uzrzOtc+BzrEiLG1vbnRoTmFtZXM6WyLOmc6xzr3Ov8+FzqzPgc65zr/PgiIsIs6mzrXOss+Bzr/Phc6sz4HOuc6/z4IiLCLOnM6sz4HPhM65zr/PgiIsIs6Rz4DPgc6vzrvOuc6/z4IiLCLOnM6szrnOv8+CIiwizpnOv8+Nzr3Ouc6/z4IiLCLOmc6/z43Ou865zr/PgiIsIs6Rz43Os86/z4XPg8+Ezr/PgiIsIs6jzrXPgM+Ezq3OvM6yz4HOuc6/z4IiLCLOn866z4TPjs6yz4HOuc6/z4IiLCLOnc6/zq3OvM6yz4HOuc6/z4IiLCLOlM61zrrOrc68zrLPgc65zr/PgiJdLG1vbnRoTmFtZXNTaG9ydDpbIs6ZzrHOvSIsIs6mzrXOsiIsIs6czrHPgSIsIs6Rz4DPgSIsIs6czrHOuSIsIs6Zzr/Phc69IiwizpnOv8+FzrsiLCLOkc+FzrMiLCLOo861z4AiLCLOn866z4QiLCLOnc6/zrUiLCLOlM61zroiXSxkYXlOYW1lczpbIs6az4XPgc65zrHOus6uIiwizpTOtc+Fz4TOrc+BzrEiLCLOpM+Bzq/PhM63IiwizqTOtc+EzqzPgc+EzrciLCLOoM6tzrzPgM+EzrciLCLOoM6xz4HOsc+DzrrOtc+Fzq4iLCLOo86szrLOss6xz4TOvyJdLGRheU5hbWVzU2hvcnQ6WyLOms+Fz4EiLCLOlM61z4UiLCLOpM+BzrkiLCLOpM61z4QiLCLOoM61zrwiLCLOoM6xz4EiLCLOo86xzrIiXSxkYXlOYW1lc01pbjpbIs6az4UiLCLOlM61IiwizqTPgSIsIs6kzrUiLCLOoM61IiwizqDOsSIsIs6jzrEiXSx3ZWVrSGVhZGVyOiLOlc6yzrQiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZWwiLHtidXR0b25UZXh0Onttb250aDoizpzOrs69zrHPgiIsd2VlazoizpXOss60zr/OvM6szrTOsSIsZGF5OiLOl868zq3Pgc6xIixsaXN0OiLOkc+EzrbOrc69z4TOsSJ9LGFsbERheVRleHQ6Is6fzrvOv86uzrzOtc+Bzr8iLGV2ZW50TGltaXRUZXh0OiLPgM61z4HOuc+Dz4PPjM+EzrXPgc6xIn0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZW4tYXUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9MT09PX5+KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVuLWF1IiwiZW4tQVUiLHtjbG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2IixuZXh0VGV4dDoiTmV4dCIsY3VycmVudFRleHQ6IlRvZGF5Iixtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlbi1hdSIpfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSwgWVlZWSIsTExMOiJEIE1NTU0sIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSwgWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9MT09PX5+KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY319KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlbi1jYSIpfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZW4tZ2IiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPTE9PT1+fihhJTEwMC8xMCk/InRoIjoxPT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBhK2N9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJlbi1nYiIsImVuLUdCIix7Y2xvc2VUZXh0OiJEb25lIixwcmV2VGV4dDoiUHJldiIsbmV4dFRleHQ6Ik5leHQiLGN1cnJlbnRUZXh0OiJUb2RheSIsbW9udGhOYW1lczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZW4tZ2IiKX0oKSxmdW5jdGlvbigpe3ZhciBjPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxkPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlcyIse21vbnRoczoiZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihhLGIpe3JldHVybi8tTU1NLS8udGVzdChiKT9kW2EubW9udGgoKV06Y1thLm1vbnRoKCldfSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fTHVfTWFfTWlfSnVfVmlfU8OhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hw7FhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGHDsW8iLHl5OiIlZCBhw7FvcyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZXMiLCJlcyIse2Nsb3NlVGV4dDoiQ2VycmFyIixwcmV2VGV4dDoiJiN4M0M7QW50IixuZXh0VGV4dDoiU2lnJiN4M0U7IixjdXJyZW50VGV4dDoiSG95Iixtb250aE5hbWVzOlsiZW5lcm8iLCJmZWJyZXJvIiwibWFyem8iLCJhYnJpbCIsIm1heW8iLCJqdW5pbyIsImp1bGlvIiwiYWdvc3RvIiwic2VwdGllbWJyZSIsIm9jdHVicmUiLCJub3ZpZW1icmUiLCJkaWNpZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJlbmUiLCJmZWIiLCJtYXIiLCJhYnIiLCJtYXkiLCJqdW4iLCJqdWwiLCJhZ28iLCJzZXAiLCJvY3QiLCJub3YiLCJkaWMiXSxkYXlOYW1lczpbImRvbWluZ28iLCJsdW5lcyIsIm1hcnRlcyIsIm1pw6lyY29sZXMiLCJqdWV2ZXMiLCJ2aWVybmVzIiwic8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJkb20iLCJsdW4iLCJtYXIiLCJtacOpIiwianVlIiwidmllIiwic8OhYiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiWCIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVzIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2VtYW5hIixkYXk6IkTDrWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheUh0bWw6IlRvZG88YnIvPmVsIGTDrWEiLGV2ZW50TGltaXRUZXh0OiJtw6FzIn0pfSgpLGZ1bmN0aW9uKCl7dmFyIGM9ezE6ItuxIiwyOiLbsiIsMzoi27MiLDQ6Itu0Iiw1OiLbtSIsNjoi27YiLDc6Itu3Iiw4OiLbuCIsOToi27kiLDA6ItuwIn0sZD17ItuxIjoiMSIsItuyIjoiMiIsItuzIjoiMyIsItu0IjoiNCIsItu1IjoiNSIsItu2IjoiNiIsItu3IjoiNyIsItu4IjoiOCIsItu5IjoiOSIsItuwIjoiMCJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImZhIix7bW9udGhzOiLamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLbjNqp4oCM2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YfigIzYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrOKAjNi02YbYqNmHX9is2YXYudmHX9i02YbYqNmHIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItuM2qnigIzYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh+KAjNi02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7Zhtis4oCM2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItuMX9ivX9izX9qGX9m+X9isX9i0Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/Zgtio2YQg2KfYsiDYuNmH2LF82KjYudivINin2LIg2LjZh9ixLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybi/YqNi52K8g2KfYsiDYuNmH2LEvLnRlc3QoYSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i2YLYqNmEINin2LIg2LjZh9ixIjoi2KjYudivINin2LIg2LjZh9ixIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mF2LHZiNiyINiz2KfYudiqXSBMVCIsbmV4dERheToiW9mB2LHYr9inINiz2KfYudiqXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9iz2KfYudiqXSBMVCIsbGFzdERheToiW9iv24zYsdmI2LIg2LPYp9i52KpdIExUIixsYXN0V2VlazoiZGRkZCBb2b7bjNi0XSBb2LPYp9i52KpdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLYr9ixICVzIixwYXN0OiIlcyDZvtuM2LQiLHM6ItqG2YbYr9uM2YYg2KvYp9mG24zZhyIsbToi24zaqSDYr9mC24zZgtmHIixtbToiJWQg2K/ZgtuM2YLZhyIsaDoi24zaqSDYs9in2LnYqiIsaGg6IiVkINiz2KfYudiqIixkOiLbjNqpINix2YjYsiIsZGQ6IiVkINix2YjYsiIsTToi24zaqSDZhdin2YciLE1NOiIlZCDZhdin2YciLHk6ItuM2qkg2LPYp9mEIix5eToiJWQg2LPYp9mEIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9uwLdu5XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LG9yZGluYWxQYXJzZTovXGR7MSwyfdmFLyxvcmRpbmFsOiIlZNmFIix3ZWVrOntkb3c6Nixkb3k6MTJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImZhIiwiZmEiLHtjbG9zZVRleHQ6Itio2LPYqtmGIixwcmV2VGV4dDoiJiN4M0M72YLYqNmE24wiLG5leHRUZXh0OiLYqNi52K/bjCYjeDNFOyIsY3VycmVudFRleHQ6Itin2YXYsdmI2LIiLG1vbnRoTmFtZXM6WyLamNin2YbZiNuM2YciLCLZgdmI2LHbjNmHIiwi2YXYp9ix2LMiLCLYotmI2LHbjNmEIiwi2YXZhyIsItqY2YjYptmGIiwi2pjZiNim24zZhyIsItin2YjYqiIsItiz2b7Yqtin2YXYqNixIiwi2Kfaqdiq2KjYsSIsItmG2YjYp9mF2KjYsSIsItiv2LPYp9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2Yraqdi02YbYqNmHIiwi2K/ZiNi02YbYqNmHIiwi2LPZh+KAjNi02YbYqNmHIiwi2obZh9in2LHYtNmG2KjZhyIsItm+2YbYrNi02YbYqNmHIiwi2KzZhdi52YciLCLYtNmG2KjZhyJdLGRheU5hbWVzU2hvcnQ6WyLbjCIsItivIiwi2LMiLCLahiIsItm+Iiwi2KwiLCLYtCJdLGRheU5hbWVzTWluOlsi24wiLCLYryIsItizIiwi2oYiLCLZviIsItisIiwi2LQiXSx3ZWVrSGVhZGVyOiLZh9mBIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6Nixpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImZhIix7YnV0dG9uVGV4dDp7bW9udGg6ItmF2KfZhyIsd2Vlazoi2YfZgdiq2YciLGRheToi2LHZiNiyIixsaXN0OiLYqNix2YbYp9mF2YciCn0sYWxsRGF5VGV4dDoi2KrZhdin2YUg2LHZiNiyIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4i2KjbjNi0INin2LIgIithfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxlKXt2YXIgZj0iIjtzd2l0Y2goYyl7Y2FzZSJzIjpyZXR1cm4gZT8ibXV1dGFtYW4gc2VrdW5uaW4iOiJtdXV0YW1hIHNla3VudGkiO2Nhc2UibSI6cmV0dXJuIGU/Im1pbnV1dGluIjoibWludXV0dGkiO2Nhc2UibW0iOmY9ZT8ibWludXV0aW4iOiJtaW51dXR0aWEiO2JyZWFrO2Nhc2UiaCI6cmV0dXJuIGU/InR1bm5pbiI6InR1bnRpIjtjYXNlImhoIjpmPWU/InR1bm5pbiI6InR1bnRpYSI7YnJlYWs7Y2FzZSJkIjpyZXR1cm4gZT8icMOkaXbDpG4iOiJww6RpdsOkIjtjYXNlImRkIjpmPWU/InDDpGl2w6RuIjoicMOkaXbDpMOkIjticmVhaztjYXNlIk0iOnJldHVybiBlPyJrdXVrYXVkZW4iOiJrdXVrYXVzaSI7Y2FzZSJNTSI6Zj1lPyJrdXVrYXVkZW4iOiJrdXVrYXV0dGEiO2JyZWFrO2Nhc2UieSI6cmV0dXJuIGU/InZ1b2RlbiI6InZ1b3NpIjtjYXNlInl5IjpmPWU/InZ1b2RlbiI6InZ1b3R0YSJ9cmV0dXJuIGY9ZChhLGUpKyIgIitmfWZ1bmN0aW9uIGQoYSxiKXtyZXR1cm4gMTA+YT9iP2ZbYV06ZVthXTphfXZhciBlPSJub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrDpCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4iLnNwbGl0KCIgIiksZj1bIm5vbGxhIiwieWhkZW4iLCJrYWhkZW4iLCJrb2xtZW4iLCJuZWxqw6RuIiwidmlpZGVuIiwia3V1ZGVuIixlWzddLGVbOF0sZVs5XV07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZmkiLHttb250aHM6InRhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXPDpGt1dV9oZWluw6RrdXVfZWxva3V1X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6InRhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vrb19rZXPDpF9oZWluw6RfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbWFfdGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU1bdGFdIFlZWVkiLExMTDoiRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gTFQiLExMTEw6ImRkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIExUIixsOiJELk0uWVlZWSIsbGw6IkRvIE1NTSBZWVlZIixsbGw6IkRvIE1NTSBZWVlZLCBba2xvXSBMVCIsbGxsbDoiZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW3TDpG7DpMOkbl0gW2tsb10gTFQiLG5leHREYXk6IltodW9tZW5uYV0gW2tsb10gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9dIExUIixsYXN0RGF5OiJbZWlsZW5dIFtrbG9dIExUIixsYXN0V2VlazoiW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcMOkw6RzdMOkIixwYXN0OiIlcyBzaXR0ZW4iLHM6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImZpIiwiZmkiLHtjbG9zZVRleHQ6IlN1bGplIixwcmV2VGV4dDoiJiN4QUI7RWRlbGxpbmVuIixuZXh0VGV4dDoiU2V1cmFhdmEmI3hCQjsiLGN1cnJlbnRUZXh0OiJUw6Ruw6TDpG4iLG1vbnRoTmFtZXM6WyJUYW1taWt1dSIsIkhlbG1pa3V1IiwiTWFhbGlza3V1IiwiSHVodGlrdXUiLCJUb3Vrb2t1dSIsIktlc8Oka3V1IiwiSGVpbsOka3V1IiwiRWxva3V1IiwiU3l5c2t1dSIsIkxva2FrdXUiLCJNYXJyYXNrdXUiLCJKb3VsdWt1dSJdLG1vbnRoTmFtZXNTaG9ydDpbIlRhbW1pIiwiSGVsbWkiLCJNYWFsaXMiLCJIdWh0aSIsIlRvdWtvIiwiS2Vzw6QiLCJIZWluw6QiLCJFbG8iLCJTeXlzIiwiTG9rYSIsIk1hcnJhcyIsIkpvdWx1Il0sZGF5TmFtZXNTaG9ydDpbIlN1IiwiTWEiLCJUaSIsIktlIiwiVG8iLCJQZSIsIkxhIl0sZGF5TmFtZXM6WyJTdW5udW50YWkiLCJNYWFuYW50YWkiLCJUaWlzdGFpIiwiS2Vza2l2aWlra28iLCJUb3JzdGFpIiwiUGVyamFudGFpIiwiTGF1YW50YWkiXSxkYXlOYW1lc01pbjpbIlN1IiwiTWEiLCJUaSIsIktlIiwiVG8iLCJQZSIsIkxhIl0sd2Vla0hlYWRlcjoiVmsiLGRhdGVGb3JtYXQ6ImQubS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImZpIix7YnV0dG9uVGV4dDp7bW9udGg6Ikt1dWthdXNpIix3ZWVrOiJWaWlra28iLGRheToiUMOkaXbDpCIsbGlzdDoiVGFwYWh0dW1hdCJ9LGFsbERheVRleHQ6Iktva28gcMOkaXbDpCIsZXZlbnRMaW1pdFRleHQ6Imxpc8Okw6QifSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmci1jYSIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hPyJlciI6IiIpfX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJmci1jYSIsImZyLUNBIix7Y2xvc2VUZXh0OiJGZXJtZXIiLHByZXZUZXh0OiJQcsOpY8OpZGVudCIsbmV4dFRleHQ6IlN1aXZhbnQiLGN1cnJlbnRUZXh0OiJBdWpvdXJkJ2h1aSIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZnItY2EiLHtidXR0b25UZXh0Onttb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIn0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZnIiLHttb250aHM6ImphbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4iLnNwbGl0KCJfIiksd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0F1am91cmQnaHVpIMOgXSBMVCIsbmV4dERheToiW0RlbWFpbiDDoF0gTFQiLG5leHRXZWVrOiJkZGRkIFvDoF0gTFQiLGxhc3REYXk6IltIaWVyIMOgXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgw6BdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVzIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlcnwpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiBhKygxPT09YT8iZXIiOiIiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImZyIiwiZnIiLHtjbG9zZVRleHQ6IkZlcm1lciIscHJldlRleHQ6IlByw6ljw6lkZW50IixuZXh0VGV4dDoiU3VpdmFudCIsY3VycmVudFRleHQ6IkF1am91cmQnaHVpIixtb250aE5hbWVzOlsiamFudmllciIsImbDqXZyaWVyIiwibWFycyIsImF2cmlsIiwibWFpIiwianVpbiIsImp1aWxsZXQiLCJhb8O7dCIsInNlcHRlbWJyZSIsIm9jdG9icmUiLCJub3ZlbWJyZSIsImTDqWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImphbnYuIiwiZsOpdnIuIiwibWFycyIsImF2ci4iLCJtYWkiLCJqdWluIiwianVpbC4iLCJhb8O7dCIsInNlcHQuIiwib2N0LiIsIm5vdi4iLCJkw6ljLiJdLGRheU5hbWVzOlsiZGltYW5jaGUiLCJsdW5kaSIsIm1hcmRpIiwibWVyY3JlZGkiLCJqZXVkaSIsInZlbmRyZWRpIiwic2FtZWRpIl0sZGF5TmFtZXNTaG9ydDpbImRpbS4iLCJsdW4uIiwibWFyLiIsIm1lci4iLCJqZXUuIiwidmVuLiIsInNhbS4iXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIk0iLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTZW0uIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImZyIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1vaXMiLHdlZWs6IlNlbWFpbmUiLGRheToiSm91ciIsbGlzdDoiTW9uIHBsYW5uaW5nIn0sYWxsRGF5SHRtbDoiVG91dGUgbGE8YnIvPmpvdXJuw6llIixldmVudExpbWl0VGV4dDoiZW4gcGx1cyJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhlIix7bW9udGhzOiLXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/XoNeV15HXs1/Xk9em157XsyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep15lf16nXmdep15lf16nXkdeqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IteQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IteQX9eRX9eSX9eTX9eUX9eVX9epIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFvXkV1NTU1NIFlZWVkiLExMTDoiRCBb15FdTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIFvXkV1NTU1NIFlZWVkgTFQiLGw6IkQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIExUIixsbGxsOiJkZGQsIEQgTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9eU15nXldedINeR1r5dTFQiLG5leHREYXk6IlvXnteX16gg15HWvl1MVCIsbmV4dFdlZWs6ImRkZGQgW9eR16nXoteUXSBMVCIsbGFzdERheToiW9eQ16rXnteV15wg15HWvl1MVCIsbGFzdFdlZWs6IlvXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi15HXoteV15MgJXMiLHBhc3Q6Itec16TXoNeZICVzIixzOiLXnteh16TXqCDXqdeg15nXldeqIixtOiLXk9en15QiLG1tOiIlZCDXk9en15XXqiIsaDoi16nXoteUIixoaDpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/Itep16LXqteZ15nXnSI6YSsiINep16LXldeqIn0sZDoi15nXldedIixkZDpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/IteZ15XXnteZ15nXnSI6YSsiINeZ157XmdedIn0sTToi15fXldeT16kiLE1NOmZ1bmN0aW9uKGEpe3JldHVybiAyPT09YT8i15fXldeT16nXmdeZ150iOmErIiDXl9eV15PXqdeZ150ifSx5OiLXqdeg15QiLHl5OmZ1bmN0aW9uKGEpe3JldHVybiAyPT09YT8i16nXoNeq15nXmdedIjphJTEwPT09MCYmMTAhPT1hP2ErIiDXqdeg15QiOmErIiDXqdeg15nXnSJ9fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJoZSIsImhlIix7Y2xvc2VUZXh0OiLXodeS15XXqCIscHJldlRleHQ6IiYjeDNDO9eU16fXldeT150iLG5leHRUZXh0OiLXlNeR15AmI3gzRTsiLGN1cnJlbnRUZXh0OiLXlNeZ15XXnSIsbW9udGhOYW1lczpbIteZ16DXldeQ16giLCLXpNeR16jXldeQ16giLCLXnteo16UiLCLXkNek16jXmdecIiwi157XkNeZIiwi15nXldeg15kiLCLXmdeV15zXmSIsIteQ15XXkteV16HXmCIsIteh16TXmNee15HXqCIsIteQ15XXp9eY15XXkdeoIiwi16DXldeR157XkdeoIiwi15PXptee15HXqCJdLG1vbnRoTmFtZXNTaG9ydDpbIteZ16DXlSIsItek15HXqCIsItee16jXpSIsIteQ16TXqCIsItee15DXmSIsIteZ15XXoNeZIiwi15nXldec15kiLCLXkNeV15IiLCLXodek15giLCLXkNeV16ciLCLXoNeV15EiLCLXk9em154iXSxkYXlOYW1lczpbIteo15DXqdeV158iLCLXqdeg15kiLCLXqdec15nXqdeZIiwi16jXkdeZ16LXmSIsIteX157Xmdep15kiLCLXqdeZ16nXmSIsItep15HXqiJdLGRheU5hbWVzU2hvcnQ6WyLXkCciLCLXkSciLCLXkiciLCLXkyciLCLXlCciLCLXlSciLCLXqdeR16oiXSxkYXlOYW1lc01pbjpbIteQJyIsIteRJyIsIteSJyIsIteTJyIsIteUJyIsIteVJyIsItep15HXqiJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhlIix7ZGVmYXVsdEJ1dHRvblRleHQ6e21vbnRoOiLXl9eV15PXqSIsd2Vlazoi16nXkdeV16IiLGRheToi15nXldedIixsaXN0OiLXodeT16gg15nXldedIn0sd2Vla051bWJlclRpdGxlOiLXqdeR15XXoiIsYWxsRGF5VGV4dDoi15vXnCDXlNeZ15XXnSIsZXZlbnRMaW1pdFRleHQ6IteQ15fXqCJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPXsxOiLgpaciLDI6IuClqCIsMzoi4KWpIiw0OiLgpaoiLDU6IuClqyIsNjoi4KWsIiw3OiLgpa0iLDg6IuClriIsOToi4KWvIiwwOiLgpaYifSxkPXsi4KWnIjoiMSIsIuClqCI6IjIiLCLgpakiOiIzIiwi4KWqIjoiNCIsIuClqyI6IjUiLCLgpawiOiI2Iiwi4KWtIjoiNyIsIuClriI6IjgiLCLgpa8iOiI5Iiwi4KWmIjoiMCJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhpIix7bW9udGhzOiLgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi4KSc4KSoLl/gpKvgpLzgpLAuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV4KWN4KSf4KWCLl/gpKjgpLUuX+CkpuCkv+CkuC4iLnNwbGl0KCJfIiksd2Vla2RheXM6IuCksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuCksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+CktiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSDgpKzgpJzgpYciLExUUzoiQSBoOm1tOnNzIOCkrOCknOClhyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvgpIbgpJxdIExUIixuZXh0RGF5OiJb4KSV4KSyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJb4KSV4KSyXSBMVCIsbGFzdFdlZWs6IlvgpKrgpL/gpJvgpLLgpYddIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyDgpK7gpYfgpIIiLHBhc3Q6IiVzIOCkquCkueCksuClhyIsczoi4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMiLG06IuCkj+CklSDgpK7gpL/gpKjgpJ8iLG1tOiIlZCDgpK7gpL/gpKjgpJ8iLGg6IuCkj+CklSDgpJjgpILgpJ/gpL4iLGhoOiIlZCDgpJjgpILgpJ/gpYciLGQ6IuCkj+CklSDgpKbgpL/gpKgiLGRkOiIlZCDgpKbgpL/gpKgiLE06IuCkj+CklSDgpK7gpLngpYDgpKjgpYciLE1NOiIlZCDgpK7gpLngpYDgpKjgpYciLHk6IuCkj+CklSDgpLXgpLDgpY3gpLciLHl5OiIlZCDgpLXgpLDgpY3gpLcifSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gY1thXX0pfSxtZXJpZGllbVBhcnNlOi/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLgpLDgpL7gpKQiPT09Yj80PmE/YTphKzEyOiLgpLjgpYHgpKzgpLkiPT09Yj9hOiLgpKbgpYvgpKrgpLngpLAiPT09Yj9hPj0xMD9hOmErMTI6IuCktuCkvuCkriI9PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i4KSw4KS+4KSkIjoxMD5hPyLgpLjgpYHgpKzgpLkiOjE3PmE/IuCkpuCli+CkquCkueCksCI6MjA+YT8i4KS24KS+4KSuIjoi4KSw4KS+4KSkIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImhpIiwiaGkiLHtjbG9zZVRleHQ6IuCkrOCkguCkpiIscHJldlRleHQ6IuCkquCkv+Ckm+CksuCkviIsbmV4dFRleHQ6IuCkheCkl+CksuCkviIsY3VycmVudFRleHQ6IuCkhuCknCIsbW9udGhOYW1lczpbIuCknOCkqOCkteCksOClgCAiLCLgpKvgpLDgpLXgpLDgpYAiLCLgpK7gpL7gpLDgpY3gpJoiLCLgpIXgpKrgpY3gpLDgpYfgpLIiLCLgpK7gpIgiLCLgpJzgpYLgpKgiLCLgpJzgpYLgpLLgpL7gpIgiLCLgpIXgpJfgpLjgpY3gpKQgIiwi4KS44KS/4KSk4KSu4KWN4KSs4KSwIiwi4KSF4KSV4KWN4KSf4KWC4KSs4KSwIiwi4KSo4KS14KSu4KWN4KSs4KSwIiwi4KSm4KS/4KS44KSu4KWN4KSs4KSwIl0sbW9udGhOYW1lc1Nob3J0Olsi4KSc4KSoIiwi4KSr4KSwIiwi4KSu4KS+4KSw4KWN4KSaIiwi4KSF4KSq4KWN4KSw4KWH4KSyIiwi4KSu4KSIIiwi4KSc4KWC4KSoIiwi4KSc4KWC4KSy4KS+4KSIIiwi4KSF4KSXIiwi4KS44KS/4KSkIiwi4KSF4KSV4KWN4KSfIiwi4KSo4KS1Iiwi4KSm4KS/Il0sZGF5TmFtZXM6WyLgpLDgpLXgpL/gpLXgpL7gpLAiLCLgpLjgpYvgpK7gpLXgpL7gpLAiLCLgpK7gpILgpJfgpLLgpLXgpL7gpLAiLCLgpKzgpYHgpKfgpLXgpL7gpLAiLCLgpJfgpYHgpLDgpYHgpLXgpL7gpLAiLCLgpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLAiLCLgpLbgpKjgpL/gpLXgpL7gpLAiXSxkYXlOYW1lc1Nob3J0Olsi4KSw4KS14KS/Iiwi4KS44KWL4KSuIiwi4KSu4KSC4KSX4KSyIiwi4KSs4KWB4KSnIiwi4KSX4KWB4KSw4KWBIiwi4KS24KWB4KSV4KWN4KSwIiwi4KS24KSo4KS/Il0sZGF5TmFtZXNNaW46WyLgpLDgpLXgpL8iLCLgpLjgpYvgpK4iLCLgpK7gpILgpJfgpLIiLCLgpKzgpYHgpKciLCLgpJfgpYHgpLDgpYEiLCLgpLbgpYHgpJXgpY3gpLAiLCLgpLbgpKjgpL8iXSx3ZWVrSGVhZGVyOiLgpLngpKvgpY3gpKTgpL4iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaGkiLHtidXR0b25UZXh0Onttb250aDoi4KSu4KS54KWA4KSo4KS+Iix3ZWVrOiLgpLjgpKrgpY3gpKTgpL7gpLkiLGRheToi4KSm4KS/4KSoIixsaXN0OiLgpJXgpL7gpLDgpY3gpK/gpLjgpYLgpJrgpYAifSxhbGxEYXlUZXh0OiLgpLjgpK3gpYAg4KSm4KS/4KSoIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK+CkheCkp+Ckv+CklSAiK2F9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gZCs9MT09PWE/Im1pbnV0YSI6Mj09PWF8fDM9PT1hfHw0PT09YT8ibWludXRlIjoibWludXRhIjtjYXNlImgiOnJldHVybiBiPyJqZWRhbiBzYXQiOiJqZWRub2cgc2F0YSI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJzYXQiOjI9PT1hfHwzPT09YXx8ND09PWE/InNhdGEiOiJzYXRpIjtjYXNlImRkIjpyZXR1cm4gZCs9MT09PWE/ImRhbiI6ImRhbmEiO2Nhc2UiTU0iOnJldHVybiBkKz0xPT09YT8ibWplc2VjIjoyPT09YXx8Mz09PWF8fDQ9PT1hPyJtamVzZWNhIjoibWplc2VjaSI7Y2FzZSJ5eSI6cmV0dXJuIGQrPTE9PT1hPyJnb2RpbmEiOjI9PT1hfHwzPT09YXx8ND09PWE/ImdvZGluZSI6ImdvZGluYSJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhyIix7bW9udGhzOiJzamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoic2plLl92ZWwuX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJuZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixtOmMsbW06YyxoOmMsaGg6YyxkOiJkYW4iLGRkOmMsTToibWplc2VjIixNTTpjLHk6ImdvZGludSIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImhyIiwiaHIiLHtjbG9zZVRleHQ6IlphdHZvcmkiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiJEYW5hcyIsbW9udGhOYW1lczpbIlNpamXEjWFuaiIsIlZlbGphxI1hIiwiT8W+dWphayIsIlRyYXZhbmoiLCJTdmliYW5qIiwiTGlwYW5qIiwiU3JwYW5qIiwiS29sb3ZveiIsIlJ1amFuIiwiTGlzdG9wYWQiLCJTdHVkZW5pIiwiUHJvc2luYWMiXSxtb250aE5hbWVzU2hvcnQ6WyJTaWoiLCJWZWxqIiwiT8W+dSIsIlRyYSIsIlN2aSIsIkxpcCIsIlNycCIsIktvbCIsIlJ1aiIsIkxpcyIsIlN0dSIsIlBybyJdLGRheU5hbWVzOlsiTmVkamVsamEiLCJQb25lZGplbGphayIsIlV0b3JhayIsIlNyaWplZGEiLCLEjGV0dnJ0YWsiLCJQZXRhayIsIlN1Ym90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTcmkiLCLEjGV0IiwiUGV0IiwiU3ViIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTciIsIsSMZSIsIlBlIiwiU3UiXSx3ZWVrSGVhZGVyOiJUamUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5LiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhyIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1qZXNlYyIsd2VlazoiVGplZGFuIixkYXk6IkRhbiIsbGlzdDoiUmFzcG9yZWQifSxhbGxEYXlUZXh0OiJDaWplbGkgZGFuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyBqb8WhICIrYX19KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiLGMsZCl7dmFyIGU9YTtzd2l0Y2goYyl7Y2FzZSJzIjpyZXR1cm4gZHx8Yj8ibsOpaMOhbnkgbcOhc29kcGVyYyI6Im7DqWjDoW55IG3DoXNvZHBlcmNlIjtjYXNlIm0iOnJldHVybiJlZ3kiKyhkfHxiPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UibW0iOnJldHVybiBlKyhkfHxiPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UiaCI6cmV0dXJuImVneSIrKGR8fGI/IiDDs3JhIjoiIMOzcsOhamEiKTtjYXNlImhoIjpyZXR1cm4gZSsoZHx8Yj8iIMOzcmEiOiIgw7Nyw6FqYSIpO2Nhc2UiZCI6cmV0dXJuImVneSIrKGR8fGI/IiBuYXAiOiIgbmFwamEiKTtjYXNlImRkIjpyZXR1cm4gZSsoZHx8Yj8iIG5hcCI6IiBuYXBqYSIpO2Nhc2UiTSI6cmV0dXJuImVneSIrKGR8fGI/IiBow7NuYXAiOiIgaMOzbmFwamEiKTtjYXNlIk1NIjpyZXR1cm4gZSsoZHx8Yj8iIGjDs25hcCI6IiBow7NuYXBqYSIpO2Nhc2UieSI6cmV0dXJuImVneSIrKGR8fGI/IiDDqXYiOiIgw6l2ZSIpO2Nhc2UieXkiOnJldHVybiBlKyhkfHxiPyIgw6l2IjoiIMOpdmUiKX1yZXR1cm4iIn1mdW5jdGlvbiBkKGEpe3JldHVybihhPyIiOiJbbcO6bHRdICIpKyJbIitlW3RoaXMuZGF5KCldKyJdIExUWy1rb3JdIn12YXIgZT0idmFzw6FybmFwIGjDqXRmxZFuIGtlZGRlbiBzemVyZMOhbiBjc8O8dMO2cnTDtmvDtm4gcMOpbnRla2VuIHN6b21iYXRvbiIuc3BsaXQoIiAiKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJodSIse21vbnRoczoiamFudcOhcl9mZWJydcOhcl9tw6FyY2l1c1/DoXByaWxpc19tw6FqdXNfasO6bml1c19qw7psaXVzX2F1Z3VzenR1c19zemVwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX23DoXJjX8OhcHJfbcOhal9qw7puX2rDumxfYXVnX3N6ZXB0X29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJ2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InZhc19ow6l0X2tlZGRfc3plX2Nzw7x0X3DDqW5fc3pvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJ2X2hfa19zemVfY3NfcF9zem8iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJZWVlZLk1NLkRELiIsTEw6IllZWVkuIE1NTU0gRC4iLExMTDoiWVlZWS4gTU1NTSBELiwgTFQiLExMTEw6IllZWVkuIE1NTU0gRC4sIGRkZGQgTFQifSxtZXJpZGllbVBhcnNlOi9kZXxkdS9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuInUiPT09YS5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hP2M9PT0hMD8iZGUiOiJERSI6Yz09PSEwPyJkdSI6IkRVIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlttYV0gTFRbLWtvcl0iLG5leHREYXk6Iltob2xuYXBdIExUWy1rb3JdIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiBkLmNhbGwodGhpcywhMCl9LGxhc3REYXk6Ilt0ZWduYXBdIExUWy1rb3JdIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiBkLmNhbGwodGhpcywhMSl9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIG3Dumx2YSIscGFzdDoiJXMiLHM6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImh1IiwiaHUiLHtjbG9zZVRleHQ6ImJlesOhciIscHJldlRleHQ6InZpc3N6YSIsbmV4dFRleHQ6ImVsxZFyZSIsY3VycmVudFRleHQ6Im1hIixtb250aE5hbWVzOlsiSmFudcOhciIsIkZlYnJ1w6FyIiwiTcOhcmNpdXMiLCLDgXByaWxpcyIsIk3DoWp1cyIsIkrDum5pdXMiLCJKw7psaXVzIiwiQXVndXN6dHVzIiwiU3plcHRlbWJlciIsIk9rdMOzYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DoXIiLCLDgXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU3plcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiVmFzw6FybmFwIiwiSMOpdGbFkSIsIktlZGQiLCJTemVyZGEiLCJDc8O8dMO2cnTDtmsiLCJQw6ludGVrIiwiU3pvbWJhdCJdLGRheU5hbWVzU2hvcnQ6WyJWYXMiLCJIw6l0IiwiS2VkIiwiU3plIiwiQ3PDvCIsIlDDqW4iLCJTem8iXSxkYXlOYW1lc01pbjpbIlYiLCJIIiwiSyIsIlN6ZSIsIkNzIiwiUCIsIlN6byJdLHdlZWtIZWFkZXI6IkjDqXQiLGRhdGVGb3JtYXQ6Inl5Lm1tLmRkLiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImh1Iix7YnV0dG9uVGV4dDp7bW9udGg6IkjDs25hcCIsd2VlazoiSMOpdCIsZGF5OiJOYXAiLGxpc3Q6Ik5hcGzDsyJ9LGFsbERheVRleHQ6IkVnw6lzeiBuYXAiLGV2ZW50TGltaXRUZXh0OiJ0b3bDoWJiaSJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImlkIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiTFQuc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIExUIn0sbWVyaWRpZW1QYXJzZTovcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwicGFnaSI9PT1iP2E6InNpYW5nIj09PWI/YT49MTE/YTphKzEyOiJzb3JlIj09PWJ8fCJtYWxhbSI9PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDExPmE/InBhZ2kiOjE1PmE/InNpYW5nIjoxOT5hPyJzb3JlIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Jlc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGFsdSBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxhbHUiLHM6ImJlYmVyYXBhIGRldGlrIixtOiJzZW1lbml0IixtbToiJWQgbWVuaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJpZCIsImlkIix7Y2xvc2VUZXh0OiJUdXR1cCIscHJldlRleHQ6IiYjeDNDO211bmR1ciIsbmV4dFRleHQ6Im1hanUmI3gzRTsiLGN1cnJlbnRUZXh0OiJoYXJpIGluaSIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcmV0IiwiQXByaWwiLCJNZWkiLCJKdW5pIiwiSnVsaSIsIkFndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm9wZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIkFndXMiLCJTZXAiLCJPa3QiLCJOb3AiLCJEZXMiXSxkYXlOYW1lczpbIk1pbmdndSIsIlNlbmluIiwiU2VsYXNhIiwiUmFidSIsIkthbWlzIiwiSnVtYXQiLCJTYWJ0dSJdLGRheU5hbWVzU2hvcnQ6WyJNaW4iLCJTZW4iLCJTZWwiLCJSYWIiLCJrYW0iLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIk1nIiwiU24iLCJTbCIsIlJiIiwiS20iLCJqbSIsIlNiIl0sd2Vla0hlYWRlcjoiTWciLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaWQiLHtidXR0b25UZXh0Onttb250aDoiQnVsYW4iLHdlZWs6Ik1pbmdndSIsZGF5OiJIYXJpIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJTZWhhcmk8YnIvPnBlbnVoIixldmVudExpbWl0VGV4dDoibGViaWgifSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhJTEwMD09PTExPyEwOmElMTA9PT0xPyExOiEwfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/Im5va2tyYXIgc2Vrw7puZHVyIjoibm9ra3J1bSBzZWvDum5kdW0iO2Nhc2UibSI6cmV0dXJuIGI/Im3DrW7DunRhIjoibcOtbsO6dHUiO2Nhc2UibW0iOnJldHVybiBjKGEpP2YrKGJ8fGU/Im3DrW7DunR1ciI6Im3DrW7DunR1bSIpOmI/ZisibcOtbsO6dGEiOmYrIm3DrW7DunR1IjtjYXNlImhoIjpyZXR1cm4gYyhhKT9mKyhifHxlPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOmYrImtsdWtrdXN0dW5kIjtjYXNlImQiOnJldHVybiBiPyJkYWd1ciI6ZT8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIGMoYSk/Yj9mKyJkYWdhciI6ZisoZT8iZGFnYSI6ImTDtmd1bSIpOmI/ZisiZGFndXIiOmYrKGU/ImRhZyI6ImRlZ2kiKTtjYXNlIk0iOnJldHVybiBiPyJtw6FudcOwdXIiOmU/Im3DoW51w7AiOiJtw6FudcOwaSI7Y2FzZSJNTSI6cmV0dXJuIGMoYSk/Yj9mKyJtw6FudcOwaXIiOmYrKGU/Im3DoW51w7BpIjoibcOhbnXDsHVtIik6Yj9mKyJtw6FudcOwdXIiOmYrKGU/Im3DoW51w7AiOiJtw6FudcOwaSIpO2Nhc2UieSI6cmV0dXJuIGJ8fGU/IsOhciI6IsOhcmkiO2Nhc2UieXkiOnJldHVybiBjKGEpP2YrKGJ8fGU/IsOhciI6IsOhcnVtIik6ZisoYnx8ZT8iw6FyIjoiw6FyaSIpfX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpcyIse21vbnRoczoiamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW8OtIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbw6EgbW9yZ3VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbw60gZ8OmciBrbC5dIExUIixsYXN0V2VlazoiW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHPDrcOwYW4iLHM6ZCxtOmQsbW06ZCxoOiJrbHVra3VzdHVuZCIsaGg6ZCxkOmQsZGQ6ZCxNOmQsTU06ZCx5OmQseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImlzIiwiaXMiLHtjbG9zZVRleHQ6Ikxva2EiLHByZXZUZXh0OiImI3gzQzsgRnlycmkiLG5leHRUZXh0OiJOw6ZzdGkgJiN4M0U7IixjdXJyZW50VGV4dDoiw40gZGFnIixtb250aE5hbWVzOlsiSmFuw7phciIsIkZlYnLDumFyIiwiTWFycyIsIkFwcsOtbCIsIk1hw60iLCJKw7puw60iLCJKw7psw60iLCLDgWfDunN0IiwiU2VwdGVtYmVyIiwiT2t0w7NiZXIiLCJOw7N2ZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hw60iLCJKw7puIiwiSsO6bCIsIsOBZ8O6IiwiU2VwIiwiT2t0IiwiTsOzdiIsIkRlcyJdLGRheU5hbWVzOlsiU3VubnVkYWd1ciIsIk3DoW51ZGFndXIiLCLDnnJpw7BqdWRhZ3VyIiwiTWnDsHZpa3VkYWd1ciIsIkZpbW10dWRhZ3VyIiwiRsO2c3R1ZGFndXIiLCJMYXVnYXJkYWd1ciJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNw6FuIiwiw55yaSIsIk1pw7AiLCJGaW0iLCJGw7ZzIiwiTGF1Il0sZGF5TmFtZXNNaW46WyJTdSIsIk3DoSIsIsOeciIsIk1pIiwiRmkiLCJGw7YiLCJMYSJdLHdlZWtIZWFkZXI6IlZpa2EiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaXMiLHtidXR0b25UZXh0Onttb250aDoiTcOhbnXDsHVyIix3ZWVrOiJWaWthIixkYXk6IkRhZ3VyIixsaXN0OiJEYWdza3LDoSJ9LGFsbERheUh0bWw6IkFsbGFuPGJyLz5kYWdpbm4iLGV2ZW50TGltaXRUZXh0OiJtZWlyYSJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsIml0Iix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21lbmljYV9MdW5lZMOsX01hcnRlZMOsX01lcmNvbGVkw6xfR2lvdmVkw6xfVmVuZXJkw6xfU2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9MdW5fTWFyX01lcl9HaW9fVmVuX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRF9MX01hX01lX0dfVl9TIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW09nZ2kgYWxsZV0gTFQiLG5leHREYXk6IltEb21hbmkgYWxsZV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbGxlXSBMVCIsbGFzdERheToiW0llcmkgYWxsZV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oYSl7cmV0dXJuKC9eWzAtOV0uKyQvLnRlc3QoYSk/InRyYSI6ImluIikrIiAiK2F9LHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsbToidW4gbWludXRvIixtbToiJWQgbWludXRpIixoOiJ1bidvcmEiLGhoOiIlZCBvcmUiLGQ6InVuIGdpb3JubyIsZGQ6IiVkIGdpb3JuaSIsTToidW4gbWVzZSIsTU06IiVkIG1lc2kiLHk6InVuIGFubm8iLHl5OiIlZCBhbm5pIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJpdCIsIml0Iix7Y2xvc2VUZXh0OiJDaGl1ZGkiLHByZXZUZXh0OiImI3gzQztQcmVjIixuZXh0VGV4dDoiU3VjYyYjeDNFOyIsY3VycmVudFRleHQ6Ik9nZ2kiLG1vbnRoTmFtZXM6WyJHZW5uYWlvIiwiRmViYnJhaW8iLCJNYXJ6byIsIkFwcmlsZSIsIk1hZ2dpbyIsIkdpdWdubyIsIkx1Z2xpbyIsIkFnb3N0byIsIlNldHRlbWJyZSIsIk90dG9icmUiLCJOb3ZlbWJyZSIsIkRpY2VtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiR2VuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFnIiwiR2l1IiwiTHVnIiwiQWdvIiwiU2V0IiwiT3R0IiwiTm92IiwiRGljIl0sZGF5TmFtZXM6WyJEb21lbmljYSIsIkx1bmVkw6wiLCJNYXJ0ZWTDrCIsIk1lcmNvbGVkw6wiLCJHaW92ZWTDrCIsIlZlbmVyZMOsIiwiU2FiYXRvIl0sZGF5TmFtZXNTaG9ydDpbIkRvbSIsIkx1biIsIk1hciIsIk1lciIsIkdpbyIsIlZlbiIsIlNhYiJdLGRheU5hbWVzTWluOlsiRG8iLCJMdSIsIk1hIiwiTWUiLCJHaSIsIlZlIiwiU2EiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJpdCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlIix3ZWVrOiJTZXR0aW1hbmEiLGRheToiR2lvcm5vIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUdXR0byBpbDxici8+Z2lvcm5vIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK2FsdHJpICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImphIix7bW9udGhzOiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/mnIhf54GrX+awtF/mnKhf6YeRX+WcnyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo5pmCbeWIhiIsTFRTOiJMVHPnp5IiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZ5bm0TeaciETml6UiLExMTDoiWVlZWeW5tE3mnIhE5pelTFQiLExMTEw6IllZWVnlubRN5pyIROaXpUxUIGRkZGQifSxtZXJpZGllbVBhcnNlOi/ljYjliY185Y2I5b6ML2ksaXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i5Y2I5b6MIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i5Y2I5YmNIjoi5Y2I5b6MIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rml6VdIExUIixuZXh0RGF5OiJb5piO5pelXSBMVCIsbmV4dFdlZWs6IlvmnaXpgLFdZGRkZCBMVCIsbGFzdERheToiW+aYqOaXpV0gTFQiLGxhc3RXZWVrOiJb5YmN6YCxXWRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5b6MIixwYXN0OiIlc+WJjSIsczoi5pWw56eSIixtOiIx5YiGIixtbToiJWTliIYiLGg6IjHmmYLplpMiLGhoOiIlZOaZgumWkyIsZDoiMeaXpSIsZGQ6IiVk5pelIixNOiIx44O25pyIIixNTToiJWTjg7bmnIgiLHk6IjHlubQiLHl5OiIlZOW5tCJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImphIiwiamEiLHtjbG9zZVRleHQ6IumWieOBmOOCiyIscHJldlRleHQ6IiYjeDNDO+WJjSIsbmV4dFRleHQ6IuasoSYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuaXpSIsbW9udGhOYW1lczpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLGRheU5hbWVzOlsi5pel5puc5pelIiwi5pyI5puc5pelIiwi54Gr5puc5pelIiwi5rC05puc5pelIiwi5pyo5puc5pelIiwi6YeR5puc5pelIiwi5Zyf5puc5pelIl0sZGF5TmFtZXNTaG9ydDpbIuaXpSIsIuaciCIsIueBqyIsIuawtCIsIuacqCIsIumHkSIsIuWcnyJdLGRheU5hbWVzTWluOlsi5pelIiwi5pyIIiwi54GrIiwi5rC0Iiwi5pyoIiwi6YeRIiwi5ZyfIl0sd2Vla0hlYWRlcjoi6YCxIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImphIix7YnV0dG9uVGV4dDp7bW9udGg6IuaciCIsd2Vlazoi6YCxIixkYXk6IuaXpSIsbGlzdDoi5LqI5a6a44Oq44K544OIIn0sYWxsRGF5VGV4dDoi57WC5pelIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4i5LuWICIrYSsiIOS7tiJ9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJrbyIse21vbnRoczoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGjsi5wgbeu2hCIsTFRTOiJBIGjsi5wgbeu2hCBz7LSIIixMOiJZWVlZLk1NLkREIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBNTU1NIETsnbwgTFQiLExMTEw6IllZWVnrhYQgTU1NTSBE7J28IGRkZGQgTFQifSxjYWxlbmRhcjp7c2FtZURheToi7Jik64qYIExUIixuZXh0RGF5OiLrgrTsnbwgTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiLslrTsoJwgTFQiLGxhc3RXZWVrOiLsp4Drgpzso7wgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg7ZuEIixwYXN0OiIlcyDsoIQiLHM6Iuuqh+y0iCIsc3M6IiVk7LSIIixtOiLsnbzrtoQiLG1tOiIlZOu2hCIsaDoi7ZWc7Iuc6rCEIixoaDoiJWTsi5zqsIQiLGQ6Iu2VmOujqCIsZGQ6IiVk7J28IixNOiLtlZzri6wiLE1NOiIlZOuLrCIseToi7J2864WEIix5eToiJWTrhYQifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3snbwvLG9yZGluYWw6IiVk7J28IixtZXJpZGllbVBhcnNlOi/smKTsoIR87Jik7ZuELyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLsmKTtm4QiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLsmKTsoIQiOiLsmKTtm4QifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJrbyIsImtvIix7Y2xvc2VUZXh0OiLri6vquLAiLHByZXZUZXh0OiLsnbTsoITri6wiLG5leHRUZXh0OiLri6TsnYzri6wiLGN1cnJlbnRUZXh0OiLsmKTripgiLG1vbnRoTmFtZXM6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxtb250aE5hbWVzU2hvcnQ6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxkYXlOYW1lczpbIuydvOyalOydvCIsIuyblOyalOydvCIsIu2ZlOyalOydvCIsIuyImOyalOydvCIsIuuqqeyalOydvCIsIuq4iOyalOydvCIsIu2GoOyalOydvCJdLGRheU5hbWVzU2hvcnQ6WyLsnbwiLCLsm5QiLCLtmZQiLCLsiJgiLCLrqqkiLCLquIgiLCLthqAiXSxkYXlOYW1lc01pbjpbIuydvCIsIuyblCIsIu2ZlCIsIuyImCIsIuuqqSIsIuq4iCIsIu2GoCJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi64WEIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImtvIix7YnV0dG9uVGV4dDp7bW9udGg6IuyblCIsd2Vlazoi7KO8IixkYXk6IuydvCIsbGlzdDoi7J287KCV66qp66GdIn0sYWxsRGF5VGV4dDoi7KKF7J28IixldmVudExpbWl0VGV4dDoi6rCcIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxkKXtyZXR1cm4gYj8ia2VsaW9zIHNla3VuZMSXcyI6ZD8ia2VsacWzIHNla3VuZMW+acWzIjoia2VsaWFzIHNla3VuZGVzIn1mdW5jdGlvbiBkKGEsYixjLGQpe3JldHVybiBiP2YoYylbMF06ZD9mKGMpWzFdOmYoYylbMl19ZnVuY3Rpb24gZShhKXtyZXR1cm4gYSUxMD09PTB8fGE+MTAmJjIwPmF9ZnVuY3Rpb24gZihhKXtyZXR1cm4gaVthXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIGcoYSxiLGMsZyl7dmFyIGg9YSsiICI7cmV0dXJuIDE9PT1hP2grZChhLGIsY1swXSxnKTpiP2grKGUoYSk/ZihjKVsxXTpmKGMpWzBdKTpnP2grZihjKVsxXTpoKyhlKGEpP2YoYylbMV06ZihjKVsyXSl9ZnVuY3Rpb24gaChhLGIpe3ZhciBjPS0xPT09Yi5pbmRleE9mKCJkZGRkIEhIOm1tIiksZD1qW2EuZGF5KCldO3JldHVybiBjP2Q6ZC5zdWJzdHJpbmcoMCxkLmxlbmd0aC0yKSsixK8ifXZhciBpPXttOiJtaW51dMSXX21pbnV0xJdzX21pbnV0xJkiLG1tOiJtaW51dMSXc19taW51xI1pxbNfbWludXRlcyIsaDoidmFsYW5kYV92YWxhbmRvc192YWxhbmTEhSIsaGg6InZhbGFuZG9zX3ZhbGFuZMWzX3ZhbGFuZGFzIixkOiJkaWVuYV9kaWVub3NfZGllbsSFIixkZDoiZGllbm9zX2RpZW7Fs19kaWVuYXMiLE06Im3El251b19txJduZXNpb19txJduZXPEryIsTU06Im3El25lc2lhaV9txJduZXNpxbNfbcSXbmVzaXVzIix5OiJtZXRhaV9tZXTFs19tZXR1cyIseXk6Im1ldGFpX21ldMWzX21ldHVzIn0saj0ic2VrbWFkaWVuaXNfcGlybWFkaWVuaXNfYW50cmFkaWVuaXNfdHJlxI1pYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfxaFlxaF0YWRpZW5pcyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJsdCIse21vbnRoczoic2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmTFvmlvX2dlZ3XFvsSXc19iaXLFvmVsaW9fbGllcG9zX3J1Z3BqxavEjWlvX3J1Z3PEl2pvX3NwYWxpb19sYXBrcmnEjWlvX2dydW9kxb5pbyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoic2F1X3Zhc19rb3ZfYmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQiLnNwbGl0KCJfIiksd2Vla2RheXM6aCx3ZWVrZGF5c1Nob3J0OiJTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl/FoGXFoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU19QX0FfVF9LX1BuX8WgIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0iLExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBMVCBbdmFsLl0iLExMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgTFQgW3ZhbC5dIixsOiJZWVlZLU1NLUREIixsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dIixsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgTFQgW3ZhbC5dIixsbGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgTFQgW3ZhbC5dIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoGlhbmRpZW5dIExUIixuZXh0RGF5OiJbUnl0b2pdIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1Zha2FyXSBMVCIsbGFzdFdlZWs6IltQcmHEl2p1c8SvXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwbyAlcyIscGFzdDoicHJpZcWhICVzIixzOmMsbTpkLG1tOmcsaDpkLGhoOmcsZDpkLGRkOmcsTTpkLE1NOmcseTpkLHl5Omd9LG9yZGluYWxQYXJzZTovXGR7MSwyfS1vamkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErIi1vamkifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygibHQiLCJsdCIse2Nsb3NlVGV4dDoiVcW+ZGFyeXRpIixwcmV2VGV4dDoiJiN4M0M7QXRnYWwiLG5leHRUZXh0OiJQaXJteW4mI3gzRTsiLGN1cnJlbnRUZXh0OiLFoGlhbmRpZW4iLG1vbnRoTmFtZXM6WyJTYXVzaXMiLCJWYXNhcmlzIiwiS292YXMiLCJCYWxhbmRpcyIsIkdlZ3XFvsSXIiwiQmlyxb5lbGlzIiwiTGllcGEiLCJSdWdwasWrdGlzIiwiUnVnc8SXamlzIiwiU3BhbGlzIiwiTGFwa3JpdGlzIiwiR3J1b2RpcyJdLG1vbnRoTmFtZXNTaG9ydDpbIlNhdSIsIlZhcyIsIktvdiIsIkJhbCIsIkdlZyIsIkJpciIsIkxpZSIsIlJ1Z3AiLCJSdWdzIiwiU3BhIiwiTGFwIiwiR3J1Il0sZGF5TmFtZXM6WyJzZWttYWRpZW5pcyIsInBpcm1hZGllbmlzIiwiYW50cmFkaWVuaXMiLCJ0cmXEjWlhZGllbmlzIiwia2V0dmlydGFkaWVuaXMiLCJwZW5rdGFkaWVuaXMiLCLFoWXFoXRhZGllbmlzIl0sZGF5TmFtZXNTaG9ydDpbInNlayIsInBpciIsImFudCIsInRyZSIsImtldCIsInBlbiIsIsWhZcWhIl0sZGF5TmFtZXNNaW46WyJTZSIsIlByIiwiQW4iLCJUciIsIktlIiwiUGUiLCLFoGUiXSx3ZWVrSGVhZGVyOiJTQVYiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygibHQiLHtidXR0b25UZXh0Onttb250aDoiTcSXbnVvIix3ZWVrOiJTYXZhaXTElyIsZGF5OiJEaWVuYSIsbGlzdDoiRGFyYm90dmFya8SXIn0sYWxsRGF5VGV4dDoiVmlzxIUgZGllbsSFIixldmVudExpbWl0VGV4dDoiZGF1Z2lhdSJ9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiLGMpe3ZhciBkPWEuc3BsaXQoIl8iKTtyZXR1cm4gYz9iJTEwPT09MSYmMTEhPT1iP2RbMl06ZFszXTpiJTEwPT09MSYmMTEhPT1iP2RbMF06ZFsxXX1mdW5jdGlvbiBkKGEsYixkKXtyZXR1cm4gYSsiICIrYyhlW2RdLGEsYil9dmFyIGU9e21tOiJtaW7Fq3RpX21pbsWrdGVzX21pbsWrdGVfbWluxat0ZXMiLGhoOiJzdHVuZHVfc3R1bmRhc19zdHVuZGFfc3R1bmRhcyIsZGQ6ImRpZW51X2RpZW5hc19kaWVuYV9kaWVuYXMiLE1NOiJtxJNuZXNpX23Ek25lxaF1c19txJNuZXNpc19txJNuZcWhaSIseXk6ImdhZHVfZ2FkdXNfZ2Fkc19nYWRpIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwibHYiLHttb250aHM6ImphbnbEgXJpc19mZWJydcSBcmlzX21hcnRzX2FwcsSrbGlzX21haWpzX2rFq25panNfasWrbGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2RlY2VtYnJpcyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qxatuX2rFq2xfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN2X1BfT19UX0NfUGtfUyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0iLExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIExUIixMTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW8Wgb2RpZW4gcHVsa3N0ZW5dIExUIixuZXh0RGF5OiJbUsSrdCBwdWxrc3Rlbl0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWxrc3Rlbl0gTFQiLGxhc3REYXk6IltWYWthciBwdWxrc3Rlbl0gTFQiLGxhc3RXZWVrOiJbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgdsSTbMSBayIscGFzdDoiJXMgYWdyxIFrIixzOiJkYcW+YXMgc2VrdW5kZXMiLG06Im1pbsWrdGkiLG1tOmQsaDoic3R1bmR1IixoaDpkLGQ6ImRpZW51IixkZDpkLE06Im3Ek25lc2kiLE1NOmQseToiZ2FkdSIseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImx2IiwibHYiLHtjbG9zZVRleHQ6IkFpenbEk3J0IixwcmV2VGV4dDoiSWVwci4iLG5leHRUZXh0OiJOxIFrLiIsY3VycmVudFRleHQ6IsWgb2RpZW4iLG1vbnRoTmFtZXM6WyJKYW52xIFyaXMiLCJGZWJydcSBcmlzIiwiTWFydHMiLCJBcHLEq2xpcyIsIk1haWpzIiwiSsWrbmlqcyIsIkrFq2xpanMiLCJBdWd1c3RzIiwiU2VwdGVtYnJpcyIsIk9rdG9icmlzIiwiTm92ZW1icmlzIiwiRGVjZW1icmlzIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSsWrbiIsIkrFq2wiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbInN2xJN0ZGllbmEiLCJwaXJtZGllbmEiLCJvdHJkaWVuYSIsInRyZcWhZGllbmEiLCJjZXR1cnRkaWVuYSIsInBpZWt0ZGllbmEiLCJzZXN0ZGllbmEiXSxkYXlOYW1lc1Nob3J0Olsic3Z0IiwicHJtIiwib3RyIiwidHJlIiwiY3RyIiwicGt0Iiwic3N0Il0sZGF5TmFtZXNNaW46WyJTdiIsIlByIiwiT3QiLCJUciIsIkN0IiwiUGsiLCJTcyJdLHdlZWtIZWFkZXI6Ik5lZC4iLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygibHYiLHtidXR0b25UZXh0Onttb250aDoiTcSTbmVzaXMiLHdlZWs6Ik5lZMSTxLxhIixkYXk6IkRpZW5hIixsaXN0OiJEaWVuYXMga8SBcnTEq2JhIn0sYWxsRGF5VGV4dDoiVmlzdSBkaWVudSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIit2xJNsICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsIm5iIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzw7huX21hbl90aXJzX29uc190b3JzX2ZyZV9sw7hyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7hfbWFfdGlfb25fdG9fZnJfbMO4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSC5tbSIsTFRTOiJMVC5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gTFQiLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6Iltmb3JyaWdlXSBkZGRkIFtrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiZm9yICVzIHNpZGVuIixzOiJub2VuIHNla3VuZGVyIixtOiJldHQgbWludXR0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZXIiLE06ImVuIG3DpW5lZCIsTU06IiVkIG3DpW5lZGVyIix5OiJldHQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoIm5iIiwibmIiLHtjbG9zZVRleHQ6Ikx1a2siLHByZXZUZXh0OiImI3hBQjtGb3JyaWdlIixuZXh0VGV4dDoiTmVzdGUmI3hCQjsiLGN1cnJlbnRUZXh0OiJJIGRhZyIsbW9udGhOYW1lczpbImphbnVhciIsImZlYnJ1YXIiLCJtYXJzIiwiYXByaWwiLCJtYWkiLCJqdW5pIiwianVsaSIsImF1Z3VzdCIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlc2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibWFyIiwiYXByIiwibWFpIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVzIl0sZGF5TmFtZXNTaG9ydDpbInPDuG4iLCJtYW4iLCJ0aXIiLCJvbnMiLCJ0b3IiLCJmcmUiLCJsw7hyIl0sZGF5TmFtZXM6WyJzw7huZGFnIiwibWFuZGFnIiwidGlyc2RhZyIsIm9uc2RhZyIsInRvcnNkYWciLCJmcmVkYWciLCJsw7hyZGFnIl0sZGF5TmFtZXNNaW46WyJzw7giLCJtYSIsInRpIiwib24iLCJ0byIsImZyIiwibMO4Il0sd2Vla0hlYWRlcjoiVWtlIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoIm5iIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DpW5lZCIsd2VlazoiVWtlIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWdlbiIsZXZlbnRMaW1pdFRleHQ6InRpbCJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLGQ9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsIm5sIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4vLU1NTS0vLnRlc3QoYik/ZFthLm1vbnRoKCldOmNbYS5tb250aCgpXX0sd2Vla2RheXM6InpvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJab19NYV9EaV9Xb19Eb19Wcl9aYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21dIExUIixuZXh0RGF5OiJbbW9yZ2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIsczoiZWVuIHBhYXIgc2Vjb25kZW4iLG06IsOpw6luIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6IsOpw6luIHV1ciIsaGg6IiVkIHV1ciIsZDoiw6nDqW4gZGFnIixkZDoiJWQgZGFnZW4iLE06IsOpw6luIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiw6nDqW4gamFhciIseXk6IiVkIGphYXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsoMT09PWF8fDg9PT1hfHxhPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoIm5sIiwibmwiLHtjbG9zZVRleHQ6IlNsdWl0ZW4iLHByZXZUZXh0OiLihpAiLG5leHRUZXh0OiLihpIiLGN1cnJlbnRUZXh0OiJWYW5kYWFnIixtb250aE5hbWVzOlsiamFudWFyaSIsImZlYnJ1YXJpIiwibWFhcnQiLCJhcHJpbCIsIm1laSIsImp1bmkiLCJqdWxpIiwiYXVndXN0dXMiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZWNlbWJlciJdLAptb250aE5hbWVzU2hvcnQ6WyJqYW4iLCJmZWIiLCJtcnQiLCJhcHIiLCJtZWkiLCJqdW4iLCJqdWwiLCJhdWciLCJzZXAiLCJva3QiLCJub3YiLCJkZWMiXSxkYXlOYW1lczpbInpvbmRhZyIsIm1hYW5kYWciLCJkaW5zZGFnIiwid29lbnNkYWciLCJkb25kZXJkYWciLCJ2cmlqZGFnIiwiemF0ZXJkYWciXSxkYXlOYW1lc1Nob3J0Olsiem9uIiwibWFhIiwiZGluIiwid29lIiwiZG9uIiwidnJpIiwiemF0Il0sZGF5TmFtZXNNaW46WyJ6byIsIm1hIiwiZGkiLCJ3byIsImRvIiwidnIiLCJ6YSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoIm5sIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWciLGV2ZW50TGltaXRUZXh0OiJleHRyYSJ9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIDU+YSUxMCYmYSUxMD4xJiZ+fihhLzEwKSUxMCE9PTF9ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9YSsiICI7c3dpdGNoKGQpe2Nhc2UibSI6cmV0dXJuIGI/Im1pbnV0YSI6Im1pbnV0xJkiO2Nhc2UibW0iOnJldHVybiBlKyhjKGEpPyJtaW51dHkiOiJtaW51dCIpO2Nhc2UiaCI6cmV0dXJuIGI/ImdvZHppbmEiOiJnb2R6aW7EmSI7Y2FzZSJoaCI6cmV0dXJuIGUrKGMoYSk/ImdvZHppbnkiOiJnb2R6aW4iKTtjYXNlIk1NIjpyZXR1cm4gZSsoYyhhKT8ibWllc2nEhWNlIjoibWllc2nEmWN5Iik7Y2FzZSJ5eSI6cmV0dXJuIGUrKGMoYSk/ImxhdGEiOiJsYXQiKX19dmFyIGU9InN0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCIuc3BsaXQoIl8iKSxmPSJzdHljem5pYV9sdXRlZ29fbWFyY2Ffa3dpZXRuaWFfbWFqYV9jemVyd2NhX2xpcGNhX3NpZXJwbmlhX3dyemXFm25pYV9wYcW6ZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlhIi5zcGxpdCgiXyIpOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInBsIix7bW9udGhzOmZ1bmN0aW9uKGEsYil7cmV0dXJuL0QgTU1NTS8udGVzdChiKT9mW2EubW9udGgoKV06ZVthLm1vbnRoKCldfSxtb250aHNTaG9ydDoic3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJuaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5pZV9wb25fd3RfxZtyX2N6d19wdF9zYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTl9Qbl9XdF/FmnJfQ3pfUHRfU28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRHppxZsgb10gTFQiLG5leHREYXk6IltKdXRybyBvXSBMVCIsbmV4dFdlZWs6IltXXSBkZGRkIFtvXSBMVCIsbGFzdERheToiW1djem9yYWogb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1cgemVzesWCxIUgbmllZHppZWzEmSBvXSBMVCI7Y2FzZSAzOnJldHVybiJbVyB6ZXN6xYLEhSDFm3JvZMSZIG9dIExUIjtjYXNlIDY6cmV0dXJuIltXIHplc3rFgsSFIHNvYm90xJkgb10gTFQiO2RlZmF1bHQ6cmV0dXJuIltXIHplc3rFgnldIGRkZGQgW29dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiIlcyB0ZW11IixzOiJraWxrYSBzZWt1bmQiLG06ZCxtbTpkLGg6ZCxoaDpkLGQ6IjEgZHppZcWEIixkZDoiJWQgZG5pIixNOiJtaWVzacSFYyIsTU06ZCx5OiJyb2siLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJwbCIsInBsIix7Y2xvc2VUZXh0OiJaYW1rbmlqIixwcmV2VGV4dDoiJiN4M0M7UG9wcnplZG5pIixuZXh0VGV4dDoiTmFzdMSZcG55JiN4M0U7IixjdXJyZW50VGV4dDoiRHppxZsiLG1vbnRoTmFtZXM6WyJTdHljemXFhCIsIkx1dHkiLCJNYXJ6ZWMiLCJLd2llY2llxYQiLCJNYWoiLCJDemVyd2llYyIsIkxpcGllYyIsIlNpZXJwaWXFhCIsIldyemVzaWXFhCIsIlBhxbpkemllcm5payIsIkxpc3RvcGFkIiwiR3J1ZHppZcWEIl0sbW9udGhOYW1lc1Nob3J0OlsiU3R5IiwiTHUiLCJNYXIiLCJLdyIsIk1haiIsIkN6ZSIsIkxpcCIsIlNpZSIsIldyeiIsIlBhIiwiTGlzIiwiR3J1Il0sZGF5TmFtZXM6WyJOaWVkemllbGEiLCJQb25pZWR6aWHFgmVrIiwiV3RvcmVrIiwixZpyb2RhIiwiQ3p3YXJ0ZWsiLCJQacSFdGVrIiwiU29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIk5pZSIsIlBuIiwiV3QiLCLFmnIiLCJDenciLCJQdCIsIlNvIl0sZGF5TmFtZXNNaW46WyJOIiwiUG4iLCJXdCIsIsWaciIsIkN6IiwiUHQiLCJTbyJdLHdlZWtIZWFkZXI6IlR5ZHoiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicGwiLHtidXR0b25UZXh0Onttb250aDoiTWllc2nEhWMiLHdlZWs6IlR5ZHppZcWEIixkYXk6IkR6aWXFhCIsbGlzdDoiUGxhbiBkbmlhIn0sYWxsRGF5VGV4dDoiQ2HFgnkgZHppZcWEIixldmVudExpbWl0VGV4dDoid2nEmWNlaiJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInB0LWJyIix7bW9udGhzOiJqYW5laXJvX2ZldmVyZWlyb19tYXLDp29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5kYS1mZWlyYV90ZXLDp2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1mZWlyYV9zZXh0YS1mZWlyYV9zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9zZWdfdGVyX3F1YV9xdWlfc2V4X3PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvbV8ywqpfM8KqXzTCql81wqpfNsKqX3PDoWIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gTFQiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSDDoHNdIExUIixuZXh0RGF5OiJbQW1hbmjDoyDDoHNdIExUIixuZXh0V2VlazoiZGRkZCBbw6BzXSBMVCIsbGFzdERheToiW09udGVtIMOgc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQiOiJbw5psdGltYV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiIlcyBhdHLDoXMiLHM6InNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiJ9KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygicHQtYnIiLCJwdC1CUiIse2Nsb3NlVGV4dDoiRmVjaGFyIixwcmV2VGV4dDoiJiN4M0M7QW50ZXJpb3IiLG5leHRUZXh0OiJQcsOzeGltbyYjeDNFOyIsY3VycmVudFRleHQ6IkhvamUiLG1vbnRoTmFtZXM6WyJKYW5laXJvIiwiRmV2ZXJlaXJvIiwiTWFyw6dvIiwiQWJyaWwiLCJNYWlvIiwiSnVuaG8iLCJKdWxobyIsIkFnb3N0byIsIlNldGVtYnJvIiwiT3V0dWJybyIsIk5vdmVtYnJvIiwiRGV6ZW1icm8iXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZXYiLCJNYXIiLCJBYnIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBZ28iLCJTZXQiLCJPdXQiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIkRvbWluZ28iLCJTZWd1bmRhLWZlaXJhIiwiVGVyw6dhLWZlaXJhIiwiUXVhcnRhLWZlaXJhIiwiUXVpbnRhLWZlaXJhIiwiU2V4dGEtZmVpcmEiLCJTw6FiYWRvIl0sZGF5TmFtZXNTaG9ydDpbIkRvbSIsIlNlZyIsIlRlciIsIlF1YSIsIlF1aSIsIlNleCIsIlPDoWIiXSxkYXlOYW1lc01pbjpbIkRvbSIsIlNlZyIsIlRlciIsIlF1YSIsIlF1aSIsIlNleCIsIlPDoWIiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJwdC1iciIse2J1dHRvblRleHQ6e21vbnRoOiJNw6pzIix3ZWVrOiJTZW1hbmEiLGRheToiRGlhIixsaXN0OiJDb21wcm9taXNzb3MifSxhbGxEYXlUZXh0OiJkaWEgaW50ZWlybyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIm1haXMgKyIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInB0Iix7bW9udGhzOiJqYW5laXJvX2ZldmVyZWlyb19tYXLDp29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5kYS1mZWlyYV90ZXLDp2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1mZWlyYV9zZXh0YS1mZWlyYV9zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9zZWdfdGVyX3F1YV9xdWlfc2V4X3PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvbV8ywqpfM8KqXzTCql81wqpfNsKqX3PDoWIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSDDoHNdIExUIixuZXh0RGF5OiJbQW1hbmjDoyDDoHNdIExUIixuZXh0V2VlazoiZGRkZCBbw6BzXSBMVCIsbGFzdERheToiW09udGVtIMOgc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQiOiJbw5psdGltYV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJow6EgJXMiLHM6InNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInB0IiwicHQiLHtjbG9zZVRleHQ6IkZlY2hhciIscHJldlRleHQ6IkFudGVyaW9yIixuZXh0VGV4dDoiU2VndWludGUiLGN1cnJlbnRUZXh0OiJIb2plIixtb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hcsOnbyIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlcsOnYS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sZGF5TmFtZXNNaW46WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sd2Vla0hlYWRlcjoiU2VtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInB0Iix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DqnMiLHdlZWs6IlNlbWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvZG8gbyBkaWEiLGV2ZW50TGltaXRUZXh0OiJtYWlzIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9e21tOiJtaW51dGUiLGhoOiJvcmUiLGRkOiJ6aWxlIixNTToibHVuaSIseXk6ImFuaSJ9LGU9IiAiO3JldHVybihhJTEwMD49MjB8fGE+PTEwMCYmYSUxMDA9PT0wKSYmKGU9IiBkZSAiKSxhK2UrZFtjXX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJybyIse21vbnRoczoiaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiaWFuLl9mZWJyLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZHVtaW5pY8SDX2x1bmlfbWFyyJtpX21pZXJjdXJpX2pvaV92aW5lcmlfc8OibWLEg3TEgyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9Tw6JtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEdV9MdV9NYV9NaV9Kb19WaV9Tw6IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYXppIGxhXSBMVCIsbmV4dERheToiW23DomluZSBsYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtsYV0gTFQiLGxhc3REYXk6IltpZXJpIGxhXSBMVCIsbGFzdFdlZWs6Iltmb3N0YV0gZGRkZCBbbGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwZXN0ZSAlcyIscGFzdDoiJXMgw65uIHVybcSDIixzOiJjw6J0ZXZhIHNlY3VuZGUiLG06InVuIG1pbnV0IixtbTpjLGg6Im8gb3LEgyIsaGg6YyxkOiJvIHppIixkZDpjLE06Im8gbHVuxIMiLE1NOmMseToidW4gYW4iLHl5OmN9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJybyIsInJvIix7Y2xvc2VUZXh0OiLDjm5jaGlkZSIscHJldlRleHQ6IiYjeEFCOyBMdW5hIHByZWNlZGVudMSDIixuZXh0VGV4dDoiTHVuYSB1cm3Eg3RvYXJlICYjeEJCOyIsY3VycmVudFRleHQ6IkF6aSIsbW9udGhOYW1lczpbIklhbnVhcmllIiwiRmVicnVhcmllIiwiTWFydGllIiwiQXByaWxpZSIsIk1haSIsIkl1bmllIiwiSXVsaWUiLCJBdWd1c3QiLCJTZXB0ZW1icmllIiwiT2N0b21icmllIiwiTm9pZW1icmllIiwiRGVjZW1icmllIl0sbW9udGhOYW1lc1Nob3J0OlsiSWFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSXVuIiwiSXVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJEdW1pbmljxIMiLCJMdW5pIiwiTWFyxaNpIiwiTWllcmN1cmkiLCJKb2kiLCJWaW5lcmkiLCJTw6JtYsSDdMSDIl0sZGF5TmFtZXNTaG9ydDpbIkR1bSIsIkx1biIsIk1hciIsIk1pZSIsIkpvaSIsIlZpbiIsIlPDom0iXSxkYXlOYW1lc01pbjpbIkR1IiwiTHUiLCJNYSIsIk1pIiwiSm8iLCJWaSIsIlPDoiJdLHdlZWtIZWFkZXI6IlPEg3B0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInJvIix7YnV0dG9uVGV4dDp7cHJldjoicHJlY2VkZW50xIMiLG5leHQ6InVybcSDdG9hcmUiLG1vbnRoOiJMdW7EgyIsd2VlazoiU8SDcHTEg23Dom7EgyIsZGF5OiJaaSIsbGlzdDoiQWdlbmTEgyJ9LGFsbERheVRleHQ6IlRvYXTEgyB6aXVhIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK2FsdGUgIithfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIpe3ZhciBjPWEuc3BsaXQoIl8iKTtyZXR1cm4gYiUxMD09PTEmJmIlMTAwIT09MTE/Y1swXTpiJTEwPj0yJiY0Pj1iJTEwJiYoMTA+YiUxMDB8fGIlMTAwPj0yMCk/Y1sxXTpjWzJdfWZ1bmN0aW9uIGQoYSxiLGQpe3ZhciBlPXttbTpiPyLQvNC40L3Rg9GC0LBf0LzQuNC90YPRgtGLX9C80LjQvdGD0YIiOiLQvNC40L3Rg9GC0YNf0LzQuNC90YPRgtGLX9C80LjQvdGD0YIiLGhoOiLRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsiIsZGQ6ItC00LXQvdGMX9C00L3Rj1/QtNC90LXQuSIsTU06ItC80LXRgdGP0YZf0LzQtdGB0Y/RhtCwX9C80LXRgdGP0YbQtdCyIix5eToi0LPQvtC0X9Cz0L7QtNCwX9C70LXRgiJ9O3JldHVybiJtIj09PWQ/Yj8i0LzQuNC90YPRgtCwIjoi0LzQuNC90YPRgtGDIjphKyIgIitjKGVbZF0sK2EpfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYz17bm9taW5hdGl2ZToi0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItGP0L3QstCw0YDRj1/RhNC10LLRgNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/QvtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8iLnNwbGl0KCJfIil9LGQ9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NPy8udGVzdChiKT8iYWNjdXNhdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2EubW9udGgoKV19ZnVuY3Rpb24gZihhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLRj9C90LJf0YTQtdCyX9C80LDRgNGCX9Cw0L/RgF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuiIuc3BsaXQoIl8iKSxhY2N1c2F0aXZlOiLRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LoiLnNwbGl0KCJfIil9LGQ9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NPy8udGVzdChiKT8iYWNjdXNhdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2EubW9udGgoKV19ZnVuY3Rpb24gZyhhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbQsF/RgdGD0LHQsdC+0YLQsCIuc3BsaXQoIl8iKSxhY2N1c2F0aXZlOiLQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgyIuc3BsaXQoIl8iKX0sZD0vXFsgP1vQktCyXSA/KD860L/RgNC+0YjQu9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9cXSA/ZGRkZC8udGVzdChiKT8iYWNjdXNhdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2EuZGF5KCldfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInJ1Iix7bW9udGhzOmUsbW9udGhzU2hvcnQ6Zix3ZWVrZGF5czpnLHdlZWtkYXlzU2hvcnQ6ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbW9udGhzUGFyc2U6Wy9e0Y/QvdCyL2ksL17RhNC10LIvaSwvXtC80LDRgC9pLC9e0LDQv9GAL2ksL17QvNCwW9C5fNGPXS9pLC9e0LjRjtC9L2ksL17QuNGO0LsvaSwvXtCw0LLQsy9pLC9e0YHQtdC9L2ksL17QvtC60YIvaSwvXtC90L7Rjy9pLC9e0LTQtdC6L2ldLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSDQsy4iLExMTDoiRCBNTU1NIFlZWVkg0LMuLCBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0KHQtdCz0L7QtNC90Y8g0LJdIExUIixuZXh0RGF5OiJb0JfQsNCy0YLRgNCwINCyXSBMVCIsbGFzdERheToiW9CS0YfQtdGA0LAg0LJdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQgW9CyXSBMVCI6IlvQkl0gZGRkZCBb0LJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oYSl7aWYoYS53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IlvQktC+XSBkZGRkIFvQsl0gTFQiOiJb0JJdIGRkZGQgW9CyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9CSINC/0YDQvtGI0LvQvtC1XSBkZGRkIFvQsl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQgW9CyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YPRjl0gZGRkZCBb0LJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItGH0LXRgNC10LcgJXMiLHBhc3Q6IiVzINC90LDQt9Cw0LQiLHM6ItC90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQiLG06ZCxtbTpkLGg6ItGH0LDRgSIsaGg6ZCxkOiLQtNC10L3RjCIsZGQ6ZCxNOiLQvNC10YHRj9GGIixNTTpkLHk6ItCz0L7QtCIseXk6ZH0sbWVyaWRpZW1QYXJzZTov0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0KGEpfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i0L3QvtGH0LgiOjEyPmE/ItGD0YLRgNCwIjoxNz5hPyLQtNC90Y8iOiLQstC10YfQtdGA0LAifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC5fNCz0L580Y8pLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6cmV0dXJuIGErIi3QuSI7Y2FzZSJEIjpyZXR1cm4gYSsiLdCz0L4iO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gYSsiLdGPIjtkZWZhdWx0OnJldHVybiBhfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInJ1IiwicnUiLHtjbG9zZVRleHQ6ItCX0LDQutGA0YvRgtGMIixwcmV2VGV4dDoiJiN4M0M70J/RgNC10LQiLG5leHRUZXh0OiLQodC70LXQtCYjeDNFOyIsY3VycmVudFRleHQ6ItCh0LXQs9C+0LTQvdGPIixtb250aE5hbWVzOlsi0K/QvdCy0LDRgNGMIiwi0KTQtdCy0YDQsNC70YwiLCLQnNCw0YDRgiIsItCQ0L/RgNC10LvRjCIsItCc0LDQuSIsItCY0Y7QvdGMIiwi0JjRjtC70YwiLCLQkNCy0LPRg9GB0YIiLCLQodC10L3RgtGP0LHRgNGMIiwi0J7QutGC0Y/QsdGA0YwiLCLQndC+0Y/QsdGA0YwiLCLQlNC10LrQsNCx0YDRjCJdLG1vbnRoTmFtZXNTaG9ydDpbItCv0L3QsiIsItCk0LXQsiIsItCc0LDRgCIsItCQ0L/RgCIsItCc0LDQuSIsItCY0Y7QvSIsItCY0Y7QuyIsItCQ0LLQsyIsItCh0LXQvSIsItCe0LrRgiIsItCd0L7RjyIsItCU0LXQuiJdLGRheU5hbWVzOlsi0LLQvtGB0LrRgNC10YHQtdC90YzQtSIsItC/0L7QvdC10LTQtdC70YzQvdC40LoiLCLQstGC0L7RgNC90LjQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstC10YDQsyIsItC/0Y/RgtC90LjRhtCwIiwi0YHRg9Cx0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0LLRgdC6Iiwi0L/QvdC0Iiwi0LLRgtGAIiwi0YHRgNC0Iiwi0YfRgtCyIiwi0L/RgtC9Iiwi0YHQsdGCIl0sZGF5TmFtZXNNaW46WyLQktGBIiwi0J/QvSIsItCS0YIiLCLQodGAIiwi0KfRgiIsItCf0YIiLCLQodCxIl0sd2Vla0hlYWRlcjoi0J3QtdC0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInJ1Iix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdGP0YYiLHdlZWs6ItCd0LXQtNC10LvRjyIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtCy0LXRgdGC0LrQsCDQtNC90Y8ifSxhbGxEYXlUZXh0OiLQktC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisg0LXRidGRICIrYX19KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGE+MSYmNT5hfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/InDDoXIgc2Vrw7puZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBiPyJtaW7DunRhIjplPyJtaW7DunR1IjoibWluw7p0b3UiO2Nhc2UibW0iOnJldHVybiBifHxlP2YrKGMoYSk/Im1pbsO6dHkiOiJtaW7DunQiKTpmKyJtaW7DunRhbWkiO2Nhc2UiaCI6cmV0dXJuIGI/ImhvZGluYSI6ZT8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iaG9kaW55IjoiaG9kw61uIik6ZisiaG9kaW5hbWkiO2Nhc2UiZCI6cmV0dXJuIGJ8fGU/ImRlxYgiOiJkxYhvbSI7Y2FzZSJkZCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iZG5pIjoiZG7DrSIpOmYrImTFiGFtaSI7Y2FzZSJNIjpyZXR1cm4gYnx8ZT8ibWVzaWFjIjoibWVzaWFjb20iO2Nhc2UiTU0iOnJldHVybiBifHxlP2YrKGMoYSk/Im1lc2lhY2UiOiJtZXNpYWNvdiIpOmYrIm1lc2lhY21pIjtjYXNlInkiOnJldHVybiBifHxlPyJyb2siOiJyb2tvbSI7Y2FzZSJ5eSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8icm9reSI6InJva292Iik6Zisicm9rbWkifX12YXIgZT0iamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7puX2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxmPSJqYW5fZmViX21hcl9hcHJfbcOhal9qw7puX2rDumxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzayIse21vbnRoczplLG1vbnRoc1Nob3J0OmYsbW9udGhzUGFyc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdO2ZvcihjPTA7MTI+YztjKyspZFtjXT1uZXcgUmVnRXhwKCJeIithW2NdKyIkfF4iK2JbY10rIiQiLCJpIik7cmV0dXJuIGR9KGUsZiksd2Vla2RheXM6Im5lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX3V0X3N0X8WhdF9waV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3RfxaF0X3BpX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkbmVzIG9dIExUIixuZXh0RGF5OiJbemFqdHJhIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2IG5lZGXEvnUgb10gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlt2XSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbdiBzdHJlZHUgb10gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZvIMWhdHZydG9rIG9dIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBpYXRvayBvXSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgb10gTFQifX0sbGFzdERheToiW3bEjWVyYSBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWzDuiBuZWRlxL51IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDvV0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsw7ogc3RyZWR1IG9dIExUIjtjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWzDvV0gZGRkZCBbb10gTFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsw7ogc29ib3R1IG9dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmVkICVzIixzOmQsbTpkLG1tOmQsaDpkLGhoOmQsZDpkLGRkOmQsTTpkLE1NOmQseTpkLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJzayIsInNrIix7Y2xvc2VUZXh0OiJaYXZyaWXFpSIscHJldlRleHQ6IiYjeDNDO1ByZWRjaMOhZHphasO6Y2kiLG5leHRUZXh0OiJOYXNsZWR1asO6Y2kmI3gzRTsiLGN1cnJlbnRUZXh0OiJEbmVzIixtb250aE5hbWVzOlsiamFudcOhciIsImZlYnJ1w6FyIiwibWFyZWMiLCJhcHLDrWwiLCJtw6FqIiwiasO6biIsImrDumwiLCJhdWd1c3QiLCJzZXB0ZW1iZXIiLCJva3TDs2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNw6FqIiwiSsO6biIsIkrDumwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIm5lZGXEvmEiLCJwb25kZWxvayIsInV0b3JvayIsInN0cmVkYSIsIsWhdHZydG9rIiwicGlhdG9rIiwic29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIk5lZCIsIlBvbiIsIlV0byIsIlN0ciIsIsWgdHYiLCJQaWEiLCJTb2IiXSxkYXlOYW1lc01pbjpbIk5lIiwiUG8iLCJVdCIsIlN0IiwixaB0IiwiUGlhIiwiU28iXSx3ZWVrSGVhZGVyOiJUeSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzayIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNpYWMiLHdlZWs6IlTDvcW+ZGXFiCIsZGF5OiJEZcWIIixsaXN0OiJSb3p2cmgifSxhbGxEYXlUZXh0OiJDZWzDvSBkZcWIIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK8SPYWzFoWllOiAiK2F9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiBkKz0xPT09YT8ibWludXRhIjoyPT09YT8ibWludXRpIjozPT09YXx8ND09PWE/Im1pbnV0ZSI6Im1pbnV0IjtjYXNlImgiOnJldHVybiBiPyJlbmEgdXJhIjoiZW5vIHVybyI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJ1cmEiOjI9PT1hPyJ1cmkiOjM9PT1hfHw0PT09YT8idXJlIjoidXIiO2Nhc2UiZGQiOnJldHVybiBkKz0xPT09YT8iZGFuIjoiZG5pIjtjYXNlIk1NIjpyZXR1cm4gZCs9MT09PWE/Im1lc2VjIjoyPT09YT8ibWVzZWNhIjozPT09YXx8ND09PWE/Im1lc2VjZSI6Im1lc2VjZXYiO2Nhc2UieXkiOnJldHVybiBkKz0xPT09YT8ibGV0byI6Mj09PWE/ImxldGkiOjM9PT1hfHw0PT09YT8ibGV0YSI6ImxldCJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfxI1lX3BlX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQuIE1NLiBZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5lcyBvYl0gTFQiLG5leHREYXk6IltqdXRyaSBvYl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ZdIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIlt2XSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ZdIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ZdIGRkZGQgW29iXSBMVCJ9fSxsYXN0RGF5OiJbdsSNZXJhaiBvYl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbcHJlasWhbmphXSBkZGRkIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ByZWrFoW5qaV0gZGRkZCBbb2JdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IsSNZXogJXMiLHBhc3Q6IiVzIG5hemFqIixzOiJuZWthaiBzZWt1bmQiLG06YyxtbTpjLGg6YyxoaDpjLGQ6ImVuIGRhbiIsZGQ6YyxNOiJlbiBtZXNlYyIsTU06Yyx5OiJlbm8gbGV0byIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInNsIiwic2wiLHtjbG9zZVRleHQ6IlphcHJpIixwcmV2VGV4dDoiJiN4M0M7UHJlasWhbmppIixuZXh0VGV4dDoiTmFzbGVkbmppJiN4M0U7IixjdXJyZW50VGV4dDoiVHJlbnV0bmkiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTWFyZWMiLCJBcHJpbCIsIk1haiIsIkp1bmlqIiwiSnVsaWoiLCJBdmd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF2ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiTmVkZWxqYSIsIlBvbmVkZWxqZWsiLCJUb3JlayIsIlNyZWRhIiwixIxldHJ0ZWsiLCJQZXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJUb3IiLCJTcmUiLCLEjGV0IiwiUGV0IiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVG8iLCJTciIsIsSMZSIsIlBlIiwiU28iXSx3ZWVrSGVhZGVyOiJUZWRlbiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzbCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlYyIsd2VlazoiVGVkZW4iLGRheToiRGFuIixsaXN0OiJEbmV2bmkgcmVkIn0sYWxsRGF5VGV4dDoiVmVzIGRhbiIsZXZlbnRMaW1pdFRleHQ6InZlxI0ifSl9KCksZnVuY3Rpb24oKXt2YXIgYz17d29yZHM6e206WyLRmNC10LTQsNC9INC80LjQvdGD0YIiLCLRmNC10LTQvdC1INC80LjQvdGD0YLQtSJdLG1tOlsi0LzQuNC90YPRgiIsItC80LjQvdGD0YLQtSIsItC80LjQvdGD0YLQsCJdLGg6WyLRmNC10LTQsNC9INGB0LDRgiIsItGY0LXQtNC90L7QsyDRgdCw0YLQsCJdLGhoOlsi0YHQsNGCIiwi0YHQsNGC0LAiLCLRgdCw0YLQuCJdLGRkOlsi0LTQsNC9Iiwi0LTQsNC90LAiLCLQtNCw0L3QsCJdLE1NOlsi0LzQtdGB0LXRhiIsItC80LXRgdC10YbQsCIsItC80LXRgdC10YbQuCJdLHl5Olsi0LPQvtC00LjQvdCwIiwi0LPQvtC00LjQvdC1Iiwi0LPQvtC00LjQvdCwIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMT09PWE/YlswXTphPj0yJiY0Pj1hP2JbMV06YlsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1jLndvcmRzW2RdO3JldHVybiAxPT09ZC5sZW5ndGg/Yj9lWzBdOmVbMV06YSsiICIrYy5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGEsZSl9fTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzci1jeXJsIix7bW9udGhzOlsi0ZjQsNC90YPQsNGAIiwi0YTQtdCx0YDRg9Cw0YAiLCLQvNCw0YDRgiIsItCw0L/RgNC40LsiLCLQvNCw0ZgiLCLRmNGD0L0iLCLRmNGD0LsiLCLQsNCy0LPRg9GB0YIiLCLRgdC10L/RgtC10LzQsdCw0YAiLCLQvtC60YLQvtCx0LDRgCIsItC90L7QstC10LzQsdCw0YAiLCLQtNC10YbQtdC80LHQsNGAIl0sbW9udGhzU2hvcnQ6WyLRmNCw0L0uIiwi0YTQtdCxLiIsItC80LDRgC4iLCLQsNC/0YAuIiwi0LzQsNGYIiwi0ZjRg9C9Iiwi0ZjRg9C7Iiwi0LDQstCzLiIsItGB0LXQvy4iLCLQvtC60YIuIiwi0L3QvtCyLiIsItC00LXRhi4iXSx3ZWVrZGF5czpbItC90LXQtNC10ZnQsCIsItC/0L7QvdC10LTQtdGZ0LDQuiIsItGD0YLQvtGA0LDQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstGA0YLQsNC6Iiwi0L/QtdGC0LDQuiIsItGB0YPQsdC+0YLQsCJdLHdlZWtkYXlzU2hvcnQ6WyLQvdC10LQuIiwi0L/QvtC9LiIsItGD0YLQvi4iLCLRgdGA0LUuIiwi0YfQtdGCLiIsItC/0LXRgi4iLCLRgdGD0LEuIl0sd2Vla2RheXNNaW46WyLQvdC1Iiwi0L/QviIsItGD0YIiLCLRgdGAIiwi0YfQtSIsItC/0LUiLCLRgdGDIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9C00LDQvdCw0YEg0YNdIExUIixuZXh0RGF5OiJb0YHRg9GC0YDQsCDRg10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUIjtjYXNlIDM6cmV0dXJuIlvRg10gW9GB0YDQtdC00YNdIFvRg10gTFQiO2Nhc2UgNjpyZXR1cm4iW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvRg10gZGRkZCBb0YNdIExUIn19LGxhc3REYXk6IlvRmNGD0YfQtSDRg10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7dmFyIGE9WyJb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQiLCJb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoi0L/RgNC1ICVzIixzOiLQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4IixtOmMudHJhbnNsYXRlLG1tOmMudHJhbnNsYXRlLGg6Yy50cmFuc2xhdGUsaGg6Yy50cmFuc2xhdGUsZDoi0LTQsNC9IixkZDpjLnRyYW5zbGF0ZSxNOiLQvNC10YHQtdGGIixNTTpjLnRyYW5zbGF0ZSx5OiLQs9C+0LTQuNC90YMiLHl5OmMudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3ItY3lybCIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic3ItY3lybCIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQndC10LTQtdGZ0LAiLGRheToi0JTQsNC9IixsaXN0OiLQn9C70LDQvdC10YAifSxhbGxEYXlUZXh0OiLQptC10L4g0LTQsNC9IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyDRmNC+0YggIithfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIGM9e3dvcmRzOnttOlsiamVkYW4gbWludXQiLCJqZWRuZSBtaW51dGUiXSxtbTpbIm1pbnV0IiwibWludXRlIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEiXSxNTTpbIm1lc2VjIiwibWVzZWNhIiwibWVzZWNpIl0seXk6WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihhLGIpe3JldHVybiAxPT09YT9iWzBdOmE+PTImJjQ+PWE/YlsxXTpiWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWMud29yZHNbZF07cmV0dXJuIDE9PT1kLmxlbmd0aD9iP2VbMF06ZVsxXTphKyIgIitjLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoYSxlKX19OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInNyIix7bW9udGhzOlsiamFudWFyIiwiZmVicnVhciIsIm1hcnQiLCJhcHJpbCIsIm1haiIsImp1biIsImp1bCIsImF2Z3VzdCIsInNlcHRlbWJhciIsIm9rdG9iYXIiLCJub3ZlbWJhciIsImRlY2VtYmFyIl0sbW9udGhzU2hvcnQ6WyJqYW4uIiwiZmViLiIsIm1hci4iLCJhcHIuIiwibWFqIiwianVuIiwianVsIiwiYXZnLiIsInNlcC4iLCJva3QuIiwibm92LiIsImRlYy4iXSx3ZWVrZGF5czpbIm5lZGVsamEiLCJwb25lZGVsamFrIiwidXRvcmFrIiwic3JlZGEiLCLEjWV0dnJ0YWsiLCJwZXRhayIsInN1Ym90YSJdLHdlZWtkYXlzU2hvcnQ6WyJuZWQuIiwicG9uLiIsInV0by4iLCJzcmUuIiwixI1ldC4iLCJwZXQuIiwic3ViLiJdLHdlZWtkYXlzTWluOlsibmUiLCJwbyIsInV0Iiwic3IiLCLEjWUiLCJwZSIsInN1Il0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRlbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZSB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXt2YXIgYT1bIltwcm/FoWxlXSBbbmVkZWxqZV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbdXRvcmthXSBbdV0gTFQiLCJbcHJvxaFsZV0gW3NyZWRlXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCIsIltwcm/FoWxvZ10gW3BldGthXSBbdV0gTFQiLCJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIl07cmV0dXJuIGFbdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmUgJXMiLHM6Im5la29saWtvIHNla3VuZGkiLG06Yy50cmFuc2xhdGUsbW06Yy50cmFuc2xhdGUsaDpjLnRyYW5zbGF0ZSxoaDpjLnRyYW5zbGF0ZSxkOiJkYW4iLGRkOmMudHJhbnNsYXRlLE06Im1lc2VjIixNTTpjLnRyYW5zbGF0ZSx5OiJnb2RpbnUiLHl5OmMudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3IiLCJzciIse2Nsb3NlVGV4dDoi0JfQsNGC0LLQvtGA0LgiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiLQlNCw0L3QsNGBIixtb250aE5hbWVzOlsi0IjQsNC90YPQsNGAIiwi0KTQtdCx0YDRg9Cw0YAiLCLQnNCw0YDRgiIsItCQ0L/RgNC40LsiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LPRg9GB0YIiLCLQodC10L/RgtC10LzQsdCw0YAiLCLQntC60YLQvtCx0LDRgCIsItCd0L7QstC10LzQsdCw0YAiLCLQlNC10YbQtdC80LHQsNGAIl0sbW9udGhOYW1lc1Nob3J0Olsi0IjQsNC9Iiwi0KTQtdCxIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNGYIiwi0IjRg9C9Iiwi0IjRg9C7Iiwi0JDQstCzIiwi0KHQtdC/Iiwi0J7QutGCIiwi0J3QvtCyIiwi0JTQtdGGIl0sZGF5TmFtZXM6WyLQndC10LTQtdGZ0LAiLCLQn9C+0L3QtdC00LXRmdCw0LoiLCLQo9GC0L7RgNCw0LoiLCLQodGA0LXQtNCwIiwi0KfQtdGC0LLRgNGC0LDQuiIsItCf0LXRgtCw0LoiLCLQodGD0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0J3QtdC0Iiwi0J/QvtC9Iiwi0KPRgtC+Iiwi0KHRgNC1Iiwi0KfQtdGCIiwi0J/QtdGCIiwi0KHRg9CxIl0sZGF5TmFtZXNNaW46WyLQndC1Iiwi0J/QviIsItCj0YIiLCLQodGAIiwi0KfQtSIsItCf0LUiLCLQodGDIl0sd2Vla0hlYWRlcjoi0KHQtdC0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInNyIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCd0LXQtNC10ZnQsCIsZGF5OiLQlNCw0L0iLGxpc3Q6ItCf0LvQsNC90LXRgCJ9LGFsbERheVRleHQ6ItCm0LXQviDQtNCw0L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrINGY0L7RiCAiK2F9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDtiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJZ8Olcl0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0V2VlazoiW0bDtnJyYV0gZGRkZFtlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmw7ZyICVzIHNlZGFuIixzOiJuw6VncmEgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtw6VuYWQiLE1NOiIlZCBtw6VuYWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlfGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJlIjoxPT09Yj8iYSI6Mj09PWI/ImEiOiJlIjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3YiLCJzdiIse2Nsb3NlVGV4dDoiU3TDpG5nIixwcmV2VGV4dDoiJiN4QUI7RsO2cnJhIixuZXh0VGV4dDoiTsOkc3RhJiN4QkI7IixjdXJyZW50VGV4dDoiSWRhZyIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcnMiLCJBcHJpbCIsIk1haiIsIkp1bmkiLCJKdWxpIiwiQXVndXN0aSIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXNTaG9ydDpbIlPDtm4iLCJNw6VuIiwiVGlzIiwiT25zIiwiVG9yIiwiRnJlIiwiTMO2ciJdLGRheU5hbWVzOlsiU8O2bmRhZyIsIk3DpW5kYWciLCJUaXNkYWciLCJPbnNkYWciLCJUb3JzZGFnIiwiRnJlZGFnIiwiTMO2cmRhZyJdLGRheU5hbWVzTWluOlsiU8O2IiwiTcOlIiwiVGkiLCJPbiIsIlRvIiwiRnIiLCJMw7YiXSx3ZWVrSGVhZGVyOiJWZSIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzdiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuYWQiLHdlZWs6IlZlY2thIixkYXk6IkRhZyIsbGlzdDoiUHJvZ3JhbSJ9LGFsbERheVRleHQ6IkhlbGRhZyIsZXZlbnRMaW1pdFRleHQ6InRpbGwifSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ0aCIse21vbnRoczoi4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuC4oeC4geC4o+C4sl/guIHguLjguKHguKDguLJf4Lih4Li14LiZ4LiyX+C5gOC4oeC4qeC4sl/guJ7guKTguKnguKDguLJf4Lih4Li04LiW4Li44LiZ4LiyX+C4geC4o+C4geC4juC4sl/guKrguLTguIfguKvguLJf4LiB4Lix4LiZ4Lii4LiyX+C4leC4uOC4peC4sl/guJ7guKTguKjguIjguLTguIHguLJf4LiY4Lix4LiZ4Lin4LiyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/guKouIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSCDguJnguLLguKzguLTguIHguLIgbSDguJnguLLguJfguLUiLExUUzoiTFQgcyDguKfguLTguJnguLLguJfguLUiLEw6IllZWVkvTU0vREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSDguYDguKfguKXguLIgTFQiLExMTEw6IuC4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIExUIn0sbWVyaWRpZW1QYXJzZTov4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHIjoi4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCIsbmV4dERheToiW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUIixuZXh0V2VlazoiZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCIsbGFzdERheToiW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUIixsYXN0V2VlazoiW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLguK3guLXguIEgJXMiLHBhc3Q6IiVz4LiX4Li14LmI4LmB4Lil4LmJ4LinIixzOiLguYTguKHguYjguIHguLXguYjguKfguLTguJnguLLguJfguLUiLG06IjEg4LiZ4Liy4LiX4Li1IixtbToiJWQg4LiZ4Liy4LiX4Li1IixoOiIxIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsaGg6IiVkIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsZDoiMSDguKfguLHguJkiLGRkOiIlZCDguKfguLHguJkiLE06IjEg4LmA4LiU4Li34Lit4LiZIixNTToiJWQg4LmA4LiU4Li34Lit4LiZIix5OiIxIOC4m+C4tSIseXk6IiVkIOC4m+C4tSJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInRoIiwidGgiLHtjbG9zZVRleHQ6IuC4m+C4tOC4lCIscHJldlRleHQ6IiYjeEFCOyYjeEEwO+C4ouC5ieC4reC4mSIsbmV4dFRleHQ6IuC4luC4seC4lOC5hOC4myYjeEEwOyYjeEJCOyIsY3VycmVudFRleHQ6IuC4p+C4seC4meC4meC4teC5iSIsbW9udGhOYW1lczpbIuC4oeC4geC4o+C4suC4hOC4oSIsIuC4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCIsIuC4oeC4teC4meC4suC4hOC4oSIsIuC5gOC4oeC4qeC4suC4ouC4mSIsIuC4nuC4pOC4qeC4oOC4suC4hOC4oSIsIuC4oeC4tOC4luC4uOC4meC4suC4ouC4mSIsIuC4geC4o+C4geC4juC4suC4hOC4oSIsIuC4quC4tOC4h+C4q+C4suC4hOC4oSIsIuC4geC4seC4meC4ouC4suC4ouC4mSIsIuC4leC4uOC4peC4suC4hOC4oSIsIuC4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mSIsIuC4mOC4seC4meC4p+C4suC4hOC4oSJdLG1vbnRoTmFtZXNTaG9ydDpbIuC4oS7guIQuIiwi4LiBLuC4ni4iLCLguKHguLUu4LiELiIsIuC5gOC4oS7guKIuIiwi4LieLuC4hC4iLCLguKHguLQu4LiiLiIsIuC4gS7guIQuIiwi4LiqLuC4hC4iLCLguIEu4LiiLiIsIuC4lS7guIQuIiwi4LieLuC4oi4iLCLguJgu4LiELiJdLGRheU5hbWVzOlsi4Lit4Liy4LiX4Li04LiV4Lii4LmMIiwi4LiI4Lix4LiZ4LiX4Lij4LmMIiwi4Lit4Lix4LiH4LiE4Liy4LijIiwi4Lie4Li44LiYIiwi4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1Iiwi4Lio4Li44LiB4Lij4LmMIiwi4LmA4Liq4Liy4Lij4LmMIl0sZGF5TmFtZXNTaG9ydDpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSxkYXlOYW1lc01pbjpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ0aCIse2J1dHRvblRleHQ6e21vbnRoOiLguYDguJTguLfguK3guJkiLHdlZWs6IuC4quC4seC4m+C4lOC4suC4q+C5jCIsZGF5OiLguKfguLHguJkiLGxpc3Q6IuC5geC4nOC4meC4h+C4suC4mSJ9LGFsbERheVRleHQ6IuC4leC4peC4reC4lOC4p+C4seC4mSIsZXZlbnRMaW1pdFRleHQ6IuC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oSJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPXsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNpIiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIsMjA6IiduY2kiLDUwOiInbmNpIiwzOiInw7xuY8O8Iiw0OiInw7xuY8O8IiwxMDA6IifDvG5jw7wiLDY6IiduY8SxIiw5OiIndW5jdSIsMTA6Iid1bmN1IiwzMDoiJ3VuY3UiLDYwOiInxLFuY8SxIiw5MDoiJ8SxbmPEsSJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInRyIix7bW9udGhzOiJPY2FrX8WedWJhdF9NYXJ0X05pc2FuX01hecSxc19IYXppcmFuX1RlbW11el9BxJ91c3Rvc19FeWzDvGxfRWtpbV9LYXPEsW1fQXJhbMSxayIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiT2NhX8WedWJfTWFyX05pc19NYXlfSGF6X1RlbV9BxJ91X0V5bF9Fa2lfS2FzX0FyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiUGF6YXJfUGF6YXJ0ZXNpX1NhbMSxX8OHYXLFn2FtYmFfUGVyxZ9lbWJlX0N1bWFfQ3VtYXJ0ZXNpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBhel9QdHNfU2FsX8OHYXJfUGVyX0N1bV9DdHMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlB6X1B0X1NhX8OHYV9QZV9DdV9DdCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltidWfDvG4gc2FhdF0gTFQiLG5leHREYXk6Ilt5YXLEsW4gc2FhdF0gTFQiLG5leHRXZWVrOiJbaGFmdGF5YV0gZGRkZCBbc2FhdF0gTFQiLGxhc3REYXk6Iltkw7xuXSBMVCIsbGFzdFdlZWs6IltnZcOnZW4gaGFmdGFdIGRkZGQgW3NhYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBzb25yYSIscGFzdDoiJXMgw7ZuY2UiLHM6ImJpcmthw6cgc2FuaXllIixtOiJiaXIgZGFraWthIixtbToiJWQgZGFraWthIixoOiJiaXIgc2FhdCIsaGg6IiVkIHNhYXQiLGQ6ImJpciBnw7xuIixkZDoiJWQgZ8O8biIsTToiYmlyIGF5IixNTToiJWQgYXkiLHk6ImJpciB5xLFsIix5eToiJWQgecSxbCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfScoaW5jaXxuY2l8w7xuY8O8fG5jxLF8dW5jdXzEsW5jxLEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe2lmKDA9PT1hKXJldHVybiBhKyInxLFuY8SxIjt2YXIgYj1hJTEwLGQ9YSUxMDAtYixlPWE+PTEwMD8xMDA6bnVsbDtyZXR1cm4gYSsoY1tiXXx8Y1tkXXx8Y1tlXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJ0ciIsInRyIix7Y2xvc2VUZXh0OiJrYXBhdCIscHJldlRleHQ6IiYjeDNDO2dlcmkiLG5leHRUZXh0OiJpbGVyaSYjeDNlIixjdXJyZW50VGV4dDoiYnVnw7xuIixtb250aE5hbWVzOlsiT2NhayIsIsWedWJhdCIsIk1hcnQiLCJOaXNhbiIsIk1hecSxcyIsIkhhemlyYW4iLCJUZW1tdXoiLCJBxJ91c3RvcyIsIkV5bMO8bCIsIkVraW0iLCJLYXPEsW0iLCJBcmFsxLFrIl0sbW9udGhOYW1lc1Nob3J0OlsiT2NhIiwixZ51YiIsIk1hciIsIk5pcyIsIk1heSIsIkhheiIsIlRlbSIsIkHEn3UiLCJFeWwiLCJFa2kiLCJLYXMiLCJBcmEiXSxkYXlOYW1lczpbIlBhemFyIiwiUGF6YXJ0ZXNpIiwiU2FsxLEiLCLDh2FyxZ9hbWJhIiwiUGVyxZ9lbWJlIiwiQ3VtYSIsIkN1bWFydGVzaSJdLGRheU5hbWVzU2hvcnQ6WyJQeiIsIlB0IiwiU2EiLCLDh2EiLCJQZSIsIkN1IiwiQ3QiXSxkYXlOYW1lc01pbjpbIlB6IiwiUHQiLCJTYSIsIsOHYSIsIlBlIiwiQ3UiLCJDdCJdLHdlZWtIZWFkZXI6IkhmIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInRyIix7YnV0dG9uVGV4dDp7bmV4dDoiaWxlcmkiLG1vbnRoOiJBeSIsd2VlazoiSGFmdGEiLGRheToiR8O8biIsbGlzdDoiQWphbmRhIn0sYWxsRGF5VGV4dDoiVMO8bSBnw7xuIixldmVudExpbWl0VGV4dDoiZGFoYSBmYXpsYSJ9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiKXt2YXIgYz1hLnNwbGl0KCJfIik7cmV0dXJuIGIlMTA9PT0xJiZiJTEwMCE9PTExP2NbMF06YiUxMD49MiYmND49YiUxMCYmKDEwPmIlMTAwfHxiJTEwMD49MjApP2NbMV06Y1syXX1mdW5jdGlvbiBkKGEsYixkKXt2YXIgZT17bW06ItGF0LLQuNC70LjQvdCwX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvSIsaGg6ItCz0L7QtNC40L3QsF/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvSIsZGQ6ItC00LXQvdGMX9C00L3Rll/QtNC90ZbQsiIsTU06ItC80ZbRgdGP0YbRjF/QvNGW0YHRj9GG0ZZf0LzRltGB0Y/RhtGW0LIiLHl5OiLRgNGW0Lpf0YDQvtC60Lhf0YDQvtC60ZbQsiJ9O3JldHVybiJtIj09PWQ/Yj8i0YXQstC40LvQuNC90LAiOiLRhdCy0LjQu9C40L3RgyI6ImgiPT09ZD9iPyLQs9C+0LTQuNC90LAiOiLQs9C+0LTQuNC90YMiOmErIiAiK2MoZVtkXSwrYSl9ZnVuY3Rpb24gZShhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQtdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXRgNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQtdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPRgNGD0LTQtdC90YwiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToi0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8iLnNwbGl0KCJfIil9LGQ9L0Rbb0RdPyAqTU1NTT8vLnRlc3QoYik/ImFjY3VzYXRpdmUiOiJub21pbmF0aXZlIjtyZXR1cm4gY1tkXVthLm1vbnRoKCldfWZ1bmN0aW9uIGYoYSxiKXt2YXIgYz17bm9taW5hdGl2ZToi0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItC90LXQtNGW0LvRjl/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00YNf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGOX9GB0YPQsdC+0YLRgyIuc3BsaXQoIl8iKSxnZW5pdGl2ZToi0L3QtdC00ZbQu9GWX9C/0L7QvdC10LTRltC70LrQsF/QstGW0LLRgtC+0YDQutCwX9GB0LXRgNC10LTQuF/Rh9C10YLQstC10YDQs9CwX9C/4oCZ0Y/RgtC90LjRhtGWX9GB0YPQsdC+0YLQuCIuc3BsaXQoIl8iKX0sZD0vKFxbW9CS0LLQo9GDXVxdKSA/ZGRkZC8udGVzdChiKT8iYWNjdXNhdGl2ZSI6L1xbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXSA/ZGRkZC8udGVzdChiKT8iZ2VuaXRpdmUiOiJub21pbmF0aXZlIjtyZXR1cm4gY1tkXVthLmRheSgpXX1mdW5jdGlvbiBnKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhKyLQviIrKDExPT09dGhpcy5ob3VycygpPyLQsSI6IiIpKyJdIExUIn19KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwidWsiLHttb250aHM6ZSxtb250aHNTaG9ydDoi0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpmLHdlZWtkYXlzU2hvcnQ6ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINGALiIsTExMOiJEIE1NTU0gWVlZWSDRgC4sIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZygiW9Ch0YzQvtCz0L7QtNC90ZYgIiksbmV4dERheTpnKCJb0JfQsNCy0YLRgNCwICIpLGxhc3REYXk6ZygiW9CS0YfQvtGA0LAgIiksbmV4dFdlZWs6ZygiW9CjXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIGcoIlvQnNC40L3Rg9C70L7Rl10gZGRkZCBbIikuY2FsbCh0aGlzKTtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gZygiW9Cc0LjQvdGD0LvQvtCz0L5dIGRkZGQgWyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLQt9CwICVzIixwYXN0OiIlcyDRgtC+0LzRgyIsczoi0LTQtdC60ZbQu9GM0LrQsCDRgdC10LrRg9C90LQiLG06ZCxtbTpkLGg6ItCz0L7QtNC40L3RgyIsaGg6ZCxkOiLQtNC10L3RjCIsZGQ6ZCxNOiLQvNGW0YHRj9GG0YwiLE1NOmQseToi0YDRltC6Iix5eTpkfSxtZXJpZGllbVBhcnNlOi/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C+0YDQsCkkLy50ZXN0KGEpfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i0L3QvtGH0ZYiOjEyPmE/ItGA0LDQvdC60YMiOjE3PmE/ItC00L3RjyI6ItCy0LXRh9C+0YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvikvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIGErIi3QuSI7Y2FzZSJEIjpyZXR1cm4gYSsiLdCz0L4iO2RlZmF1bHQ6cmV0dXJuIGF9fSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygidWsiLCJ1ayIse2Nsb3NlVGV4dDoi0JfQsNC60YDQuNGC0LgiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiLQodGM0L7Qs9C+0LTQvdGWIixtb250aE5hbWVzOlsi0KHRltGH0LXQvdGMIiwi0JvRjtGC0LjQuSIsItCR0LXRgNC10LfQtdC90YwiLCLQmtCy0ZbRgtC10L3RjCIsItCi0YDQsNCy0LXQvdGMIiwi0KfQtdGA0LLQtdC90YwiLCLQm9C40L/QtdC90YwiLCLQodC10YDQv9C10L3RjCIsItCS0LXRgNC10YHQtdC90YwiLCLQltC+0LLRgtC10L3RjCIsItCb0LjRgdGC0L7Qv9Cw0LQiLCLQk9GA0YPQtNC10L3RjCJdLG1vbnRoTmFtZXNTaG9ydDpbItCh0ZbRhyIsItCb0Y7RgiIsItCR0LXRgCIsItCa0LLRliIsItCi0YDQsCIsItCn0LXRgCIsItCb0LjQvyIsItCh0LXRgCIsItCS0LXRgCIsItCW0L7QsiIsItCb0LjRgSIsItCT0YDRgyJdLGRheU5hbWVzOlsi0L3QtdC00ZbQu9GPIiwi0L/QvtC90LXQtNGW0LvQvtC6Iiwi0LLRltCy0YLQvtGA0L7QuiIsItGB0LXRgNC10LTQsCIsItGH0LXRgtCy0LXRgCIsItC/4oCZ0Y/RgtC90LjRhtGPIiwi0YHRg9Cx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItC90LXQtCIsItC/0L3QtCIsItCy0ZbQsiIsItGB0YDQtCIsItGH0YLQsiIsItC/0YLQvSIsItGB0LHRgiJdLGRheU5hbWVzTWluOlsi0J3QtCIsItCf0L0iLCLQktGCIiwi0KHRgCIsItCn0YIiLCLQn9GCIiwi0KHQsSJdLHdlZWtIZWFkZXI6ItCi0LjQtiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ1ayIse2J1dHRvblRleHQ6e21vbnRoOiLQnNGW0YHRj9GG0YwiLHdlZWs6ItCi0LjQttC00LXQvdGMIixkYXk6ItCU0LXQvdGMIixsaXN0OiLQn9C+0YDRj9C00L7QuiDQtNC10L3QvdC40LkifSxhbGxEYXlUZXh0OiLQo9Cy0LXRgdGMINC00LXQvdGMIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK9GJ0LUgIithKyIuLi4ifX0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwidmkiLHttb250aHM6InRow6FuZyAxX3Row6FuZyAyX3Row6FuZyAzX3Row6FuZyA0X3Row6FuZyA1X3Row6FuZyA2X3Row6FuZyA3X3Row6FuZyA4X3Row6FuZyA5X3Row6FuZyAxMF90aMOhbmcgMTFfdGjDoW5nIDEyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJUaDAxX1RoMDJfVGgwM19UaDA0X1RoMDVfVGgwNl9UaDA3X1RoMDhfVGgwOV9UaDEwX1RoMTFfVGgxMiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFtuxINtXSBZWVlZIixMTEw6IkQgTU1NTSBbbsSDbV0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFtuxINtXSBZWVlZIExUIixsOiJERC9NL1lZWVkiLGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkgTFQiLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSMO0bSBuYXkgbMO6Y10gTFQiLG5leHREYXk6IltOZ8OgeSBtYWkgbMO6Y10gTFQiLG5leHRXZWVrOiJkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQiLGxhc3REYXk6IltIw7RtIHF1YSBsw7pjXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3R14bqnbiBy4buTaSBsw7pjXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgdOG7m2kiLHBhc3Q6IiVzIHRyxrDhu5tjIixzOiJ2w6BpIGdpw6J5IixtOiJt4buZdCBwaMO6dCIsbW06IiVkIHBow7p0IixoOiJt4buZdCBnaeG7nSIsaGg6IiVkIGdp4budIixkOiJt4buZdCBuZ8OgeSIsZGQ6IiVkIG5nw6B5IixNOiJt4buZdCB0aMOhbmciLE1NOiIlZCB0aMOhbmciLHk6Im3hu5l0IG7Eg20iLHl5OiIlZCBuxINtIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiBhfSx3ZWVrOntkb3c6MSxkb3k6NH19KSwKYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInZpIiwidmkiLHtjbG9zZVRleHQ6IsSQw7NuZyIscHJldlRleHQ6IiYjeDNDO1RyxrDhu5tjIixuZXh0VGV4dDoiVGnhur9wJiN4M0U7IixjdXJyZW50VGV4dDoiSMO0bSBuYXkiLG1vbnRoTmFtZXM6WyJUaMOhbmcgTeG7mXQiLCJUaMOhbmcgSGFpIiwiVGjDoW5nIEJhIiwiVGjDoW5nIFTGsCIsIlRow6FuZyBOxINtIiwiVGjDoW5nIFPDoXUiLCJUaMOhbmcgQuG6o3kiLCJUaMOhbmcgVMOhbSIsIlRow6FuZyBDaMOtbiIsIlRow6FuZyBNxrDhu51pIiwiVGjDoW5nIE3GsOG7nWkgTeG7mXQiLCJUaMOhbmcgTcaw4budaSBIYWkiXSxtb250aE5hbWVzU2hvcnQ6WyJUaMOhbmcgMSIsIlRow6FuZyAyIiwiVGjDoW5nIDMiLCJUaMOhbmcgNCIsIlRow6FuZyA1IiwiVGjDoW5nIDYiLCJUaMOhbmcgNyIsIlRow6FuZyA4IiwiVGjDoW5nIDkiLCJUaMOhbmcgMTAiLCJUaMOhbmcgMTEiLCJUaMOhbmcgMTIiXSxkYXlOYW1lczpbIkNo4bunIE5o4bqtdCIsIlRo4bupIEhhaSIsIlRo4bupIEJhIiwiVGjhu6kgVMawIiwiVGjhu6kgTsSDbSIsIlRo4bupIFPDoXUiLCJUaOG7qSBC4bqjeSJdLGRheU5hbWVzU2hvcnQ6WyJDTiIsIlQyIiwiVDMiLCJUNCIsIlQ1IiwiVDYiLCJUNyJdLGRheU5hbWVzTWluOlsiQ04iLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciXSx3ZWVrSGVhZGVyOiJUdSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ2aSIse2J1dHRvblRleHQ6e21vbnRoOiJUaMOhbmciLHdlZWs6IlR1w6LMgG4iLGRheToiTmfDoHkiLGxpc3Q6Ikzhu4tjaCBiaeG7g3UifSxhbGxEYXlUZXh0OiJD4bqjIG5nw6B5IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyB0aMOqbSAiK2F9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ6aC1jbiIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOeCuW1tIixMVFM6IkFo54K5beWIhnPnp5IiLEw6IllZWVktTU0tREQiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUxUIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelTFQiLGxsbGw6IllZWVnlubRNTU1E5pelZGRkZExUIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLlh4zmmagiPT09Ynx8IuaXqeS4iiI9PT1ifHwi5LiK5Y2IIj09PWI/YToi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOmE+PTExP2E6YSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/Ilvku4rlpKldQWhb54K55pW0XSI6Ilvku4rlpKldTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYjuWkqV1BaFvngrnmlbRdIjoiW+aYjuWkqV1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWludXRlcygpPyJb5pio5aSpXUFoW+eCueaVtF0iOiJb5pio5aSpXUxUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXt2YXIgYSxjO3JldHVybiBhPWIoKS5zdGFydE9mKCJ3ZWVrIiksYz10aGlzLnVuaXgoKS1hLnVuaXgoKT49NjA0ODAwPyJb5LiLXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBhLGM7cmV0dXJuIGE9YigpLnN0YXJ0T2YoIndlZWsiKSxjPXRoaXMudW5peCgpPGEudW5peCgpPyJb5LiKXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxzYW1lRWxzZToiTEwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0o5pelfOaciHzlkagpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGErIuaXpSI7Y2FzZSJNIjpyZXR1cm4gYSsi5pyIIjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGErIuWRqCI7ZGVmYXVsdDpyZXR1cm4gYX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+WGhSIscGFzdDoiJXPliY0iLHM6IuWHoOenkiIsbToiMeWIhumSnyIsbW06IiVk5YiG6ZKfIixoOiIx5bCP5pe2IixoaDoiJWTlsI/ml7YiLGQ6IjHlpKkiLGRkOiIlZOWkqSIsTToiMeS4quaciCIsTU06IiVk5Liq5pyIIix5OiIx5bm0Iix5eToiJWTlubQifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiemgtY24iLCJ6aC1DTiIse2Nsb3NlVGV4dDoi5YWz6ZetIixwcmV2VGV4dDoiJiN4M0M75LiK5pyIIixuZXh0VGV4dDoi5LiL5pyIJiN4M0U7IixjdXJyZW50VGV4dDoi5LuK5aSpIixtb250aE5hbWVzOlsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sbW9udGhOYW1lc1Nob3J0Olsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sZGF5TmFtZXM6WyLmmJ/mnJ/ml6UiLCLmmJ/mnJ/kuIAiLCLmmJ/mnJ/kuowiLCLmmJ/mnJ/kuIkiLCLmmJ/mnJ/lm5siLCLmmJ/mnJ/kupQiLCLmmJ/mnJ/lha0iXSxkYXlOYW1lc1Nob3J0Olsi5ZGo5pelIiwi5ZGo5LiAIiwi5ZGo5LqMIiwi5ZGo5LiJIiwi5ZGo5ZubIiwi5ZGo5LqUIiwi5ZGo5YWtIl0sZGF5TmFtZXNNaW46WyLml6UiLCLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iXSx3ZWVrSGVhZGVyOiLlkagiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiLlubQifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiemgtY24iLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLlkagiLGRheToi5pelIixsaXN0OiLml6XnqIsifSxhbGxEYXlUZXh0OiLlhajlpKkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiLlj6blpJYgIithKyIg5LiqIn19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInpoLXR3Iix7bW9udGhzOiLkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo6buebW0iLExUUzoiQWjpu55t5YiGc+enkiIsTDoiWVlZWeW5tE1NTUTml6UiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUxUIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCIsbDoiWVlZWeW5tE1NTUTml6UiLGxsOiJZWVlZ5bm0TU1NROaXpSIsbGxsOiJZWVlZ5bm0TU1NROaXpUxUIixsbGxsOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCJ9LG1lcmlkaWVtUGFyc2U6L+aXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLml6nkuIoiPT09Ynx8IuS4iuWNiCI9PT1iP2E6IuS4reWNiCI9PT1iP2E+PTExP2E6YSsxMjoi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0dXJuIDkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheToiW+S7iuWkqV1MVCIsbmV4dERheToiW+aYjuWkqV1MVCIsbmV4dFdlZWs6IlvkuItdZGRkZExUIixsYXN0RGF5OiJb5pio5aSpXUxUIixsYXN0V2VlazoiW+S4il1kZGRkTFQiLHNhbWVFbHNlOiJMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOaXpXzmnIh86YCxKS8sb3JkaW5hbDpmdW5jdGlvbihhLGIpe3N3aXRjaChiKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBhKyLml6UiO2Nhc2UiTSI6cmV0dXJuIGErIuaciCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyLpgLEiO2RlZmF1bHQ6cmV0dXJuIGF9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXPlhaciLHBhc3Q6IiVz5YmNIixzOiLlub7np5IiLG06IuS4gOWIhumQmCIsbW06IiVk5YiG6ZCYIixoOiLkuIDlsI/mmYIiLGhoOiIlZOWwj+aZgiIsZDoi5LiA5aSpIixkZDoiJWTlpKkiLE06IuS4gOWAi+aciCIsTU06IiVk5YCL5pyIIix5OiLkuIDlubQiLHl5OiIlZOW5tCJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInpoLXR3IiwiemgtVFciLHtjbG9zZVRleHQ6IumXnOmWiSIscHJldlRleHQ6IiYjeDNDO+S4iuaciCIsbmV4dFRleHQ6IuS4i+aciCYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuWkqSIsbW9udGhOYW1lczpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLGRheU5hbWVzOlsi5pif5pyf5pelIiwi5pif5pyf5LiAIiwi5pif5pyf5LqMIiwi5pif5pyf5LiJIiwi5pif5pyf5ZubIiwi5pif5pyf5LqUIiwi5pif5pyf5YWtIl0sZGF5TmFtZXNTaG9ydDpbIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLGRheU5hbWVzTWluOlsi5pelIiwi5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIl0sd2Vla0hlYWRlcjoi5ZGoIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInpoLXR3Iix7YnV0dG9uVGV4dDp7bW9udGg6IuaciCIsd2Vlazoi6YCxIixkYXk6IuWkqSIsbGlzdDoi5b6F6L6m5LqL6aCFIn0sYWxsRGF5VGV4dDoi5YWo5aSpIixldmVudExpbWl0VGV4dDoi5pu05aSaIn0pfSgpLChiLmxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImVuIiksYS5mdWxsQ2FsZW5kYXIubGFuZygiZW4iKSxhLmRhdGVwaWNrZXImJmEuZGF0ZXBpY2tlci5zZXREZWZhdWx0cyhhLmRhdGVwaWNrZXIucmVnaW9uYWxbIiJdKX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar-ma.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJhci1tYSIse21vbnRoczoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itin2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImFyLW1hIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2YoiLCLYtNio2KfYtyIsItii2LDYp9ixIiwi2YbZitiz2KfZhiIsItmF2KfZitmIIiwi2K3YstmK2LHYp9mGIiwi2KrZhdmI2LIiLCLYotioIiwi2KPZitmE2YjZhCIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYXItbWEiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar-sa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSxkPXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYXItc2EiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXItc2EiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhci1zYSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar-tn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJhci10biIse21vbnRoczoi2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImFyLXRuIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2YoiLCLYtNio2KfYtyIsItii2LDYp9ixIiwi2YbZitiz2KfZhiIsItmF2KfZitmIIiwi2K3YstmK2LHYp9mGIiwi2KrZhdmI2LIiLCLYotioIiwi2KPZitmE2YjZhCIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYXItdG4iLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSxkPXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn0sZT1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWE/MDoxPT09YT8xOjI9PT1hPzI6YSUxMDA+PTMmJjEwPj1hJTEwMD8zOmElMTAwPj0xMT80OjV9LGY9e3M6WyLYo9mC2YQg2YXZhiDYq9in2YbZitipIiwi2KvYp9mG2YrYqSDZiNin2K3Yr9ipIixbItir2KfZhtmK2KrYp9mGIiwi2KvYp9mG2YrYqtmK2YYiXSwiJWQg2KvZiNin2YYiLCIlZCDYq9in2YbZitipIiwiJWQg2KvYp9mG2YrYqSJdLG06WyLYo9mC2YQg2YXZhiDYr9mC2YrZgtipIiwi2K/ZgtmK2YLYqSDZiNin2K3Yr9ipIixbItiv2YLZitmC2KrYp9mGIiwi2K/ZgtmK2YLYqtmK2YYiXSwiJWQg2K/Zgtin2KbZgiIsIiVkINiv2YLZitmC2KkiLCIlZCDYr9mC2YrZgtipIl0saDpbItij2YLZhCDZhdmGINiz2KfYudipIiwi2LPYp9i52Kkg2YjYp9it2K/YqSIsWyLYs9in2LnYqtin2YYiLCLYs9in2LnYqtmK2YYiXSwiJWQg2LPYp9i52KfYqiIsIiVkINiz2KfYudipIiwiJWQg2LPYp9i52KkiXSxkOlsi2KPZgtmEINmF2YYg2YrZiNmFIiwi2YrZiNmFINmI2KfYrdivIixbItmK2YjZhdin2YYiLCLZitmI2YXZitmGIl0sIiVkINij2YrYp9mFIiwiJWQg2YrZiNmF2YvYpyIsIiVkINmK2YjZhSJdLE06WyLYo9mC2YQg2YXZhiDYtNmH2LEiLCLYtNmH2LEg2YjYp9it2K8iLFsi2LTZh9ix2KfZhiIsIti02YfYsdmK2YYiXSwiJWQg2KPYtNmH2LEiLCIlZCDYtNmH2LHYpyIsIiVkINi02YfYsSJdLHk6WyLYo9mC2YQg2YXZhiDYudin2YUiLCLYudin2YUg2YjYp9it2K8iLFsi2LnYp9mF2KfZhiIsIti52KfZhdmK2YYiXSwiJWQg2KPYudmI2KfZhSIsIiVkINi52KfZhdmL2KciLCIlZCDYudin2YUiXX0sZz1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYixjLGQsZyl7dmFyIGg9ZShiKSxpPWZbYV1bZShiKV07cmV0dXJuIDI9PT1oJiYoaT1pW2M/MDoxXSksaS5yZXBsYWNlKC8lZC9pLGIpfX0saD1bItmD2KfZhtmI2YYg2KfZhNir2KfZhtmKINmK2YbYp9mK2LEiLCLYtNio2KfYtyDZgdio2LHYp9mK2LEiLCLYotiw2KfYsSDZhdin2LHYsyIsItmG2YrYs9in2YYg2KPYqNix2YrZhCIsItij2YrYp9ixINmF2KfZitmIIiwi2K3YstmK2LHYp9mGINmK2YjZhtmK2YgiLCLYqtmF2YjYsiDZitmI2YTZitmIIiwi2KLYqCDYo9i62LPYt9izIiwi2KPZitmE2YjZhCDYs9io2KrZhdio2LEiLCLYqti02LHZitmGINin2YTYo9mI2YQg2KPZg9iq2YjYqNixIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2Yog2YbZiNmB2YXYqNixIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEINiv2YrYs9mF2KjYsSJdOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImFyIix7bW9udGhzOmgsbW9udGhzU2hvcnQ6aCx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLYqNi52K8gJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczpnKCJzIiksbTpnKCJtIiksbW06ZygibSIpLGg6ZygiaCIpLGhoOmcoImgiKSxkOmcoImQiKSxkZDpnKCJkIiksTTpnKCJNIiksTU06ZygiTSIpLHk6ZygieSIpLHl5OmcoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXIiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhciIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/bg.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJiZyIse21vbnRoczoi0Y/QvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LLRgNC4X9C+0LrRgtC+0LzQstGA0Lhf0L3QvtC10LzQstGA0Lhf0LTQtdC60LXQvNCy0YDQuCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi0Y/QvdGAX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LoiLnNwbGl0KCJfIiksd2Vla2RheXM6ItC90LXQtNC10LvRj1/Qv9C+0L3QtdC00LXQu9C90LjQul/QstGC0L7RgNC90LjQul/RgdGA0Y/QtNCwX9GH0LXRgtCy0YrRgNGC0YrQul/Qv9C10YLRitC6X9GB0YrQsdC+0YLQsCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0Y9f0YfQtdGCX9C/0LXRgl/RgdGK0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9CU0L3QtdGBINCyXSBMVCIsbmV4dERheToiW9Cj0YLRgNC1INCyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9CyXSBMVCIsbGFzdERheToiW9CS0YfQtdGA0LAg0LJdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNjpyZXR1cm4iW9CSINC40LfQvNC40L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW9CSINC40LfQvNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItGB0LvQtdC0ICVzIixwYXN0OiLQv9GA0LXQtNC4ICVzIixzOiLQvdGP0LrQvtC70LrQviDRgdC10LrRg9C90LTQuCIsbToi0LzQuNC90YPRgtCwIixtbToiJWQg0LzQuNC90YPRgtC4IixoOiLRh9Cw0YEiLGhoOiIlZCDRh9Cw0YHQsCIsZDoi0LTQtdC9IixkZDoiJWQg0LTQvdC4IixNOiLQvNC10YHQtdGGIixNTToiJWQg0LzQtdGB0LXRhtCwIix5OiLQs9C+0LTQuNC90LAiLHl5OiIlZCDQs9C+0LTQuNC90LgifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9YSUxMDA7cmV0dXJuIDA9PT1hP2ErIi3QtdCyIjowPT09Yz9hKyIt0LXQvSI6Yz4xMCYmMjA+Yz9hKyIt0YLQuCI6MT09PWI/YSsiLdCy0LgiOjI9PT1iP2ErIi3RgNC4Ijo3PT09Ynx8OD09PWI/YSsiLdC80LgiOmErIi3RgtC4In0sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImJnIiwiYmciLHtjbG9zZVRleHQ6ItC30LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M70L3QsNC30LDQtCIsbmV4dFRleHQ6ItC90LDQv9GA0LXQtCYjeDNFOyIsbmV4dEJpZ1RleHQ6IiYjeDNFOyYjeDNFOyIsY3VycmVudFRleHQ6ItC00L3QtdGBIixtb250aE5hbWVzOlsi0K/QvdGD0LDRgNC4Iiwi0KTQtdCy0YDRg9Cw0YDQuCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDQuSIsItCu0L3QuCIsItCu0LvQuCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCy0YDQuCIsItCe0LrRgtC+0LzQstGA0LgiLCLQndC+0LXQvNCy0YDQuCIsItCU0LXQutC10LzQstGA0LgiXSxtb250aE5hbWVzU2hvcnQ6WyLQr9C90YMiLCLQpNC10LIiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0LkiLCLQrtC90LgiLCLQrtC70LgiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10LoiXSxkYXlOYW1lczpbItCd0LXQtNC10LvRjyIsItCf0L7QvdC10LTQtdC70L3QuNC6Iiwi0JLRgtC+0YDQvdC40LoiLCLQodGA0Y/QtNCwIiwi0KfQtdGC0LLRitGA0YLRitC6Iiwi0J/QtdGC0YrQuiIsItCh0YrQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQktGC0L4iLCLQodGA0Y8iLCLQp9C10YIiLCLQn9C10YIiLCLQodGK0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0JLRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YoiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJiZyIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQodC10LTQvNC40YbQsCIsZGF5OiLQlNC10L0iLGxpc3Q6ItCT0YDQsNGE0LjQuiJ9LGFsbERheVRleHQ6ItCm0Y/QuyDQtNC10L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIr0L7RidC1ICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJjYSIse21vbnRoczoiZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXIuX2Fici5fbWFpLl9qdW4uX2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksd2Vla2RheXM6ImRpdW1lbmdlX2RpbGx1bnNfZGltYXJ0c19kaW1lY3Jlc19kaWpvdXNfZGl2ZW5kcmVzX2Rpc3NhYnRlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRnLl9kbC5fZHQuX2RjLl9kai5fZHYuX2RzLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRGdfRGxfRHRfRGNfRGpfRHZfRHMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbYXZ1aSBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltkZW3DoCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthaGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJmYSAlcyIsczoidW5zIHNlZ29ucyIsbToidW4gbWludXQiLG1tOiIlZCBtaW51dHMiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yZXMiLGQ6InVuIGRpYSIsZGQ6IiVkIGRpZXMiLE06InVuIG1lcyIsTU06IiVkIG1lc29zIix5OiJ1biBhbnkiLHl5OiIlZCBhbnlzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fMOofGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7dmFyIGM9MT09PWE/InIiOjI9PT1hPyJuIjozPT09YT8iciI6ND09PWE/InQiOiLDqCI7cmV0dXJuKCJ3Ij09PWJ8fCJXIj09PWIpJiYoYz0iYSIpLGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImNhIiwiY2EiLHtjbG9zZVRleHQ6IlRhbmNhIixwcmV2VGV4dDoiQW50ZXJpb3IiLG5leHRUZXh0OiJTZWfDvGVudCIsY3VycmVudFRleHQ6IkF2dWkiLG1vbnRoTmFtZXM6WyJnZW5lciIsImZlYnJlciIsIm1hcsOnIiwiYWJyaWwiLCJtYWlnIiwianVueSIsImp1bGlvbCIsImFnb3N0Iiwic2V0ZW1icmUiLCJvY3R1YnJlIiwibm92ZW1icmUiLCJkZXNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImdlbiIsImZlYiIsIm1hcsOnIiwiYWJyIiwibWFpZyIsImp1bnkiLCJqdWwiLCJhZyIsInNldCIsIm9jdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzOlsiZGl1bWVuZ2UiLCJkaWxsdW5zIiwiZGltYXJ0cyIsImRpbWVjcmVzIiwiZGlqb3VzIiwiZGl2ZW5kcmVzIiwiZGlzc2FidGUiXSxkYXlOYW1lc1Nob3J0OlsiZGciLCJkbCIsImR0IiwiZGMiLCJkaiIsImR2IiwiZHMiXSxkYXlOYW1lc01pbjpbImRnIiwiZGwiLCJkdCIsImRjIiwiZGoiLCJkdiIsImRzIl0sd2Vla0hlYWRlcjoiU2V0IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImNhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2V0bWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvdCBlbCBkaWEiLGV2ZW50TGltaXRUZXh0OiJtw6lzIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/cs.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhPjEmJjU+YSYmMSE9PX5+KGEvMTApfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/InDDoXIgc2VrdW5kIjoicMOhciBzZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIGI/Im1pbnV0YSI6ZT8ibWludXR1IjoibWludXRvdSI7Y2FzZSJtbSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8ibWludXR5IjoibWludXQiKTpmKyJtaW51dGFtaSI7Y2FzZSJoIjpyZXR1cm4gYj8iaG9kaW5hIjplPyJob2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJob2RpbnkiOiJob2RpbiIpOmYrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBifHxlPyJkZW4iOiJkbmVtIjtjYXNlImRkIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJkbnkiOiJkbsOtIik6ZisiZG55IjtjYXNlIk0iOnJldHVybiBifHxlPyJtxJtzw61jIjoibcSbc8OtY2VtIjtjYXNlIk1NIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJtxJtzw61jZSI6Im3Em3PDrWPFryIpOmYrIm3Em3PDrWNpIjtjYXNlInkiOnJldHVybiBifHxlPyJyb2siOiJyb2tlbSI7Y2FzZSJ5eSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8icm9reSI6ImxldCIpOmYrImxldHkifX12YXIgZT0ibGVkZW5fw7pub3JfYsWZZXplbl9kdWJlbl9rdsSbdGVuX8SNZXJ2ZW5fxI1lcnZlbmVjX3NycGVuX3rDocWZw61fxZnDrWplbl9saXN0b3BhZF9wcm9zaW5lYyIuc3BsaXQoIl8iKSxmPSJsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SNdm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3BybyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJjcyIse21vbnRoczplLG1vbnRoc1Nob3J0OmYsbW9udGhzUGFyc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdO2ZvcihjPTA7MTI+YztjKyspZFtjXT1uZXcgUmVnRXhwKCJeIithW2NdKyIkfF4iK2JbY10rIiQiLCJpIik7cmV0dXJuIGR9KGUsZiksd2Vla2RheXM6Im5lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX8O6dF9zdF/EjXRfcMOhX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyB2XSBMVCIsbmV4dERheToiW3rDrXRyYSB2XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZlIHN0xZllZHUgdl0gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZlIMSNdHZydGVrIHZdIExUIjtjYXNlIDU6cmV0dXJuIlt2IHDDoXRlayB2XSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgdl0gTFQifX0sbGFzdERheToiW3bEjWVyYSB2XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxvdSBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDqV0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsb3Ugc3TFmWVkdSB2XSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsw71dIGRkZGQgW3ZdIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bG91IHNvYm90dSB2XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicMWZZWQgJXMiLHM6ZCxtOmQsbW06ZCxoOmQsaGg6ZCxkOmQsZGQ6ZCxNOmQsTU06ZCx5OmQseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImNzIiwiY3MiLHtjbG9zZVRleHQ6IlphdsWZw610IixwcmV2VGV4dDoiJiN4M0M7RMWZw612ZSIsbmV4dFRleHQ6IlBvemTEm2ppJiN4M0U7IixjdXJyZW50VGV4dDoiTnluw60iLG1vbnRoTmFtZXM6WyJsZWRlbiIsIsO6bm9yIiwiYsWZZXplbiIsImR1YmVuIiwia3bEm3RlbiIsIsSNZXJ2ZW4iLCLEjWVydmVuZWMiLCJzcnBlbiIsInrDocWZw60iLCLFmcOtamVuIiwibGlzdG9wYWQiLCJwcm9zaW5lYyJdLG1vbnRoTmFtZXNTaG9ydDpbImxlZCIsIsO6bm8iLCJixZllIiwiZHViIiwia3bEmyIsIsSNZXIiLCLEjXZjIiwic3JwIiwiesOhxZkiLCLFmcOtaiIsImxpcyIsInBybyJdLGRheU5hbWVzOlsibmVkxJtsZSIsInBvbmTEm2zDrSIsIsO6dGVyw70iLCJzdMWZZWRhIiwixI10dnJ0ZWsiLCJww6F0ZWsiLCJzb2JvdGEiXSxkYXlOYW1lc1Nob3J0OlsibmUiLCJwbyIsIsO6dCIsInN0IiwixI10IiwicMOhIiwic28iXSxkYXlOYW1lc01pbjpbIm5lIiwicG8iLCLDunQiLCJzdCIsIsSNdCIsInDDoSIsInNvIl0sd2Vla0hlYWRlcjoiVMO9ZCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJjcyIse2J1dHRvblRleHQ6e21vbnRoOiJNxJtzw61jIix3ZWVrOiJUw71kZW4iLGRheToiRGVuIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJDZWzDvSBkZW4iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrZGFsxaHDrTogIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/da.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJkYSIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InPDuG5fbWFuX3Rpcl9vbnNfdG9yX2ZyZV9sw7hyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7hfbWFfdGlfb25fdG9fZnJfbMO4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbSSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltJIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6IltzaWRzdGVdIGRkZGQgW2tsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGVuIixzOiJmw6Ugc2VrdW5kZXIiLG06ImV0IG1pbnV0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZSIsTToiZW4gbcOlbmVkIixNTToiJWQgbcOlbmVkZXIiLHk6ImV0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJkYSIsImRhIix7Y2xvc2VUZXh0OiJMdWsiLHByZXZUZXh0OiImI3gzQztGb3JyaWdlIixuZXh0VGV4dDoiTsOmc3RlJiN4M0U7IixjdXJyZW50VGV4dDoiSWRhZyIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNYXJ0cyIsIkFwcmlsIiwiTWFqIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU8O4bmRhZyIsIk1hbmRhZyIsIlRpcnNkYWciLCJPbnNkYWciLCJUb3JzZGFnIiwiRnJlZGFnIiwiTMO4cmRhZyJdLGRheU5hbWVzU2hvcnQ6WyJTw7huIiwiTWFuIiwiVGlyIiwiT25zIiwiVG9yIiwiRnJlIiwiTMO4ciJdLGRheU5hbWVzTWluOlsiU8O4IiwiTWEiLCJUaSIsIk9uIiwiVG8iLCJGciIsIkzDuCJdLHdlZWtIZWFkZXI6IlVnZSIsZGF0ZUZvcm1hdDoiZGQtbW0teXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJkYSIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuZWQiLHdlZWs6IlVnZSIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnZW4iLGV2ZW50TGltaXRUZXh0OiJmbGVyZSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/de-at.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3ZhciBlPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOlthKyIgVGFnZSIsYSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2ErIiBNb25hdGUiLGErIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OlthKyIgSmFocmUiLGErIiBKYWhyZW4iXX07cmV0dXJuIGI/ZVtjXVswXTplW2NdWzFdfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImRlLWF0Iix7bW9udGhzOiJKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkrDpG4uX0ZlYnIuX01yei5fQXByLl9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW01vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltHZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06YyxtbToiJWQgTWludXRlbiIsaDpjLGhoOiIlZCBTdHVuZGVuIixkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImRlLWF0IiwiZGUiLHtjbG9zZVRleHQ6IlNjaGxpZcOfZW4iLHByZXZUZXh0OiImI3gzQztadXLDvGNrIixuZXh0VGV4dDoiVm9yJiN4M0U7IixjdXJyZW50VGV4dDoiSGV1dGUiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTcOkcnoiLCJBcHJpbCIsIk1haSIsIkp1bmkiLCJKdWxpIiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGV6ZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNw6RyIiwiQXByIiwiTWFpIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJTb25udGFnIiwiTW9udGFnIiwiRGllbnN0YWciLCJNaXR0d29jaCIsIkRvbm5lcnN0YWciLCJGcmVpdGFnIiwiU2Ftc3RhZyJdLGRheU5hbWVzU2hvcnQ6WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLGRheU5hbWVzTWluOlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJLVyIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJkZS1hdCIse2J1dHRvblRleHQ6e21vbnRoOiJNb25hdCIsd2VlazoiV29jaGUiLGRheToiVGFnIixsaXN0OiJUZXJtaW7DvGJlcnNpY2h0In0sYWxsRGF5VGV4dDoiR2FuenTDpGdpZyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisgd2VpdGVyZSAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/de.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3ZhciBlPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOlthKyIgVGFnZSIsYSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2ErIiBNb25hdGUiLGErIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OlthKyIgSmFocmUiLGErIiBKYWhyZW4iXX07cmV0dXJuIGI/ZVtjXVswXTplW2NdWzFdfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImRlIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWJyLl9NcnouX0Fwci5fTWFpX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6IltNb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbR2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixtOmMsbW06IiVkIE1pbnV0ZW4iLGg6YyxoaDoiJWQgU3R1bmRlbiIsZDpjLGRkOmMsTTpjLE1NOmMseTpjLHl5OmN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJkZSIsImRlIix7Y2xvc2VUZXh0OiJTY2hsaWXDn2VuIixwcmV2VGV4dDoiJiN4M0M7WnVyw7xjayIsbmV4dFRleHQ6IlZvciYjeDNFOyIsY3VycmVudFRleHQ6IkhldXRlIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk3DpHJ6IiwiQXByaWwiLCJNYWkiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlemVtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTcOkciIsIkFwciIsIk1haSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiU29ubnRhZyIsIk1vbnRhZyIsIkRpZW5zdGFnIiwiTWl0dHdvY2giLCJEb25uZXJzdGFnIiwiRnJlaXRhZyIsIlNhbXN0YWciXSxkYXlOYW1lc1Nob3J0OlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSxkYXlOYW1lc01pbjpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiS1ciLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZGUiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrIHdlaXRlcmUgIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/el.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbCIse21vbnRoc05vbWluYXRpdmVFbDoizpnOsc69zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HPhM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3Ouc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXPgM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/PgiIuc3BsaXQoIl8iKSxtb250aHNHZW5pdGl2ZUVsOiLOmc6xzr3Ov8+FzrHPgc6vzr/PhV/Ops61zrLPgc6/z4XOsc+Bzq/Ov8+FX86czrHPgc+Ezq/Ov8+FX86Rz4DPgc65zrvOr86/z4VfzpzOsc6Qzr/PhV/Omc6/z4XOvc6vzr/PhV/Omc6/z4XOu86vzr/PhV/Okc+FzrPOv8+Nz4PPhM6/z4VfzqPOtc+Az4TOtc68zrLPgc6vzr/PhV/On866z4TPic6yz4HOr86/z4Vfzp3Ov861zrzOss+Bzq/Ov8+FX86UzrXOus61zrzOss+Bzq/Ov8+FIi5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihhLGIpe3JldHVybi9ELy50ZXN0KGIuc3Vic3RyaW5nKDAsYi5pbmRleE9mKCJNTU1NIikpKT90aGlzLl9tb250aHNHZW5pdGl2ZUVsW2EubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsW2EubW9udGgoKV19LG1vbnRoc1Nob3J0OiLOmc6xzr1fzqbOtc6yX86czrHPgV/Okc+Az4FfzpzOsc+KX86Zzr/Phc69X86Zzr/Phc67X86Rz4XOs1/Oo861z4Bfzp/Ous+EX86dzr/OtV/OlM61zroiLnNwbGl0KCJfIiksd2Vla2RheXM6Is6az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLOms+Fz4FfzpTOtc+FX86kz4HOuV/OpM61z4RfzqDOtc68X86gzrHPgV/Oo86xzrIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Is6az4VfzpTOtV/OpM+BX86kzrVfzqDOtV/OoM6xX86jzrEiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhPjExP2M/Is68zrwiOiLOnM6cIjpjPyLPgM68IjoizqDOnCJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuIs68Ij09PShhKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBhcnNlOi9bzqDOnF1cLj/OnD9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhckVsOntzYW1lRGF5OiJbzqPOrs68zrXPgc6xIHt9XSBMVCIsbmV4dERheToiW86Rz43Pgc65zr8ge31dIExUIixuZXh0V2VlazoiZGRkZCBbe31dIExUIixsYXN0RGF5OiJbzqfOuM61z4Ige31dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDY6cmV0dXJuIlvPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCI7ZGVmYXVsdDpyZXR1cm4iW8+EzrfOvSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc63XSBkZGRkIFt7fV0gTFQifX0sc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2NhbGVuZGFyRWxbYV0sZD1iJiZiLmhvdXJzKCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGMmJihjPWMuYXBwbHkoYikpLGMucmVwbGFjZSgie30iLGQlMTI9PT0xPyLPg8+EzrciOiLPg8+EzrnPgiIpfSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiz4POtSAlcyIscGFzdDoiJXMgz4DPgc65zr0iLHM6Is67zq/Os86xIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsSIsbToizq3Ovc6xIM67zrXPgM+Ez4wiLG1tOiIlZCDOu861z4DPhM6sIixoOiLOvM6vzrEgz47Pgc6xIixoaDoiJWQgz47Pgc61z4IiLGQ6Is68zq/OsSDOvM6tz4HOsSIsZGQ6IiVkIM68zq3Pgc61z4IiLE06Is6tzr3Osc+CIM68zq7Ovc6xz4IiLE1NOiIlZCDOvM6uzr3Otc+CIix5OiLOrc69zrHPgiDPh8+Bz4zOvc6/z4IiLHl5OiIlZCDPh8+Bz4zOvc65zrEifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Oty8sb3JkaW5hbDoiJWTOtyIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVsIiwiZWwiLHtjbG9zZVRleHQ6Is6azrvOtc6vz4POuc68zr8iLHByZXZUZXh0OiLOoM+Bzr/Ot86zzr/Pjc68zrXOvc6/z4IiLG5leHRUZXh0OiLOlc+Az4zOvM61zr3Ov8+CIixjdXJyZW50VGV4dDoizqPOrs68zrXPgc6xIixtb250aE5hbWVzOlsizpnOsc69zr/Phc6sz4HOuc6/z4IiLCLOps61zrLPgc6/z4XOrM+BzrnOv8+CIiwizpzOrM+Bz4TOuc6/z4IiLCLOkc+Az4HOr867zrnOv8+CIiwizpzOrM65zr/PgiIsIs6Zzr/Pjc69zrnOv8+CIiwizpnOv8+NzrvOuc6/z4IiLCLOkc+NzrPOv8+Fz4PPhM6/z4IiLCLOo861z4DPhM6tzrzOss+BzrnOv8+CIiwizp/Ous+Ez47Oss+BzrnOv8+CIiwizp3Ov86tzrzOss+BzrnOv8+CIiwizpTOtc66zq3OvM6yz4HOuc6/z4IiXSxtb250aE5hbWVzU2hvcnQ6WyLOmc6xzr0iLCLOps61zrIiLCLOnM6xz4EiLCLOkc+Az4EiLCLOnM6xzrkiLCLOmc6/z4XOvSIsIs6Zzr/Phc67IiwizpHPhc6zIiwizqPOtc+AIiwizp/Ous+EIiwizp3Ov861IiwizpTOtc66Il0sZGF5TmFtZXM6WyLOms+Fz4HOuc6xzrrOriIsIs6UzrXPhc+Ezq3Pgc6xIiwizqTPgc6vz4TOtyIsIs6kzrXPhM6sz4HPhM63IiwizqDOrc68z4DPhM63IiwizqDOsc+BzrHPg866zrXPhc6uIiwizqPOrM6yzrLOsc+Ezr8iXSxkYXlOYW1lc1Nob3J0OlsizprPhc+BIiwizpTOtc+FIiwizqTPgc65IiwizqTOtc+EIiwizqDOtc68IiwizqDOsc+BIiwizqPOsc6yIl0sZGF5TmFtZXNNaW46WyLOms+FIiwizpTOtSIsIs6kz4EiLCLOpM61IiwizqDOtSIsIs6gzrEiLCLOo86xIl0sd2Vla0hlYWRlcjoizpXOss60IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVsIix7YnV0dG9uVGV4dDp7bW9udGg6Is6czq7Ovc6xz4IiLHdlZWs6Is6VzrLOtM6/zrzOrM60zrEiLGRheToizpfOvM6tz4HOsSIsbGlzdDoizpHPhM62zq3Ovc+EzrEifSxhbGxEYXlUZXh0OiLOn867zr/Ors68zrXPgc6/IixldmVudExpbWl0VGV4dDoiz4DOtc+BzrnPg8+Dz4zPhM61z4HOsSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/en-au.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbi1hdSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZW4tYXUiLCJlbi1BVSIse2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVuLWF1Iil9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/en-ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbi1jYSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NLCBZWVlZIixMTEw6IkQgTU1NTSwgWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NLCBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1cm4gYStjfX0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVuLWNhIil9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/en-gb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbi1nYiIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9MT09PX5+KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVuLWdiIiwiZW4tR0IiLHtjbG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2IixuZXh0VGV4dDoiTmV4dCIsY3VycmVudFRleHQ6IlRvZGF5Iixtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlbi1nYiIpfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/es.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksZD0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4vLU1NTS0vLnRlc3QoYik/ZFthLm1vbnRoKCldOmNbYS5tb250aCgpXX0sd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvX0x1X01hX01pX0p1X1ZpX1PDoSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIExUIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYcOxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkw61hIixkZDoiJWQgZMOtYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhw7FvIix5eToiJWQgYcOxb3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVzIiwiZXMiLHtjbG9zZVRleHQ6IkNlcnJhciIscHJldlRleHQ6IiYjeDNDO0FudCIsbmV4dFRleHQ6IlNpZyYjeDNFOyIsY3VycmVudFRleHQ6IkhveSIsbW9udGhOYW1lczpbImVuZXJvIiwiZmVicmVybyIsIm1hcnpvIiwiYWJyaWwiLCJtYXlvIiwianVuaW8iLCJqdWxpbyIsImFnb3N0byIsInNlcHRpZW1icmUiLCJvY3R1YnJlIiwibm92aWVtYnJlIiwiZGljaWVtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiZW5lIiwiZmViIiwibWFyIiwiYWJyIiwibWF5IiwianVuIiwianVsIiwiYWdvIiwic2VwIiwib2N0Iiwibm92IiwiZGljIl0sZGF5TmFtZXM6WyJkb21pbmdvIiwibHVuZXMiLCJtYXJ0ZXMiLCJtacOpcmNvbGVzIiwianVldmVzIiwidmllcm5lcyIsInPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiZG9tIiwibHVuIiwibWFyIiwibWnDqSIsImp1ZSIsInZpZSIsInPDoWIiXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIlgiLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlcyIse2J1dHRvblRleHQ6e21vbnRoOiJNZXMiLHdlZWs6IlNlbWFuYSIsZGF5OiJEw61hIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUb2RvPGJyLz5lbCBkw61hIixldmVudExpbWl0VGV4dDoibcOhcyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi27EiLDI6ItuyIiwzOiLbsyIsNDoi27QiLDU6Itu1Iiw2OiLbtiIsNzoi27ciLDg6Itu4Iiw5OiLbuSIsMDoi27AifSxkPXsi27EiOiIxIiwi27IiOiIyIiwi27MiOiIzIiwi27QiOiI0Iiwi27UiOiI1Iiwi27YiOiI2Iiwi27ciOiI3Iiwi27giOiI4Iiwi27kiOiI5Iiwi27AiOiIwIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZmEiLHttb250aHM6ItqY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItqY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6ItuM2qnigIzYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh+KAjNi02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7Zhtis4oCM2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi24zaqeKAjNi02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mH4oCM2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KzigIzYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi24xf2K9f2LNf2oZf2b5f2Kxf2LQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LG1lcmlkaWVtUGFyc2U6L9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL9io2LnYryDYp9iyINi42YfYsS8udGVzdChhKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLZgtio2YQg2KfYsiDYuNmH2LEiOiLYqNi52K8g2KfYsiDYuNmH2LEifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YXYsdmI2LIg2LPYp9i52KpdIExUIixuZXh0RGF5OiJb2YHYsdiv2Kcg2LPYp9i52KpdIExUIixuZXh0V2VlazoiZGRkZCBb2LPYp9i52KpdIExUIixsYXN0RGF5OiJb2K/bjNix2YjYsiDYs9in2LnYql0gTFQiLGxhc3RXZWVrOiJkZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Itiv2LEgJXMiLHBhc3Q6IiVzINm+24zYtCIsczoi2obZhtiv24zZhiDYq9in2YbbjNmHIixtOiLbjNqpINiv2YLbjNmC2YciLG1tOiIlZCDYr9mC24zZgtmHIixoOiLbjNqpINiz2KfYudiqIixoaDoiJWQg2LPYp9i52KoiLGQ6ItuM2qkg2LHZiNiyIixkZDoiJWQg2LHZiNiyIixNOiLbjNqpINmF2KfZhyIsTU06IiVkINmF2KfZhyIseToi24zaqSDYs9in2YQiLHl5OiIlZCDYs9in2YQifSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b27At27ldL2csZnVuY3Rpb24oYSl7cmV0dXJuIGRbYV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gY1thXX0pLnJlcGxhY2UoLywvZywi2IwiKX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ92YUvLG9yZGluYWw6IiVk2YUiLHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZmEiLCJmYSIse2Nsb3NlVGV4dDoi2KjYs9iq2YYiLHByZXZUZXh0OiImI3gzQzvZgtio2YTbjCIsbmV4dFRleHQ6Itio2LnYr9uMJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhdix2YjYsiIsbW9udGhOYW1lczpbItqY2KfZhtmI24zZhyIsItmB2YjYsduM2YciLCLZhdin2LHYsyIsItii2YjYsduM2YQiLCLZhdmHIiwi2pjZiNim2YYiLCLamNmI2KbbjNmHIiwi2KfZiNiqIiwi2LPZvtiq2KfZhdio2LEiLCLYp9qp2KrYqNixIiwi2YbZiNin2YXYqNixIiwi2K/Ys9in2YXYqNixIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLZitqp2LTZhtio2YciLCLYr9mI2LTZhtio2YciLCLYs9mH4oCM2LTZhtio2YciLCLahtmH2KfYsdi02YbYqNmHIiwi2b7Zhtis2LTZhtio2YciLCLYrNmF2LnZhyIsIti02YbYqNmHIl0sZGF5TmFtZXNTaG9ydDpbItuMIiwi2K8iLCLYsyIsItqGIiwi2b4iLCLYrCIsIti0Il0sZGF5TmFtZXNNaW46WyLbjCIsItivIiwi2LMiLCLahiIsItm+Iiwi2KwiLCLYtCJdLHdlZWtIZWFkZXI6ItmH2YEiLGRhdGVGb3JtYXQ6Inl5L21tL2RkIixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZmEiLHtidXR0b25UZXh0Onttb250aDoi2YXYp9mHIix3ZWVrOiLZh9mB2KrZhyIsZGF5OiLYsdmI2LIiLGxpc3Q6Itio2LHZhtin2YXZhyJ9LGFsbERheVRleHQ6Itiq2YXYp9mFINix2YjYsiIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuItio24zYtCDYp9iyICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGUpe3ZhciBmPSIiO3N3aXRjaChjKXtjYXNlInMiOnJldHVybiBlPyJtdXV0YW1hbiBzZWt1bm5pbiI6Im11dXRhbWEgc2VrdW50aSI7Y2FzZSJtIjpyZXR1cm4gZT8ibWludXV0aW4iOiJtaW51dXR0aSI7Y2FzZSJtbSI6Zj1lPyJtaW51dXRpbiI6Im1pbnV1dHRpYSI7YnJlYWs7Y2FzZSJoIjpyZXR1cm4gZT8idHVubmluIjoidHVudGkiO2Nhc2UiaGgiOmY9ZT8idHVubmluIjoidHVudGlhIjticmVhaztjYXNlImQiOnJldHVybiBlPyJww6RpdsOkbiI6InDDpGl2w6QiO2Nhc2UiZGQiOmY9ZT8icMOkaXbDpG4iOiJww6RpdsOkw6QiO2JyZWFrO2Nhc2UiTSI6cmV0dXJuIGU/Imt1dWthdWRlbiI6Imt1dWthdXNpIjtjYXNlIk1NIjpmPWU/Imt1dWthdWRlbiI6Imt1dWthdXR0YSI7YnJlYWs7Y2FzZSJ5IjpyZXR1cm4gZT8idnVvZGVuIjoidnVvc2kiO2Nhc2UieXkiOmY9ZT8idnVvZGVuIjoidnVvdHRhIn1yZXR1cm4gZj1kKGEsZSkrIiAiK2Z9ZnVuY3Rpb24gZChhLGIpe3JldHVybiAxMD5hP2I/ZlthXTplW2FdOmF9dmFyIGU9Im5vbGxhIHlrc2kga2Frc2kga29sbWUgbmVsasOkIHZpaXNpIGt1dXNpIHNlaXRzZW3DpG4ga2FoZGVrc2FuIHloZGVrc8OkbiIuc3BsaXQoIiAiKSxmPVsibm9sbGEiLCJ5aGRlbiIsImthaGRlbiIsImtvbG1lbiIsIm5lbGrDpG4iLCJ2aWlkZW4iLCJrdXVkZW4iLGVbN10sZVs4XSxlWzldXTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmaSIse21vbnRoczoidGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoidGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1X21hX3RpX2tlX3RvX3BlX2xhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRG8gTU1NTVt0YV0gWVlZWSIsTExMOiJEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBMVCIsTExMTDoiZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gTFQiLGw6IkQuTS5ZWVlZIixsbDoiRG8gTU1NIFlZWVkiLGxsbDoiRG8gTU1NIFlZWVksIFtrbG9dIExUIixsbGxsOiJkZGQsIERvIE1NTSBZWVlZLCBba2xvXSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdMOkbsOkw6RuXSBba2xvXSBMVCIsbmV4dERheToiW2h1b21lbm5hXSBba2xvXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsb10gTFQiLGxhc3REYXk6IltlaWxlbl0gW2tsb10gTFQiLGxhc3RXZWVrOiJbdmlpbWVdIGRkZGRbbmFdIFtrbG9dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBww6TDpHN0w6QiLHBhc3Q6IiVzIHNpdHRlbiIsczpjLG06YyxtbTpjLGg6YyxoaDpjLGQ6YyxkZDpjLE06YyxNTTpjLHk6Yyx5eTpjfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZmkiLCJmaSIse2Nsb3NlVGV4dDoiU3VsamUiLHByZXZUZXh0OiImI3hBQjtFZGVsbGluZW4iLG5leHRUZXh0OiJTZXVyYWF2YSYjeEJCOyIsY3VycmVudFRleHQ6IlTDpG7DpMOkbiIsbW9udGhOYW1lczpbIlRhbW1pa3V1IiwiSGVsbWlrdXUiLCJNYWFsaXNrdXUiLCJIdWh0aWt1dSIsIlRvdWtva3V1IiwiS2Vzw6RrdXUiLCJIZWluw6RrdXUiLCJFbG9rdXUiLCJTeXlza3V1IiwiTG9rYWt1dSIsIk1hcnJhc2t1dSIsIkpvdWx1a3V1Il0sbW9udGhOYW1lc1Nob3J0OlsiVGFtbWkiLCJIZWxtaSIsIk1hYWxpcyIsIkh1aHRpIiwiVG91a28iLCJLZXPDpCIsIkhlaW7DpCIsIkVsbyIsIlN5eXMiLCJMb2thIiwiTWFycmFzIiwiSm91bHUiXSxkYXlOYW1lc1Nob3J0OlsiU3UiLCJNYSIsIlRpIiwiS2UiLCJUbyIsIlBlIiwiTGEiXSxkYXlOYW1lczpbIlN1bm51bnRhaSIsIk1hYW5hbnRhaSIsIlRpaXN0YWkiLCJLZXNraXZpaWtrbyIsIlRvcnN0YWkiLCJQZXJqYW50YWkiLCJMYXVhbnRhaSJdLGRheU5hbWVzTWluOlsiU3UiLCJNYSIsIlRpIiwiS2UiLCJUbyIsIlBlIiwiTGEiXSx3ZWVrSGVhZGVyOiJWayIsZGF0ZUZvcm1hdDoiZC5tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZmkiLHtidXR0b25UZXh0Onttb250aDoiS3V1a2F1c2kiLHdlZWs6IlZpaWtrbyIsZGF5OiJQw6RpdsOkIixsaXN0OiJUYXBhaHR1bWF0In0sYWxsRGF5VGV4dDoiS29rbyBww6RpdsOkIixldmVudExpbWl0VGV4dDoibGlzw6TDpCJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fr-ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmci1jYSIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hPyJlciI6IiIpfX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJmci1jYSIsImZyLUNBIix7Y2xvc2VUZXh0OiJGZXJtZXIiLHByZXZUZXh0OiJQcsOpY8OpZGVudCIsbmV4dFRleHQ6IlN1aXZhbnQiLGN1cnJlbnRUZXh0OiJBdWpvdXJkJ2h1aSIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZnItY2EiLHtidXR0b25UZXh0Onttb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmciIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hPyJlciI6IiIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZnIiLCJmciIse2Nsb3NlVGV4dDoiRmVybWVyIixwcmV2VGV4dDoiUHLDqWPDqWRlbnQiLG5leHRUZXh0OiJTdWl2YW50IixjdXJyZW50VGV4dDoiQXVqb3VyZCdodWkiLG1vbnRoTmFtZXM6WyJqYW52aWVyIiwiZsOpdnJpZXIiLCJtYXJzIiwiYXZyaWwiLCJtYWkiLCJqdWluIiwianVpbGxldCIsImFvw7t0Iiwic2VwdGVtYnJlIiwib2N0b2JyZSIsIm5vdmVtYnJlIiwiZMOpY2VtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiamFudi4iLCJmw6l2ci4iLCJtYXJzIiwiYXZyLiIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZnIiLHtidXR0b25UZXh0Onttb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/he.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJoZSIse21vbnRoczoi15nXoNeV15DXqF/XpNeR16jXldeQ16hf157XqNelX9eQ16TXqNeZ15xf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXkteV16HXmF/Xodek15jXnteR16hf15DXlden15jXldeR16hf16DXldeR157XkdeoX9eT16bXnteR16giLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IteZ16DXldezX9ek15HXqNezX9ee16jXpV/XkNek16jXs1/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS17Nf16HXpNeY17Nf15DXlden17Nf16DXldeR17Nf15PXptee17MiLnNwbGl0KCJfIiksd2Vla2RheXM6Iteo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLXkNezX9eR17Nf15LXs1/Xk9ezX9eU17Nf15XXs1/XqdezIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLXkF/XkV/Xkl/Xk1/XlF/XlV/XqSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBb15FdTU1NTSBZWVlZIixMTEw6IkQgW9eRXU1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBb15FdTU1NTSBZWVlZIExUIixsOiJEL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBMVCIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvXlNeZ15XXnSDXkda+XUxUIixuZXh0RGF5OiJb157Xl9eoINeR1r5dTFQiLG5leHRXZWVrOiJkZGRkIFvXkdep16LXlF0gTFQiLGxhc3REYXk6IlvXkNeq157XldecINeR1r5dTFQiLGxhc3RXZWVrOiJb15HXmdeV151dIGRkZGQgW9eU15DXl9eo15XXnyDXkdep16LXlF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IteR16LXldeTICVzIixwYXN0OiLXnNek16DXmSAlcyIsczoi157Xodek16gg16nXoNeZ15XXqiIsbToi15PXp9eUIixtbToiJWQg15PXp9eV16oiLGg6Itep16LXlCIsaGg6ZnVuY3Rpb24oYSl7cmV0dXJuIDI9PT1hPyLXqdei16rXmdeZ150iOmErIiDXqdei15XXqiJ9LGQ6IteZ15XXnSIsZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIDI9PT1hPyLXmdeV157XmdeZ150iOmErIiDXmdee15nXnSJ9LE06IteX15XXk9epIixNTTpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/IteX15XXk9ep15nXmdedIjphKyIg15fXldeT16nXmdedIn0seToi16nXoNeUIix5eTpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/Itep16DXqteZ15nXnSI6YSUxMD09PTAmJjEwIT09YT9hKyIg16nXoNeUIjphKyIg16nXoNeZ150ifX19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiaGUiLCJoZSIse2Nsb3NlVGV4dDoi16HXkteV16giLHByZXZUZXh0OiImI3gzQzvXlNen15XXk9edIixuZXh0VGV4dDoi15TXkdeQJiN4M0U7IixjdXJyZW50VGV4dDoi15TXmdeV150iLG1vbnRoTmFtZXM6WyLXmdeg15XXkNeoIiwi16TXkdeo15XXkNeoIiwi157XqNelIiwi15DXpNeo15nXnCIsItee15DXmSIsIteZ15XXoNeZIiwi15nXldec15kiLCLXkNeV15LXldeh15giLCLXodek15jXnteR16giLCLXkNeV16fXmNeV15HXqCIsIteg15XXkdee15HXqCIsIteT16bXnteR16giXSxtb250aE5hbWVzU2hvcnQ6WyLXmdeg15UiLCLXpNeR16giLCLXnteo16UiLCLXkNek16giLCLXnteQ15kiLCLXmdeV16DXmSIsIteZ15XXnNeZIiwi15DXldeSIiwi16HXpNeYIiwi15DXldenIiwi16DXldeRIiwi15PXpteeIl0sZGF5TmFtZXM6WyLXqNeQ16nXldefIiwi16nXoNeZIiwi16nXnNeZ16nXmSIsIteo15HXmdei15kiLCLXl9ee15nXqdeZIiwi16nXmdep15kiLCLXqdeR16oiXSxkYXlOYW1lc1Nob3J0Olsi15AnIiwi15EnIiwi15InIiwi15MnIiwi15QnIiwi15UnIiwi16nXkdeqIl0sZGF5TmFtZXNNaW46WyLXkCciLCLXkSciLCLXkiciLCLXkyciLCLXlCciLCLXlSciLCLXqdeR16oiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJoZSIse2RlZmF1bHRCdXR0b25UZXh0Onttb250aDoi15fXldeT16kiLHdlZWs6Itep15HXldeiIixkYXk6IteZ15XXnSIsbGlzdDoi16HXk9eoINeZ15XXnSJ9LHdlZWtOdW1iZXJUaXRsZToi16nXkdeV16IiLGFsbERheVRleHQ6Iteb15wg15TXmdeV150iLGV2ZW50TGltaXRUZXh0OiLXkNeX16gifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/hi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi4KWnIiwyOiLgpagiLDM6IuClqSIsNDoi4KWqIiw1OiLgpasiLDY6IuClrCIsNzoi4KWtIiw4OiLgpa4iLDk6IuClryIsMDoi4KWmIn0sZD17IuClpyI6IjEiLCLgpagiOiIyIiwi4KWpIjoiMyIsIuClqiI6IjQiLCLgpasiOiI1Iiwi4KWsIjoiNiIsIuClrSI6IjciLCLgpa4iOiI4Iiwi4KWvIjoiOSIsIuClpiI6IjAifTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJoaSIse21vbnRoczoi4KSc4KSo4KS14KSw4KWAX+Ckq+CkvOCksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkruCljeCkrOCksF/gpKbgpL/gpLjgpK7gpY3gpKzgpLAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuCknOCkqC5f4KSr4KS84KSwLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWILl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksi5f4KSF4KSXLl/gpLjgpL/gpKQuX+CkheCkleCljeCkn+Clgi5f4KSo4KS1Ll/gpKbgpL/gpLguIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLJf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0g4KSs4KSc4KWHIixMVFM6IkEgaDptbTpzcyDgpKzgpJzgpYciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4KSG4KScXSBMVCIsbmV4dERheToiW+CkleCksl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW+CkleCksl0gTFQiLGxhc3RXZWVrOiJb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg4KSu4KWH4KSCIixwYXN0OiIlcyDgpKrgpLngpLLgpYciLHM6IuCkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjIixtOiLgpI/gpJUg4KSu4KS/4KSo4KSfIixtbToiJWQg4KSu4KS/4KSo4KSfIixoOiLgpI/gpJUg4KSY4KSC4KSf4KS+IixoaDoiJWQg4KSY4KSC4KSf4KWHIixkOiLgpI/gpJUg4KSm4KS/4KSoIixkZDoiJWQg4KSm4KS/4KSoIixNOiLgpI/gpJUg4KSu4KS54KWA4KSo4KWHIixNTToiJWQg4KSu4KS54KWA4KSo4KWHIix5OiLgpI/gpJUg4KS14KSw4KWN4KS3Iix5eToiJWQg4KS14KSw4KWN4KS3In0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZyxmdW5jdGlvbihhKXtyZXR1cm4gZFthXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KX0sbWVyaWRpZW1QYXJzZTov4KSw4KS+4KSkfOCkuOClgeCkrOCkuXzgpKbgpYvgpKrgpLngpLB84KS24KS+4KSuLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi4KSw4KS+4KSkIj09PWI/ND5hP2E6YSsxMjoi4KS44KWB4KSs4KS5Ij09PWI/YToi4KSm4KWL4KSq4KS54KSwIj09PWI/YT49MTA/YTphKzEyOiLgpLbgpL7gpK4iPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiA0PmE/IuCksOCkvuCkpCI6MTA+YT8i4KS44KWB4KSs4KS5IjoxNz5hPyLgpKbgpYvgpKrgpLngpLAiOjIwPmE/IuCktuCkvuCkriI6IuCksOCkvuCkpCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJoaSIsImhpIix7Y2xvc2VUZXh0OiLgpKzgpILgpKYiLHByZXZUZXh0OiLgpKrgpL/gpJvgpLLgpL4iLG5leHRUZXh0OiLgpIXgpJfgpLLgpL4iLGN1cnJlbnRUZXh0OiLgpIbgpJwiLG1vbnRoTmFtZXM6WyLgpJzgpKjgpLXgpLDgpYAgIiwi4KSr4KSw4KS14KSw4KWAIiwi4KSu4KS+4KSw4KWN4KSaIiwi4KSF4KSq4KWN4KSw4KWH4KSyIiwi4KSu4KSIIiwi4KSc4KWC4KSoIiwi4KSc4KWC4KSy4KS+4KSIIiwi4KSF4KSX4KS44KWN4KSkICIsIuCkuOCkv+CkpOCkruCljeCkrOCksCIsIuCkheCkleCljeCkn+ClguCkrOCksCIsIuCkqOCkteCkruCljeCkrOCksCIsIuCkpuCkv+CkuOCkruCljeCkrOCksCJdLG1vbnRoTmFtZXNTaG9ydDpbIuCknOCkqCIsIuCkq+CksCIsIuCkruCkvuCksOCljeCkmiIsIuCkheCkquCljeCksOClh+CksiIsIuCkruCkiCIsIuCknOClguCkqCIsIuCknOClguCksuCkvuCkiCIsIuCkheCklyIsIuCkuOCkv+CkpCIsIuCkheCkleCljeCknyIsIuCkqOCktSIsIuCkpuCkvyJdLGRheU5hbWVzOlsi4KSw4KS14KS/4KS14KS+4KSwIiwi4KS44KWL4KSu4KS14KS+4KSwIiwi4KSu4KSC4KSX4KSy4KS14KS+4KSwIiwi4KSs4KWB4KSn4KS14KS+4KSwIiwi4KSX4KWB4KSw4KWB4KS14KS+4KSwIiwi4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwIiwi4KS24KSo4KS/4KS14KS+4KSwIl0sZGF5TmFtZXNTaG9ydDpbIuCksOCkteCkvyIsIuCkuOCli+CkriIsIuCkruCkguCkl+CksiIsIuCkrOClgeCkpyIsIuCkl+ClgeCksOClgSIsIuCktuClgeCkleCljeCksCIsIuCktuCkqOCkvyJdLGRheU5hbWVzTWluOlsi4KSw4KS14KS/Iiwi4KS44KWL4KSuIiwi4KSu4KSC4KSX4KSyIiwi4KSs4KWB4KSnIiwi4KSX4KWB4KSw4KWBIiwi4KS24KWB4KSV4KWN4KSwIiwi4KS24KSo4KS/Il0sd2Vla0hlYWRlcjoi4KS54KSr4KWN4KSk4KS+IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhpIix7YnV0dG9uVGV4dDp7bW9udGg6IuCkruCkueClgOCkqOCkviIsd2Vlazoi4KS44KSq4KWN4KSk4KS+4KS5IixkYXk6IuCkpuCkv+CkqCIsbGlzdDoi4KSV4KS+4KSw4KWN4KSv4KS44KWC4KSa4KWAIn0sYWxsRGF5VGV4dDoi4KS44KSt4KWAIOCkpuCkv+CkqCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIivgpIXgpKfgpL/gpJUgIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/hr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gZCs9MT09PWE/Im1pbnV0YSI6Mj09PWF8fDM9PT1hfHw0PT09YT8ibWludXRlIjoibWludXRhIjtjYXNlImgiOnJldHVybiBiPyJqZWRhbiBzYXQiOiJqZWRub2cgc2F0YSI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJzYXQiOjI9PT1hfHwzPT09YXx8ND09PWE/InNhdGEiOiJzYXRpIjtjYXNlImRkIjpyZXR1cm4gZCs9MT09PWE/ImRhbiI6ImRhbmEiO2Nhc2UiTU0iOnJldHVybiBkKz0xPT09YT8ibWplc2VjIjoyPT09YXx8Mz09PWF8fDQ9PT1hPyJtamVzZWNhIjoibWplc2VjaSI7Y2FzZSJ5eSI6cmV0dXJuIGQrPTE9PT1hPyJnb2RpbmEiOjI9PT1hfHwzPT09YXx8ND09PWE/ImdvZGluZSI6ImdvZGluYSJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhyIix7bW9udGhzOiJzamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoic2plLl92ZWwuX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJuZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixtOmMsbW06YyxoOmMsaGg6YyxkOiJkYW4iLGRkOmMsTToibWplc2VjIixNTTpjLHk6ImdvZGludSIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImhyIiwiaHIiLHtjbG9zZVRleHQ6IlphdHZvcmkiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiJEYW5hcyIsbW9udGhOYW1lczpbIlNpamXEjWFuaiIsIlZlbGphxI1hIiwiT8W+dWphayIsIlRyYXZhbmoiLCJTdmliYW5qIiwiTGlwYW5qIiwiU3JwYW5qIiwiS29sb3ZveiIsIlJ1amFuIiwiTGlzdG9wYWQiLCJTdHVkZW5pIiwiUHJvc2luYWMiXSxtb250aE5hbWVzU2hvcnQ6WyJTaWoiLCJWZWxqIiwiT8W+dSIsIlRyYSIsIlN2aSIsIkxpcCIsIlNycCIsIktvbCIsIlJ1aiIsIkxpcyIsIlN0dSIsIlBybyJdLGRheU5hbWVzOlsiTmVkamVsamEiLCJQb25lZGplbGphayIsIlV0b3JhayIsIlNyaWplZGEiLCLEjGV0dnJ0YWsiLCJQZXRhayIsIlN1Ym90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTcmkiLCLEjGV0IiwiUGV0IiwiU3ViIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTciIsIsSMZSIsIlBlIiwiU3UiXSx3ZWVrSGVhZGVyOiJUamUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5LiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhyIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1qZXNlYyIsd2VlazoiVGplZGFuIixkYXk6IkRhbiIsbGlzdDoiUmFzcG9yZWQifSxhbGxEYXlUZXh0OiJDaWplbGkgZGFuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyBqb8WhICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/hu.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3ZhciBlPWE7c3dpdGNoKGMpe2Nhc2UicyI6cmV0dXJuIGR8fGI/Im7DqWjDoW55IG3DoXNvZHBlcmMiOiJuw6low6FueSBtw6Fzb2RwZXJjZSI7Y2FzZSJtIjpyZXR1cm4iZWd5IisoZHx8Yj8iIHBlcmMiOiIgcGVyY2UiKTtjYXNlIm1tIjpyZXR1cm4gZSsoZHx8Yj8iIHBlcmMiOiIgcGVyY2UiKTtjYXNlImgiOnJldHVybiJlZ3kiKyhkfHxiPyIgw7NyYSI6IiDDs3LDoWphIik7Y2FzZSJoaCI6cmV0dXJuIGUrKGR8fGI/IiDDs3JhIjoiIMOzcsOhamEiKTtjYXNlImQiOnJldHVybiJlZ3kiKyhkfHxiPyIgbmFwIjoiIG5hcGphIik7Y2FzZSJkZCI6cmV0dXJuIGUrKGR8fGI/IiBuYXAiOiIgbmFwamEiKTtjYXNlIk0iOnJldHVybiJlZ3kiKyhkfHxiPyIgaMOzbmFwIjoiIGjDs25hcGphIik7Y2FzZSJNTSI6cmV0dXJuIGUrKGR8fGI/IiBow7NuYXAiOiIgaMOzbmFwamEiKTtjYXNlInkiOnJldHVybiJlZ3kiKyhkfHxiPyIgw6l2IjoiIMOpdmUiKTtjYXNlInl5IjpyZXR1cm4gZSsoZHx8Yj8iIMOpdiI6IiDDqXZlIil9cmV0dXJuIiJ9ZnVuY3Rpb24gZChhKXtyZXR1cm4oYT8iIjoiW23Dumx0XSAiKSsiWyIrZVt0aGlzLmRheSgpXSsiXSBMVFsta29yXSJ9dmFyIGU9InZhc8Ohcm5hcCBow6l0ZsWRbiBrZWRkZW4gc3plcmTDoW4gY3PDvHTDtnJ0w7Zrw7ZuIHDDqW50ZWtlbiBzem9tYmF0b24iLnNwbGl0KCIgIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiaHUiLHttb250aHM6ImphbnXDoXJfZmVicnXDoXJfbcOhcmNpdXNfw6FwcmlsaXNfbcOhanVzX2rDum5pdXNfasO6bGl1c19hdWd1c3p0dXNfc3plcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tw6FyY1/DoXByX23DoWpfasO6bl9qw7psX2F1Z19zemVwdF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoidmFzw6FybmFwX2jDqXRmxZFfa2VkZF9zemVyZGFfY3PDvHTDtnJ0w7ZrX3DDqW50ZWtfc3pvbWJhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ2YXNfaMOpdF9rZWRkX3N6ZV9jc8O8dF9ww6luX3N6byIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoidl9oX2tfc3plX2NzX3Bfc3pvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4sIExUIixMTExMOiJZWVlZLiBNTU1NIEQuLCBkZGRkIExUIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiJ1Ij09PWEuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT9jPT09ITA/ImRlIjoiREUiOmM9PT0hMD8iZHUiOiJEVSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMsITEpfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBtw7psdmEiLHBhc3Q6IiVzIixzOmMsbTpjLG1tOmMsaDpjLGhoOmMsZDpjLGRkOmMsTTpjLE1NOmMseTpjLHl5OmN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJodSIsImh1Iix7Y2xvc2VUZXh0OiJiZXrDoXIiLHByZXZUZXh0OiJ2aXNzemEiLG5leHRUZXh0OiJlbMWRcmUiLGN1cnJlbnRUZXh0OiJtYSIsbW9udGhOYW1lczpbIkphbnXDoXIiLCJGZWJydcOhciIsIk3DoXJjaXVzIiwiw4FwcmlsaXMiLCJNw6FqdXMiLCJKw7puaXVzIiwiSsO6bGl1cyIsIkF1Z3VzenR1cyIsIlN6ZXB0ZW1iZXIiLCJPa3TDs2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNw6FyIiwiw4FwciIsIk3DoWoiLCJKw7puIiwiSsO6bCIsIkF1ZyIsIlN6ZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlZhc8Ohcm5hcCIsIkjDqXRmxZEiLCJLZWRkIiwiU3plcmRhIiwiQ3PDvHTDtnJ0w7ZrIiwiUMOpbnRlayIsIlN6b21iYXQiXSxkYXlOYW1lc1Nob3J0OlsiVmFzIiwiSMOpdCIsIktlZCIsIlN6ZSIsIkNzw7wiLCJQw6luIiwiU3pvIl0sZGF5TmFtZXNNaW46WyJWIiwiSCIsIksiLCJTemUiLCJDcyIsIlAiLCJTem8iXSx3ZWVrSGVhZGVyOiJIw6l0IixkYXRlRm9ybWF0OiJ5eS5tbS5kZC4iLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJodSIse2J1dHRvblRleHQ6e21vbnRoOiJIw7NuYXAiLHdlZWs6IkjDqXQiLGRheToiTmFwIixsaXN0OiJOYXBsw7MifSxhbGxEYXlUZXh0OiJFZ8Opc3ogbmFwIixldmVudExpbWl0VGV4dDoidG92w6FiYmkifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/id.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpZCIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkxULnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBMVCJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEyPT09YSYmKGE9MCksInBhZ2kiPT09Yj9hOiJzaWFuZyI9PT1iP2E+PTExP2E6YSsxMjoic29yZSI9PT1ifHwibWFsYW0iPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMT5hPyJwYWdpIjoxNT5hPyJzaWFuZyI6MTk+YT8ic29yZSI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltCZXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZW1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xhbHUgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsYWx1IixzOiJiZWJlcmFwYSBkZXRpayIsbToic2VtZW5pdCIsbW06IiVkIG1lbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiaWQiLCJpZCIse2Nsb3NlVGV4dDoiVHV0dXAiLHByZXZUZXh0OiImI3gzQzttdW5kdXIiLG5leHRUZXh0OiJtYWp1JiN4M0U7IixjdXJyZW50VGV4dDoiaGFyaSBpbmkiLG1vbnRoTmFtZXM6WyJKYW51YXJpIiwiRmVicnVhcmkiLCJNYXJldCIsIkFwcmlsIiwiTWVpIiwiSnVuaSIsIkp1bGkiLCJBZ3VzdHVzIiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vcGVtYmVyIiwiRGVzZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNZWkiLCJKdW4iLCJKdWwiLCJBZ3VzIiwiU2VwIiwiT2t0IiwiTm9wIiwiRGVzIl0sZGF5TmFtZXM6WyJNaW5nZ3UiLCJTZW5pbiIsIlNlbGFzYSIsIlJhYnUiLCJLYW1pcyIsIkp1bWF0IiwiU2FidHUiXSxkYXlOYW1lc1Nob3J0OlsiTWluIiwiU2VuIiwiU2VsIiwiUmFiIiwia2FtIiwiSnVtIiwiU2FiIl0sZGF5TmFtZXNNaW46WyJNZyIsIlNuIiwiU2wiLCJSYiIsIkttIiwiam0iLCJTYiJdLHdlZWtIZWFkZXI6Ik1nIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImlkIix7YnV0dG9uVGV4dDp7bW9udGg6IkJ1bGFuIix3ZWVrOiJNaW5nZ3UiLGRheToiSGFyaSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiU2VoYXJpPGJyLz5wZW51aCIsZXZlbnRMaW1pdFRleHQ6ImxlYmloIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/is.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhJTEwMD09PTExPyEwOmElMTA9PT0xPyExOiEwfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/Im5va2tyYXIgc2Vrw7puZHVyIjoibm9ra3J1bSBzZWvDum5kdW0iO2Nhc2UibSI6cmV0dXJuIGI/Im3DrW7DunRhIjoibcOtbsO6dHUiO2Nhc2UibW0iOnJldHVybiBjKGEpP2YrKGJ8fGU/Im3DrW7DunR1ciI6Im3DrW7DunR1bSIpOmI/ZisibcOtbsO6dGEiOmYrIm3DrW7DunR1IjtjYXNlImhoIjpyZXR1cm4gYyhhKT9mKyhifHxlPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOmYrImtsdWtrdXN0dW5kIjtjYXNlImQiOnJldHVybiBiPyJkYWd1ciI6ZT8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIGMoYSk/Yj9mKyJkYWdhciI6ZisoZT8iZGFnYSI6ImTDtmd1bSIpOmI/ZisiZGFndXIiOmYrKGU/ImRhZyI6ImRlZ2kiKTtjYXNlIk0iOnJldHVybiBiPyJtw6FudcOwdXIiOmU/Im3DoW51w7AiOiJtw6FudcOwaSI7Y2FzZSJNTSI6cmV0dXJuIGMoYSk/Yj9mKyJtw6FudcOwaXIiOmYrKGU/Im3DoW51w7BpIjoibcOhbnXDsHVtIik6Yj9mKyJtw6FudcOwdXIiOmYrKGU/Im3DoW51w7AiOiJtw6FudcOwaSIpO2Nhc2UieSI6cmV0dXJuIGJ8fGU/IsOhciI6IsOhcmkiO2Nhc2UieXkiOnJldHVybiBjKGEpP2YrKGJ8fGU/IsOhciI6IsOhcnVtIik6ZisoYnx8ZT8iw6FyIjoiw6FyaSIpfX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpcyIse21vbnRoczoiamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW8OtIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbw6EgbW9yZ3VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbw60gZ8OmciBrbC5dIExUIixsYXN0V2VlazoiW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHPDrcOwYW4iLHM6ZCxtOmQsbW06ZCxoOiJrbHVra3VzdHVuZCIsaGg6ZCxkOmQsZGQ6ZCxNOmQsTU06ZCx5OmQseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImlzIiwiaXMiLHtjbG9zZVRleHQ6Ikxva2EiLHByZXZUZXh0OiImI3gzQzsgRnlycmkiLG5leHRUZXh0OiJOw6ZzdGkgJiN4M0U7IixjdXJyZW50VGV4dDoiw40gZGFnIixtb250aE5hbWVzOlsiSmFuw7phciIsIkZlYnLDumFyIiwiTWFycyIsIkFwcsOtbCIsIk1hw60iLCJKw7puw60iLCJKw7psw60iLCLDgWfDunN0IiwiU2VwdGVtYmVyIiwiT2t0w7NiZXIiLCJOw7N2ZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hw60iLCJKw7puIiwiSsO6bCIsIsOBZ8O6IiwiU2VwIiwiT2t0IiwiTsOzdiIsIkRlcyJdLGRheU5hbWVzOlsiU3VubnVkYWd1ciIsIk3DoW51ZGFndXIiLCLDnnJpw7BqdWRhZ3VyIiwiTWnDsHZpa3VkYWd1ciIsIkZpbW10dWRhZ3VyIiwiRsO2c3R1ZGFndXIiLCJMYXVnYXJkYWd1ciJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNw6FuIiwiw55yaSIsIk1pw7AiLCJGaW0iLCJGw7ZzIiwiTGF1Il0sZGF5TmFtZXNNaW46WyJTdSIsIk3DoSIsIsOeciIsIk1pIiwiRmkiLCJGw7YiLCJMYSJdLHdlZWtIZWFkZXI6IlZpa2EiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaXMiLHtidXR0b25UZXh0Onttb250aDoiTcOhbnXDsHVyIix3ZWVrOiJWaWthIixkYXk6IkRhZ3VyIixsaXN0OiJEYWdza3LDoSJ9LGFsbERheUh0bWw6IkFsbGFuPGJyLz5kYWdpbm4iLGV2ZW50TGltaXRUZXh0OiJtZWlyYSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/it.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpdCIse21vbnRoczoiZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRG9tZW5pY2FfTHVuZWTDrF9NYXJ0ZWTDrF9NZXJjb2xlZMOsX0dpb3ZlZMOsX1ZlbmVyZMOsX1NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fTHVuX01hcl9NZXJfR2lvX1Zlbl9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRfTF9NYV9NZV9HX1ZfUyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPZ2dpIGFsbGVdIExUIixuZXh0RGF5OiJbRG9tYW5pIGFsbGVdIExUIixuZXh0V2VlazoiZGRkZCBbYWxsZV0gTFQiLGxhc3REYXk6IltJZXJpIGFsbGVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUIjtkZWZhdWx0OnJldHVybiJbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uKGEpe3JldHVybigvXlswLTldLiskLy50ZXN0KGEpPyJ0cmEiOiJpbiIpKyIgIithfSxwYXN0OiIlcyBmYSIsczoiYWxjdW5pIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiaXQiLCJpdCIse2Nsb3NlVGV4dDoiQ2hpdWRpIixwcmV2VGV4dDoiJiN4M0M7UHJlYyIsbmV4dFRleHQ6IlN1Y2MmI3gzRTsiLGN1cnJlbnRUZXh0OiJPZ2dpIixtb250aE5hbWVzOlsiR2VubmFpbyIsIkZlYmJyYWlvIiwiTWFyem8iLCJBcHJpbGUiLCJNYWdnaW8iLCJHaXVnbm8iLCJMdWdsaW8iLCJBZ29zdG8iLCJTZXR0ZW1icmUiLCJPdHRvYnJlIiwiTm92ZW1icmUiLCJEaWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbIkdlbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hZyIsIkdpdSIsIkx1ZyIsIkFnbyIsIlNldCIsIk90dCIsIk5vdiIsIkRpYyJdLGRheU5hbWVzOlsiRG9tZW5pY2EiLCJMdW5lZMOsIiwiTWFydGVkw6wiLCJNZXJjb2xlZMOsIiwiR2lvdmVkw6wiLCJWZW5lcmTDrCIsIlNhYmF0byJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJMdW4iLCJNYXIiLCJNZXIiLCJHaW8iLCJWZW4iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkRvIiwiTHUiLCJNYSIsIk1lIiwiR2kiLCJWZSIsIlNhIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaXQiLHtidXR0b25UZXh0Onttb250aDoiTWVzZSIsd2VlazoiU2V0dGltYW5hIixkYXk6Ikdpb3JubyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiVHV0dG8gaWw8YnIvPmdpb3JubyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIithbHRyaSAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ja.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJqYSIse21vbnRoczoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLml6Xmm5zml6Vf5pyI5puc5pelX+eBq+abnOaXpV/msLTmm5zml6Vf5pyo5puc5pelX+mHkeabnOaXpV/lnJ/mm5zml6UiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOaZgm3liIYiLExUUzoiTFRz56eSIixMOiJZWVlZL01NL0REIixMTDoiWVlZWeW5tE3mnIhE5pelIixMTEw6IllZWVnlubRN5pyIROaXpUxUIixMTExMOiJZWVlZ5bm0TeaciETml6VMVCBkZGRkIn0sbWVyaWRpZW1QYXJzZTov5Y2I5YmNfOWNiOW+jC9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuIuWNiOW+jCI9PT1hfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDEyPmE/IuWNiOWJjSI6IuWNiOW+jCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb5LuK5pelXSBMVCIsbmV4dERheToiW+aYjuaXpV0gTFQiLG5leHRXZWVrOiJb5p2l6YCxXWRkZGQgTFQiLGxhc3REYXk6IlvmmKjml6VdIExUIixsYXN0V2VlazoiW+WJjemAsV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+W+jCIscGFzdDoiJXPliY0iLHM6IuaVsOenkiIsbToiMeWIhiIsbW06IiVk5YiGIixoOiIx5pmC6ZaTIixoaDoiJWTmmYLplpMiLGQ6IjHml6UiLGRkOiIlZOaXpSIsTToiMeODtuaciCIsTU06IiVk44O25pyIIix5OiIx5bm0Iix5eToiJWTlubQifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJqYSIsImphIix7Y2xvc2VUZXh0OiLplonjgZjjgosiLHByZXZUZXh0OiImI3gzQzvliY0iLG5leHRUZXh0OiLmrKEmI3gzRTsiLGN1cnJlbnRUZXh0OiLku4rml6UiLG1vbnRoTmFtZXM6WyIx5pyIIiwiMuaciCIsIjPmnIgiLCI05pyIIiwiNeaciCIsIjbmnIgiLCI35pyIIiwiOOaciCIsIjnmnIgiLCIxMOaciCIsIjEx5pyIIiwiMTLmnIgiXSxtb250aE5hbWVzU2hvcnQ6WyIx5pyIIiwiMuaciCIsIjPmnIgiLCI05pyIIiwiNeaciCIsIjbmnIgiLCI35pyIIiwiOOaciCIsIjnmnIgiLCIxMOaciCIsIjEx5pyIIiwiMTLmnIgiXSxkYXlOYW1lczpbIuaXpeabnOaXpSIsIuaciOabnOaXpSIsIueBq+abnOaXpSIsIuawtOabnOaXpSIsIuacqOabnOaXpSIsIumHkeabnOaXpSIsIuWcn+abnOaXpSJdLGRheU5hbWVzU2hvcnQ6WyLml6UiLCLmnIgiLCLngasiLCLmsLQiLCLmnKgiLCLph5EiLCLlnJ8iXSxkYXlOYW1lc01pbjpbIuaXpSIsIuaciCIsIueBqyIsIuawtCIsIuacqCIsIumHkSIsIuWcnyJdLHdlZWtIZWFkZXI6IumAsSIsZGF0ZUZvcm1hdDoieXkvbW0vZGQiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IuW5tCJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJqYSIse2J1dHRvblRleHQ6e21vbnRoOiLmnIgiLHdlZWs6IumAsSIsZGF5OiLml6UiLGxpc3Q6IuS6iOWumuODquOCueODiCJ9LGFsbERheVRleHQ6Iue1guaXpSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIuS7liAiK2ErIiDku7YifX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ko.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJrbyIse21vbnRoczoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGjsi5wgbeu2hCIsTFRTOiJBIGjsi5wgbeu2hCBz7LSIIixMOiJZWVlZLk1NLkREIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBNTU1NIETsnbwgTFQiLExMTEw6IllZWVnrhYQgTU1NTSBE7J28IGRkZGQgTFQifSxjYWxlbmRhcjp7c2FtZURheToi7Jik64qYIExUIixuZXh0RGF5OiLrgrTsnbwgTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiLslrTsoJwgTFQiLGxhc3RXZWVrOiLsp4Drgpzso7wgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg7ZuEIixwYXN0OiIlcyDsoIQiLHM6Iuuqh+y0iCIsc3M6IiVk7LSIIixtOiLsnbzrtoQiLG1tOiIlZOu2hCIsaDoi7ZWc7Iuc6rCEIixoaDoiJWTsi5zqsIQiLGQ6Iu2VmOujqCIsZGQ6IiVk7J28IixNOiLtlZzri6wiLE1NOiIlZOuLrCIseToi7J2864WEIix5eToiJWTrhYQifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3snbwvLG9yZGluYWw6IiVk7J28IixtZXJpZGllbVBhcnNlOi/smKTsoIR87Jik7ZuELyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLsmKTtm4QiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLsmKTsoIQiOiLsmKTtm4QifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJrbyIsImtvIix7Y2xvc2VUZXh0OiLri6vquLAiLHByZXZUZXh0OiLsnbTsoITri6wiLG5leHRUZXh0OiLri6TsnYzri6wiLGN1cnJlbnRUZXh0OiLsmKTripgiLG1vbnRoTmFtZXM6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxtb250aE5hbWVzU2hvcnQ6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxkYXlOYW1lczpbIuydvOyalOydvCIsIuyblOyalOydvCIsIu2ZlOyalOydvCIsIuyImOyalOydvCIsIuuqqeyalOydvCIsIuq4iOyalOydvCIsIu2GoOyalOydvCJdLGRheU5hbWVzU2hvcnQ6WyLsnbwiLCLsm5QiLCLtmZQiLCLsiJgiLCLrqqkiLCLquIgiLCLthqAiXSxkYXlOYW1lc01pbjpbIuydvCIsIuyblCIsIu2ZlCIsIuyImCIsIuuqqSIsIuq4iCIsIu2GoCJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi64WEIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImtvIix7YnV0dG9uVGV4dDp7bW9udGg6IuyblCIsd2Vlazoi7KO8IixkYXk6IuydvCIsbGlzdDoi7J287KCV66qp66GdIn0sYWxsRGF5VGV4dDoi7KKF7J28IixldmVudExpbWl0VGV4dDoi6rCcIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/lt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3JldHVybiBiPyJrZWxpb3Mgc2VrdW5kxJdzIjpkPyJrZWxpxbMgc2VrdW5kxb5pxbMiOiJrZWxpYXMgc2VrdW5kZXMifWZ1bmN0aW9uIGQoYSxiLGMsZCl7cmV0dXJuIGI/ZihjKVswXTpkP2YoYylbMV06ZihjKVsyXX1mdW5jdGlvbiBlKGEpe3JldHVybiBhJTEwPT09MHx8YT4xMCYmMjA+YX1mdW5jdGlvbiBmKGEpe3JldHVybiBpW2FdLnNwbGl0KCJfIil9ZnVuY3Rpb24gZyhhLGIsYyxnKXt2YXIgaD1hKyIgIjtyZXR1cm4gMT09PWE/aCtkKGEsYixjWzBdLGcpOmI/aCsoZShhKT9mKGMpWzFdOmYoYylbMF0pOmc/aCtmKGMpWzFdOmgrKGUoYSk/ZihjKVsxXTpmKGMpWzJdKX1mdW5jdGlvbiBoKGEsYil7dmFyIGM9LTE9PT1iLmluZGV4T2YoImRkZGQgSEg6bW0iKSxkPWpbYS5kYXkoKV07cmV0dXJuIGM/ZDpkLnN1YnN0cmluZygwLGQubGVuZ3RoLTIpKyLEryJ9dmFyIGk9e206Im1pbnV0xJdfbWludXTEl3NfbWludXTEmSIsbW06Im1pbnV0xJdzX21pbnXEjWnFs19taW51dGVzIixoOiJ2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZMSFIixoaDoidmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMiLGQ6ImRpZW5hX2RpZW5vc19kaWVuxIUiLGRkOiJkaWVub3NfZGllbsWzX2RpZW5hcyIsTToibcSXbnVvX23El25lc2lvX23El25lc8SvIixNTToibcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMiLHk6Im1ldGFpX21ldMWzX21ldHVzIix5eToibWV0YWlfbWV0xbNfbWV0dXMifSxqPSJzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzIi5zcGxpdCgiXyIpOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImx0Iix7bW9udGhzOiJzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpoLHdlZWtkYXlzU2hvcnQ6IlNla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fxaAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIExUIFt2YWwuXSIsTExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBMVCBbdmFsLl0iLGw6IllZWVktTU0tREQiLGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0iLGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBMVCBbdmFsLl0iLGxsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBMVCBbdmFsLl0ifSxjYWxlbmRhcjp7c2FtZURheToiW8WgaWFuZGllbl0gTFQiLG5leHREYXk6IltSeXRval0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbVmFrYXJdIExUIixsYXN0V2VlazoiW1ByYcSXanVzxK9dIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBvICVzIixwYXN0OiJwcmllxaEgJXMiLHM6YyxtOmQsbW06ZyxoOmQsaGg6ZyxkOmQsZGQ6ZyxNOmQsTU06Zyx5OmQseXk6Z30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LW9qaS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsiLW9qaSJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJsdCIsImx0Iix7Y2xvc2VUZXh0OiJVxb5kYXJ5dGkiLHByZXZUZXh0OiImI3gzQztBdGdhbCIsbmV4dFRleHQ6IlBpcm15biYjeDNFOyIsY3VycmVudFRleHQ6IsWgaWFuZGllbiIsbW9udGhOYW1lczpbIlNhdXNpcyIsIlZhc2FyaXMiLCJLb3ZhcyIsIkJhbGFuZGlzIiwiR2VndcW+xJciLCJCaXLFvmVsaXMiLCJMaWVwYSIsIlJ1Z3Bqxat0aXMiLCJSdWdzxJdqaXMiLCJTcGFsaXMiLCJMYXBrcml0aXMiLCJHcnVvZGlzIl0sbW9udGhOYW1lc1Nob3J0OlsiU2F1IiwiVmFzIiwiS292IiwiQmFsIiwiR2VnIiwiQmlyIiwiTGllIiwiUnVncCIsIlJ1Z3MiLCJTcGEiLCJMYXAiLCJHcnUiXSxkYXlOYW1lczpbInNla21hZGllbmlzIiwicGlybWFkaWVuaXMiLCJhbnRyYWRpZW5pcyIsInRyZcSNaWFkaWVuaXMiLCJrZXR2aXJ0YWRpZW5pcyIsInBlbmt0YWRpZW5pcyIsIsWhZcWhdGFkaWVuaXMiXSxkYXlOYW1lc1Nob3J0Olsic2VrIiwicGlyIiwiYW50IiwidHJlIiwia2V0IiwicGVuIiwixaFlxaEiXSxkYXlOYW1lc01pbjpbIlNlIiwiUHIiLCJBbiIsIlRyIiwiS2UiLCJQZSIsIsWgZSJdLHdlZWtIZWFkZXI6IlNBViIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJsdCIse2J1dHRvblRleHQ6e21vbnRoOiJNxJdudW8iLHdlZWs6IlNhdmFpdMSXIixkYXk6IkRpZW5hIixsaXN0OiJEYXJib3R2YXJrxJcifSxhbGxEYXlUZXh0OiJWaXPEhSBkaWVuxIUiLGV2ZW50TGltaXRUZXh0OiJkYXVnaWF1In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/lv.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hLnNwbGl0KCJfIik7cmV0dXJuIGM/YiUxMD09PTEmJjExIT09Yj9kWzJdOmRbM106YiUxMD09PTEmJjExIT09Yj9kWzBdOmRbMV19ZnVuY3Rpb24gZChhLGIsZCl7cmV0dXJuIGErIiAiK2MoZVtkXSxhLGIpfXZhciBlPXttbToibWluxat0aV9taW7Fq3Rlc19taW7Fq3RlX21pbsWrdGVzIixoaDoic3R1bmR1X3N0dW5kYXNfc3R1bmRhX3N0dW5kYXMiLGRkOiJkaWVudV9kaWVuYXNfZGllbmFfZGllbmFzIixNTToibcSTbmVzaV9txJNuZcWhdXNfbcSTbmVzaXNfbcSTbmXFoWkiLHl5OiJnYWR1X2dhZHVzX2dhZHNfZ2FkaSJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImx2Iix7bW9udGhzOiJqYW52xIFyaXNfZmVicnXEgXJpc19tYXJ0c19hcHLEq2xpc19tYWlqc19qxatuaWpzX2rFq2xpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJpc19kZWNlbWJyaXMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWlfasWrbl9qxatsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InN2xJN0ZGllbmFfcGlybWRpZW5hX290cmRpZW5hX3RyZcWhZGllbmFfY2V0dXJ0ZGllbmFfcGlla3RkaWVuYV9zZXN0ZGllbmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3ZfUF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NIixMTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NLCBMVCIsTExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoG9kaWVuIHB1bGtzdGVuXSBMVCIsbmV4dERheToiW1LEq3QgcHVsa3N0ZW5dIExUIixuZXh0V2VlazoiZGRkZCBbcHVsa3N0ZW5dIExUIixsYXN0RGF5OiJbVmFrYXIgcHVsa3N0ZW5dIExUIixsYXN0V2VlazoiW1BhZ8SBanXFocSBXSBkZGRkIFtwdWxrc3Rlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHbEk2zEgWsiLHBhc3Q6IiVzIGFncsSBayIsczoiZGHFvmFzIHNla3VuZGVzIixtOiJtaW7Fq3RpIixtbTpkLGg6InN0dW5kdSIsaGg6ZCxkOiJkaWVudSIsZGQ6ZCxNOiJtxJNuZXNpIixNTTpkLHk6ImdhZHUiLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJsdiIsImx2Iix7Y2xvc2VUZXh0OiJBaXp2xJNydCIscHJldlRleHQ6IkllcHIuIixuZXh0VGV4dDoiTsSBay4iLGN1cnJlbnRUZXh0OiLFoG9kaWVuIixtb250aE5hbWVzOlsiSmFudsSBcmlzIiwiRmVicnXEgXJpcyIsIk1hcnRzIiwiQXByxKtsaXMiLCJNYWlqcyIsIkrFq25panMiLCJKxatsaWpzIiwiQXVndXN0cyIsIlNlcHRlbWJyaXMiLCJPa3RvYnJpcyIsIk5vdmVtYnJpcyIsIkRlY2VtYnJpcyJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haSIsIkrFq24iLCJKxatsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJzdsSTdGRpZW5hIiwicGlybWRpZW5hIiwib3RyZGllbmEiLCJ0cmXFoWRpZW5hIiwiY2V0dXJ0ZGllbmEiLCJwaWVrdGRpZW5hIiwic2VzdGRpZW5hIl0sZGF5TmFtZXNTaG9ydDpbInN2dCIsInBybSIsIm90ciIsInRyZSIsImN0ciIsInBrdCIsInNzdCJdLGRheU5hbWVzTWluOlsiU3YiLCJQciIsIk90IiwiVHIiLCJDdCIsIlBrIiwiU3MiXSx3ZWVrSGVhZGVyOiJOZWQuIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImx2Iix7YnV0dG9uVGV4dDp7bW9udGg6Ik3Ek25lc2lzIix3ZWVrOiJOZWTEk8S8YSIsZGF5OiJEaWVuYSIsbGlzdDoiRGllbmFzIGvEgXJ0xKtiYSJ9LGFsbERheVRleHQ6IlZpc3UgZGllbnUiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrdsSTbCAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/nb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJuYiIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O4bl9tYW5fdGlyc19vbnNfdG9yc19mcmVfbMO4ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic8O4X21hX3RpX29uX3RvX2ZyX2zDuCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkgubW0iLExUUzoiTFQuc3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIExUIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSBkYWcga2wuXSBMVCIsbmV4dERheToiW2kgbW9yZ2VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbaSBnw6VyIGtsLl0gTFQiLGxhc3RXZWVrOiJbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6ImZvciAlcyBzaWRlbiIsczoibm9lbiBzZWt1bmRlciIsbToiZXR0IG1pbnV0dCIsbW06IiVkIG1pbnV0dGVyIixoOiJlbiB0aW1lIixoaDoiJWQgdGltZXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2VyIixNOiJlbiBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJuYiIsIm5iIix7Y2xvc2VUZXh0OiJMdWtrIixwcmV2VGV4dDoiJiN4QUI7Rm9ycmlnZSIsbmV4dFRleHQ6Ik5lc3RlJiN4QkI7IixjdXJyZW50VGV4dDoiSSBkYWciLG1vbnRoTmFtZXM6WyJqYW51YXIiLCJmZWJydWFyIiwibWFycyIsImFwcmlsIiwibWFpIiwianVuaSIsImp1bGkiLCJhdWd1c3QiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbImphbiIsImZlYiIsIm1hciIsImFwciIsIm1haSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9rdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzU2hvcnQ6WyJzw7huIiwibWFuIiwidGlyIiwib25zIiwidG9yIiwiZnJlIiwibMO4ciJdLGRheU5hbWVzOlsic8O4bmRhZyIsIm1hbmRhZyIsInRpcnNkYWciLCJvbnNkYWciLCJ0b3JzZGFnIiwiZnJlZGFnIiwibMO4cmRhZyJdLGRheU5hbWVzTWluOlsic8O4IiwibWEiLCJ0aSIsIm9uIiwidG8iLCJmciIsImzDuCJdLHdlZWtIZWFkZXI6IlVrZSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJuYiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuZWQiLHdlZWs6IlVrZSIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnZW4iLGV2ZW50TGltaXRUZXh0OiJ0aWwifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/nl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxkPSJqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJubCIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGEsYil7cmV0dXJuLy1NTU0tLy50ZXN0KGIpP2RbYS5tb250aCgpXTpjW2EubW9udGgoKV19LHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiWm9fTWFfRGlfV29fRG9fVnJfWmEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt2YW5kYWFnIG9tXSBMVCIsbmV4dERheToiW21vcmdlbiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltnaXN0ZXJlbiBvbV0gTFQiLGxhc3RXZWVrOiJbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im92ZXIgJXMiLHBhc3Q6IiVzIGdlbGVkZW4iLHM6ImVlbiBwYWFyIHNlY29uZGVuIixtOiLDqcOpbiBtaW51dXQiLG1tOiIlZCBtaW51dGVuIixoOiLDqcOpbiB1dXIiLGhoOiIlZCB1dXIiLGQ6IsOpw6luIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiLDqcOpbiBtYWFuZCIsTU06IiVkIG1hYW5kZW4iLHk6IsOpw6luIGphYXIiLHl5OiIlZCBqYWFyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hfHw4PT09YXx8YT49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJubCIsIm5sIix7Y2xvc2VUZXh0OiJTbHVpdGVuIixwcmV2VGV4dDoi4oaQIixuZXh0VGV4dDoi4oaSIixjdXJyZW50VGV4dDoiVmFuZGFhZyIsbW9udGhOYW1lczpbImphbnVhcmkiLCJmZWJydWFyaSIsIm1hYXJ0IiwiYXByaWwiLCJtZWkiLCJqdW5pIiwianVsaSIsImF1Z3VzdHVzIiwic2VwdGVtYmVyIiwib2t0b2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW4iLCJmZWIiLCJtcnQiLCJhcHIiLCJtZWkiLCJqdW4iLCJqdWwiLCJhdWciLCJzZXAiLCJva3QiLCJub3YiLCJkZWMiXSxkYXlOYW1lczpbInpvbmRhZyIsIm1hYW5kYWciLCJkaW5zZGFnIiwid29lbnNkYWciLCJkb25kZXJkYWciLCJ2cmlqZGFnIiwiemF0ZXJkYWciXSxkYXlOYW1lc1Nob3J0Olsiem9uIiwibWFhIiwiZGluIiwid29lIiwiZG9uIiwidnJpIiwiemF0Il0sZGF5TmFtZXNNaW46WyJ6byIsIm1hIiwiZGkiLCJ3byIsImRvIiwidnIiLCJ6YSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoIm5sIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWciLGV2ZW50TGltaXRUZXh0OiJleHRyYSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/pl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiA1PmElMTAmJmElMTA+MSYmfn4oYS8xMCklMTAhPT0xfWZ1bmN0aW9uIGQoYSxiLGQpe3ZhciBlPWErIiAiO3N3aXRjaChkKXtjYXNlIm0iOnJldHVybiBiPyJtaW51dGEiOiJtaW51dMSZIjtjYXNlIm1tIjpyZXR1cm4gZSsoYyhhKT8ibWludXR5IjoibWludXQiKTtjYXNlImgiOnJldHVybiBiPyJnb2R6aW5hIjoiZ29kemluxJkiO2Nhc2UiaGgiOnJldHVybiBlKyhjKGEpPyJnb2R6aW55IjoiZ29kemluIik7Y2FzZSJNTSI6cmV0dXJuIGUrKGMoYSk/Im1pZXNpxIVjZSI6Im1pZXNpxJljeSIpO2Nhc2UieXkiOnJldHVybiBlKyhjKGEpPyJsYXRhIjoibGF0Iil9fXZhciBlPSJzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQiLnNwbGl0KCJfIiksZj0ic3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYSIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJwbCIse21vbnRoczpmdW5jdGlvbihhLGIpe3JldHVybi9EIE1NTU0vLnRlc3QoYik/ZlthLm1vbnRoKCldOmVbYS5tb250aCgpXX0sbW9udGhzU2hvcnQ6InN0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoibmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuaWVfcG9uX3d0X8Wbcl9jendfcHRfc2IiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik5fUG5fV3RfxZpyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0R6acWbIG9dIExUIixuZXh0RGF5OiJbSnV0cm8gb10gTFQiLG5leHRXZWVrOiJbV10gZGRkZCBbb10gTFQiLGxhc3REYXk6IltXY3pvcmFqIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoiJXMgdGVtdSIsczoia2lsa2Egc2VrdW5kIixtOmQsbW06ZCxoOmQsaGg6ZCxkOiIxIGR6aWXFhCIsZGQ6IiVkIGRuaSIsTToibWllc2nEhWMiLE1NOmQseToicm9rIix5eTpkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygicGwiLCJwbCIse2Nsb3NlVGV4dDoiWmFta25paiIscHJldlRleHQ6IiYjeDNDO1BvcHJ6ZWRuaSIsbmV4dFRleHQ6Ik5hc3TEmXBueSYjeDNFOyIsY3VycmVudFRleHQ6IkR6acWbIixtb250aE5hbWVzOlsiU3R5Y3plxYQiLCJMdXR5IiwiTWFyemVjIiwiS3dpZWNpZcWEIiwiTWFqIiwiQ3plcndpZWMiLCJMaXBpZWMiLCJTaWVycGllxYQiLCJXcnplc2llxYQiLCJQYcW6ZHppZXJuaWsiLCJMaXN0b3BhZCIsIkdydWR6aWXFhCJdLG1vbnRoTmFtZXNTaG9ydDpbIlN0eSIsIkx1IiwiTWFyIiwiS3ciLCJNYWoiLCJDemUiLCJMaXAiLCJTaWUiLCJXcnoiLCJQYSIsIkxpcyIsIkdydSJdLGRheU5hbWVzOlsiTmllZHppZWxhIiwiUG9uaWVkemlhxYJlayIsIld0b3JlayIsIsWacm9kYSIsIkN6d2FydGVrIiwiUGnEhXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOaWUiLCJQbiIsIld0IiwixZpyIiwiQ3p3IiwiUHQiLCJTbyJdLGRheU5hbWVzTWluOlsiTiIsIlBuIiwiV3QiLCLFmnIiLCJDeiIsIlB0IiwiU28iXSx3ZWVrSGVhZGVyOiJUeWR6IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInBsIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1pZXNpxIVjIix3ZWVrOiJUeWR6aWXFhCIsZGF5OiJEemllxYQiLGxpc3Q6IlBsYW4gZG5pYSJ9LGFsbERheVRleHQ6IkNhxYJ5IGR6aWXFhCIsZXZlbnRMaW1pdFRleHQ6IndpxJljZWoifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/pt-br.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJwdC1iciIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyw6dvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyw6dhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb21fMsKqXzPCql80wqpfNcKqXzbCql9zw6FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIExUIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiJXMgYXRyw6FzIixzOiJzZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsTToidW0gbcOqcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroifSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInB0LWJyIiwicHQtQlIiLHtjbG9zZVRleHQ6IkZlY2hhciIscHJldlRleHQ6IiYjeDNDO0FudGVyaW9yIixuZXh0VGV4dDoiUHLDs3hpbW8mI3gzRTsiLGN1cnJlbnRUZXh0OiJIb2plIixtb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hcsOnbyIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlcsOnYS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sZGF5TmFtZXNNaW46WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicHQtYnIiLHtidXR0b25UZXh0Onttb250aDoiTcOqcyIsd2VlazoiU2VtYW5hIixkYXk6IkRpYSIsbGlzdDoiQ29tcHJvbWlzc29zIn0sYWxsRGF5VGV4dDoiZGlhIGludGVpcm8iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiJtYWlzICsiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/pt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJwdCIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyw6dvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyw6dhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb21fMsKqXzPCql80wqpfNcKqXzbCql9zw6FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIExUIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiaMOhICVzIixzOiJzZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsTToidW0gbcOqcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJwdCIsInB0Iix7Y2xvc2VUZXh0OiJGZWNoYXIiLHByZXZUZXh0OiJBbnRlcmlvciIsbmV4dFRleHQ6IlNlZ3VpbnRlIixjdXJyZW50VGV4dDoiSG9qZSIsbW9udGhOYW1lczpbIkphbmVpcm8iLCJGZXZlcmVpcm8iLCJNYXLDp28iLCJBYnJpbCIsIk1haW8iLCJKdW5obyIsIkp1bGhvIiwiQWdvc3RvIiwiU2V0ZW1icm8iLCJPdXR1YnJvIiwiTm92ZW1icm8iLCJEZXplbWJybyJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZldiIsIk1hciIsIkFiciIsIk1haSIsIkp1biIsIkp1bCIsIkFnbyIsIlNldCIsIk91dCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiRG9taW5nbyIsIlNlZ3VuZGEtZmVpcmEiLCJUZXLDp2EtZmVpcmEiLCJRdWFydGEtZmVpcmEiLCJRdWludGEtZmVpcmEiLCJTZXh0YS1mZWlyYSIsIlPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiU8OhYiJdLGRheU5hbWVzTWluOlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiU8OhYiJdLHdlZWtIZWFkZXI6IlNlbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJwdCIse2J1dHRvblRleHQ6e21vbnRoOiJNw6pzIix3ZWVrOiJTZW1hbmEiLGRheToiRGlhIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJUb2RvIG8gZGlhIixldmVudExpbWl0VGV4dDoibWFpcyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ro.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD17bW06Im1pbnV0ZSIsaGg6Im9yZSIsZGQ6InppbGUiLE1NOiJsdW5pIix5eToiYW5pIn0sZT0iICI7cmV0dXJuKGElMTAwPj0yMHx8YT49MTAwJiZhJTEwMD09PTApJiYoZT0iIGRlICIpLGErZStkW2NdfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInJvIix7bW9udGhzOiJpYW51YXJpZV9mZWJydWFyaWVfbWFydGllX2FwcmlsaWVfbWFpX2l1bmllX2l1bGllX2F1Z3VzdF9zZXB0ZW1icmllX29jdG9tYnJpZV9ub2llbWJyaWVfZGVjZW1icmllIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpYW4uX2ZlYnIuX21hcnQuX2Fwci5fbWFpX2l1bi5faXVsLl9hdWcuX3NlcHQuX29jdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkdW1pbmljxINfbHVuaV9tYXLIm2lfbWllcmN1cmlfam9pX3ZpbmVyaV9zw6JtYsSDdMSDIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkR1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1PDom0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkR1X0x1X01hX01pX0pvX1ZpX1PDoiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlthemkgbGFdIExUIixuZXh0RGF5OiJbbcOiaW5lIGxhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2xhXSBMVCIsbGFzdERheToiW2llcmkgbGFdIExUIixsYXN0V2VlazoiW2Zvc3RhXSBkZGRkIFtsYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBlc3RlICVzIixwYXN0OiIlcyDDrm4gdXJtxIMiLHM6ImPDonRldmEgc2VjdW5kZSIsbToidW4gbWludXQiLG1tOmMsaDoibyBvcsSDIixoaDpjLGQ6Im8gemkiLGRkOmMsTToibyBsdW7EgyIsTU06Yyx5OiJ1biBhbiIseXk6Y30sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInJvIiwicm8iLHtjbG9zZVRleHQ6IsOObmNoaWRlIixwcmV2VGV4dDoiJiN4QUI7IEx1bmEgcHJlY2VkZW50xIMiLG5leHRUZXh0OiJMdW5hIHVybcSDdG9hcmUgJiN4QkI7IixjdXJyZW50VGV4dDoiQXppIixtb250aE5hbWVzOlsiSWFudWFyaWUiLCJGZWJydWFyaWUiLCJNYXJ0aWUiLCJBcHJpbGllIiwiTWFpIiwiSXVuaWUiLCJJdWxpZSIsIkF1Z3VzdCIsIlNlcHRlbWJyaWUiLCJPY3RvbWJyaWUiLCJOb2llbWJyaWUiLCJEZWNlbWJyaWUiXSxtb250aE5hbWVzU2hvcnQ6WyJJYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYWkiLCJJdW4iLCJJdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIkR1bWluaWPEgyIsIkx1bmkiLCJNYXLFo2kiLCJNaWVyY3VyaSIsIkpvaSIsIlZpbmVyaSIsIlPDom1ixIN0xIMiXSxkYXlOYW1lc1Nob3J0OlsiRHVtIiwiTHVuIiwiTWFyIiwiTWllIiwiSm9pIiwiVmluIiwiU8OibSJdLGRheU5hbWVzTWluOlsiRHUiLCJMdSIsIk1hIiwiTWkiLCJKbyIsIlZpIiwiU8OiIl0sd2Vla0hlYWRlcjoiU8SDcHQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicm8iLHtidXR0b25UZXh0OntwcmV2OiJwcmVjZWRlbnTEgyIsbmV4dDoidXJtxIN0b2FyZSIsbW9udGg6Ikx1bsSDIix3ZWVrOiJTxINwdMSDbcOibsSDIixkYXk6IlppIixsaXN0OiJBZ2VuZMSDIn0sYWxsRGF5VGV4dDoiVG9hdMSDIHppdWEiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrYWx0ZSAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ru.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5zcGxpdCgiXyIpO3JldHVybiBiJTEwPT09MSYmYiUxMDAhPT0xMT9jWzBdOmIlMTA+PTImJjQ+PWIlMTAmJigxMD5iJTEwMHx8YiUxMDA+PTIwKT9jWzFdOmNbMl19ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9e21tOmI/ItC80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiI6ItC80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiIsaGg6ItGH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyIixkZDoi0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5IixNTToi0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LIiLHl5OiLQs9C+0LRf0LPQvtC00LBf0LvQtdGCIn07cmV0dXJuIm0iPT09ZD9iPyLQvNC40L3Rg9GC0LAiOiLQvNC40L3Rg9GC0YMiOmErIiAiK2MoZVtkXSwrYSl9ZnVuY3Rpb24gZShhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToi0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQv9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx0YDRj1/QtNC10LrQsNCx0YDRjyIuc3BsaXQoIl8iKX0sZD0vRFtvRF0/KFxbW15cW1xdXSpcXXxccyspK01NTU0/Ly50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5tb250aCgpXX1mdW5jdGlvbiBmKGEsYil7dmFyIGM9e25vbWluYXRpdmU6ItGP0L3Qsl/RhNC10LJf0LzQsNGA0YJf0LDQv9GAX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Ii5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItGP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuiIuc3BsaXQoIl8iKX0sZD0vRFtvRF0/KFxbW15cW1xdXSpcXXxccyspK01NTU0/Ly50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5tb250aCgpXX1mdW5jdGlvbiBnKGEsYil7dmFyIGM9e25vbWluYXRpdmU6ItCy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItCy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB0YPQsdCx0L7RgtGDIi5zcGxpdCgiXyIpfSxkPS9cWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP1xdID9kZGRkLy50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5kYXkoKV19KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwicnUiLHttb250aHM6ZSxtb250aHNTaG9ydDpmLHdlZWtkYXlzOmcsd2Vla2RheXNTaG9ydDoi0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZTpbL17Rj9C90LIvaSwvXtGE0LXQsi9pLC9e0LzQsNGAL2ksL17QsNC/0YAvaSwvXtC80LBb0Ll80Y9dL2ksL17QuNGO0L0vaSwvXtC40Y7Quy9pLC9e0LDQstCzL2ksL17RgdC10L0vaSwvXtC+0LrRgi9pLC9e0L3QvtGPL2ksL17QtNC10LovaV0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINCzLiIsTExMOiJEIE1NTU0gWVlZWSDQsy4sIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQodC10LPQvtC00L3RjyDQsl0gTFQiLG5leHREYXk6IlvQl9Cw0LLRgtGA0LAg0LJdIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQsl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT10aGlzLmRheSgpPyJb0JLQvl0gZGRkZCBb0LJdIExUIjoiW9CSXSBkZGRkIFvQsl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbihhKXtpZihhLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQgW9CyXSBMVCI6IlvQkl0gZGRkZCBb0LJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJb0JIg0L/RgNC+0YjQu9C+0LVdIGRkZGQgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCBb0LJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW9CSINC/0YDQvtGI0LvRg9GOXSBkZGRkIFvQsl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0YfQtdGA0LXQtyAlcyIscGFzdDoiJXMg0L3QsNC30LDQtCIsczoi0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCIsbTpkLG1tOmQsaDoi0YfQsNGBIixoaDpkLGQ6ItC00LXQvdGMIixkZDpkLE06ItC80LXRgdGP0YYiLE1NOmQseToi0LPQvtC0Iix5eTpkfSxtZXJpZGllbVBhcnNlOi/QvdC+0YfQuHzRg9GC0YDQsHzQtNC90Y980LLQtdGH0LXRgNCwL2ksaXNQTTpmdW5jdGlvbihhKXtyZXR1cm4vXijQtNC90Y980LLQtdGH0LXRgNCwKSQvLnRlc3QoYSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gND5hPyLQvdC+0YfQuCI6MTI+YT8i0YPRgtGA0LAiOjE3PmE/ItC00L3RjyI6ItCy0LXRh9C10YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvnzRjykvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gYSsiLdC5IjtjYXNlIkQiOnJldHVybiBhKyIt0LPQviI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyIt0Y8iO2RlZmF1bHQ6cmV0dXJuIGF9fSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygicnUiLCJydSIse2Nsb3NlVGV4dDoi0JfQsNC60YDRi9GC0YwiLHByZXZUZXh0OiImI3gzQzvQn9GA0LXQtCIsbmV4dFRleHQ6ItCh0LvQtdC0JiN4M0U7IixjdXJyZW50VGV4dDoi0KHQtdCz0L7QtNC90Y8iLG1vbnRoTmFtZXM6WyLQr9C90LLQsNGA0YwiLCLQpNC10LLRgNCw0LvRjCIsItCc0LDRgNGCIiwi0JDQv9GA0LXQu9GMIiwi0JzQsNC5Iiwi0JjRjtC90YwiLCLQmNGO0LvRjCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQvdGC0Y/QsdGA0YwiLCLQntC60YLRj9Cx0YDRjCIsItCd0L7Rj9Cx0YDRjCIsItCU0LXQutCw0LHRgNGMIl0sbW9udGhOYW1lc1Nob3J0Olsi0K/QvdCyIiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNC5Iiwi0JjRjtC9Iiwi0JjRjtC7Iiwi0JDQstCzIiwi0KHQtdC9Iiwi0J7QutGCIiwi0J3QvtGPIiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQstC+0YHQutGA0LXRgdC10L3RjNC1Iiwi0L/QvtC90LXQtNC10LvRjNC90LjQuiIsItCy0YLQvtGA0L3QuNC6Iiwi0YHRgNC10LTQsCIsItGH0LXRgtCy0LXRgNCzIiwi0L/Rj9GC0L3QuNGG0LAiLCLRgdGD0LHQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQstGB0LoiLCLQv9C90LQiLCLQstGC0YAiLCLRgdGA0LQiLCLRh9GC0LIiLCLQv9GC0L0iLCLRgdCx0YIiXSxkYXlOYW1lc01pbjpbItCS0YEiLCLQn9C9Iiwi0JLRgiIsItCh0YAiLCLQp9GCIiwi0J/RgiIsItCh0LEiXSx3ZWVrSGVhZGVyOiLQndC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicnUiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0Y/RhiIsd2Vlazoi0J3QtdC00LXQu9GPIixkYXk6ItCU0LXQvdGMIixsaXN0OiLQn9C+0LLQtdGB0YLQutCwINC00L3RjyJ9LGFsbERheVRleHQ6ItCS0LXRgdGMINC00LXQvdGMIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyDQtdGJ0ZEgIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhPjEmJjU+YX1mdW5jdGlvbiBkKGEsYixkLGUpe3ZhciBmPWErIiAiO3N3aXRjaChkKXtjYXNlInMiOnJldHVybiBifHxlPyJww6FyIHNla8O6bmQiOiJww6FyIHNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1cm4gYj8ibWluw7p0YSI6ZT8ibWluw7p0dSI6Im1pbsO6dG91IjtjYXNlIm1tIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJtaW7DunR5IjoibWluw7p0Iik6ZisibWluw7p0YW1pIjtjYXNlImgiOnJldHVybiBiPyJob2RpbmEiOmU/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBifHxlP2YrKGMoYSk/ImhvZGlueSI6ImhvZMOtbiIpOmYrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBifHxlPyJkZcWIIjoiZMWIb20iO2Nhc2UiZGQiOnJldHVybiBifHxlP2YrKGMoYSk/ImRuaSI6ImRuw60iKTpmKyJkxYhhbWkiO2Nhc2UiTSI6cmV0dXJuIGJ8fGU/Im1lc2lhYyI6Im1lc2lhY29tIjtjYXNlIk1NIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJtZXNpYWNlIjoibWVzaWFjb3YiKTpmKyJtZXNpYWNtaSI7Y2FzZSJ5IjpyZXR1cm4gYnx8ZT8icm9rIjoicm9rb20iO2Nhc2UieXkiOnJldHVybiBifHxlP2YrKGMoYSk/InJva3kiOiJyb2tvdiIpOmYrInJva21pIn19dmFyIGU9ImphbnXDoXJfZmVicnXDoXJfbWFyZWNfYXByw61sX23DoWpfasO6bl9qw7psX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksZj0iamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7psX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwic2siLHttb250aHM6ZSxtb250aHNTaG9ydDpmLG1vbnRoc1BhcnNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXTtmb3IoYz0wOzEyPmM7YysrKWRbY109bmV3IFJlZ0V4cCgiXiIrYVtjXSsiJHxeIitiW2NdKyIkIiwiaSIpO3JldHVybiBkfShlLGYpLHdlZWtkYXlzOiJuZWRlxL5hX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFfxaF0dnJ0b2tfcGlhdG9rX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb191dF9zdF/FoXRfcGlfc28iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3N0X8WhdF9waV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyBvXSBMVCIsbmV4dERheToiW3phanRyYSBvXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWRlxL51IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW3Ygc3RyZWR1IG9dIExUIjtjYXNlIDQ6cmV0dXJuIlt2byDFoXR2cnRvayBvXSBMVCI7Y2FzZSA1OnJldHVybiJbdiBwaWF0b2sgb10gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IG9dIExUIn19LGxhc3REYXk6Ilt2xI1lcmEgb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsw7ogbmVkZcS+dSBvXSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW21pbnVsw71dIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bMO6IHN0cmVkdSBvXSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsw71dIGRkZGQgW29dIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bMO6IHNvYm90dSBvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJlZCAlcyIsczpkLG06ZCxtbTpkLGg6ZCxoaDpkLGQ6ZCxkZDpkLE06ZCxNTTpkLHk6ZCx5eTpkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic2siLCJzayIse2Nsb3NlVGV4dDoiWmF2cmllxaUiLHByZXZUZXh0OiImI3gzQztQcmVkY2jDoWR6YWrDumNpIixuZXh0VGV4dDoiTmFzbGVkdWrDumNpJiN4M0U7IixjdXJyZW50VGV4dDoiRG5lcyIsbW9udGhOYW1lczpbImphbnXDoXIiLCJmZWJydcOhciIsIm1hcmVjIiwiYXByw61sIiwibcOhaiIsImrDum4iLCJqw7psIiwiYXVndXN0Iiwic2VwdGVtYmVyIiwib2t0w7NiZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJuZWRlxL5hIiwicG9uZGVsb2siLCJ1dG9yb2siLCJzdHJlZGEiLCLFoXR2cnRvayIsInBpYXRvayIsInNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTdHIiLCLFoHR2IiwiUGlhIiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTdCIsIsWgdCIsIlBpYSIsIlNvIl0sd2Vla0hlYWRlcjoiVHkiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic2siLHtidXR0b25UZXh0Onttb250aDoiTWVzaWFjIix3ZWVrOiJUw73FvmRlxYgiLGRheToiRGXFiCIsbGlzdDoiUm96dnJoIn0sYWxsRGF5VGV4dDoiQ2Vsw70gZGXFiCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIivEj2FsxaFpZTogIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiBkKz0xPT09YT8ibWludXRhIjoyPT09YT8ibWludXRpIjozPT09YXx8ND09PWE/Im1pbnV0ZSI6Im1pbnV0IjtjYXNlImgiOnJldHVybiBiPyJlbmEgdXJhIjoiZW5vIHVybyI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJ1cmEiOjI9PT1hPyJ1cmkiOjM9PT1hfHw0PT09YT8idXJlIjoidXIiO2Nhc2UiZGQiOnJldHVybiBkKz0xPT09YT8iZGFuIjoiZG5pIjtjYXNlIk1NIjpyZXR1cm4gZCs9MT09PWE/Im1lc2VjIjoyPT09YT8ibWVzZWNhIjozPT09YXx8ND09PWE/Im1lc2VjZSI6Im1lc2VjZXYiO2Nhc2UieXkiOnJldHVybiBkKz0xPT09YT8ibGV0byI6Mj09PWE/ImxldGkiOjM9PT1hfHw0PT09YT8ibGV0YSI6ImxldCJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfxI1lX3BlX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQuIE1NLiBZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5lcyBvYl0gTFQiLG5leHREYXk6IltqdXRyaSBvYl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ZdIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIlt2XSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ZdIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ZdIGRkZGQgW29iXSBMVCJ9fSxsYXN0RGF5OiJbdsSNZXJhaiBvYl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbcHJlasWhbmphXSBkZGRkIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ByZWrFoW5qaV0gZGRkZCBbb2JdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IsSNZXogJXMiLHBhc3Q6IiVzIG5hemFqIixzOiJuZWthaiBzZWt1bmQiLG06YyxtbTpjLGg6YyxoaDpjLGQ6ImVuIGRhbiIsZGQ6YyxNOiJlbiBtZXNlYyIsTU06Yyx5OiJlbm8gbGV0byIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInNsIiwic2wiLHtjbG9zZVRleHQ6IlphcHJpIixwcmV2VGV4dDoiJiN4M0M7UHJlasWhbmppIixuZXh0VGV4dDoiTmFzbGVkbmppJiN4M0U7IixjdXJyZW50VGV4dDoiVHJlbnV0bmkiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTWFyZWMiLCJBcHJpbCIsIk1haiIsIkp1bmlqIiwiSnVsaWoiLCJBdmd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF2ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiTmVkZWxqYSIsIlBvbmVkZWxqZWsiLCJUb3JlayIsIlNyZWRhIiwixIxldHJ0ZWsiLCJQZXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJUb3IiLCJTcmUiLCLEjGV0IiwiUGV0IiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVG8iLCJTciIsIsSMZSIsIlBlIiwiU28iXSx3ZWVrSGVhZGVyOiJUZWRlbiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzbCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlYyIsd2VlazoiVGVkZW4iLGRheToiRGFuIixsaXN0OiJEbmV2bmkgcmVkIn0sYWxsRGF5VGV4dDoiVmVzIGRhbiIsZXZlbnRMaW1pdFRleHQ6InZlxI0ifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sr-cyrl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17d29yZHM6e206WyLRmNC10LTQsNC9INC80LjQvdGD0YIiLCLRmNC10LTQvdC1INC80LjQvdGD0YLQtSJdLG1tOlsi0LzQuNC90YPRgiIsItC80LjQvdGD0YLQtSIsItC80LjQvdGD0YLQsCJdLGg6WyLRmNC10LTQsNC9INGB0LDRgiIsItGY0LXQtNC90L7QsyDRgdCw0YLQsCJdLGhoOlsi0YHQsNGCIiwi0YHQsNGC0LAiLCLRgdCw0YLQuCJdLGRkOlsi0LTQsNC9Iiwi0LTQsNC90LAiLCLQtNCw0L3QsCJdLE1NOlsi0LzQtdGB0LXRhiIsItC80LXRgdC10YbQsCIsItC80LXRgdC10YbQuCJdLHl5Olsi0LPQvtC00LjQvdCwIiwi0LPQvtC00LjQvdC1Iiwi0LPQvtC00LjQvdCwIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMT09PWE/YlswXTphPj0yJiY0Pj1hP2JbMV06YlsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1jLndvcmRzW2RdO3JldHVybiAxPT09ZC5sZW5ndGg/Yj9lWzBdOmVbMV06YSsiICIrYy5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGEsZSl9fTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzci1jeXJsIix7bW9udGhzOlsi0ZjQsNC90YPQsNGAIiwi0YTQtdCx0YDRg9Cw0YAiLCLQvNCw0YDRgiIsItCw0L/RgNC40LsiLCLQvNCw0ZgiLCLRmNGD0L0iLCLRmNGD0LsiLCLQsNCy0LPRg9GB0YIiLCLRgdC10L/RgtC10LzQsdCw0YAiLCLQvtC60YLQvtCx0LDRgCIsItC90L7QstC10LzQsdCw0YAiLCLQtNC10YbQtdC80LHQsNGAIl0sbW9udGhzU2hvcnQ6WyLRmNCw0L0uIiwi0YTQtdCxLiIsItC80LDRgC4iLCLQsNC/0YAuIiwi0LzQsNGYIiwi0ZjRg9C9Iiwi0ZjRg9C7Iiwi0LDQstCzLiIsItGB0LXQvy4iLCLQvtC60YIuIiwi0L3QvtCyLiIsItC00LXRhi4iXSx3ZWVrZGF5czpbItC90LXQtNC10ZnQsCIsItC/0L7QvdC10LTQtdGZ0LDQuiIsItGD0YLQvtGA0LDQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstGA0YLQsNC6Iiwi0L/QtdGC0LDQuiIsItGB0YPQsdC+0YLQsCJdLHdlZWtkYXlzU2hvcnQ6WyLQvdC10LQuIiwi0L/QvtC9LiIsItGD0YLQvi4iLCLRgdGA0LUuIiwi0YfQtdGCLiIsItC/0LXRgi4iLCLRgdGD0LEuIl0sd2Vla2RheXNNaW46WyLQvdC1Iiwi0L/QviIsItGD0YIiLCLRgdGAIiwi0YfQtSIsItC/0LUiLCLRgdGDIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9C00LDQvdCw0YEg0YNdIExUIixuZXh0RGF5OiJb0YHRg9GC0YDQsCDRg10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUIjtjYXNlIDM6cmV0dXJuIlvRg10gW9GB0YDQtdC00YNdIFvRg10gTFQiO2Nhc2UgNjpyZXR1cm4iW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvRg10gZGRkZCBb0YNdIExUIn19LGxhc3REYXk6IlvRmNGD0YfQtSDRg10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7dmFyIGE9WyJb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQiLCJb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoi0L/RgNC1ICVzIixzOiLQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4IixtOmMudHJhbnNsYXRlLG1tOmMudHJhbnNsYXRlLGg6Yy50cmFuc2xhdGUsaGg6Yy50cmFuc2xhdGUsZDoi0LTQsNC9IixkZDpjLnRyYW5zbGF0ZSxNOiLQvNC10YHQtdGGIixNTTpjLnRyYW5zbGF0ZSx5OiLQs9C+0LTQuNC90YMiLHl5OmMudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3ItY3lybCIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic3ItY3lybCIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQndC10LTQtdGZ0LAiLGRheToi0JTQsNC9IixsaXN0OiLQn9C70LDQvdC10YAifSxhbGxEYXlUZXh0OiLQptC10L4g0LTQsNC9IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyDRmNC+0YggIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17d29yZHM6e206WyJqZWRhbiBtaW51dCIsImplZG5lIG1pbnV0ZSJdLG1tOlsibWludXQiLCJtaW51dGUiLCJtaW51dGEiXSxoOlsiamVkYW4gc2F0IiwiamVkbm9nIHNhdGEiXSxoaDpbInNhdCIsInNhdGEiLCJzYXRpIl0sZGQ6WyJkYW4iLCJkYW5hIiwiZGFuYSJdLE1NOlsibWVzZWMiLCJtZXNlY2EiLCJtZXNlY2kiXSx5eTpbImdvZGluYSIsImdvZGluZSIsImdvZGluYSJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDE9PT1hP2JbMF06YT49MiYmND49YT9iWzFdOmJbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihhLGIsZCl7dmFyIGU9Yy53b3Jkc1tkXTtyZXR1cm4gMT09PWQubGVuZ3RoP2I/ZVswXTplWzFdOmErIiAiK2MuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShhLGUpfX07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwic3IiLHttb250aHM6WyJqYW51YXIiLCJmZWJydWFyIiwibWFydCIsImFwcmlsIiwibWFqIiwianVuIiwianVsIiwiYXZndXN0Iiwic2VwdGVtYmFyIiwib2t0b2JhciIsIm5vdmVtYmFyIiwiZGVjZW1iYXIiXSxtb250aHNTaG9ydDpbImphbi4iLCJmZWIuIiwibWFyLiIsImFwci4iLCJtYWoiLCJqdW4iLCJqdWwiLCJhdmcuIiwic2VwLiIsIm9rdC4iLCJub3YuIiwiZGVjLiJdLHdlZWtkYXlzOlsibmVkZWxqYSIsInBvbmVkZWxqYWsiLCJ1dG9yYWsiLCJzcmVkYSIsIsSNZXR2cnRhayIsInBldGFrIiwic3Vib3RhIl0sd2Vla2RheXNTaG9ydDpbIm5lZC4iLCJwb24uIiwidXRvLiIsInNyZS4iLCLEjWV0LiIsInBldC4iLCJzdWIuIl0sd2Vla2RheXNNaW46WyJuZSIsInBvIiwidXQiLCJzciIsIsSNZSIsInBlIiwic3UiXSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELiBNTS4gWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1xI1lIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBhPVsiW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCIsIltwcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xpa28gc2VrdW5kaSIsbTpjLnRyYW5zbGF0ZSxtbTpjLnRyYW5zbGF0ZSxoOmMudHJhbnNsYXRlLGhoOmMudHJhbnNsYXRlLGQ6ImRhbiIsZGQ6Yy50cmFuc2xhdGUsTToibWVzZWMiLE1NOmMudHJhbnNsYXRlLHk6ImdvZGludSIseXk6Yy50cmFuc2xhdGV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJzciIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic3IiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0LXRhiIsd2Vlazoi0J3QtdC00LXRmdCwIixkYXk6ItCU0LDQvSIsbGlzdDoi0J/Qu9Cw0L3QtdGAIn0sYWxsRGF5VGV4dDoi0KbQtdC+INC00LDQvSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisg0ZjQvtGIICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sv.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDtiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJZ8Olcl0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0V2VlazoiW0bDtnJyYV0gZGRkZFtlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmw7ZyICVzIHNlZGFuIixzOiJuw6VncmEgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtw6VuYWQiLE1NOiIlZCBtw6VuYWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlfGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJlIjoxPT09Yj8iYSI6Mj09PWI/ImEiOiJlIjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3YiLCJzdiIse2Nsb3NlVGV4dDoiU3TDpG5nIixwcmV2VGV4dDoiJiN4QUI7RsO2cnJhIixuZXh0VGV4dDoiTsOkc3RhJiN4QkI7IixjdXJyZW50VGV4dDoiSWRhZyIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcnMiLCJBcHJpbCIsIk1haiIsIkp1bmkiLCJKdWxpIiwiQXVndXN0aSIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXNTaG9ydDpbIlPDtm4iLCJNw6VuIiwiVGlzIiwiT25zIiwiVG9yIiwiRnJlIiwiTMO2ciJdLGRheU5hbWVzOlsiU8O2bmRhZyIsIk3DpW5kYWciLCJUaXNkYWciLCJPbnNkYWciLCJUb3JzZGFnIiwiRnJlZGFnIiwiTMO2cmRhZyJdLGRheU5hbWVzTWluOlsiU8O2IiwiTcOlIiwiVGkiLCJPbiIsIlRvIiwiRnIiLCJMw7YiXSx3ZWVrSGVhZGVyOiJWZSIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzdiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuYWQiLHdlZWs6IlZlY2thIixkYXk6IkRhZyIsbGlzdDoiUHJvZ3JhbSJ9LGFsbERheVRleHQ6IkhlbGRhZyIsZXZlbnRMaW1pdFRleHQ6InRpbGwifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/th.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ0aCIse21vbnRoczoi4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuC4oeC4geC4o+C4sl/guIHguLjguKHguKDguLJf4Lih4Li14LiZ4LiyX+C5gOC4oeC4qeC4sl/guJ7guKTguKnguKDguLJf4Lih4Li04LiW4Li44LiZ4LiyX+C4geC4o+C4geC4juC4sl/guKrguLTguIfguKvguLJf4LiB4Lix4LiZ4Lii4LiyX+C4leC4uOC4peC4sl/guJ7guKTguKjguIjguLTguIHguLJf4LiY4Lix4LiZ4Lin4LiyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/guKouIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSCDguJnguLLguKzguLTguIHguLIgbSDguJnguLLguJfguLUiLExUUzoiTFQgcyDguKfguLTguJnguLLguJfguLUiLEw6IllZWVkvTU0vREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSDguYDguKfguKXguLIgTFQiLExMTEw6IuC4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIExUIn0sbWVyaWRpZW1QYXJzZTov4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHIjoi4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCIsbmV4dERheToiW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUIixuZXh0V2VlazoiZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCIsbGFzdERheToiW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUIixsYXN0V2VlazoiW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLguK3guLXguIEgJXMiLHBhc3Q6IiVz4LiX4Li14LmI4LmB4Lil4LmJ4LinIixzOiLguYTguKHguYjguIHguLXguYjguKfguLTguJnguLLguJfguLUiLG06IjEg4LiZ4Liy4LiX4Li1IixtbToiJWQg4LiZ4Liy4LiX4Li1IixoOiIxIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsaGg6IiVkIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsZDoiMSDguKfguLHguJkiLGRkOiIlZCDguKfguLHguJkiLE06IjEg4LmA4LiU4Li34Lit4LiZIixNTToiJWQg4LmA4LiU4Li34Lit4LiZIix5OiIxIOC4m+C4tSIseXk6IiVkIOC4m+C4tSJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInRoIiwidGgiLHtjbG9zZVRleHQ6IuC4m+C4tOC4lCIscHJldlRleHQ6IiYjeEFCOyYjeEEwO+C4ouC5ieC4reC4mSIsbmV4dFRleHQ6IuC4luC4seC4lOC5hOC4myYjeEEwOyYjeEJCOyIsY3VycmVudFRleHQ6IuC4p+C4seC4meC4meC4teC5iSIsbW9udGhOYW1lczpbIuC4oeC4geC4o+C4suC4hOC4oSIsIuC4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCIsIuC4oeC4teC4meC4suC4hOC4oSIsIuC5gOC4oeC4qeC4suC4ouC4mSIsIuC4nuC4pOC4qeC4oOC4suC4hOC4oSIsIuC4oeC4tOC4luC4uOC4meC4suC4ouC4mSIsIuC4geC4o+C4geC4juC4suC4hOC4oSIsIuC4quC4tOC4h+C4q+C4suC4hOC4oSIsIuC4geC4seC4meC4ouC4suC4ouC4mSIsIuC4leC4uOC4peC4suC4hOC4oSIsIuC4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mSIsIuC4mOC4seC4meC4p+C4suC4hOC4oSJdLG1vbnRoTmFtZXNTaG9ydDpbIuC4oS7guIQuIiwi4LiBLuC4ni4iLCLguKHguLUu4LiELiIsIuC5gOC4oS7guKIuIiwi4LieLuC4hC4iLCLguKHguLQu4LiiLiIsIuC4gS7guIQuIiwi4LiqLuC4hC4iLCLguIEu4LiiLiIsIuC4lS7guIQuIiwi4LieLuC4oi4iLCLguJgu4LiELiJdLGRheU5hbWVzOlsi4Lit4Liy4LiX4Li04LiV4Lii4LmMIiwi4LiI4Lix4LiZ4LiX4Lij4LmMIiwi4Lit4Lix4LiH4LiE4Liy4LijIiwi4Lie4Li44LiYIiwi4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1Iiwi4Lio4Li44LiB4Lij4LmMIiwi4LmA4Liq4Liy4Lij4LmMIl0sZGF5TmFtZXNTaG9ydDpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSxkYXlOYW1lc01pbjpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ0aCIse2J1dHRvblRleHQ6e21vbnRoOiLguYDguJTguLfguK3guJkiLHdlZWs6IuC4quC4seC4m+C4lOC4suC4q+C5jCIsZGF5OiLguKfguLHguJkiLGxpc3Q6IuC5geC4nOC4meC4h+C4suC4mSJ9LGFsbERheVRleHQ6IuC4leC4peC4reC4lOC4p+C4seC4mSIsZXZlbnRMaW1pdFRleHQ6IuC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/tr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToiJ2luY2kiLDU6IidpbmNpIiw4OiInaW5jaSIsNzA6IidpbmNpIiw4MDoiJ2luY2kiLDI6IiduY2kiLDc6IiduY2kiLDIwOiInbmNpIiw1MDoiJ25jaSIsMzoiJ8O8bmPDvCIsNDoiJ8O8bmPDvCIsMTAwOiInw7xuY8O8Iiw2OiInbmPEsSIsOToiJ3VuY3UiLDEwOiIndW5jdSIsMzA6Iid1bmN1Iiw2MDoiJ8SxbmPEsSIsOTA6IifEsW5jxLEifTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ0ciIse21vbnRoczoiT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ik9jYV/FnnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEiLnNwbGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWzEsV/Dh2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJQYXpfUHRzX1NhbF/Dh2FyX1Blcl9DdW1fQ3RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnw7xuIHNhYXRdIExUIixuZXh0RGF5OiJbeWFyxLFuIHNhYXRdIExUIixuZXh0V2VlazoiW2hhZnRheWFdIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZMO8bl0gTFQiLGxhc3RXZWVrOiJbZ2XDp2VuIGhhZnRhXSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVzIMO2bmNlIixzOiJiaXJrYcOnIHNhbml5ZSIsbToiYmlyIGRha2lrYSIsbW06IiVkIGRha2lrYSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIgZ8O8biIsZGQ6IiVkIGfDvG4iLE06ImJpciBheSIsTU06IiVkIGF5Iix5OiJiaXIgecSxbCIseXk6IiVkIHnEsWwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0nKGluY2l8bmNpfMO8bmPDvHxuY8SxfHVuY3V8xLFuY8SxKS8sb3JkaW5hbDpmdW5jdGlvbihhKXtpZigwPT09YSlyZXR1cm4gYSsiJ8SxbmPEsSI7dmFyIGI9YSUxMCxkPWElMTAwLWIsZT1hPj0xMDA/MTAwOm51bGw7cmV0dXJuIGErKGNbYl18fGNbZF18fGNbZV0pfSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygidHIiLCJ0ciIse2Nsb3NlVGV4dDoia2FwYXQiLHByZXZUZXh0OiImI3gzQztnZXJpIixuZXh0VGV4dDoiaWxlcmkmI3gzZSIsY3VycmVudFRleHQ6ImJ1Z8O8biIsbW9udGhOYW1lczpbIk9jYWsiLCLFnnViYXQiLCJNYXJ0IiwiTmlzYW4iLCJNYXnEsXMiLCJIYXppcmFuIiwiVGVtbXV6IiwiQcSfdXN0b3MiLCJFeWzDvGwiLCJFa2ltIiwiS2FzxLFtIiwiQXJhbMSxayJdLG1vbnRoTmFtZXNTaG9ydDpbIk9jYSIsIsWedWIiLCJNYXIiLCJOaXMiLCJNYXkiLCJIYXoiLCJUZW0iLCJBxJ91IiwiRXlsIiwiRWtpIiwiS2FzIiwiQXJhIl0sZGF5TmFtZXM6WyJQYXphciIsIlBhemFydGVzaSIsIlNhbMSxIiwiw4dhcsWfYW1iYSIsIlBlcsWfZW1iZSIsIkN1bWEiLCJDdW1hcnRlc2kiXSxkYXlOYW1lc1Nob3J0OlsiUHoiLCJQdCIsIlNhIiwiw4dhIiwiUGUiLCJDdSIsIkN0Il0sZGF5TmFtZXNNaW46WyJQeiIsIlB0IiwiU2EiLCLDh2EiLCJQZSIsIkN1IiwiQ3QiXSx3ZWVrSGVhZGVyOiJIZiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ0ciIse2J1dHRvblRleHQ6e25leHQ6ImlsZXJpIixtb250aDoiQXkiLHdlZWs6IkhhZnRhIixkYXk6IkfDvG4iLGxpc3Q6IkFqYW5kYSJ9LGFsbERheVRleHQ6IlTDvG0gZ8O8biIsZXZlbnRMaW1pdFRleHQ6ImRhaGEgZmF6bGEifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/uk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5zcGxpdCgiXyIpO3JldHVybiBiJTEwPT09MSYmYiUxMDAhPT0xMT9jWzBdOmIlMTA+PTImJjQ+PWIlMTAmJigxMD5iJTEwMHx8YiUxMDA+PTIwKT9jWzFdOmNbMl19ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9e21tOiLRhdCy0LjQu9C40L3QsF/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0iLGhoOiLQs9C+0LTQuNC90LBf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0iLGRkOiLQtNC10L3RjF/QtNC90ZZf0LTQvdGW0LIiLE1NOiLQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C80ZbRgdGP0YbRltCyIix5eToi0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LIifTtyZXR1cm4ibSI9PT1kP2I/ItGF0LLQuNC70LjQvdCwIjoi0YXQstC40LvQuNC90YMiOiJoIj09PWQ/Yj8i0LPQvtC00LjQvdCwIjoi0LPQvtC00LjQvdGDIjphKyIgIitjKGVbZF0sK2EpfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYz17bm9taW5hdGl2ZToi0YHRltGH0LXQvdGMX9C70Y7RgtC40Llf0LHQtdGA0LXQt9C10L3RjF/QutCy0ZbRgtC10L3RjF/RgtGA0LDQstC10L3RjF/Rh9C10YDQstC10L3RjF/Qu9C40L/QtdC90Yxf0YHQtdGA0L/QtdC90Yxf0LLQtdGA0LXRgdC10L3RjF/QttC+0LLRgtC10L3RjF/Qu9C40YHRgtC+0L/QsNC0X9Cz0YDRg9C00LXQvdGMIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItGB0ZbRh9C90Y9f0LvRjtGC0L7Qs9C+X9Cx0LXRgNC10LfQvdGPX9C60LLRltGC0L3Rj1/RgtGA0LDQstC90Y9f0YfQtdGA0LLQvdGPX9C70LjQv9C90Y9f0YHQtdGA0L/QvdGPX9Cy0LXRgNC10YHQvdGPX9C20L7QstGC0L3Rj1/Qu9C40YHRgtC+0L/QsNC00LBf0LPRgNGD0LTQvdGPIi5zcGxpdCgiXyIpfSxkPS9EW29EXT8gKk1NTU0/Ly50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5tb250aCgpXX1mdW5jdGlvbiBmKGEsYil7dmFyIGM9e25vbWluYXRpdmU6ItC90LXQtNGW0LvRj1/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00LBf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGPX9GB0YPQsdC+0YLQsCIuc3BsaXQoIl8iKSxhY2N1c2F0aXZlOiLQvdC10LTRltC70Y5f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNGDX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRjl/RgdGD0LHQvtGC0YMiLnNwbGl0KCJfIiksZ2VuaXRpdmU6ItC90LXQtNGW0LvRll/Qv9C+0L3QtdC00ZbQu9C60LBf0LLRltCy0YLQvtGA0LrQsF/RgdC10YDQtdC00Lhf0YfQtdGC0LLQtdGA0LPQsF/Qv+KAmdGP0YLQvdC40YbRll/RgdGD0LHQvtGC0LgiLnNwbGl0KCJfIil9LGQ9LyhcW1vQktCy0KPRg11cXSkgP2RkZGQvLnRlc3QoYik/ImFjY3VzYXRpdmUiOi9cWz8oPzrQvNC40L3Rg9C70L7Rl3zQvdCw0YHRgtGD0L/QvdC+0ZcpPyA/XF0gP2RkZGQvLnRlc3QoYik/Imdlbml0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5kYXkoKV19ZnVuY3Rpb24gZyhhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYSsi0L4iKygxMT09PXRoaXMuaG91cnMoKT8i0LEiOiIiKSsiXSBMVCJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInVrIix7bW9udGhzOmUsbW9udGhzU2hvcnQ6ItGB0ZbRh1/Qu9GO0YJf0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC10YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQiLnNwbGl0KCJfIiksd2Vla2RheXM6Zix3ZWVrZGF5c1Nob3J0OiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSDRgC4iLExMTDoiRCBNTU1NIFlZWVkg0YAuLCBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkg0YAuLCBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OmcoIlvQodGM0L7Qs9C+0LTQvdGWICIpLG5leHREYXk6ZygiW9CX0LDQstGC0YDQsCAiKSxsYXN0RGF5OmcoIlvQktGH0L7RgNCwICIpLG5leHRXZWVrOmcoIlvQo10gZGRkZCBbIiksbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiBnKCJb0JzQuNC90YPQu9C+0ZddIGRkZGQgWyIpLmNhbGwodGhpcyk7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIGcoIlvQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsiKS5jYWxsKHRoaXMpfX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoiJXMg0YLQvtC80YMiLHM6ItC00LXQutGW0LvRjNC60LAg0YHQtdC60YPQvdC0IixtOmQsbW06ZCxoOiLQs9C+0LTQuNC90YMiLGhoOmQsZDoi0LTQtdC90YwiLGRkOmQsTToi0LzRltGB0Y/RhtGMIixNTTpkLHk6ItGA0ZbQuiIseXk6ZH0sbWVyaWRpZW1QYXJzZTov0L3QvtGH0ZZ80YDQsNC90LrRg3zQtNC90Y980LLQtdGH0L7RgNCwLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybi9eKNC00L3Rj3zQstC10YfQvtGA0LApJC8udGVzdChhKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiA0PmE/ItC90L7Rh9GWIjoxMj5hPyLRgNCw0L3QutGDIjoxNz5hPyLQtNC90Y8iOiLQstC10YfQvtGA0LAifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC5fNCz0L4pLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyIt0LkiO2Nhc2UiRCI6cmV0dXJuIGErIi3Qs9C+IjtkZWZhdWx0OnJldHVybiBhfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInVrIiwidWsiLHtjbG9zZVRleHQ6ItCX0LDQutGA0LjRgtC4IixwcmV2VGV4dDoiJiN4M0M7IixuZXh0VGV4dDoiJiN4M0U7IixjdXJyZW50VGV4dDoi0KHRjNC+0LPQvtC00L3RliIsbW9udGhOYW1lczpbItCh0ZbRh9C10L3RjCIsItCb0Y7RgtC40LkiLCLQkdC10YDQtdC30LXQvdGMIiwi0JrQstGW0YLQtdC90YwiLCLQotGA0LDQstC10L3RjCIsItCn0LXRgNCy0LXQvdGMIiwi0JvQuNC/0LXQvdGMIiwi0KHQtdGA0L/QtdC90YwiLCLQktC10YDQtdGB0LXQvdGMIiwi0JbQvtCy0YLQtdC90YwiLCLQm9C40YHRgtC+0L/QsNC0Iiwi0JPRgNGD0LTQtdC90YwiXSxtb250aE5hbWVzU2hvcnQ6WyLQodGW0YciLCLQm9GO0YIiLCLQkdC10YAiLCLQmtCy0ZYiLCLQotGA0LAiLCLQp9C10YAiLCLQm9C40L8iLCLQodC10YAiLCLQktC10YAiLCLQltC+0LIiLCLQm9C40YEiLCLQk9GA0YMiXSxkYXlOYW1lczpbItC90LXQtNGW0LvRjyIsItC/0L7QvdC10LTRltC70L7QuiIsItCy0ZbQstGC0L7RgNC+0LoiLCLRgdC10YDQtdC00LAiLCLRh9C10YLQstC10YAiLCLQv+KAmdGP0YLQvdC40YbRjyIsItGB0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQvdC10LQiLCLQv9C90LQiLCLQstGW0LIiLCLRgdGA0LQiLCLRh9GC0LIiLCLQv9GC0L0iLCLRgdCx0YIiXSxkYXlOYW1lc01pbjpbItCd0LQiLCLQn9C9Iiwi0JLRgiIsItCh0YAiLCLQp9GCIiwi0J/RgiIsItCh0LEiXSx3ZWVrSGVhZGVyOiLQotC40LYiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygidWsiLHtidXR0b25UZXh0Onttb250aDoi0JzRltGB0Y/RhtGMIix3ZWVrOiLQotC40LbQtNC10L3RjCIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtGA0Y/QtNC+0Log0LTQtdC90L3QuNC5In0sYWxsRGF5VGV4dDoi0KPQstC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIivRidC1ICIrYSsiLi4uIn19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/vi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ2aSIse21vbnRoczoidGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoMDFfVGgwMl9UaDAzX1RoMDRfVGgwNV9UaDA2X1RoMDdfVGgwOF9UaDA5X1RoMTBfVGgxMV9UaDEyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJjaOG7pyBuaOG6rXRfdGjhu6kgaGFpX3Ro4bupIGJhX3Ro4bupIHTGsF90aOG7qSBuxINtX3Ro4bupIHPDoXVfdGjhu6kgYuG6o3kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW27Eg21dIFlZWVkiLExMTDoiRCBNTU1NIFtuxINtXSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gW27Eg21dIFlZWVkgTFQiLGw6IkREL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBMVCIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIw7RtIG5heSBsw7pjXSBMVCIsbmV4dERheToiW05nw6B5IG1haSBsw7pjXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3R14bqnbiB04bubaSBsw7pjXSBMVCIsbGFzdERheToiW0jDtG0gcXVhIGzDumNdIExUIixsYXN0V2VlazoiZGRkZCBbdHXhuqduIHLhu5NpIGzDumNdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyB04bubaSIscGFzdDoiJXMgdHLGsOG7m2MiLHM6InbDoGkgZ2nDonkiLG06Im3hu5l0IHBow7p0IixtbToiJWQgcGjDunQiLGg6Im3hu5l0IGdp4budIixoaDoiJWQgZ2nhu50iLGQ6Im3hu5l0IG5nw6B5IixkZDoiJWQgbmfDoHkiLE06Im3hu5l0IHRow6FuZyIsTU06IiVkIHRow6FuZyIseToibeG7mXQgbsSDbSIseXk6IiVkIG7Eg20ifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJ2aSIsInZpIix7Y2xvc2VUZXh0OiLEkMOzbmciLHByZXZUZXh0OiImI3gzQztUcsaw4bubYyIsbmV4dFRleHQ6IlRp4bq/cCYjeDNFOyIsY3VycmVudFRleHQ6IkjDtG0gbmF5Iixtb250aE5hbWVzOlsiVGjDoW5nIE3hu5l0IiwiVGjDoW5nIEhhaSIsIlRow6FuZyBCYSIsIlRow6FuZyBUxrAiLCJUaMOhbmcgTsSDbSIsIlRow6FuZyBTw6F1IiwiVGjDoW5nIELhuqN5IiwiVGjDoW5nIFTDoW0iLCJUaMOhbmcgQ2jDrW4iLCJUaMOhbmcgTcaw4budaSIsIlRow6FuZyBNxrDhu51pIE3hu5l0IiwiVGjDoW5nIE3GsOG7nWkgSGFpIl0sbW9udGhOYW1lc1Nob3J0OlsiVGjDoW5nIDEiLCJUaMOhbmcgMiIsIlRow6FuZyAzIiwiVGjDoW5nIDQiLCJUaMOhbmcgNSIsIlRow6FuZyA2IiwiVGjDoW5nIDciLCJUaMOhbmcgOCIsIlRow6FuZyA5IiwiVGjDoW5nIDEwIiwiVGjDoW5nIDExIiwiVGjDoW5nIDEyIl0sZGF5TmFtZXM6WyJDaOG7pyBOaOG6rXQiLCJUaOG7qSBIYWkiLCJUaOG7qSBCYSIsIlRo4bupIFTGsCIsIlRo4bupIE7Eg20iLCJUaOG7qSBTw6F1IiwiVGjhu6kgQuG6o3kiXSxkYXlOYW1lc1Nob3J0OlsiQ04iLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciXSxkYXlOYW1lc01pbjpbIkNOIiwiVDIiLCJUMyIsIlQ0IiwiVDUiLCJUNiIsIlQ3Il0sd2Vla0hlYWRlcjoiVHUiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygidmkiLHtidXR0b25UZXh0Onttb250aDoiVGjDoW5nIix3ZWVrOiJUdcOizIBuIixkYXk6Ik5nw6B5IixsaXN0OiJM4buLY2ggYmnhu4N1In0sYWxsRGF5VGV4dDoiQ+G6oyBuZ8OgeSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisgdGjDqm0gIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/zh-cn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ6aC1jbiIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOeCuW1tIixMVFM6IkFo54K5beWIhnPnp5IiLEw6IllZWVktTU0tREQiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUxUIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelTFQiLGxsbGw6IllZWVnlubRNTU1E5pelZGRkZExUIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLlh4zmmagiPT09Ynx8IuaXqeS4iiI9PT1ifHwi5LiK5Y2IIj09PWI/YToi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOmE+PTExP2E6YSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/Ilvku4rlpKldQWhb54K55pW0XSI6Ilvku4rlpKldTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYjuWkqV1BaFvngrnmlbRdIjoiW+aYjuWkqV1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWludXRlcygpPyJb5pio5aSpXUFoW+eCueaVtF0iOiJb5pio5aSpXUxUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXt2YXIgYSxjO3JldHVybiBhPWIoKS5zdGFydE9mKCJ3ZWVrIiksYz10aGlzLnVuaXgoKS1hLnVuaXgoKT49NjA0ODAwPyJb5LiLXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBhLGM7cmV0dXJuIGE9YigpLnN0YXJ0T2YoIndlZWsiKSxjPXRoaXMudW5peCgpPGEudW5peCgpPyJb5LiKXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxzYW1lRWxzZToiTEwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0o5pelfOaciHzlkagpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGErIuaXpSI7Y2FzZSJNIjpyZXR1cm4gYSsi5pyIIjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGErIuWRqCI7ZGVmYXVsdDpyZXR1cm4gYX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+WGhSIscGFzdDoiJXPliY0iLHM6IuWHoOenkiIsbToiMeWIhumSnyIsbW06IiVk5YiG6ZKfIixoOiIx5bCP5pe2IixoaDoiJWTlsI/ml7YiLGQ6IjHlpKkiLGRkOiIlZOWkqSIsTToiMeS4quaciCIsTU06IiVk5Liq5pyIIix5OiIx5bm0Iix5eToiJWTlubQifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiemgtY24iLCJ6aC1DTiIse2Nsb3NlVGV4dDoi5YWz6ZetIixwcmV2VGV4dDoiJiN4M0M75LiK5pyIIixuZXh0VGV4dDoi5LiL5pyIJiN4M0U7IixjdXJyZW50VGV4dDoi5LuK5aSpIixtb250aE5hbWVzOlsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sbW9udGhOYW1lc1Nob3J0Olsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sZGF5TmFtZXM6WyLmmJ/mnJ/ml6UiLCLmmJ/mnJ/kuIAiLCLmmJ/mnJ/kuowiLCLmmJ/mnJ/kuIkiLCLmmJ/mnJ/lm5siLCLmmJ/mnJ/kupQiLCLmmJ/mnJ/lha0iXSxkYXlOYW1lc1Nob3J0Olsi5ZGo5pelIiwi5ZGo5LiAIiwi5ZGo5LqMIiwi5ZGo5LiJIiwi5ZGo5ZubIiwi5ZGo5LqUIiwi5ZGo5YWtIl0sZGF5TmFtZXNNaW46WyLml6UiLCLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iXSx3ZWVrSGVhZGVyOiLlkagiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiLlubQifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiemgtY24iLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLlkagiLGRheToi5pelIixsaXN0OiLml6XnqIsifSxhbGxEYXlUZXh0OiLlhajlpKkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiLlj6blpJYgIithKyIg5LiqIn19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/zh-tw.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ6aC10dyIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOm7nm1tIixMVFM6IkFo6buebeWIhnPnp5IiLEw6IllZWVnlubRNTU1E5pelIixMTDoiWVlZWeW5tE1NTUTml6UiLExMTDoiWVlZWeW5tE1NTUTml6VMVCIsTExMTDoiWVlZWeW5tE1NTUTml6VkZGRkTFQiLGw6IllZWVnlubRNTU1E5pelIixsbDoiWVlZWeW5tE1NTUTml6UiLGxsbDoiWVlZWeW5tE1NTUTml6VMVCIsbGxsbDoiWVlZWeW5tE1NTUTml6VkZGRkTFQifSxtZXJpZGllbVBhcnNlOi/ml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi5pep5LiKIj09PWJ8fCLkuIrljYgiPT09Yj9hOiLkuK3ljYgiPT09Yj9hPj0xMT9hOmErMTI6IuS4i+WNiCI9PT1ifHwi5pma5LiKIj09PWI/YSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0xMDAqYStiO3JldHVybiA5MDA+ZD8i5pep5LiKIjoxMTMwPmQ/IuS4iuWNiCI6MTIzMD5kPyLkuK3ljYgiOjE4MDA+ZD8i5LiL5Y2IIjoi5pma5LiKIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rlpKldTFQiLG5leHREYXk6IlvmmI7lpKldTFQiLG5leHRXZWVrOiJb5LiLXWRkZGRMVCIsbGFzdERheToiW+aYqOWkqV1MVCIsbGFzdFdlZWs6IlvkuIpdZGRkZExUIixzYW1lRWxzZToiTCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfSjml6V85pyIfOmAsSkvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gYSsi5pelIjtjYXNlIk0iOnJldHVybiBhKyLmnIgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gYSsi6YCxIjtkZWZhdWx0OnJldHVybiBhfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5YWnIixwYXN0OiIlc+WJjSIsczoi5bm+56eSIixtOiLkuIDliIbpkJgiLG1tOiIlZOWIhumQmCIsaDoi5LiA5bCP5pmCIixoaDoiJWTlsI/mmYIiLGQ6IuS4gOWkqSIsZGQ6IiVk5aSpIixNOiLkuIDlgIvmnIgiLE1NOiIlZOWAi+aciCIseToi5LiA5bm0Iix5eToiJWTlubQifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJ6aC10dyIsInpoLVRXIix7Y2xvc2VUZXh0OiLpl5zplokiLHByZXZUZXh0OiImI3gzQzvkuIrmnIgiLG5leHRUZXh0OiLkuIvmnIgmI3gzRTsiLGN1cnJlbnRUZXh0OiLku4rlpKkiLG1vbnRoTmFtZXM6WyLkuIDmnIgiLCLkuozmnIgiLCLkuInmnIgiLCLlm5vmnIgiLCLkupTmnIgiLCLlha3mnIgiLCLkuIPmnIgiLCLlhavmnIgiLCLkuZ3mnIgiLCLljYHmnIgiLCLljYHkuIDmnIgiLCLljYHkuozmnIgiXSxtb250aE5hbWVzU2hvcnQ6WyLkuIDmnIgiLCLkuozmnIgiLCLkuInmnIgiLCLlm5vmnIgiLCLkupTmnIgiLCLlha3mnIgiLCLkuIPmnIgiLCLlhavmnIgiLCLkuZ3mnIgiLCLljYHmnIgiLCLljYHkuIDmnIgiLCLljYHkuozmnIgiXSxkYXlOYW1lczpbIuaYn+acn+aXpSIsIuaYn+acn+S4gCIsIuaYn+acn+S6jCIsIuaYn+acn+S4iSIsIuaYn+acn+WbmyIsIuaYn+acn+S6lCIsIuaYn+acn+WFrSJdLGRheU5hbWVzU2hvcnQ6WyLlkajml6UiLCLlkajkuIAiLCLlkajkuowiLCLlkajkuIkiLCLlkajlm5siLCLlkajkupQiLCLlkajlha0iXSxkYXlOYW1lc01pbjpbIuaXpSIsIuS4gCIsIuS6jCIsIuS4iSIsIuWbmyIsIuS6lCIsIuWFrSJdLHdlZWtIZWFkZXI6IuWRqCIsZGF0ZUZvcm1hdDoieXkvbW0vZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IuW5tCJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ6aC10dyIse2J1dHRvblRleHQ6e21vbnRoOiLmnIgiLHdlZWs6IumAsSIsZGF5OiLlpKkiLGxpc3Q6IuW+hei+puS6i+mghSJ9LGFsbERheVRleHQ6IuWFqOWkqSIsZXZlbnRMaW1pdFRleHQ6IuabtOWkmiJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/animated-overlay.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAAAAAD5BTvyAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAB6SURBVEjH7dU7EoAgDEXR7H8dro/SWoZBDD8L3+0MKcmcMtfO4540vefPz/uesVwDKa6CHFdAkssgyy1AjUvJWG4Ada4DCc6BDNdAiqsgxxWQ5DLIchvwO+fOF8MtQI2bQJUbQJ3rQIKLpuhcNEXnoik6F03RuV825QIPVby31v5k6QAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEXNCgr///8tompyAAAAAWJLR0QB/wIt3gAAAA9JREFUKM9jYBgFo4D6AAACWAABdTaGdwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_glass_50_3baae3_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAjklEQVRIx2NImrp798smJgYGBgYGhlFqlBqlRqlRiubUzWXv3/9KZGLsZlzNaMHEUsnYxFDPxHKHaQ1jHxOLHdN1htlMrCxMuozbIdQOJtZ05giGo0xs6UzhjMfQ5FgWMjExrGRitWO6zjibobj/sMTr90xMgYyMjKFMjMkM2gx8g8PTo9QoNUqNUgNHAQAy4iFUVISQBwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAmElEQVRIx+3PIQ6CABgF4PfeZnPTanBjGjUYNBPkEGwmvREHMDhOQDI7PAEFNzHoHAYcQRJI8BROw5++/OEevfx3LgAADMMwjG+DNC2KusbJf06brjhCgKm45A4zZE7Za7a4xOW1yaSQCV3pyCs8MeYNnhQygYt8Xg1aB499dW5X0oYRFuKYASbCAWsMRQd9dP4ibRiG8UM+QjMuTsD8TMoAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDCf8Z/7AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE0LTEwLTE2VDExOjI5OjQzLTA0OjAw7qwnRwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAnElEQVRIx+3PrQrCYBiG4ed50SSIUbC6MLa4ZNFiMC6sCnoinoGYLIs7iBWTxeBhOJN/fIP9wPaBwWMQDW+62g03XodqZ/cCAICiKIrybZBlxjQNrmHutj1hgQ3GwgG3cIUeYvjCNVMEuM2LWfvA/Vh2rYPntDzbpXDFFAGM1BN7Qr6oL7YSeozpf2KOMGGEoWCEPjp/Ma0oivJD3kmDL+OlYr6CAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjI5OjQzLTA0OjAwn/Gf+wAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMO6sJ0cAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAA7SURBVBjTY8huZRhAlHWRIW0mQ4IbQ0Q3Q4Asg9svBtvrDCaMDFpaDIrsDOJPGQS0GDiVGZguMAwCAAA1NzDKnxUXKwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAiklEQVQoz+3PoQ3CQBSA4T8XDBOgGhTMgqhC1uNQRbMCCzAEDRoUAlAdgDQMgGhy9O7eu2sCE6AJCerTH/GcUn81APDnExaPGPacqFGXin6GLuIjtcgllmmDZNqmCWGly3jEH+Qec/xA5nrDFaHWkm4Xch3SjX0jlXmt2VLxnPpMRljrXAjfbv4Ub+PMQ/ZkpczlAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjI5OjQzLTA0OjAwn/Gf+wAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMO6sJ0cAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAc0lEQVQoz+WQzQmDYBAFh1fIlz60j8QmcrIQW/BuS4EIehD0IOIx8DysIYIFJJDTMPvYHxZ7Keq7AOCP8KITMLkUMFJ+zAM3Ab2zQC6gC2udAhcBLUnA811MAu/Zwzr37cMGrgcb44hY69mVgJXm+1/6aWwSxTXBL1HtNgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAwUlEQVQoz+WQPWrCABhAHx+4dCmCkE7t4OBQHIV07RG6JfQOPUPOoPQGZnJ31EVMp3YpzZRARQvmp21Ik5gIn4OHUOj0lgcPHtmsWuxfBAD+DQISKlEblw/B1jG+qMUYn+9VOdgbpHUxbULSdmE2rqihDh7x9V+v6RN18uc6YXuRt+qJaKFPzPkqslV9yybOHnaR6Ls+MhU1cPCOyozP9c9N9SuYOuJN9AqHpah1rN8x5JXwPu1WlwRBkpTlqS+dOQ7zL15k0evlYwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_2e83ff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABEVBMVEUug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug//V8/46AAAAWnRSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAZYVTi0aRlGNhTaBobZtzv33AvOOt5enkgY5d393gudbb0sTV1Ndi2nD+Dc6Zafg4KhYcxXnRp8iT0Niv8M2QiLC7x6vji8qEAAAAAWJLR0QAiAUdSAAAD2tJREFUeNrtXQtj27YRBslIqumYkhu5S5s4br0mczYvyV5d13Vt1KZr4zqpu6Trev//hwzgC4c7PMRSpmgbn2zJR4AA7uMBvANAWYiIiIgRIIFk203Ysv4wcgZ6Ny8Bv/4JZkBlHpYQYoGgYBJA22Okq9QEHwFgFYCnAnJ++eegJkEtkBOQ0PYY6fQKMgLo6bwCljkZkAHWfrsKnnTOoCC5/aXbMifeTBsFs2DeRHqBuYV4rzC3AE8DhrcAOymsiT4C2NnATMRTOjHB4ceANfi41LsA7ULD3wW2jpvuCEVERERERESMGJfuCW7ZD0pYtAbUeU/oGTS7EeAnrALffACbEJKlD0qJpQGMAJaBZjfDxYRVQAnwRJeq9CGDIdZ+e4s9yZYZlcRzughMAUJJwGDTAdyChc1mjWhtjfmAxCzN16O2bQFWJJ4W958P4D1kq2NAGNf9LhARERERERERsT30c/yDrmmw/N6BR88CgC+nQofcvdvHtwOwBgVKA/8Rrh5JBp7FPB1cafYKvA2wpPrrt5XgI4ils8KYBrw6IIngSGwYZeWRE8CVuEb9PFyGEAF8Agj8GoRP92QxFaxzkzkrMzst0MufNYfXhLwdSNgshDBuOd1vouEauqgX7OOWPUTgTw+USC4HBC9IoAIQ1jrdqdu+C1zy+eHbZERERERERMRNRf9tqT3djMSyG91dpM0PDS5VBarv1oC1KvDH82xt1dIAlC7w4tQaXp3K7A5OwLq8zxvJinTXb4lvqQK+ssF6URE/Ai9P8tZaNrsnXgICe8OF1cx8DHj5SyzTPYHpByOcbcLh5gBbOycWxMJhSzTOHtkQazTAnmplmJROz7fYgPt0RgBrAW+emU67WJgAewOcl3CtZBYwuwmwrq3zFXrnBWBdgHSRYBew9/LEmYMx7N0cwPNYDEyYBQi2Qh8ggAyCJJUNS6EZHFq/5Rr5k+2tcBC4TvAesACeedzzAdt+PiYiIiIiImLUuNy7OHdUyKOyljM261iEi4Nu2TvqD/wIjv6sZ2DW1lovJxrTzOAU2cqOf+GrO4DtFjd9x2pt0vN0eMDVt2QAprAwok8vIWAvsy8B7ue7yyTP9wPY5jPM9WrWXl9w0JwLrtM3TkATbroISCzhMG+6J57i6bbVaSCp4M8MG6QgsbSQhbuATRS8fdhSGp0Q8e5ZsRJAu8TGwzs9qKnJBBadmc/3W9KJYOv2mBDGT4CQEOH9Yc7osOiUPDESiF5Dm4BC8w/++aNriOuuX0RERETE9UZ6xW9kFrcDfMtV1Bv+NfqPaSnAusxiel9pcDUQUlKoVxRiVIshbOuyQPGKUjWFFAVDZnyXQmUBOr+wLoEzAsfSbYBHL3R7vdTfiM4MAqAiwYhnqYj1TWBcBFiW3zlBKZEpAfhTWGI3dCxpu9hYusAaFsDymzs2KoIcFkD3KzR0j0Z/piMbA0gO6wxNqq2EjgGWDTKjMX/dJkPCH44hH+VP7QqB5S+FAb8rswMDnI5uF4neA31IRkhAX3TRPyIiIiLiZiFTfkK2fv5bE4lbQ7VuKhs3m/pyvBPw3GCncpVcKmY0OfPzcUvkALm4RQpAZ+xKcVc4ZJoobtcgJzQqwV5RTJGzV/5tEFK6RXO++7kRF7WGC0PftsVUZitbu3V60+pJDpMJ5BOjAYIFE3SvrVWoDsxtNbZBWlEUaQVCyMwgADEAykQnusYdgwBZ9L5E60pDYwGu9e6qOF3gBCbvvnsHMAHL5dL/BIbABIgAAbsGgaBURwckIQkmpGqgSfiBgssCYAroQ1VcjwGAGmi0+KA8/UAT8O57u78xCLh79y7bHu+WyQFKgNL/fUyAaVIg9TdtDD5I1QtVeFfBaQH7SnWY7ut5gKy0/5YAVT6aYquK0wXKLnDvHu4CSyEvgXxvT8jK168kQOl/+/77bgISckAeSZL9BIUwcHh46B4DYF8yIPXHBJQ/LQHlIIgIeKDOfvCgOXBUDYJHRB10AieAPaIhCAEf4vmJ+eK2fC9cBNAK4aMSqMLj42PQJsosINufTuWb7gKl7CbguEJ9IMnhvTy/Azl+Rgh1IXngt+UL6zuhBEwIAWBYwFzr7yGgLe7jEsTkJi0B1AKy/RLNJWIyqDF2CkafzPP2LpA39edOC+AEhLoATq/GwKLN3BKQmfW1xVV+ALwjHCAWELoNVu2Zm3Mwmb51A1c4MOgtcPX8ACWgZKAQm0OWLUp08PUYh6brEs4OvaaVdjeqf0RERETEyPHwoT89Be+8NoBt6yNBpsPdR+Vt6lEj1sF2G2PPa3nenlu5Jrtry0L8jrSn8N7XZLR1QA7J2zbWP8s0AzPlRZ7kUxTsyCbPd1pHzkpFpo8/ql3xhgF5sgJZaTI9m1y5gmvL1fVoNSiUM5e29/ZUcTvH1/QxwGOiv3KUDrX+yjdvo1+6O5w5ZgJ+L197uEGZvM4Zym+sDdLYQvxBnIo/4vg2l0JuyMKUDyYHSFbtXyxcDYTa2a/lxuCQxcnGLlLtOlYzFm10xQmoZgcQAU8ePH12/wGaNsqkfWe4PV4C/gR/lq+/YAWV609kHHzI2HiSU9+3lWtnPrXX97AR0Tgwg72F5KASdpoZmx0XAfUogCxgD/4KD3WDpP5oyi5sAX8Tn4i/6ymlY2IBx8QCjokFLIzYQ/aAapBq41tS36eV9GnbwDKYx7EDqDFA6xcm4MmDDz+SL7v+taeOCUihnHVq5H/AZ/L1T7RjwujjpXyHyCi97L8SHzkIaKK71GgQsR+BYY7yMJmKQyNeJARkhGGif7sjwiQAyZ9/cnd2919f1PJ+U9zuevLCvHqCdYFaxuLjx1pWtt/Od1oJEARqj1Aq3JOSQCa5H9UN1ncBtcVIuLqE6u6kOL8siP48gE+x/uLpl3L4m3/5tCVA9v/Ucz5TdM4GUXOSlU3yEz+ATnsT2fYNMD55QfWnt0FRberSyeWKwO2iPR9YCQZycQVRdAjwDR8oIiIiImILmOKJaeXKwTHL81z/eclbC1XoAd67H/RpQQor+b7Ct+YTQK7m+/DVV19/DV+g5uwp/UvIP+7chydP4P6dJp3st2imG5r5hlamB9rgjfpNOcym0xcGA/4vFwthIcvKUbQJkoEV9cYPtef1jcK/tSu6msoCFiy4adON2JQ9ZF0HrzqPdB0zGezoxcEqQQdXyjFewQvLbtlfSYBytdAZSvfy1zQATcC33z1//t23uj1TAcUCr+xQAowtI1BORqEND6mopipS7Wtnaj4GEfBMrdXhCleKdRcBNLzk6pL0skshi1qVstY/NfNDaeu77ekvZdIMuaswIRsyzPPLdVCUAVTgKeM5gS1gPsf71fOzMxVeagKk/gJNgVHGabBgF4mJt+1vbADpX13BZgz4DHYl4GWboSiM8+HAT8CR/PNI/TTJysCmcIgsgESvz57tPzuDk7bAF6p1s80RQC3g+1JuZuVq/bWC+arEoXm6JgzSDw4ODgwC6itbfRxKfC5/yIaHlXMMODtTHQAPgi+m09kGB0EyBnxfjwE1A0r/wghH76j2HurTV3twghhQBR2hYa+ZvGn0+/jj+ocYiHMMmGZnZ2dwhhmgt8FN3wUeq4lZ3R4auq3mcz1hJUdA+ZNqBsD4aP7cbQ7Q22BpESUcYwBMFTABtmvYhwCCtLz2jxs/wLJH0BxhpbW8SNVI+bxJPX+SmF/rIspRo5YmmZrSy5oNG939gO3j6NWrIyQu9hRX6fOWMdpgtnMyIiIiohemeHf06x/UEPPD6203akBcAFy0wo/NqPvjtps1GO4pde/VwuvqjqPetQ0sYYlP+I/FmRGb23m2LPlf9i9oXVyoAOqiFt5oAt60OYjbYPMjCk0JW3qgB6gMS3VPX3rLv0TcqxS+hyqnrgdrT0oPFNooAhs3lfx28tZcnWXVDUmAHAFUCH1hVG62YY4Xxir99fJiYepv27q7SBdYv7fy7a2RYblFAormehduAgrS5QFOU5yG9bcRkBomU240nxjhtEFABsvlcjhPVyvsJoCfg/SXuhuDYm8LGHYQLA2gemim1OGVJuAVylT4C8DpvceAYaM1Oug91eJTnImcRBgw+Ol9FxBiwCFwqRWuWnDeiOdYRzoGYKnY/O7zrQbrP6lpWXj50zbbMKbZioiIiIiIiEtGAT7xsgEz4sis9YREH+zsUP3BI14+AUAoMAgo01KcoZil6s3IoELmRp5XmdzhbUF854IlQ7lCNiABJgUmAVVa2+by8kj1aAaDAJzOCaDBIp8MMDfjDkIA3gxMCSinP+pGlh8z3OY6AyZgZtEprLEhbvL/B6xFwIAWsBYBA1vAsGMAxdbHgIHvAny+Y8t3gRFgu35ARERERMTNhv85suuO9L8Cfv4c7d2UXsrJDfqeXPUcKfxcoOcZ8uKl5QGKxjeh33/QVR4dVvA/SYBAu5MVKzPGAH2yVO/X7yaPDSmcCvFzIU7x09arQxnRms/XakUmBxP5027fhgNzP7uSwZQn6jUZqXub1fvmT/QVyhegdtvvOQgovxot2W++Xw8SSBJ1oJH31Ut//55Kl0eS/ZESUFqAxCm+4mpcWBm7kxEBX1RoTbyjPDrMynvgAu15kcHoFA6nDgKu3SCYA5yenOJhv5qO0CEpbPg/XI4N+YW8PhdX8qn5iIiIiIjeoM8HhGS6iaqr3LW+vnII9PmAkEy30XWVu9bXVw5ef2jxeh2ZbqTsKnetr68cBH0+4I0uoJHPlW94XsvVVtoy/VUrA5WFM/2NTn/jrF+AN13t6CTpgrZf4OcdfABdAbRyU4ioV4PPz/HqcCg/T2f59RK5LR2vntk/wWiP+OWXX4TZHiHO1lxfA/RMr0NWvfecNBg3iOUXTCF/fkJAsD2i+XXIZ5X+myNggb6DzkKA7bOLQsH6LRbis4AzUem/NgHhLqC+fauLiYe6CIQI9HYpQfJTWTJw1uYPgj4fYBnUmkFQD2J0kAIquwdV6yBJ66eDrJne8OOSVR9o5SCGvo31vY12lcMY2pHp60h1lcMY2pXt60p3lSMiIiIiIiI8qB2HS5NHD/L/A8PyNSQA/ASUL6yg8BMg6D89HDeqryQEj0wIgubNJZN/fzd2RAu48WPATb8LRERERERERGwaydXxBIK7ICHrvtE1If8faMxIRKCtaxBAr/dV0n8TFkD1vVL6mxZQbm8vXw4C2rU3U1+DQ3X2tR0Dsgam/viKV/pfHRvoawFV/qurf18LuPL6970LOPS/tmNAAFr/q2MDQQvoAqV38xsRMXL8H46Lpn0W3YdPAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjE0OjE5LTA0OjAwH30jYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNS0yNlQxMTo0NzozMS0wNDowMI39KP8AAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_3d80b3_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABEVBMVEU9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLOLCBchAAAAWnRSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAZYVTi0aRlGNhTaBobZtzv33AvOOt5enkgY5d393gudbb0sTV1Ndi2nD+Dc6Zafg4KhYcxXnRp8iT0Niv8M2QiLC7x6vji8qEAAAAAWJLR0QAiAUdSAAAD2tJREFUeNrtXQtj27YRBslIqumYkhu5S5s4br0mczYvyV5d13Vt1KZr4zqpu6Trev//hwzgC4c7PMRSpmgbn2zJR4AA7uMBvANAWYiIiIgRIIFk203Ysv4wcgZ6Ny8Bv/4JZkBlHpYQYoGgYBJA22Okq9QEHwFgFYCnAnJ++eegJkEtkBOQ0PYY6fQKMgLo6bwCljkZkAHWfrsKnnTOoCC5/aXbMifeTBsFs2DeRHqBuYV4rzC3AE8DhrcAOymsiT4C2NnATMRTOjHB4ceANfi41LsA7ULD3wW2jpvuCEVERERERESMGJfuCW7ZD0pYtAbUeU/oGTS7EeAnrALffACbEJKlD0qJpQGMAJaBZjfDxYRVQAnwRJeq9CGDIdZ+e4s9yZYZlcRzughMAUJJwGDTAdyChc1mjWhtjfmAxCzN16O2bQFWJJ4W958P4D1kq2NAGNf9LhARERERERERsT30c/yDrmmw/N6BR88CgC+nQofcvdvHtwOwBgVKA/8Rrh5JBp7FPB1cafYKvA2wpPrrt5XgI4ils8KYBrw6IIngSGwYZeWRE8CVuEb9PFyGEAF8Agj8GoRP92QxFaxzkzkrMzst0MufNYfXhLwdSNgshDBuOd1vouEauqgX7OOWPUTgTw+USC4HBC9IoAIQ1jrdqdu+C1zy+eHbZERERERERMRNRf9tqT3djMSyG91dpM0PDS5VBarv1oC1KvDH82xt1dIAlC7w4tQaXp3K7A5OwLq8zxvJinTXb4lvqQK+ssF6URE/Ai9P8tZaNrsnXgICe8OF1cx8DHj5SyzTPYHpByOcbcLh5gBbOycWxMJhSzTOHtkQazTAnmplmJROz7fYgPt0RgBrAW+emU67WJgAewOcl3CtZBYwuwmwrq3zFXrnBWBdgHSRYBew9/LEmYMx7N0cwPNYDEyYBQi2Qh8ggAyCJJUNS6EZHFq/5Rr5k+2tcBC4TvAesACeedzzAdt+PiYiIiIiImLUuNy7OHdUyKOyljM261iEi4Nu2TvqD/wIjv6sZ2DW1lovJxrTzOAU2cqOf+GrO4DtFjd9x2pt0vN0eMDVt2QAprAwok8vIWAvsy8B7ue7yyTP9wPY5jPM9WrWXl9w0JwLrtM3TkATbroISCzhMG+6J57i6bbVaSCp4M8MG6QgsbSQhbuATRS8fdhSGp0Q8e5ZsRJAu8TGwzs9qKnJBBadmc/3W9KJYOv2mBDGT4CQEOH9Yc7osOiUPDESiF5Dm4BC8w/++aNriOuuX0RERETE9UZ6xW9kFrcDfMtV1Bv+NfqPaSnAusxiel9pcDUQUlKoVxRiVIshbOuyQPGKUjWFFAVDZnyXQmUBOr+wLoEzAsfSbYBHL3R7vdTfiM4MAqAiwYhnqYj1TWBcBFiW3zlBKZEpAfhTWGI3dCxpu9hYusAaFsDymzs2KoIcFkD3KzR0j0Z/piMbA0gO6wxNqq2EjgGWDTKjMX/dJkPCH44hH+VP7QqB5S+FAb8rswMDnI5uF4neA31IRkhAX3TRPyIiIiLiZiFTfkK2fv5bE4lbQ7VuKhs3m/pyvBPw3GCncpVcKmY0OfPzcUvkALm4RQpAZ+xKcVc4ZJoobtcgJzQqwV5RTJGzV/5tEFK6RXO++7kRF7WGC0PftsVUZitbu3V60+pJDpMJ5BOjAYIFE3SvrVWoDsxtNbZBWlEUaQVCyMwgADEAykQnusYdgwBZ9L5E60pDYwGu9e6qOF3gBCbvvnsHMAHL5dL/BIbABIgAAbsGgaBURwckIQkmpGqgSfiBgssCYAroQ1VcjwGAGmi0+KA8/UAT8O57u78xCLh79y7bHu+WyQFKgNL/fUyAaVIg9TdtDD5I1QtVeFfBaQH7SnWY7ut5gKy0/5YAVT6aYquK0wXKLnDvHu4CSyEvgXxvT8jK168kQOl/+/77bgISckAeSZL9BIUwcHh46B4DYF8yIPXHBJQ/LQHlIIgIeKDOfvCgOXBUDYJHRB10AieAPaIhCAEf4vmJ+eK2fC9cBNAK4aMSqMLj42PQJsosINufTuWb7gKl7CbguEJ9IMnhvTy/Azl+Rgh1IXngt+UL6zuhBEwIAWBYwFzr7yGgLe7jEsTkJi0B1AKy/RLNJWIyqDF2CkafzPP2LpA39edOC+AEhLoATq/GwKLN3BKQmfW1xVV+ALwjHCAWELoNVu2Zm3Mwmb51A1c4MOgtcPX8ACWgZKAQm0OWLUp08PUYh6brEs4OvaaVdjeqf0RERETEyPHwoT89Be+8NoBt6yNBpsPdR+Vt6lEj1sF2G2PPa3nenlu5Jrtry0L8jrSn8N7XZLR1QA7J2zbWP8s0AzPlRZ7kUxTsyCbPd1pHzkpFpo8/ql3xhgF5sgJZaTI9m1y5gmvL1fVoNSiUM5e29/ZUcTvH1/QxwGOiv3KUDrX+yjdvo1+6O5w5ZgJ+L197uEGZvM4Zym+sDdLYQvxBnIo/4vg2l0JuyMKUDyYHSFbtXyxcDYTa2a/lxuCQxcnGLlLtOlYzFm10xQmoZgcQAU8ePH12/wGaNsqkfWe4PV4C/gR/lq+/YAWV609kHHzI2HiSU9+3lWtnPrXX97AR0Tgwg72F5KASdpoZmx0XAfUogCxgD/4KD3WDpP5oyi5sAX8Tn4i/6ymlY2IBx8QCjokFLIzYQ/aAapBq41tS36eV9GnbwDKYx7EDqDFA6xcm4MmDDz+SL7v+taeOCUihnHVq5H/AZ/L1T7RjwujjpXyHyCi97L8SHzkIaKK71GgQsR+BYY7yMJmKQyNeJARkhGGif7sjwiQAyZ9/cnd2919f1PJ+U9zuevLCvHqCdYFaxuLjx1pWtt/Od1oJEARqj1Aq3JOSQCa5H9UN1ncBtcVIuLqE6u6kOL8siP48gE+x/uLpl3L4m3/5tCVA9v/Ucz5TdM4GUXOSlU3yEz+ATnsT2fYNMD55QfWnt0FRberSyeWKwO2iPR9YCQZycQVRdAjwDR8oIiIiImILmOKJaeXKwTHL81z/eclbC1XoAd67H/RpQQor+b7Ct+YTQK7m+/DVV19/DV+g5uwp/UvIP+7chydP4P6dJp3st2imG5r5hlamB9rgjfpNOcym0xcGA/4vFwthIcvKUbQJkoEV9cYPtef1jcK/tSu6msoCFiy4adON2JQ9ZF0HrzqPdB0zGezoxcEqQQdXyjFewQvLbtlfSYBytdAZSvfy1zQATcC33z1//t23uj1TAcUCr+xQAowtI1BORqEND6mopipS7Wtnaj4GEfBMrdXhCleKdRcBNLzk6pL0skshi1qVstY/NfNDaeu77ekvZdIMuaswIRsyzPPLdVCUAVTgKeM5gS1gPsf71fOzMxVeagKk/gJNgVHGabBgF4mJt+1vbADpX13BZgz4DHYl4GWboSiM8+HAT8CR/PNI/TTJysCmcIgsgESvz57tPzuDk7bAF6p1s80RQC3g+1JuZuVq/bWC+arEoXm6JgzSDw4ODgwC6itbfRxKfC5/yIaHlXMMODtTHQAPgi+m09kGB0EyBnxfjwE1A0r/wghH76j2HurTV3twghhQBR2hYa+ZvGn0+/jj+ocYiHMMmGZnZ2dwhhmgt8FN3wUeq4lZ3R4auq3mcz1hJUdA+ZNqBsD4aP7cbQ7Q22BpESUcYwBMFTABtmvYhwCCtLz2jxs/wLJH0BxhpbW8SNVI+bxJPX+SmF/rIspRo5YmmZrSy5oNG939gO3j6NWrIyQu9hRX6fOWMdpgtnMyIiIiohemeHf06x/UEPPD6203akBcAFy0wo/NqPvjtps1GO4pde/VwuvqjqPetQ0sYYlP+I/FmRGb23m2LPlf9i9oXVyoAOqiFt5oAt60OYjbYPMjCk0JW3qgB6gMS3VPX3rLv0TcqxS+hyqnrgdrT0oPFNooAhs3lfx28tZcnWXVDUmAHAFUCH1hVG62YY4Xxir99fJiYepv27q7SBdYv7fy7a2RYblFAormehduAgrS5QFOU5yG9bcRkBomU240nxjhtEFABsvlcjhPVyvsJoCfg/SXuhuDYm8LGHYQLA2gemim1OGVJuAVylT4C8DpvceAYaM1Oug91eJTnImcRBgw+Ol9FxBiwCFwqRWuWnDeiOdYRzoGYKnY/O7zrQbrP6lpWXj50zbbMKbZioiIiIiIiEtGAT7xsgEz4sis9YREH+zsUP3BI14+AUAoMAgo01KcoZil6s3IoELmRp5XmdzhbUF854IlQ7lCNiABJgUmAVVa2+by8kj1aAaDAJzOCaDBIp8MMDfjDkIA3gxMCSinP+pGlh8z3OY6AyZgZtEprLEhbvL/B6xFwIAWsBYBA1vAsGMAxdbHgIHvAny+Y8t3gRFgu35ARERERMTNhv85suuO9L8Cfv4c7d2UXsrJDfqeXPUcKfxcoOcZ8uKl5QGKxjeh33/QVR4dVvA/SYBAu5MVKzPGAH2yVO/X7yaPDSmcCvFzIU7x09arQxnRms/XakUmBxP5027fhgNzP7uSwZQn6jUZqXub1fvmT/QVyhegdtvvOQgovxot2W++Xw8SSBJ1oJH31Ut//55Kl0eS/ZESUFqAxCm+4mpcWBm7kxEBX1RoTbyjPDrMynvgAu15kcHoFA6nDgKu3SCYA5yenOJhv5qO0CEpbPg/XI4N+YW8PhdX8qn5iIiIiIjeoM8HhGS6iaqr3LW+vnII9PmAkEy30XWVu9bXVw5ef2jxeh2ZbqTsKnetr68cBH0+4I0uoJHPlW94XsvVVtoy/VUrA5WFM/2NTn/jrF+AN13t6CTpgrZf4OcdfABdAbRyU4ioV4PPz/HqcCg/T2f59RK5LR2vntk/wWiP+OWXX4TZHiHO1lxfA/RMr0NWvfecNBg3iOUXTCF/fkJAsD2i+XXIZ5X+myNggb6DzkKA7bOLQsH6LRbis4AzUem/NgHhLqC+fauLiYe6CIQI9HYpQfJTWTJw1uYPgj4fYBnUmkFQD2J0kAIquwdV6yBJ66eDrJne8OOSVR9o5SCGvo31vY12lcMY2pHp60h1lcMY2pXt60p3lSMiIiIiIiI8qB2HS5NHD/L/A8PyNSQA/ASUL6yg8BMg6D89HDeqryQEj0wIgubNJZN/fzd2RAu48WPATb8LRERERERERGwaydXxBIK7ICHrvtE1If8faMxIRKCtaxBAr/dV0n8TFkD1vVL6mxZQbm8vXw4C2rU3U1+DQ3X2tR0Dsgam/viKV/pfHRvoawFV/qurf18LuPL6970LOPS/tmNAAFr/q2MDQQvoAqV38xsRMXL8H46Lpn0W3YdPAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjE0OjE5LTA0OjAwH30jYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNS0yNlQxMTo0NzozMS0wNDowMI39KP8AAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_72a7cf_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABEVBMVEVyp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp8+rX5BMAAAAWnRSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAZYVTi0aRlGNhTaBobZtzv33AvOOt5enkgY5d393gudbb0sTV1Ndi2nD+Dc6Zafg4KhYcxXnRp8iT0Niv8M2QiLC7x6vji8qEAAAAAWJLR0QAiAUdSAAAD2tJREFUeNrtXQtj27YRBslIqumYkhu5S5s4br0mczYvyV5d13Vt1KZr4zqpu6Trev//hwzgC4c7PMRSpmgbn2zJR4AA7uMBvANAWYiIiIgRIIFk203Ysv4wcgZ6Ny8Bv/4JZkBlHpYQYoGgYBJA22Okq9QEHwFgFYCnAnJ++eegJkEtkBOQ0PYY6fQKMgLo6bwCljkZkAHWfrsKnnTOoCC5/aXbMifeTBsFs2DeRHqBuYV4rzC3AE8DhrcAOymsiT4C2NnATMRTOjHB4ceANfi41LsA7ULD3wW2jpvuCEVERERERESMGJfuCW7ZD0pYtAbUeU/oGTS7EeAnrALffACbEJKlD0qJpQGMAJaBZjfDxYRVQAnwRJeq9CGDIdZ+e4s9yZYZlcRzughMAUJJwGDTAdyChc1mjWhtjfmAxCzN16O2bQFWJJ4W958P4D1kq2NAGNf9LhARERERERERsT30c/yDrmmw/N6BR88CgC+nQofcvdvHtwOwBgVKA/8Rrh5JBp7FPB1cafYKvA2wpPrrt5XgI4ils8KYBrw6IIngSGwYZeWRE8CVuEb9PFyGEAF8Agj8GoRP92QxFaxzkzkrMzst0MufNYfXhLwdSNgshDBuOd1vouEauqgX7OOWPUTgTw+USC4HBC9IoAIQ1jrdqdu+C1zy+eHbZERERERERMRNRf9tqT3djMSyG91dpM0PDS5VBarv1oC1KvDH82xt1dIAlC7w4tQaXp3K7A5OwLq8zxvJinTXb4lvqQK+ssF6URE/Ai9P8tZaNrsnXgICe8OF1cx8DHj5SyzTPYHpByOcbcLh5gBbOycWxMJhSzTOHtkQazTAnmplmJROz7fYgPt0RgBrAW+emU67WJgAewOcl3CtZBYwuwmwrq3zFXrnBWBdgHSRYBew9/LEmYMx7N0cwPNYDEyYBQi2Qh8ggAyCJJUNS6EZHFq/5Rr5k+2tcBC4TvAesACeedzzAdt+PiYiIiIiImLUuNy7OHdUyKOyljM261iEi4Nu2TvqD/wIjv6sZ2DW1lovJxrTzOAU2cqOf+GrO4DtFjd9x2pt0vN0eMDVt2QAprAwok8vIWAvsy8B7ue7yyTP9wPY5jPM9WrWXl9w0JwLrtM3TkATbroISCzhMG+6J57i6bbVaSCp4M8MG6QgsbSQhbuATRS8fdhSGp0Q8e5ZsRJAu8TGwzs9qKnJBBadmc/3W9KJYOv2mBDGT4CQEOH9Yc7osOiUPDESiF5Dm4BC8w/++aNriOuuX0RERETE9UZ6xW9kFrcDfMtV1Bv+NfqPaSnAusxiel9pcDUQUlKoVxRiVIshbOuyQPGKUjWFFAVDZnyXQmUBOr+wLoEzAsfSbYBHL3R7vdTfiM4MAqAiwYhnqYj1TWBcBFiW3zlBKZEpAfhTWGI3dCxpu9hYusAaFsDymzs2KoIcFkD3KzR0j0Z/piMbA0gO6wxNqq2EjgGWDTKjMX/dJkPCH44hH+VP7QqB5S+FAb8rswMDnI5uF4neA31IRkhAX3TRPyIiIiLiZiFTfkK2fv5bE4lbQ7VuKhs3m/pyvBPw3GCncpVcKmY0OfPzcUvkALm4RQpAZ+xKcVc4ZJoobtcgJzQqwV5RTJGzV/5tEFK6RXO++7kRF7WGC0PftsVUZitbu3V60+pJDpMJ5BOjAYIFE3SvrVWoDsxtNbZBWlEUaQVCyMwgADEAykQnusYdgwBZ9L5E60pDYwGu9e6qOF3gBCbvvnsHMAHL5dL/BIbABIgAAbsGgaBURwckIQkmpGqgSfiBgssCYAroQ1VcjwGAGmi0+KA8/UAT8O57u78xCLh79y7bHu+WyQFKgNL/fUyAaVIg9TdtDD5I1QtVeFfBaQH7SnWY7ut5gKy0/5YAVT6aYquK0wXKLnDvHu4CSyEvgXxvT8jK168kQOl/+/77bgISckAeSZL9BIUwcHh46B4DYF8yIPXHBJQ/LQHlIIgIeKDOfvCgOXBUDYJHRB10AieAPaIhCAEf4vmJ+eK2fC9cBNAK4aMSqMLj42PQJsosINufTuWb7gKl7CbguEJ9IMnhvTy/Azl+Rgh1IXngt+UL6zuhBEwIAWBYwFzr7yGgLe7jEsTkJi0B1AKy/RLNJWIyqDF2CkafzPP2LpA39edOC+AEhLoATq/GwKLN3BKQmfW1xVV+ALwjHCAWELoNVu2Zm3Mwmb51A1c4MOgtcPX8ACWgZKAQm0OWLUp08PUYh6brEs4OvaaVdjeqf0RERETEyPHwoT89Be+8NoBt6yNBpsPdR+Vt6lEj1sF2G2PPa3nenlu5Jrtry0L8jrSn8N7XZLR1QA7J2zbWP8s0AzPlRZ7kUxTsyCbPd1pHzkpFpo8/ql3xhgF5sgJZaTI9m1y5gmvL1fVoNSiUM5e29/ZUcTvH1/QxwGOiv3KUDrX+yjdvo1+6O5w5ZgJ+L197uEGZvM4Zym+sDdLYQvxBnIo/4vg2l0JuyMKUDyYHSFbtXyxcDYTa2a/lxuCQxcnGLlLtOlYzFm10xQmoZgcQAU8ePH12/wGaNsqkfWe4PV4C/gR/lq+/YAWV609kHHzI2HiSU9+3lWtnPrXX97AR0Tgwg72F5KASdpoZmx0XAfUogCxgD/4KD3WDpP5oyi5sAX8Tn4i/6ymlY2IBx8QCjokFLIzYQ/aAapBq41tS36eV9GnbwDKYx7EDqDFA6xcm4MmDDz+SL7v+taeOCUihnHVq5H/AZ/L1T7RjwujjpXyHyCi97L8SHzkIaKK71GgQsR+BYY7yMJmKQyNeJARkhGGif7sjwiQAyZ9/cnd2919f1PJ+U9zuevLCvHqCdYFaxuLjx1pWtt/Od1oJEARqj1Aq3JOSQCa5H9UN1ncBtcVIuLqE6u6kOL8siP48gE+x/uLpl3L4m3/5tCVA9v/Ucz5TdM4GUXOSlU3yEz+ATnsT2fYNMD55QfWnt0FRberSyeWKwO2iPR9YCQZycQVRdAjwDR8oIiIiImILmOKJaeXKwTHL81z/eclbC1XoAd67H/RpQQor+b7Ct+YTQK7m+/DVV19/DV+g5uwp/UvIP+7chydP4P6dJp3st2imG5r5hlamB9rgjfpNOcym0xcGA/4vFwthIcvKUbQJkoEV9cYPtef1jcK/tSu6msoCFiy4adON2JQ9ZF0HrzqPdB0zGezoxcEqQQdXyjFewQvLbtlfSYBytdAZSvfy1zQATcC33z1//t23uj1TAcUCr+xQAowtI1BORqEND6mopipS7Wtnaj4GEfBMrdXhCleKdRcBNLzk6pL0skshi1qVstY/NfNDaeu77ekvZdIMuaswIRsyzPPLdVCUAVTgKeM5gS1gPsf71fOzMxVeagKk/gJNgVHGabBgF4mJt+1vbADpX13BZgz4DHYl4GWboSiM8+HAT8CR/PNI/TTJysCmcIgsgESvz57tPzuDk7bAF6p1s80RQC3g+1JuZuVq/bWC+arEoXm6JgzSDw4ODgwC6itbfRxKfC5/yIaHlXMMODtTHQAPgi+m09kGB0EyBnxfjwE1A0r/wghH76j2HurTV3twghhQBR2hYa+ZvGn0+/jj+ocYiHMMmGZnZ2dwhhmgt8FN3wUeq4lZ3R4auq3mcz1hJUdA+ZNqBsD4aP7cbQ7Q22BpESUcYwBMFTABtmvYhwCCtLz2jxs/wLJH0BxhpbW8SNVI+bxJPX+SmF/rIspRo5YmmZrSy5oNG939gO3j6NWrIyQu9hRX6fOWMdpgtnMyIiIiohemeHf06x/UEPPD6203akBcAFy0wo/NqPvjtps1GO4pde/VwuvqjqPetQ0sYYlP+I/FmRGb23m2LPlf9i9oXVyoAOqiFt5oAt60OYjbYPMjCk0JW3qgB6gMS3VPX3rLv0TcqxS+hyqnrgdrT0oPFNooAhs3lfx28tZcnWXVDUmAHAFUCH1hVG62YY4Xxir99fJiYepv27q7SBdYv7fy7a2RYblFAormehduAgrS5QFOU5yG9bcRkBomU240nxjhtEFABsvlcjhPVyvsJoCfg/SXuhuDYm8LGHYQLA2gemim1OGVJuAVylT4C8DpvceAYaM1Oug91eJTnImcRBgw+Ol9FxBiwCFwqRWuWnDeiOdYRzoGYKnY/O7zrQbrP6lpWXj50zbbMKbZioiIiIiIiEtGAT7xsgEz4sis9YREH+zsUP3BI14+AUAoMAgo01KcoZil6s3IoELmRp5XmdzhbUF854IlQ7lCNiABJgUmAVVa2+by8kj1aAaDAJzOCaDBIp8MMDfjDkIA3gxMCSinP+pGlh8z3OY6AyZgZtEprLEhbvL/B6xFwIAWsBYBA1vAsGMAxdbHgIHvAny+Y8t3gRFgu35ARERERMTNhv85suuO9L8Cfv4c7d2UXsrJDfqeXPUcKfxcoOcZ8uKl5QGKxjeh33/QVR4dVvA/SYBAu5MVKzPGAH2yVO/X7yaPDSmcCvFzIU7x09arQxnRms/XakUmBxP5027fhgNzP7uSwZQn6jUZqXub1fvmT/QVyhegdtvvOQgovxot2W++Xw8SSBJ1oJH31Ut//55Kl0eS/ZESUFqAxCm+4mpcWBm7kxEBX1RoTbyjPDrMynvgAu15kcHoFA6nDgKu3SCYA5yenOJhv5qO0CEpbPg/XI4N+YW8PhdX8qn5iIiIiIjeoM8HhGS6iaqr3LW+vnII9PmAkEy30XWVu9bXVw5ef2jxeh2ZbqTsKnetr68cBH0+4I0uoJHPlW94XsvVVtoy/VUrA5WFM/2NTn/jrF+AN13t6CTpgrZf4OcdfABdAbRyU4ioV4PPz/HqcCg/T2f59RK5LR2vntk/wWiP+OWXX4TZHiHO1lxfA/RMr0NWvfecNBg3iOUXTCF/fkJAsD2i+XXIZ5X+myNggb6DzkKA7bOLQsH6LRbis4AzUem/NgHhLqC+fauLiYe6CIQI9HYpQfJTWTJw1uYPgj4fYBnUmkFQD2J0kAIquwdV6yBJ66eDrJne8OOSVR9o5SCGvo31vY12lcMY2pHp60h1lcMY2pXt60p3lSMiIiIiIiI8qB2HS5NHD/L/A8PyNSQA/ASUL6yg8BMg6D89HDeqryQEj0wIgubNJZN/fzd2RAu48WPATb8LRERERERERGwaydXxBIK7ICHrvtE1If8faMxIRKCtaxBAr/dV0n8TFkD1vVL6mxZQbm8vXw4C2rU3U1+DQ3X2tR0Dsgam/viKV/pfHRvoawFV/qurf18LuPL6970LOPS/tmNAAFr/q2MDQQvoAqV38xsRMXL8H46Lpn0W3YdPAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjE0OjE5LTA0OjAwH30jYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNS0yNlQxMTo0NzozMS0wNDowMI39KP8AAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_2694e8_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABEVBMVEUmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOhiSQ4/AAAAWnRSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAZYVTi0aRlGNhTaBobZtzv33AvOOt5enkgY5d393gudbb0sTV1Ndi2nD+Dc6Zafg4KhYcxXnRp8iT0Niv8M2QiLC7x6vji8qEAAAAAWJLR0QAiAUdSAAAD2tJREFUeNrtXQtj27YRBslIqumYkhu5S5s4br0mczYvyV5d13Vt1KZr4zqpu6Trev//hwzgC4c7PMRSpmgbn2zJR4AA7uMBvANAWYiIiIgRIIFk203Ysv4wcgZ6Ny8Bv/4JZkBlHpYQYoGgYBJA22Okq9QEHwFgFYCnAnJ++eegJkEtkBOQ0PYY6fQKMgLo6bwCljkZkAHWfrsKnnTOoCC5/aXbMifeTBsFs2DeRHqBuYV4rzC3AE8DhrcAOymsiT4C2NnATMRTOjHB4ceANfi41LsA7ULD3wW2jpvuCEVERERERESMGJfuCW7ZD0pYtAbUeU/oGTS7EeAnrALffACbEJKlD0qJpQGMAJaBZjfDxYRVQAnwRJeq9CGDIdZ+e4s9yZYZlcRzughMAUJJwGDTAdyChc1mjWhtjfmAxCzN16O2bQFWJJ4W958P4D1kq2NAGNf9LhARERERERERsT30c/yDrmmw/N6BR88CgC+nQofcvdvHtwOwBgVKA/8Rrh5JBp7FPB1cafYKvA2wpPrrt5XgI4ils8KYBrw6IIngSGwYZeWRE8CVuEb9PFyGEAF8Agj8GoRP92QxFaxzkzkrMzst0MufNYfXhLwdSNgshDBuOd1vouEauqgX7OOWPUTgTw+USC4HBC9IoAIQ1jrdqdu+C1zy+eHbZERERERERMRNRf9tqT3djMSyG91dpM0PDS5VBarv1oC1KvDH82xt1dIAlC7w4tQaXp3K7A5OwLq8zxvJinTXb4lvqQK+ssF6URE/Ai9P8tZaNrsnXgICe8OF1cx8DHj5SyzTPYHpByOcbcLh5gBbOycWxMJhSzTOHtkQazTAnmplmJROz7fYgPt0RgBrAW+emU67WJgAewOcl3CtZBYwuwmwrq3zFXrnBWBdgHSRYBew9/LEmYMx7N0cwPNYDEyYBQi2Qh8ggAyCJJUNS6EZHFq/5Rr5k+2tcBC4TvAesACeedzzAdt+PiYiIiIiImLUuNy7OHdUyKOyljM261iEi4Nu2TvqD/wIjv6sZ2DW1lovJxrTzOAU2cqOf+GrO4DtFjd9x2pt0vN0eMDVt2QAprAwok8vIWAvsy8B7ue7yyTP9wPY5jPM9WrWXl9w0JwLrtM3TkATbroISCzhMG+6J57i6bbVaSCp4M8MG6QgsbSQhbuATRS8fdhSGp0Q8e5ZsRJAu8TGwzs9qKnJBBadmc/3W9KJYOv2mBDGT4CQEOH9Yc7osOiUPDESiF5Dm4BC8w/++aNriOuuX0RERETE9UZ6xW9kFrcDfMtV1Bv+NfqPaSnAusxiel9pcDUQUlKoVxRiVIshbOuyQPGKUjWFFAVDZnyXQmUBOr+wLoEzAsfSbYBHL3R7vdTfiM4MAqAiwYhnqYj1TWBcBFiW3zlBKZEpAfhTWGI3dCxpu9hYusAaFsDymzs2KoIcFkD3KzR0j0Z/piMbA0gO6wxNqq2EjgGWDTKjMX/dJkPCH44hH+VP7QqB5S+FAb8rswMDnI5uF4neA31IRkhAX3TRPyIiIiLiZiFTfkK2fv5bE4lbQ7VuKhs3m/pyvBPw3GCncpVcKmY0OfPzcUvkALm4RQpAZ+xKcVc4ZJoobtcgJzQqwV5RTJGzV/5tEFK6RXO++7kRF7WGC0PftsVUZitbu3V60+pJDpMJ5BOjAYIFE3SvrVWoDsxtNbZBWlEUaQVCyMwgADEAykQnusYdgwBZ9L5E60pDYwGu9e6qOF3gBCbvvnsHMAHL5dL/BIbABIgAAbsGgaBURwckIQkmpGqgSfiBgssCYAroQ1VcjwGAGmi0+KA8/UAT8O57u78xCLh79y7bHu+WyQFKgNL/fUyAaVIg9TdtDD5I1QtVeFfBaQH7SnWY7ut5gKy0/5YAVT6aYquK0wXKLnDvHu4CSyEvgXxvT8jK168kQOl/+/77bgISckAeSZL9BIUwcHh46B4DYF8yIPXHBJQ/LQHlIIgIeKDOfvCgOXBUDYJHRB10AieAPaIhCAEf4vmJ+eK2fC9cBNAK4aMSqMLj42PQJsosINufTuWb7gKl7CbguEJ9IMnhvTy/Azl+Rgh1IXngt+UL6zuhBEwIAWBYwFzr7yGgLe7jEsTkJi0B1AKy/RLNJWIyqDF2CkafzPP2LpA39edOC+AEhLoATq/GwKLN3BKQmfW1xVV+ALwjHCAWELoNVu2Zm3Mwmb51A1c4MOgtcPX8ACWgZKAQm0OWLUp08PUYh6brEs4OvaaVdjeqf0RERETEyPHwoT89Be+8NoBt6yNBpsPdR+Vt6lEj1sF2G2PPa3nenlu5Jrtry0L8jrSn8N7XZLR1QA7J2zbWP8s0AzPlRZ7kUxTsyCbPd1pHzkpFpo8/ql3xhgF5sgJZaTI9m1y5gmvL1fVoNSiUM5e29/ZUcTvH1/QxwGOiv3KUDrX+yjdvo1+6O5w5ZgJ+L197uEGZvM4Zym+sDdLYQvxBnIo/4vg2l0JuyMKUDyYHSFbtXyxcDYTa2a/lxuCQxcnGLlLtOlYzFm10xQmoZgcQAU8ePH12/wGaNsqkfWe4PV4C/gR/lq+/YAWV609kHHzI2HiSU9+3lWtnPrXX97AR0Tgwg72F5KASdpoZmx0XAfUogCxgD/4KD3WDpP5oyi5sAX8Tn4i/6ymlY2IBx8QCjokFLIzYQ/aAapBq41tS36eV9GnbwDKYx7EDqDFA6xcm4MmDDz+SL7v+taeOCUihnHVq5H/AZ/L1T7RjwujjpXyHyCi97L8SHzkIaKK71GgQsR+BYY7yMJmKQyNeJARkhGGif7sjwiQAyZ9/cnd2919f1PJ+U9zuevLCvHqCdYFaxuLjx1pWtt/Od1oJEARqj1Aq3JOSQCa5H9UN1ncBtcVIuLqE6u6kOL8siP48gE+x/uLpl3L4m3/5tCVA9v/Ucz5TdM4GUXOSlU3yEz+ATnsT2fYNMD55QfWnt0FRberSyeWKwO2iPR9YCQZycQVRdAjwDR8oIiIiImILmOKJaeXKwTHL81z/eclbC1XoAd67H/RpQQor+b7Ct+YTQK7m+/DVV19/DV+g5uwp/UvIP+7chydP4P6dJp3st2imG5r5hlamB9rgjfpNOcym0xcGA/4vFwthIcvKUbQJkoEV9cYPtef1jcK/tSu6msoCFiy4adON2JQ9ZF0HrzqPdB0zGezoxcEqQQdXyjFewQvLbtlfSYBytdAZSvfy1zQATcC33z1//t23uj1TAcUCr+xQAowtI1BORqEND6mopipS7Wtnaj4GEfBMrdXhCleKdRcBNLzk6pL0skshi1qVstY/NfNDaeu77ekvZdIMuaswIRsyzPPLdVCUAVTgKeM5gS1gPsf71fOzMxVeagKk/gJNgVHGabBgF4mJt+1vbADpX13BZgz4DHYl4GWboSiM8+HAT8CR/PNI/TTJysCmcIgsgESvz57tPzuDk7bAF6p1s80RQC3g+1JuZuVq/bWC+arEoXm6JgzSDw4ODgwC6itbfRxKfC5/yIaHlXMMODtTHQAPgi+m09kGB0EyBnxfjwE1A0r/wghH76j2HurTV3twghhQBR2hYa+ZvGn0+/jj+ocYiHMMmGZnZ2dwhhmgt8FN3wUeq4lZ3R4auq3mcz1hJUdA+ZNqBsD4aP7cbQ7Q22BpESUcYwBMFTABtmvYhwCCtLz2jxs/wLJH0BxhpbW8SNVI+bxJPX+SmF/rIspRo5YmmZrSy5oNG939gO3j6NWrIyQu9hRX6fOWMdpgtnMyIiIiohemeHf06x/UEPPD6203akBcAFy0wo/NqPvjtps1GO4pde/VwuvqjqPetQ0sYYlP+I/FmRGb23m2LPlf9i9oXVyoAOqiFt5oAt60OYjbYPMjCk0JW3qgB6gMS3VPX3rLv0TcqxS+hyqnrgdrT0oPFNooAhs3lfx28tZcnWXVDUmAHAFUCH1hVG62YY4Xxir99fJiYepv27q7SBdYv7fy7a2RYblFAormehduAgrS5QFOU5yG9bcRkBomU240nxjhtEFABsvlcjhPVyvsJoCfg/SXuhuDYm8LGHYQLA2gemim1OGVJuAVylT4C8DpvceAYaM1Oug91eJTnImcRBgw+Ol9FxBiwCFwqRWuWnDeiOdYRzoGYKnY/O7zrQbrP6lpWXj50zbbMKbZioiIiIiIiEtGAT7xsgEz4sis9YREH+zsUP3BI14+AUAoMAgo01KcoZil6s3IoELmRp5XmdzhbUF854IlQ7lCNiABJgUmAVVa2+by8kj1aAaDAJzOCaDBIp8MMDfjDkIA3gxMCSinP+pGlh8z3OY6AyZgZtEprLEhbvL/B6xFwIAWsBYBA1vAsGMAxdbHgIHvAny+Y8t3gRFgu35ARERERMTNhv85suuO9L8Cfv4c7d2UXsrJDfqeXPUcKfxcoOcZ8uKl5QGKxjeh33/QVR4dVvA/SYBAu5MVKzPGAH2yVO/X7yaPDSmcCvFzIU7x09arQxnRms/XakUmBxP5027fhgNzP7uSwZQn6jUZqXub1fvmT/QVyhegdtvvOQgovxot2W++Xw8SSBJ1oJH31Ut//55Kl0eS/ZESUFqAxCm+4mpcWBm7kxEBX1RoTbyjPDrMynvgAu15kcHoFA6nDgKu3SCYA5yenOJhv5qO0CEpbPg/XI4N+YW8PhdX8qn5iIiIiIjeoM8HhGS6iaqr3LW+vnII9PmAkEy30XWVu9bXVw5ef2jxeh2ZbqTsKnetr68cBH0+4I0uoJHPlW94XsvVVtoy/VUrA5WFM/2NTn/jrF+AN13t6CTpgrZf4OcdfABdAbRyU4ioV4PPz/HqcCg/T2f59RK5LR2vntk/wWiP+OWXX4TZHiHO1lxfA/RMr0NWvfecNBg3iOUXTCF/fkJAsD2i+XXIZ5X+myNggb6DzkKA7bOLQsH6LRbis4AzUem/NgHhLqC+fauLiYe6CIQI9HYpQfJTWTJw1uYPgj4fYBnUmkFQD2J0kAIquwdV6yBJ66eDrJne8OOSVR9o5SCGvo31vY12lcMY2pHp60h1lcMY2pXt60p3lSMiIiIiIiI8qB2HS5NHD/L/A8PyNSQA/ASUL6yg8BMg6D89HDeqryQEj0wIgubNJZN/fzd2RAu48WPATb8LRERERERERGwaydXxBIK7ICHrvtE1If8faMxIRKCtaxBAr/dV0n8TFkD1vVL6mxZQbm8vXw4C2rU3U1+DQ3X2tR0Dsgam/viKV/pfHRvoawFV/qurf18LuPL6970LOPS/tmNAAFr/q2MDQQvoAqV38xsRMXL8H46Lpn0W3YdPAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjE0OjE5LTA0OjAwH30jYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNS0yNlQxMTo0NzozMS0wNDowMI39KP8AAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_ffffff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AABg6SURBVHja7V1tjF3HWX6OEykqwcF8uSZxspJ/NAEhS75LJBSEZBSha34EFZXAtSM+GqN1qtKqCMhurLs/wpp274JCUhdpXTmQPze7WheluD9YU5tUpjEW7q4DpTilatq1Q7fmT2n+kCLhlx/naz7e+Tjn3Lv37s48o91773ln5szM+5w5Z953Zk5CiAgZu0ZdgIjRIhIgcEQCyOiA0Bl1IbYSkQAiOlgCsBQSBQZNgNFfPx3Ufa5N1X8UJgrkOY++joMEiaFDRB2CIZSANU7HIoclfZ62Y4xjPzesad01sJ+/POqu4zYKehXNlfMhQMfZPOb0eVpzDi4CuM7uUwN3zu46bqNQpfmrKKFeeh8KwpF3k7L75uyq4zYKehWbKBDO69enB6l/Bfv0AG4lcy0QQA/gG+o/A9TvgP1zcD8DwJHWpN4AngEGEUbfNJ0GBLPfgjoFAUZdxwGGJPoCJHSwhKNYHnUxtg6RAIEjWgIDRyRA4IgECByRAIEjEiBwRAIEjkiAwBHnA6hpR13+rYZm7HR508hpbbcbSs2mWhl8DJcRtsl8AJcvMi/7jjIFV28ANwHcObhyt/kTbY3f8SpdXW9lXvYd6gxyN3+VJq6X2m9KittdXJee9kACAXbIbAB1PoCvx75eE7v7D9/5AB1r2ereoALvAfxDp2YT+9DLHtw5uOjpcwMJ9hlgEGH0jdN0PsCoy7/FIbqDA0c0BAWOSIDAEQkQOCIBAkckQOCIBAgckQCB4+5RF2DsQEhGeO4c9ctQsfx3N0s+lEYYZQnIWYJUSXXK6E45gprLtwCCyEKuCpkB2VnNapKqqHsOV/lT1SfWXNzkqJvarwY+sSqk3SVFcFU/8aiAOX3i0UA+VTBfoT69h60OifJZ7Ry5xN0C9hraCUSO1IDrIpbKL94CfKtPBom7kZIBdPA2Bbjvok1KQEXqhJWKZ+fOkl9e5jKQRW7Pu6yd/TIQS5kAVR8CyePqccXyYWe9a9xPuYlH7jYF+eRbtwVsl6BP3u420ORVhoFlF+cTi5fZu0A3g+15uLpYvy7adQW5zu7zEFkXboq75VIJVHdw6KOA7X3+GsPIOB8gcERLYOCIBAgckQCBIxIgcEQCBI5IgMARCRA4RAJ0QBj18miXrXC48GkBH49ovXTieo26qJ5WWhXjs3iy7vIuvxR+Oddb++O3rMy3Bfj0eYyOd6qqdehYW8C+ME4uZcoWrXncxXTFaVJ9n1huBdQtt08LmGKIqxI5Evm0rd9e7Z0GBNDWTtZt/uobRvtRoD793Fu4+6jALw9OATr05m/SA8k5kzMGTwAtjuwLILh9fQDvdFTvPUmFtH4lKOcimPzxrvPb0rvO70qt33vNpXR5/OGUcunTV94AMOx2rM7lSICqo4CyAep4rBIhDz53kj5t56+Dstz1HrLsZz+aSfMZR0crt0FSuKsTg9SWM7CcSWybXaulrHQLqHIf79TIw/UQ5tOBuktnzsfehfrdwfO47p2W6t6C7A+B9rRyKdMrreLp/U7k2iLCrsQmqas0RTUC+jxB+NOvLgF8cq6UR5wPICJ/cVx8X0BEKIim4MARCRA4IgECRyRA4IgECByRAIPGNhtWqfMBXLB5zH2q3skNUGOK5qWzrU4ax7ordjC73chmK/OxPuXnMNnsfC2NTS1xrpyphlS2xdVLP4JQGoJEZppsYTZ/lbg00pbe5onzcfPYPXKuHNIYZPDU2Ra4iue1p6+T+8jAPwMsGTp5u7+qvDUs1ZhYli7LdHWStj0MyNvXl1Q4yp2XO797ZfNYouwBUjt42YS2VficrPRGZzlXSJtL/ZZAuxdv199CwqZGVw/hn7Ntj4AtRtkDLAt+5jpFWzb6qfMGcHn73ftn2JEIPQjfQ8ifXIzBXMXcGeTeY0zUL98ClotCcR142sETbBMSbJMWjjLf9EYC7NevHUlRAn5Khb3py5uQeXeRPGZSUSrGqDuhZjio8Jxtm6whx7O9MaTZfvw+vm6qKfN5PifHKGIQMwa2NER3sIyx6Zq3CpEAgSOaggNHJEDgiAQIHJEAgSMSIHCMHwHaDe2BEZWgEsDPl21z2ZCX1BSjjdUtGYmPeh+EsUG17eJ9tpNOcKRBeVaRk6RtjVd3y/oSdTyWOxAyAexWaru1O7+q21hlKZBf8wnEpYkl0q7/SBFj1ZA+/1ZvU3Wx91lChLRBhPrfZC23zXdpE1Gb+PXzcs7EytMcTGUgawnZ9e9F6GjybWa1H64vwG91u51J6VybI7hglZt89q7ftqO6RI0nznbI6xvUGkATxClhCXQ1qTBPZfCbEGGeVKYSyDQlgy+ha/sEmeAJKKo/RfnCCLHJTAouJ0b5vHaBg89u9kdwAaQ9R+Szifhd+eXy+Lw2IgJAtVEACaMAfsaNbQDokh8ppKsAEu1Gkghn5x5W7fOJxJ0xovIF+L8wQp4VW34fNMxPEc3QwVJUvY5xmw8wLPVHGDBuBIjYYoyfLyBiSxEJEDgiAQJHJEDg2EkE6BaWhu5Q8j+AVhYOjLqqAwSBQIuZc2SDFmu7FS41dLIQXZMcNd2K6bvO1N2aOafhAIGmiYhoOvtlKwF/jqlMOmU4h1nuSgk6qwT7GQot5Y1/nnrUK4igqrE8biZIufp9xbqyyESSvqLCvkW9ehO75HIJXU3DNXWLpomoRS0imqaWpQX4c+iwtZC/RIyx4l3HIkZqByAsAAD+QeocLgjdxBdwA8CP4ERx7CYmlK4ktxKeA/Ak68qZLL6vMe6ar+DnhN+v4ilJCiQ4VsjUdcaEWcwJv2cxZ1y/a3JmTUq/1RK2sIZJ7Afws/hTTGKdySHBJgDgp1BvhVFaK24NtVkixjhXtDt3/imckX5Lbw/PVb+qRshwA8B1fA+vWYrfyj6fNMa4z5L6VdyQCKDiDERX8hmBiilOAQUFZnFKooPYgOaGvA+vF99/iS3DfrwfCe61lPL3LTLVI8nL+RdQJ0wu1SiWq//P8Ufi4dIbuOrI4Dq+p8WRi/ATmS+PmPk8KX7ckv8xfMV6/ssoXcZncFkjQEmBWZxic2grn3rpft1a0hn8LT4N4OOYYdN/F8C3hO86ZjFX/G0tcvW/jPfJFLjbMwNO/Sp+DACwC3eMMfYAAM6yMlcPkFMAOIPLxjgJYBwDPKp8qrgPf5V9e5qRPoAegHkAM+jhCe0WoHpS6y4zde+S4IrxCn5XO5aq/xzeB+CjAJDd9L0JwPUQagX3OPP4oeLbpCZz9QDAgUzxl3EAbzPyLt7GIoDL6Br6ADt+GB8vvqnoYALnMYUZAHeBMIN7LRNKZnGKVdKE8GdCCy64YvwOQ4ATOAPgSZzLnqMWMJ0K/AmgQuf3vc40n84+JxmZqwdIlZ5S4G1mJN6V5FwvsF/55JoImEF6ncu3mAnMA/hs8XvecBtIMdegi19rGIOf0/FZIKMAIKgfxTCw7RhGuYcwlyT5pcrjbNUOMNhhYD5IKj9Npeiyo20O1Ya5bnnfWHufGGIN+fzzQWBPPDo+7uAugJ8Wft+o1Y03BQE4IVzpg889xWimpkzhjHT1I84HCB47yRcQUQORAIEjEiBwRAIEjkiAnYXXBX+GF2QCtEFwLcw2gwpHRtOhRRfcpI5ZYfg6q0kXlWHvoiJfUeQrzHmnBPnUEOQA8CVH+/TQq91uh7NgRx999ItfQpu0iahLXUrX98phg1qZGeEiTdMiawa5lhkiVuiaIrd7stXQZePPCp5sIqJZ1hCSBz2925CTxpmm6Wzix+DleZzUqKNKeoVBrq2aazLtEK0Qstq1mbxvERHRLWvr5sakPh0niK+ObWdWMGIpQMLLInzsYPzycKK/yf7OGxuoS+kElK4hf9PLV10KJgL9J4FuE+gdMi0wn84k0xY5rPLD1KLDBnne/H3qV27BHCusfEVLvcKef5GI+tQuLYmiOzh3Us5httZGLeJyTt5z+Cf4NjZwHZtYw3fYGF3MYT+ewTtDsAN+C/fjm9iLb+IBfNsYK7Wlz1jlkH3qEt7FutFd089cMcdY6RGp1Uz7rPCzLX7S4wgA/AqA3fhtAEAbF1D0ANe0OXXXKvcAYgdn6gHOE9EFInqdvUK6ROzVP6ge4N8J9A0C/Su1mPN/zNED5HJY5eYeoC+VTr0F9IRSp+hVqt+XJdmXmRY8Tsf1s6un6GZE0Jt/EAR4nj5Mr9Az2V8V9cuz4kwESPcnaWf3S1X+NSL6t+zvhibP62e6h5fykw45n76896bhmYoEUN11+jOATTsi/aTjagbipyxr0SKh4FCPiWEngO6vq6J+tXp2AvDyp+kb9CHaoA/Rf9AnFPkxrXRTA5WX6ocxyCpuW+Um6a3sQVCV9ym/92/UJQAcId8jqO0Zn1ewecr2rNLA3CigXVSdJ4iZgCn+0FG6JnI41O/jcs8pwI0AXqA72YPfCt2hFxgCnKe+ntb39G6Fys+h/DOobdKyXf0qBWY1qWtat11OZH+VRVN536l+1zCwpEDbkLpcC3BWS23sgXzdwdMNzBMRVdADZI/9gJCafp5SD8f5AIEj+gICRyRA4IgECByRAIEjPAKkbmNuTNMrxkYf88hnN3uUsN2eqoUx4XQxRp52jFhdxoy6qZuENhGtZ9/XjaPli0Ud1ZHynxHRGTpDH6GPENEntJRp65zPfu0WQnrkJH2GiJ6n54noM3RSS19aQjlrh7wwn0hdiK/LXTH0hfysnUeu4AYt0iK9Z6GAS73DJEA/K9c0a1RJsZ6pny9Fbg45zpq6fr4IP0OcLXSdFrMS9BkKuex4uZeiTbwZzH6kTN025JPaGruZN4fbjV1MUTirxAgbxdXznlGJoyRAbsviz5GrvfzUc7hoURHRXtpPu2k37ae9rEIWCUTUK3z6tuuLJ4B5DxGitI/oFm2sEwDSLAqdAGmuK4VNliPAb9GxLGRy8Rng7wCs4xCu45Xa9xL9e+U7URFUpD76Y8J3ES1cBwAcAgBcZ3zybTxuLcP/4PsAgO/jg4z0Ck6AAHRwDOr2FSkmhcBjzvA9Lf8cgDm0MIlJdkZBG08AWARwnM3dvt13glXMYD8m8CAexIP5YXlxaKr+ljafDhCXNdXbKVhVaPUJJz0czNT/KvsQ18K6Vf2r0rr8BUX+NbxbLAg9gyta+l9AD8CzeAi8+oH78G7lOpV4oPg8D+BXmRh/DCBdtHoCwDuanFDSSr98ugC+A+D/cBf245O4lB4W3xfwA9yTNd0GHnLsuA+nXH8fQBUpd4ZpzBffZxgK/AsOFt/fKTkOQFU/p8Bp/Kbw6y/xsuXsHMHSrTH+FwDwLrsFzhFpnpX6govfk44TXlbk8nyh63hOmbWVbuGfTpadY7bzJ5wEsAEg9Qtk0vIWMIN78AP8MxaxgYeYLrbcaJ3fcl08ysVIlGCXcmeYz5RXfheRqz+9EezHLUmaq38BR5Cw128Pn8OhLOjqB+ZxHV8AcAnAIWaHIOAC/h5fwm7cw07HmnVssLEHe3AWe/Cj2X87DjHH0ovoIA6Cv6AmcBcmMIEJACeV23XxZOgaBo77KOAW5XNjuUeknuMM67RCK+x0KmSpiXqZy3Zdk5t/qUentBiuYSDRcS3wo4CVbK8w/SFwsQhEz+mjAL8wSgLYQ5vKCdG3SLUD6M/d5tLz5U9HF+9Rm/KJGbu1tEv0PHUsrUQEmsqCGqOVjQLS/+o2dFtgB4gB9ARdpav0hEHap/MFrdq0m6GYbRgI8tlKcstDnA8QOMLzBURIiAQIHJEAgUMlwCJrBQSA03izeHJ4E6dHXfCIwUB+CHwLDwP4Oh7R4r2m2cc/j18bdeEjmkPsAV7CwwCAh/GSEut0of7SQvdBthfYBGU7ZnP476wHcU8xH8dJ6JvC6GmzeXZjAmFM+BZR5md+Sxktrkmj2xxrzLjSbgiyj5LL0GOtdu7lVa4YLjnRZjE+32xQ/m0Uyq8vSQp+yVBxl7HD3TxtZ4x8maRMgWb7aObyF6lFLxpz8KvdDiXAW0RFD6D2AXLFbc2wQqZlYaL6NxhJr/jk1O9WDjLFtzMicPIXs28vWnLYDJMAPVIhKsCfAHznLed0m5mvl6czqd+XAKWlnpPnFnZ9d4ASZgJ0iWiTNmmTxsaQOzgCcAquQwBXyJWkqz9Vu0n949ADbArn3yTsjCAroLwFyGq4yhLgKpOhqwcwBbEH4tOP/hnATcFtGLiq6ZV8gZW+wGToahyz1Hb1ywoe3SggjTNypQ2eAJusgsUmWNKkS0Y1up4BTLK6vcfWhh1GAH938Dx+EY9l36/gH61vzNjJqPsuoDFFnA8QOKI3MHBEAgSOSIDAEQkQOCIBAkckgIoeqLZ0G0IkAGHDMRGDMKhXQowK13DNKu/h2drS7QnFSke0YbHGid4AVZKnaxtz6NFG5gjq0YYlBxCy5U2yfEXKqY67tucwNvc8UuctMP42S6/AN59JhTYCiOn0Zu4VaVLluXIwE8CU3ocANqnd0aNLd4hJ2FRJflqHiwCpCsvfshSEQnmuHEwEMKd3E6Cqis1SbvHlNg38Q+BNLOA3atxPbmIBE0gXJy8INvMEC9nRCSzgpkcOJrjSbw12kjdAY/lOfgZwheCfATYc1TITYDsE8iBIr4F0W4boDVTRw7OWLt4u3YaIBAgc0RIYOCIBAkckQOCIBAgckQCBQyUACS8WjwgAJQHa+DwAYC+eRpuNm1oOLhqkEdsSOQHaWC22H30Yq6ySZ7CAK3gcqx7vtVPNCyuKAWpli+URJmQttk5E/0Qgoi9S+nIEk/GwTRvkfqeI682j3H75w5THYAi5UoluEwj0ReoR6DaZ3k69Tscpdcq2jZnyO9W26DC1sv+HtQXaRIeJshhp4OVklbeKv9ZOs9kPK6TvC3gUwFcBAL8MAPgqHsejuKB0FjM4iGM4C2AKq/ioJrfjEQD3AwD2YRf2afJ9APZhH3YBuMOMTu7P/h4BcIfJfx+AD2TyD8TRjS9SX0Abq/gvvL84eht7cYRVcBuruIkJrOMQ6xShbKd6fbf6P5B+/wVmcWoL5REmZF3BBpWLpvvEb+KSukIXieg4LRpn3fC3APnd4vp8o2HLYzCE/Ev6roDbdJFuExke8sTJED2GAERmAsQwpqF0B0/jw9k+gV/HX4/lPn0RQ0CcDxA44tNy4IgECByRAIEjEiBwlARwvQ+gqXwebxTyN5j3/g1bPuz6jVpeF1mer5GK16TxYlO5a5u5YcuHXb9Ry2uH9OM0cThdRGsqd200OWz5sOs3anmDkN4CHis6BPGVrY8x30So8uXi1bLLxvSJJb0rfzWHYaR31d9Vfnv670ovxTWlt8nFUvC1rojUEFRagxLtlyznCiK+T3wJwFHpyODy90nvzl+MUTV9wuQFS358+jIXXX4OAPCksf3yo8/hkxjMIlUCcTv8ykf85Pl9t7wfq3JSflfNn88Nnr/d+ZM1/+btA+2zmjx/4+9zzBlrhrsHwKESd4T/dbjo6hHsEJej18khET7rpCePtLqjXMbnLLKT+BQ+hfzqHxAGfQvoA3gK9W8Bzbt4c/n0HOp14bb8beUrFU+15CkFRPUP7Bbgeh9AKRehypcodxkvKXLxpVMl1hg5OeWokf4qm56rn6v+YvmrppdvL9Xl+U1AlzceBVyR+JDjCvNNhCrvIN9DrGNMT5b0rvzVHIaR3lV/V/lt6QlyT1VVDkDq/PlaV0XGhJ1uiBm1IWrY8tqh/DpPbxSZv0HzWtSm8tP0ZiF/kzFiDFs+7PqNWl4zxAkhgSN6AwNHJEDgiAQIHJEAgSMSIHBEAgQO0RmkOx1ljLs8ogZkb+Bk8W2Njd1UHjF20G8BzVS35syh2ZWbNM4hQoJKAJcC17BmlU9iTegHdLgUKE6J4kA1ff0RBqgEmASsCpzEpFW+hkkrQQj2CROk+cRkuCZURFSEfguYrJGLnNqeQ7Pr10WgiIoQnUGjfoqPo4ARIHoDA0c0BAWOSIDAEQkQOCIBAkckQOCIBAgc25cAnWgQGgRkAjS3sxG6IHSHXu4OlnB06GcJADIBjmZ/o4br6k7VvzzqYu4EyARYyv5GC9fVHdU/QPj2AISO9lcNzKokFql6zTTM1R+fAQYCeUbQEpaxxF5bCYBl5a8aZr1i5eo/apUvx2eAgUG6KDvZnx6IOtofH69L/OtadOhxxPxhlMNy/hgarQ2kxhMuCLOYY1/WoI8M1Djl1b/ElkG++uMzwGDg2QP4BnMP4JO2ytVvihdDpaCqoOmrHpoQwBY49cebwMAJ0LwHGFbI1a1+xtAwxBlBgWP7+gIiBoL/BxnJfO3m3rs2AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE0LTEwLTE2VDExOjE0OjE5LTA0OjAwH30jYAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNC0wNS0yNlQxMTo0NzozMS0wNDowMI39KP8AAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/jquery-ui.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE2CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmNzcywgYWNjb3JkaW9uLmNzcywgYXV0b2NvbXBsZXRlLmNzcywgYnV0dG9uLmNzcywgZGF0ZXBpY2tlci5jc3MsIGRpYWxvZy5jc3MsIGRyYWdnYWJsZS5jc3MsIG1lbnUuY3NzLCBwcm9ncmVzc2Jhci5jc3MsIHJlc2l6YWJsZS5jc3MsIHNlbGVjdGFibGUuY3NzLCBzZWxlY3RtZW51LmNzcywgc2xpZGVyLmNzcywgc29ydGFibGUuY3NzLCBzcGlubmVyLmNzcywgdGFicy5jc3MsIHRvb2x0aXAuY3NzLCB0aGVtZS5jc3MKKiBUbyB2aWV3IGFuZCBtb2RpZnkgdGhpcyB0aGVtZSwgdmlzaXQgaHR0cDovL2pxdWVyeXVpLmNvbS90aGVtZXJvbGxlci8/ZmZEZWZhdWx0PUx1Y2lkYSUyMEdyYW5kZSUyQ0x1Y2lkYSUyMFNhbnMlMkNBcmlhbCUyQ3NhbnMtc2VyaWYmZndEZWZhdWx0PWJvbGQmZnNEZWZhdWx0PTEuMWVtJmNvcm5lclJhZGl1cz02cHgmYmdDb2xvckhlYWRlcj1kZWVkZjcmYmdUZXh0dXJlSGVhZGVyPWhpZ2hsaWdodF9zb2Z0JmJnSW1nT3BhY2l0eUhlYWRlcj0xMDAmYm9yZGVyQ29sb3JIZWFkZXI9YWVkMGVhJmZjSGVhZGVyPTIyMjIyMiZpY29uQ29sb3JIZWFkZXI9NzJhN2NmJmJnQ29sb3JDb250ZW50PWYyZjVmNyZiZ1RleHR1cmVDb250ZW50PWhpZ2hsaWdodF9oYXJkJmJnSW1nT3BhY2l0eUNvbnRlbnQ9MTAwJmJvcmRlckNvbG9yQ29udGVudD1kZGRkZGQmZmNDb250ZW50PTM2MmIzNiZpY29uQ29sb3JDb250ZW50PTcyYTdjZiZiZ0NvbG9yRGVmYXVsdD1kN2ViZjkmYmdUZXh0dXJlRGVmYXVsdD1nbGFzcyZiZ0ltZ09wYWNpdHlEZWZhdWx0PTgwJmJvcmRlckNvbG9yRGVmYXVsdD1hZWQwZWEmZmNEZWZhdWx0PTI3NzlhYSZpY29uQ29sb3JEZWZhdWx0PTNkODBiMyZiZ0NvbG9ySG92ZXI9ZTRmMWZiJmJnVGV4dHVyZUhvdmVyPWdsYXNzJmJnSW1nT3BhY2l0eUhvdmVyPTEwMCZib3JkZXJDb2xvckhvdmVyPTc0YjJlMiZmY0hvdmVyPTAwNzBhMyZpY29uQ29sb3JIb3Zlcj0yNjk0ZTgmYmdDb2xvckFjdGl2ZT0zYmFhZTMmYmdUZXh0dXJlQWN0aXZlPWdsYXNzJmJnSW1nT3BhY2l0eUFjdGl2ZT01MCZib3JkZXJDb2xvckFjdGl2ZT0yNjk0ZTgmZmNBY3RpdmU9ZmZmZmZmJmljb25Db2xvckFjdGl2ZT1mZmZmZmYmYmdDb2xvckhpZ2hsaWdodD1mZmVmOGYmYmdUZXh0dXJlSGlnaGxpZ2h0PWhpZ2hsaWdodF9zb2Z0JmJnSW1nT3BhY2l0eUhpZ2hsaWdodD0yNSZib3JkZXJDb2xvckhpZ2hsaWdodD1mOWRkMzQmZmNIaWdobGlnaHQ9MzYzNjM2Jmljb25Db2xvckhpZ2hsaWdodD0yZTgzZmYmYmdDb2xvckVycm9yPWNkMGEwYSZiZ1RleHR1cmVFcnJvcj1mbGF0JmJnSW1nT3BhY2l0eUVycm9yPTE1JmJvcmRlckNvbG9yRXJyb3I9Y2QwYTBhJmZjRXJyb3I9ZmZmZmZmJmljb25Db2xvckVycm9yPWZmZmZmZiZiZ0NvbG9yT3ZlcmxheT1lZWVlZWUmYmdUZXh0dXJlT3ZlcmxheT1kaWFnb25hbHNfdGhpY2smYmdJbWdPcGFjaXR5T3ZlcmxheT05MCZvcGFjaXR5T3ZlcmxheT04MCZiZ0NvbG9yU2hhZG93PTAwMDAwMCZiZ1RleHR1cmVTaGFkb3c9aGlnaGxpZ2h0X2hhcmQmYmdJbWdPcGFjaXR5U2hhZG93PTcwJm9wYWNpdHlTaGFkb3c9MzAmdGhpY2tuZXNzU2hhZG93PTdweCZvZmZzZXRUb3BTaGFkb3c9LTdweCZvZmZzZXRMZWZ0U2hhZG93PS03cHgmY29ybmVyUmFkaXVzU2hhZG93PThweAoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKLnVpLWhlbHBlci1oaWRkZW57ZGlzcGxheTpub25lfS51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LnVpLWhlbHBlci1yZXNldHttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7b3V0bGluZTowO2xpbmUtaGVpZ2h0OjEuMzt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTAwJTtsaXN0LXN0eWxlOm5vbmV9LnVpLWhlbHBlci1jbGVhcmZpeDpiZWZvcmUsLnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjb250ZW50OiIiO2Rpc3BsYXk6dGFibGU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfS51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y2xlYXI6Ym90aH0udWktaGVscGVyLWNsZWFyZml4e21pbi1oZWlnaHQ6MH0udWktaGVscGVyLXpmaXh7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO2ZpbHRlcjpBbHBoYShPcGFjaXR5PTApfS51aS1mcm9udHt6LWluZGV4OjEwMH0udWktc3RhdGUtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50fS51aS1pY29ue2Rpc3BsYXk6YmxvY2s7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlcntkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoycHggMCAwIDA7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtO21pbi1oZWlnaHQ6MDtmb250LXNpemU6MTAwJX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taWNvbnN7cGFkZGluZy1sZWZ0OjIuMmVtfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1pY29ucyAudWktYWNjb3JkaW9uLWljb25ze3BhZGRpbmctbGVmdDoyLjJlbX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyIC51aS1hY2NvcmRpb24taGVhZGVyLWljb257cG9zaXRpb246YWJzb2x1dGU7bGVmdDouNWVtO3RvcDo1MCU7bWFyZ2luLXRvcDotOHB4fS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MWVtIDIuMmVtO2JvcmRlci10b3A6MDtvdmVyZmxvdzphdXRvfS51aS1hdXRvY29tcGxldGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2N1cnNvcjpkZWZhdWx0fS51aS1idXR0b257ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowO2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW4tcmlnaHQ6LjFlbTtjdXJzb3I6cG9pbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dGV4dC1hbGlnbjpjZW50ZXI7b3ZlcmZsb3c6dmlzaWJsZX0udWktYnV0dG9uLC51aS1idXR0b246bGluaywudWktYnV0dG9uOnZpc2l0ZWQsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktYnV0dG9uLWljb24tb25seXt3aWR0aDoyLjJlbX1idXR0b24udWktYnV0dG9uLWljb24tb25seXt3aWR0aDoyLjRlbX0udWktYnV0dG9uLWljb25zLW9ubHl7d2lkdGg6My40ZW19YnV0dG9uLnVpLWJ1dHRvbi1pY29ucy1vbmx5e3dpZHRoOjMuN2VtfS51aS1idXR0b24gLnVpLWJ1dHRvbi10ZXh0e2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6bm9ybWFsfS51aS1idXR0b24tdGV4dC1vbmx5IC51aS1idXR0b24tdGV4dHtwYWRkaW5nOi40ZW0gMWVtfS51aS1idXR0b24taWNvbi1vbmx5IC51aS1idXR0b24tdGV4dCwudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi10ZXh0e3BhZGRpbmc6LjRlbTt0ZXh0LWluZGVudDotOTk5OTk5OXB4fS51aS1idXR0b24tdGV4dC1pY29uLXByaW1hcnkgLnVpLWJ1dHRvbi10ZXh0LC51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHR7cGFkZGluZzouNGVtIDFlbSAuNGVtIDIuMWVtfS51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktYnV0dG9uLXRleHQsLnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24tdGV4dHtwYWRkaW5nOi40ZW0gMi4xZW0gLjRlbSAxZW19LnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24tdGV4dHtwYWRkaW5nLWxlZnQ6Mi4xZW07cGFkZGluZy1yaWdodDoyLjFlbX1pbnB1dC51aS1idXR0b257cGFkZGluZzouNGVtIDFlbX0udWktYnV0dG9uLWljb24tb25seSAudWktaWNvbiwudWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IC51aS1pY29uLC51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktaWNvbiwudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWljb24sLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWFyZ2luLXRvcDotOHB4fS51aS1idXR0b24taWNvbi1vbmx5IC51aS1pY29ue2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHh9LnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktYnV0dG9uLWljb24tcHJpbWFyeSwudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXByaW1hcnksLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1idXR0b24taWNvbi1wcmltYXJ5e2xlZnQ6LjVlbX0udWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeXtyaWdodDouNWVtfS51aS1idXR0b25zZXR7bWFyZ2luLXJpZ2h0OjdweH0udWktYnV0dG9uc2V0IC51aS1idXR0b257bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6LS4zZW19aW5wdXQudWktYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLGJ1dHRvbi51aS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfS51aS1kYXRlcGlja2Vye3dpZHRoOjE3ZW07cGFkZGluZzouMmVtIC4yZW0gMDtkaXNwbGF5Om5vbmV9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjJlbSAwfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYsLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MnB4O3dpZHRoOjEuOGVtO2hlaWdodDoxLjhlbX0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyLC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXJ7dG9wOjFweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2e2xlZnQ6MnB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHR7cmlnaHQ6MnB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXJ7bGVmdDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3ZlcntyaWdodDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiBzcGFuLC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgc3BhbntkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHg7dG9wOjUwJTttYXJnaW4tdG9wOi04cHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGV7bWFyZ2luOjAgMi4zZW07bGluZS1oZWlnaHQ6MS44ZW07dGV4dC1hbGlnbjpjZW50ZXJ9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGUgc2VsZWN0e2ZvbnQtc2l6ZToxZW07bWFyZ2luOjFweCAwfS51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLC51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXJ7d2lkdGg6NDUlfS51aS1kYXRlcGlja2VyIHRhYmxle3dpZHRoOjEwMCU7Zm9udC1zaXplOi45ZW07Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO21hcmdpbjowIDAgLjRlbX0udWktZGF0ZXBpY2tlciB0aHtwYWRkaW5nOi43ZW0gLjNlbTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2JvcmRlcjowfS51aS1kYXRlcGlja2VyIHRke2JvcmRlcjowO3BhZGRpbmc6MXB4fS51aS1kYXRlcGlja2VyIHRkIHNwYW4sLnVpLWRhdGVwaWNrZXIgdGQgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6LjJlbTt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmV7YmFja2dyb3VuZC1pbWFnZTpub25lO21hcmdpbjouN2VtIDAgMCAwO3BhZGRpbmc6MCAuMmVtO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJpZ2h0OjA7Ym9yZGVyLWJvdHRvbTowfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9ue2Zsb2F0OnJpZ2h0O21hcmdpbjouNWVtIC4yZW0gLjRlbTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOi4yZW0gLjZlbSAuM2VtIC42ZW07d2lkdGg6YXV0bztvdmVyZmxvdzp2aXNpYmxlfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudHtmbG9hdDpsZWZ0fS51aS1kYXRlcGlja2VyLnVpLWRhdGVwaWNrZXItbXVsdGl7d2lkdGg6YXV0b30udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cHtmbG9hdDpsZWZ0fS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwIHRhYmxle3dpZHRoOjk1JTttYXJnaW46MCBhdXRvIC40ZW19LnVpLWRhdGVwaWNrZXItbXVsdGktMiAudWktZGF0ZXBpY2tlci1ncm91cHt3aWR0aDo1MCV9LnVpLWRhdGVwaWNrZXItbXVsdGktMyAudWktZGF0ZXBpY2tlci1ncm91cHt3aWR0aDozMy4zJX0udWktZGF0ZXBpY2tlci1tdWx0aS00IC51aS1kYXRlcGlja2VyLWdyb3Vwe3dpZHRoOjI1JX0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cC1sYXN0IC51aS1kYXRlcGlja2VyLWhlYWRlciwudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVye2JvcmRlci1sZWZ0LXdpZHRoOjB9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtjbGVhcjpsZWZ0fS51aS1kYXRlcGlja2VyLXJvdy1icmVha3tjbGVhcjpib3RoO3dpZHRoOjEwMCU7Zm9udC1zaXplOjB9LnVpLWRhdGVwaWNrZXItcnRse2RpcmVjdGlvbjpydGx9LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXZ7cmlnaHQ6MnB4O2xlZnQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dHtsZWZ0OjJweDtyaWdodDphdXRvfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2OmhvdmVye3JpZ2h0OjFweDtsZWZ0OmF1dG99LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHQ6aG92ZXJ7bGVmdDoxcHg7cmlnaHQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtjbGVhcjpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b257ZmxvYXQ6bGVmdH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50LC51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cHtmbG9hdDpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXIsLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS51aS1kaWFsb2d7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtwYWRkaW5nOi4yZW07b3V0bGluZTowfS51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhcntwYWRkaW5nOi40ZW0gMWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZXtmbG9hdDpsZWZ0O21hcmdpbjouMWVtIDA7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjkwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2V7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LjNlbTt0b3A6NTAlO3dpZHRoOjIwcHg7bWFyZ2luOi0xMHB4IDAgMCAwO3BhZGRpbmc6MXB4O2hlaWdodDoyMHB4fS51aS1kaWFsb2cgLnVpLWRpYWxvZy1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjowO3BhZGRpbmc6LjVlbSAxZW07YmFja2dyb3VuZDpub25lO292ZXJmbG93OmF1dG99LnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmV7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci13aWR0aDoxcHggMCAwIDA7YmFja2dyb3VuZC1pbWFnZTpub25lO21hcmdpbi10b3A6LjVlbTtwYWRkaW5nOi4zZW0gMWVtIC41ZW0gLjRlbX0udWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSAudWktZGlhbG9nLWJ1dHRvbnNldHtmbG9hdDpyaWdodH0udWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSBidXR0b257bWFyZ2luOi41ZW0gLjRlbSAuNWVtIDA7Y3Vyc29yOnBvaW50ZXJ9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXNle3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7cmlnaHQ6LTVweDtib3R0b206LTVweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjE2cHggMTZweH0udWktZHJhZ2dhYmxlIC51aS1kaWFsb2ctdGl0bGViYXJ7Y3Vyc29yOm1vdmV9LnVpLWRyYWdnYWJsZS1oYW5kbGV7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1tZW51e2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7ZGlzcGxheTpibG9jaztvdXRsaW5lOm5vbmV9LnVpLW1lbnUgLnVpLW1lbnV7cG9zaXRpb246YWJzb2x1dGV9LnVpLW1lbnUgLnVpLW1lbnUtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtwYWRkaW5nOjNweCAxZW0gM3B4IC40ZW07Y3Vyc29yOnBvaW50ZXI7bWluLWhlaWdodDowO2xpc3Qtc3R5bGUtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciKX0udWktbWVudSAudWktbWVudS1kaXZpZGVye21hcmdpbjo1cHggMDtoZWlnaHQ6MDtmb250LXNpemU6MDtsaW5lLWhlaWdodDowO2JvcmRlci13aWR0aDoxcHggMCAwIDB9LnVpLW1lbnUgLnVpLXN0YXRlLWZvY3VzLC51aS1tZW51IC51aS1zdGF0ZS1hY3RpdmV7bWFyZ2luOi0xcHh9LnVpLW1lbnUtaWNvbnN7cG9zaXRpb246cmVsYXRpdmV9LnVpLW1lbnUtaWNvbnMgLnVpLW1lbnUtaXRlbXtwYWRkaW5nLWxlZnQ6MmVtfS51aS1tZW51IC51aS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6LjJlbTttYXJnaW46YXV0byAwfS51aS1tZW51IC51aS1tZW51LWljb257bGVmdDphdXRvO3JpZ2h0OjB9LnVpLXByb2dyZXNzYmFye2hlaWdodDoyZW07dGV4dC1hbGlnbjpsZWZ0O292ZXJmbG93OmhpZGRlbn0udWktcHJvZ3Jlc3NiYXIgLnVpLXByb2dyZXNzYmFyLXZhbHVle21hcmdpbjotMXB4O2hlaWdodDoxMDAlfS51aS1wcm9ncmVzc2JhciAudWktcHJvZ3Jlc3NiYXItb3ZlcmxheXtiYWNrZ3JvdW5kOnVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS0FBb0FJQUJBQUFBQVAvLy95SC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNrWXdOcVhyZEM1MkRTMDZhN01GWkkrNEZIQkNLb0RlV0tYcXltUHFHcXh2SnJYWmJNeDdUdGMrdzlYZ1UyRkIzbE95UVJXRVQySUZHaVU5bTFmckRWcHhaWmM2YmZId3Y0YzFZWFA2azFWZHkyOTJGYjZVa3V2RnRYcHZXU3pBK0h5Y1hKSFVYaUdZSWlNZzJSNlc0NTlnbldHZkhOZGpJcURXVnFlbUgyZWtwT2JrcE9scHBXVXFaaXFyNmVkcXFXUUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBTTWdabkdmYXFjZzFFMnV1ekRtbUhVQlI4UWlsOTVoaVBLcVduM2FxdExzUzE4eTdHMVN6TmVvd1dCRU50UWQrVDFKa3RQMDVuelBUZEpabFI2dlV4TldXalYrdlVXaFdOa1dGd3hsOVZwWlJlZFljZmxJT0xhZmFhMjhYZHNIL3lubGNjMXVQVkRaeFFJUjBLMjUrY0lDQ21vcUNlNW1HaFpPZmVZU1VoNXlKY0p5cmtaV1dwYVI4ZG9KMm80TllxNjJsQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWREk0WXkyMlpuSU5STnFvc3cwQnY3aTFneUhVa0ZqN29TYVdsdTNvdkM4R3hOc281Zmx1ejNxTFZoQlZlVC9MejdaVEh5eEw1ZERhbFFXUFZPc1FXdFJudXdYYUZUajlqVlZoOHBtYTlKalo0ellTajVaT3ltYTd1dW9sZmZoK0lSNWFXOTdjSHVCVVhLR0tYbEtqbitEaUhXTWNZSmFoNE4wbFlDTWxKT1hpcEdScjVxZGdvU1RycVdTcTZXRmwyeXBvYVVBQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGFFYjZITGdkL2lPN0ZOV3RjRldlK3VmT0RHalJmb2lKMmFrU2hidWViMHd0STUwem0wMnBidndmV0VNV0JRMXpLR2xMSWhza2lFUG05UjZ2Ulh4VjRaeldUMnlIT0dwV015b3JibEtsTnA4SG1IRWIvbENYamNXN2JtdFhQOFh0MjI5T1ZXUjFmb2QyZVdxTmZIdU1qWENQa0lHTmlsZU9pSW1WbUNPRW1vU2ZuM3lYbEpXbW9IR2hxcDZpbFl1V1lwbVRxS1VnQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGlFSDZrYjU4YmlRM0ZOV3RNRldXM2VOVmNvanVGR2ZxblpxU2VidVMwNnc1VjgwL1gwMnBLZTh6RndQNkVGV09UMWxERms4ckdFUmgxVFROT29jUTYxSG00WG0yVmV4VUhwemp5bVZpSHJGYmlFTHNlZlZybjZYS2ZudDJROUcvK1hkaWU0OTlYSGQyZzRoN2lvT0doWEdKYm9HQW5YU0Jub0J3S1l5ZmlvdWJaSjJIbjBSdVJaYWZsWk9pbDU2WnA2aWlvS1NYcFVBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa29RUnFSdm54dUk3a1UxYTFVVTViZDV0blNlT1pYaG1uNWxXSzNxTlRXdlJkUXhQOHF2YUMrL3lhWVF6WE83Qk12YVVFbUpSZDNUc2lNQWdzd21OWXJTZ1pkWXJUWDZ0U0hHWk83M2V6dUF3MnV4dVErQmJlWmZNeHNleFkzNSsvUWU0SjFpblYwZzR4M1dIdU1oSWwyalhPS1QyUStWVTVmZ29TVUk1MlZmWnlma0pHa2hhNmptWSthYVlkaXJxK2xRQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1dCSUtwWWUwTDNZTktUb3Fzd1VsdnpuaWdkNHdpUjRLaFpyS3Q5VXBxaXA2MWk5RTN2TXZ4UmRIbGJFRmlFWGZrOVlBUll4T1paRDZWUTJwVXVuQm10UlhvMUxmOGhNVlZjTmw4SmFmVjM4YU0yL0Z1NVYxNkJuNjNyNnh0OTdqMDkrTVhTRmk0Qm5pR0ZhZTNoemJIOStoWUJ6a3B1VWg1YVptSHVhblpPWmdJdXZiR2lOZW9tQ25heHhhcDJ1cGFDWnNxKzFrQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1hqSThCeTV6ZjRrT3hUVnJYTlZsdjFYMGQ4SUdaR0tMbk5wWXRtOExyOWNxVmV1T1N2Zk9XNzlEOWFESGl6TmhESmlkRlpoTnlkRWFoT2FESDZub210SmpwMXR1dEtvTldrdkE2SnFmUlZMSFUvUVVmYXU5bDJ4N0c1NGQxZmw5OTV4Y0lHQWRYcU1mQk5hZG9ZcmhIK01nMktCbHBWcGJsdUNpWG1NbloyU2g0R0JxSitja0lPcXFKNkxtS1NsbFptc29xNndwUUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNsWXgvb0x2b3h1SkRrVTFhMVlVWmJKNTluU2QyWlhoV3FiUmEyL2dGOEd1MkRZM2lxczd5cnEreEJZRWtZdkZTTThhU1NPYkUrWmdSbDFCSEZaTnI3cFJDYXZaNUJXMjE0MmhZM0FOL3pXdHNtZjEycDlYeHhGbDJscExuMXJzZXp0ZlhaamRJV0lmMnM1ZEl0d2pZS0Jnbzl5ZzVwSGd6SlhURWVHbFp1ZW5weVBtcEdRb0tPV2tZbVNwYVNucUtpbGVJMkZBQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1ZqQitndStqRzRrT1JUVnJWaFJsc25uMmRKM1psZUZhcHRGcmIrQ1htTzlPb3plTDVWZlA5OUh2QVdocGlVZGN3a3BCSDM4MjVBd1lkVTh4VHFsTEdodENvc0FyS01wdmZhMW1NUmFlOVZ2V1pmZUIyWGZQa2VMbW0xOGxVY0JqK3A1ZG5OOGpYWjNZSUdFaFl1T1VuNDVhb0NEa3AxNmhsNUlqWUp2aldLY25vR1FwcXlQbHBPaHIzYUVsYXFycTU2QnE3VkFBQU93PT0iKTtoZWlnaHQ6MTAwJTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0yNSk7b3BhY2l0eTowLjI1fS51aS1wcm9ncmVzc2Jhci1pbmRldGVybWluYXRlIC51aS1wcm9ncmVzc2Jhci12YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLXJlc2l6YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZX0udWktcmVzaXphYmxlLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTtmb250LXNpemU6MC4xcHg7ZGlzcGxheTpibG9jazstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXJlc2l6YWJsZS1kaXNhYmxlZCAudWktcmVzaXphYmxlLWhhbmRsZSwudWktcmVzaXphYmxlLWF1dG9oaWRlIC51aS1yZXNpemFibGUtaGFuZGxle2Rpc3BsYXk6bm9uZX0udWktcmVzaXphYmxlLW57Y3Vyc29yOm4tcmVzaXplO2hlaWdodDo3cHg7d2lkdGg6MTAwJTt0b3A6LTVweDtsZWZ0OjB9LnVpLXJlc2l6YWJsZS1ze2N1cnNvcjpzLXJlc2l6ZTtoZWlnaHQ6N3B4O3dpZHRoOjEwMCU7Ym90dG9tOi01cHg7bGVmdDowfS51aS1yZXNpemFibGUtZXtjdXJzb3I6ZS1yZXNpemU7d2lkdGg6N3B4O3JpZ2h0Oi01cHg7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXJlc2l6YWJsZS13e2N1cnNvcjp3LXJlc2l6ZTt3aWR0aDo3cHg7bGVmdDotNXB4O3RvcDowO2hlaWdodDoxMDAlfS51aS1yZXNpemFibGUtc2V7Y3Vyc29yOnNlLXJlc2l6ZTt3aWR0aDoxMnB4O2hlaWdodDoxMnB4O3JpZ2h0OjFweDtib3R0b206MXB4fS51aS1yZXNpemFibGUtc3d7Y3Vyc29yOnN3LXJlc2l6ZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtsZWZ0Oi01cHg7Ym90dG9tOi01cHh9LnVpLXJlc2l6YWJsZS1ud3tjdXJzb3I6bnctcmVzaXplO3dpZHRoOjlweDtoZWlnaHQ6OXB4O2xlZnQ6LTVweDt0b3A6LTVweH0udWktcmVzaXphYmxlLW5le2N1cnNvcjpuZS1yZXNpemU7d2lkdGg6OXB4O2hlaWdodDo5cHg7cmlnaHQ6LTVweDt0b3A6LTVweH0udWktc2VsZWN0YWJsZXstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNlbGVjdGFibGUtaGVscGVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwO2JvcmRlcjoxcHggZG90dGVkIGJsYWNrfS51aS1zZWxlY3RtZW51LW1lbnV7cGFkZGluZzowO21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtkaXNwbGF5Om5vbmV9LnVpLXNlbGVjdG1lbnUtbWVudSAudWktbWVudXtvdmVyZmxvdzphdXRvO292ZXJmbG93LXg6aGlkZGVuO3BhZGRpbmctYm90dG9tOjFweH0udWktc2VsZWN0bWVudS1tZW51IC51aS1tZW51IC51aS1zZWxlY3RtZW51LW9wdGdyb3Vwe2ZvbnQtc2l6ZToxZW07Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoxLjU7cGFkZGluZzoycHggMC40ZW07bWFyZ2luOjAuNWVtIDAgMCAwO2hlaWdodDphdXRvO2JvcmRlcjowfS51aS1zZWxlY3RtZW51LW9wZW57ZGlzcGxheTpibG9ja30udWktc2VsZWN0bWVudS1idXR0b257ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfS51aS1zZWxlY3RtZW51LWJ1dHRvbiBzcGFuLnVpLWljb257cmlnaHQ6MC41ZW07bGVmdDphdXRvO21hcmdpbi10b3A6LThweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlfS51aS1zZWxlY3RtZW51LWJ1dHRvbiBzcGFuLnVpLXNlbGVjdG1lbnUtdGV4dHt0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzowLjRlbSAyLjFlbSAwLjRlbSAxZW07ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxLjQ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS51aS1zbGlkZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fS51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGV7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyO3dpZHRoOjEuMmVtO2hlaWdodDoxLjJlbTtjdXJzb3I6ZGVmYXVsdDstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTtmb250LXNpemU6LjdlbTtkaXNwbGF5OmJsb2NrO2JvcmRlcjowO2JhY2tncm91bmQtcG9zaXRpb246MCAwfS51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1oYW5kbGUsLnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLXJhbmdle2ZpbHRlcjppbmhlcml0fS51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6LjhlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1oYW5kbGV7dG9wOi0uM2VtO21hcmdpbi1sZWZ0Oi0uNmVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1pbntsZWZ0OjB9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3JpZ2h0OjB9LnVpLXNsaWRlci12ZXJ0aWNhbHt3aWR0aDouOGVtO2hlaWdodDoxMDBweH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItaGFuZGxle2xlZnQ6LS4zZW07bWFyZ2luLWxlZnQ6MDttYXJnaW4tYm90dG9tOi0uNmVtfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZXtsZWZ0OjA7d2lkdGg6MTAwJX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7dG9wOjB9LnVpLXNvcnRhYmxlLWhhbmRsZXstbXMtdG91Y2gtYWN0aW9uOm5vbmU7dG91Y2gtYWN0aW9uOm5vbmV9LnVpLXNwaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnVpLXNwaW5uZXItaW5wdXR7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO21hcmdpbjouMmVtIDA7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1sZWZ0Oi40ZW07bWFyZ2luLXJpZ2h0OjIycHh9LnVpLXNwaW5uZXItYnV0dG9ue3dpZHRoOjE2cHg7aGVpZ2h0OjUwJTtmb250LXNpemU6LjVlbTtwYWRkaW5nOjA7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47cmlnaHQ6MH0udWktc3Bpbm5lciBhLnVpLXNwaW5uZXItYnV0dG9ue2JvcmRlci10b3A6bm9uZTtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmV9LnVpLXNwaW5uZXIgLnVpLWljb257cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLXRvcDotOHB4O3RvcDo1MCU7bGVmdDowfS51aS1zcGlubmVyLXVwe3RvcDowfS51aS1zcGlubmVyLWRvd257Ym90dG9tOjB9LnVpLXNwaW5uZXIgLnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTE2cHh9LnVpLXRhYnN7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzouMmVtfS51aS10YWJzIC51aS10YWJzLW5hdnttYXJnaW46MDtwYWRkaW5nOi4yZW0gLjJlbSAwfS51aS10YWJzIC51aS10YWJzLW5hdiBsaXtsaXN0LXN0eWxlOm5vbmU7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MDttYXJnaW46MXB4IC4yZW0gMCAwO2JvcmRlci1ib3R0b20td2lkdGg6MDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwfS51aS10YWJzIC51aS10YWJzLW5hdiAudWktdGFicy1hbmNob3J7ZmxvYXQ6bGVmdDtwYWRkaW5nOi41ZW0gMWVtO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZXttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZy1ib3R0b206MXB4fS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSAudWktdGFicy1hbmNob3IsLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXN0YXRlLWRpc2FibGVkIC51aS10YWJzLWFuY2hvciwudWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1sb2FkaW5nIC51aS10YWJzLWFuY2hvcntjdXJzb3I6dGV4dH0udWktdGFicy1jb2xsYXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgLnVpLXRhYnMtYW5jaG9ye2N1cnNvcjpwb2ludGVyfS51aS10YWJzIC51aS10YWJzLXBhbmVse2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXdpZHRoOjA7cGFkZGluZzoxZW0gMS40ZW07YmFja2dyb3VuZDpub25lfS51aS10b29sdGlwe3BhZGRpbmc6OHB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5OTttYXgtd2lkdGg6MzAwcHg7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA1cHggI2FhYTtib3gtc2hhZG93OjAgMCA1cHggI2FhYX1ib2R5IC51aS10b29sdGlwe2JvcmRlci13aWR0aDoycHh9LnVpLXdpZGdldHtmb250LWZhbWlseTpMdWNpZGEgR3JhbmRlLEx1Y2lkYSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEuMWVtfS51aS13aWRnZXQgLnVpLXdpZGdldHtmb250LXNpemU6MWVtfS51aS13aWRnZXQgaW5wdXQsLnVpLXdpZGdldCBzZWxlY3QsLnVpLXdpZGdldCB0ZXh0YXJlYSwudWktd2lkZ2V0IGJ1dHRvbntmb250LWZhbWlseTpMdWNpZGEgR3JhbmRlLEx1Y2lkYSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjFlbX0udWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQ6I2YyZjVmNyB1cmwoImltYWdlcy91aS1iZ19oaWdobGlnaHQtaGFyZF8xMDBfZjJmNWY3XzF4MTAwLnBuZyIpIDUwJSB0b3AgcmVwZWF0LXg7Y29sb3I6IzM2MmIzNn0udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojMzYyYjM2fS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2FlZDBlYTtiYWNrZ3JvdW5kOiNkZWVkZjcgdXJsKCJpbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMTAwX2RlZWRmN18xeDEwMC5wbmciKSA1MCUgNTAlIHJlcGVhdC14O2NvbG9yOiMyMjI7Zm9udC13ZWlnaHQ6Ym9sZH0udWktd2lkZ2V0LWhlYWRlciBhe2NvbG9yOiMyMjJ9LnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0e2JvcmRlcjoxcHggc29saWQgI2FlZDBlYTtiYWNrZ3JvdW5kOiNkN2ViZjkgdXJsKCJpbWFnZXMvdWktYmdfZ2xhc3NfODBfZDdlYmY5XzF4NDAwLnBuZyIpIDUwJSA1MCUgcmVwZWF0LXg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMjc3OWFhfS51aS1zdGF0ZS1kZWZhdWx0IGEsLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZHtjb2xvcjojMjc3OWFhO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjNzRiMmUyO2JhY2tncm91bmQ6I2U0ZjFmYiB1cmwoImltYWdlcy91aS1iZ19nbGFzc18xMDBfZTRmMWZiXzF4NDAwLnBuZyIpIDUwJSA1MCUgcmVwZWF0LXg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMDA3MGEzfS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLC51aS1zdGF0ZS1ob3ZlciBhOmxpbmssLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCwudWktc3RhdGUtZm9jdXMgYSwudWktc3RhdGUtZm9jdXMgYTpob3ZlciwudWktc3RhdGUtZm9jdXMgYTpsaW5rLC51aS1zdGF0ZS1mb2N1cyBhOnZpc2l0ZWR7Y29sb3I6IzAwNzBhMzt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtYWN0aXZlLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtYWN0aXZlLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1hY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjMjY5NGU4O2JhY2tncm91bmQ6IzNiYWFlMyB1cmwoImltYWdlcy91aS1iZ19nbGFzc181MF8zYmFhZTNfMXg0MDAucG5nIikgNTAlIDUwJSByZXBlYXQteDtmb250LXdlaWdodDpib2xkO2NvbG9yOiNmZmZ9LnVpLXN0YXRlLWFjdGl2ZSBhLC51aS1zdGF0ZS1hY3RpdmUgYTpsaW5rLC51aS1zdGF0ZS1hY3RpdmUgYTp2aXNpdGVke2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhpZ2hsaWdodCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0e2JvcmRlcjoxcHggc29saWQgI2Y5ZGQzNDtiYWNrZ3JvdW5kOiNmZmVmOGYgdXJsKCJpbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMjVfZmZlZjhmXzF4MTAwLnBuZyIpIDUwJSB0b3AgcmVwZWF0LXg7Y29sb3I6IzM2MzYzNn0udWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGF7Y29sb3I6IzM2MzYzNn0udWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjY2QwYTBhO2JhY2tncm91bmQ6I2NkMGEwYSB1cmwoImltYWdlcy91aS1iZ19mbGF0XzE1X2NkMGEwYV80MHgxMDAucG5nIikgNTAlIDUwJSByZXBlYXQteDtjb2xvcjojZmZmfS51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYXtjb2xvcjojZmZmfS51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dHtjb2xvcjojZmZmfS51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktcHJpbWFyeXtmb250LXdlaWdodDpib2xkfS51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXNlY29uZGFyeXtvcGFjaXR5Oi43O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTcwKTtmb250LXdlaWdodDpub3JtYWx9LnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVke29wYWNpdHk6LjM1O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KTtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLXN0YXRlLWRpc2FibGVkIC51aS1pY29ue2ZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KX0udWktaWNvbnt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS51aS1pY29uLC51aS13aWRnZXQtY29udGVudCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzcyYTdjZl8yNTZ4MjQwLnBuZyIpfS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzJhN2NmXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWRlZmF1bHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc18zZDgwYjNfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtaG92ZXIgLnVpLWljb24sLnVpLXN0YXRlLWZvY3VzIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfMjY5NGU4XzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1oaWdobGlnaHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc18yZTgzZmZfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtZXJyb3IgLnVpLWljb24sLnVpLXN0YXRlLWVycm9yLXRleHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmciKX0udWktaWNvbi1ibGFua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjE2cHggMTZweH0udWktaWNvbi1jYXJhdC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLWljb24tY2FyYXQtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IDB9LnVpLWljb24tY2FyYXQtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0udWktaWNvbi1jYXJhdC0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0udWktaWNvbi1jYXJhdC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAwfS51aS1pY29uLWNhcmF0LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS51aS1pY29uLWNhcmF0LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LnVpLWljb24tY2FyYXQtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAwfS51aS1pY29uLWNhcmF0LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IDB9LnVpLWljb24tY2FyYXQtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMH0udWktaWNvbi10cmlhbmdsZS0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2cHh9LnVpLWljb24tYXJyb3ctMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0zMnB4fS51aS1pY29uLWFycm93dGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItc2Utbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC00OHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246MCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNjRweH0udWktaWNvbi1hcnJvdy00e2JhY2tncm91bmQtcG9zaXRpb246MCAtODBweH0udWktaWNvbi1hcnJvdy00LWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtODBweH0udWktaWNvbi1leHRsaW5re2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTgwcHh9LnVpLWljb24tbmV3d2lue2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTgwcHh9LnVpLWljb24tcmVmcmVzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC04MHB4fS51aS1pY29uLXNodWZmbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtODBweH0udWktaWNvbi10cmFuc2Zlci1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtODBweH0udWktaWNvbi10cmFuc2ZlcnRoaWNrLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtODBweH0udWktaWNvbi1mb2xkZXItY29sbGFwc2Vke2JhY2tncm91bmQtcG9zaXRpb246MCAtOTZweH0udWktaWNvbi1mb2xkZXItb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC05NnB4fS51aS1pY29uLWRvY3VtZW50e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnQtYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC05NnB4fS51aS1pY29uLW5vdGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtOTZweH0udWktaWNvbi1tYWlsLWNsb3NlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC05NnB4fS51aS1pY29uLW1haWwtb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC05NnB4fS51aS1pY29uLXN1aXRjYXNle2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05NnB4fS51aS1pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTk2cHh9LnVpLWljb24tcGVyc29ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC05NnB4fS51aS1pY29uLXByaW50e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC05NnB4fS51aS1pY29uLXRyYXNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC05NnB4fS51aS1pY29uLWxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtOTZweH0udWktaWNvbi11bmxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtOTZweH0udWktaWNvbi1ib29rbWFya3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtOTZweH0udWktaWNvbi10YWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTk2cHh9LnVpLWljb24taG9tZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTExMnB4fS51aS1pY29uLWZsYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTEycHh9LnVpLWljb24tY2FsZW5kYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTEycHh9LnVpLWljb24tY2FydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMTJweH0udWktaWNvbi1wZW5jaWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTEycHh9LnVpLWljb24tY2xvY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTEycHh9LnVpLWljb24tZGlza3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMTJweH0udWktaWNvbi1jYWxjdWxhdG9ye2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMTJweH0udWktaWNvbi16b29taW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTExMnB4fS51aS1pY29uLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTExMnB4fS51aS1pY29uLXNlYXJjaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTEycHh9LnVpLWljb24td3JlbmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMTJweH0udWktaWNvbi1nZWFye2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMTJweH0udWktaWNvbi1oZWFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTEycHh9LnVpLWljb24tc3RhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTEycHh9LnVpLWljb24tbGlua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTEycHh9LnVpLWljb24tY2FuY2Vse2JhY2tncm91bmQtcG9zaXRpb246MCAtMTI4cHh9LnVpLWljb24tcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMjhweH0udWktaWNvbi1wbHVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTI4cHh9LnVpLWljb24tbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTI4cHh9LnVpLWljb24tbWludXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXRoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTEyOHB4fS51aS1pY29uLWtleXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTI4cHh9LnVpLWljb24tbGlnaHRidWxie2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMjhweH0udWktaWNvbi1zY2lzc29yc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTI4cHh9LnVpLWljb24tY2xpcGJvYXJke2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMjhweH0udWktaWNvbi1jb3B5e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMjhweH0udWktaWNvbi1jb250YWN0e2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMjhweH0udWktaWNvbi1pbWFnZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTI4cHh9LnVpLWljb24tdmlkZW97YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTEyOHB4fS51aS1pY29uLXNjcmlwdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTI4cHh9LnVpLWljb24tYWxlcnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNDRweH0udWktaWNvbi1pbmZve2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE0NHB4fS51aS1pY29uLW5vdGljZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNDRweH0udWktaWNvbi1oZWxwe2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE0NHB4fS51aS1pY29uLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE0NHB4fS51aS1pY29uLWJ1bGxldHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE0NHB4fS51aS1pY29uLXBpbi13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNDRweH0udWktaWNvbi1waW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTQ0cHh9LnVpLWljb24tcGxheXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2MHB4fS51aS1pY29uLXBhdXNle2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE2MHB4fS51aS1pY29uLXNlZWstbmV4dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNjBweH0udWktaWNvbi1zZWVrLXByZXZ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTYwcHh9LnVpLWljb24tc2Vlay1lbmR7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTYwcHh9LnVpLWljb24tc2Vlay1zdGFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWZpcnN0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXN0b3B7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTYwcHh9LnVpLWljb24tZWplY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTYwcHh9LnVpLWljb24tcG93ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNzZweH0udWktaWNvbi1zaWduYWwtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNzZweH0udWktaWNvbi1zaWduYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0we2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTJ7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ze2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE3NnB4fS51aS1pY29uLWNpcmNsZS1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMTkycHh9LnVpLWljb24tY2lyY2xlLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjA4cHh9LnVpLWljb24tZ3JpcC1kb3R0ZWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMjRweH0udWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIyNHB4fS51aS1pY29uLWdyaXAtc29saWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIyNHB4fS51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMjRweH0udWktaWNvbi1ncmlwLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIyNHB4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItbGVmdCwudWktY29ybmVyLXRse2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItcmlnaHQsLnVpLWNvcm5lci10cntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItYmx7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLWJye2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweH0udWktd2lkZ2V0LW92ZXJsYXl7YmFja2dyb3VuZDojZWVlIHVybCgiaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy10aGlja185MF9lZWVlZWVfNDB4NDAucG5nIikgNTAlIDUwJSByZXBlYXQ7b3BhY2l0eTouODtmaWx0ZXI6QWxwaGEoT3BhY2l0eT04MCl9LnVpLXdpZGdldC1zaGFkb3d7bWFyZ2luOi03cHggMCAwIC03cHg7cGFkZGluZzo3cHg7YmFja2dyb3VuZDojMDAwIHVybCgiaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1oYXJkXzcwXzAwMDAwMF8xeDEwMC5wbmciKSA1MCUgdG9wIHJlcGVhdC14O29wYWNpdHk6LjM7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzApO2JvcmRlci1yYWRpdXM6OHB4fQ==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/jquery-ui.custom.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE3CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwooZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxlKTplKGpRdWVyeSl9KShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscyl7dmFyIG4sYSxvLHI9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJhcmVhIj09PXI/KG49dC5wYXJlbnROb2RlLGE9bi5uYW1lLHQuaHJlZiYmYSYmIm1hcCI9PT1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/KG89ZSgiaW1nW3VzZW1hcD0nIyIrYSsiJ10iKVswXSwhIW8mJmkobykpOiExKTooL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KHIpPyF0LmRpc2FibGVkOiJhIj09PXI/dC5ocmVmfHxzOnMpJiZpKHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGUuZXhwci5maWx0ZXJzLnZpc2libGUodCkmJiFlKHQpLnBhcmVudHMoKS5hZGRCYWNrKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImhpZGRlbiI9PT1lLmNzcyh0aGlzLCJ2aXNpYmlsaXR5Iil9KS5sZW5ndGh9ZS51aT1lLnVpfHx7fSxlLmV4dGVuZChlLnVpLHt2ZXJzaW9uOiIxLjExLjIiLGtleUNvZGU6e0JBQ0tTUEFDRTo4LENPTU1BOjE4OCxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNQQUNFOjMyLFRBQjo5LFVQOjM4fX0pLGUuZm4uZXh0ZW5kKHtzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5jc3MoInBvc2l0aW9uIikscz0iYWJzb2x1dGUiPT09aSxuPXQ/LyhhdXRvfHNjcm9sbHxoaWRkZW4pLzovKGF1dG98c2Nyb2xsKS8sYT10aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3JldHVybiBzJiYic3RhdGljIj09PXQuY3NzKCJwb3NpdGlvbiIpPyExOm4udGVzdCh0LmNzcygib3ZlcmZsb3ciKSt0LmNzcygib3ZlcmZsb3cteSIpK3QuY3NzKCJvdmVyZmxvdy14IikpfSkuZXEoMCk7cmV0dXJuImZpeGVkIiE9PWkmJmEubGVuZ3RoP2E6ZSh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KX0sdW5pcXVlSWQ6ZnVuY3Rpb24oKXt2YXIgZT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKytlKX0pfX0oKSxyZW1vdmVVbmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsvXnVpLWlkLVxkKyQvLnRlc3QodGhpcy5pZCkmJmUodGhpcykucmVtb3ZlQXR0cigiaWQiKX0pfX0pLGUuZXh0ZW5kKGUuZXhwclsiOiJdLHtkYXRhOmUuZXhwci5jcmVhdGVQc2V1ZG8/ZS5leHByLmNyZWF0ZVBzZXVkbyhmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuISFlLmRhdGEoaSx0KX19KTpmdW5jdGlvbih0LGkscyl7cmV0dXJuISFlLmRhdGEodCxzWzNdKX0sZm9jdXNhYmxlOmZ1bmN0aW9uKGkpe3JldHVybiB0KGksIWlzTmFOKGUuYXR0cihpLCJ0YWJpbmRleCIpKSl9LHRhYmJhYmxlOmZ1bmN0aW9uKGkpe3ZhciBzPWUuYXR0cihpLCJ0YWJpbmRleCIpLG49aXNOYU4ocyk7cmV0dXJuKG58fHM+PTApJiZ0KGksIW4pfX0pLGUoIjxhPiIpLm91dGVyV2lkdGgoMSkuanF1ZXJ5fHxlLmVhY2goWyJXaWR0aCIsIkhlaWdodCJdLGZ1bmN0aW9uKHQsaSl7ZnVuY3Rpb24gcyh0LGkscyxhKXtyZXR1cm4gZS5lYWNoKG4sZnVuY3Rpb24oKXtpLT1wYXJzZUZsb2F0KGUuY3NzKHQsInBhZGRpbmciK3RoaXMpKXx8MCxzJiYoaS09cGFyc2VGbG9hdChlLmNzcyh0LCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwKSxhJiYoaS09cGFyc2VGbG9hdChlLmNzcyh0LCJtYXJnaW4iK3RoaXMpKXx8MCl9KSxpfXZhciBuPSJXaWR0aCI9PT1pP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXSxhPWkudG9Mb3dlckNhc2UoKSxvPXtpbm5lcldpZHRoOmUuZm4uaW5uZXJXaWR0aCxpbm5lckhlaWdodDplLmZuLmlubmVySGVpZ2h0LG91dGVyV2lkdGg6ZS5mbi5vdXRlcldpZHRoLG91dGVySGVpZ2h0OmUuZm4ub3V0ZXJIZWlnaHR9O2UuZm5bImlubmVyIitpXT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD9vWyJpbm5lciIraV0uY2FsbCh0aGlzKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyhhLHModGhpcyx0KSsicHgiKX0pfSxlLmZuWyJvdXRlciIraV09ZnVuY3Rpb24odCxuKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQ/b1sib3V0ZXIiK2ldLmNhbGwodGhpcyx0KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyhhLHModGhpcyx0LCEwLG4pKyJweCIpfSl9fSksZS5mbi5hZGRCYWNrfHwoZS5mbi5hZGRCYWNrPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZChudWxsPT1lP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKX0pLGUoIjxhPiIpLmRhdGEoImEtYiIsImEiKS5yZW1vdmVEYXRhKCJhLWIiKS5kYXRhKCJhLWIiKSYmKGUuZm4ucmVtb3ZlRGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5jYWxsKHRoaXMsZS5jYW1lbENhc2UoaSkpOnQuY2FsbCh0aGlzKX19KGUuZm4ucmVtb3ZlRGF0YSkpLGUudWkuaWU9ISEvbXNpZSBbXHcuXSsvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSxlLmZuLmV4dGVuZCh7Zm9jdXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBpP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2UodCkuZm9jdXMoKSxzJiZzLmNhbGwodCl9LGkpfSk6dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShlLmZuLmZvY3VzKSxkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9Im9uc2VsZWN0c3RhcnQiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik/InNlbGVjdHN0YXJ0IjoibW91c2Vkb3duIjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iaW5kKGUrIi51aS1kaXNhYmxlU2VsZWN0aW9uIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9KX19KCksZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5iaW5kKCIudWktZGlzYWJsZVNlbGVjdGlvbiIpfSx6SW5kZXg6ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dClyZXR1cm4gdGhpcy5jc3MoInpJbmRleCIsdCk7aWYodGhpcy5sZW5ndGgpZm9yKHZhciBpLHMsbj1lKHRoaXNbMF0pO24ubGVuZ3RoJiZuWzBdIT09ZG9jdW1lbnQ7KXtpZihpPW4uY3NzKCJwb3NpdGlvbiIpLCgiYWJzb2x1dGUiPT09aXx8InJlbGF0aXZlIj09PWl8fCJmaXhlZCI9PT1pKSYmKHM9cGFyc2VJbnQobi5jc3MoInpJbmRleCIpLDEwKSwhaXNOYU4ocykmJjAhPT1zKSlyZXR1cm4gcztuPW4ucGFyZW50KCl9cmV0dXJuIDB9fSksZS51aS5wbHVnaW49e2FkZDpmdW5jdGlvbih0LGkscyl7dmFyIG4sYT1lLnVpW3RdLnByb3RvdHlwZTtmb3IobiBpbiBzKWEucGx1Z2luc1tuXT1hLnBsdWdpbnNbbl18fFtdLGEucGx1Z2luc1tuXS5wdXNoKFtpLHNbbl1dKX0sY2FsbDpmdW5jdGlvbihlLHQsaSxzKXt2YXIgbixhPWUucGx1Z2luc1t0XTtpZihhJiYoc3x8ZS5lbGVtZW50WzBdLnBhcmVudE5vZGUmJjExIT09ZS5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGUpKWZvcihuPTA7YS5sZW5ndGg+bjtuKyspZS5vcHRpb25zW2Fbbl1bMF1dJiZhW25dWzFdLmFwcGx5KGUuZWxlbWVudCxpKX19fSk7Ci8qISBqUXVlcnkgVUkgLSB2MS4xMS4yIC0gMjAxNC0xMC0xNwoqIGh0dHA6Ly9qcXVlcnl1aS5jb20KKiBDb3B5cmlnaHQgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfSkoZnVuY3Rpb24oZSl7dmFyIHQ9MCxpPUFycmF5LnByb3RvdHlwZS5zbGljZTtyZXR1cm4gZS5jbGVhbkRhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBzLG4sYTtmb3IoYT0wO251bGwhPShuPWlbYV0pO2ErKyl0cnl7cz1lLl9kYXRhKG4sImV2ZW50cyIpLHMmJnMucmVtb3ZlJiZlKG4pLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKX1jYXRjaChvKXt9dChpKX19KGUuY2xlYW5EYXRhKSxlLndpZGdldD1mdW5jdGlvbih0LGkscyl7dmFyIG4sYSxvLHIsaD17fSxsPXQuc3BsaXQoIi4iKVswXTtyZXR1cm4gdD10LnNwbGl0KCIuIilbMV0sbj1sKyItIit0LHN8fChzPWksaT1lLldpZGdldCksZS5leHByWyI6Il1bbi50b0xvd2VyQ2FzZSgpXT1mdW5jdGlvbih0KXtyZXR1cm4hIWUuZGF0YSh0LG4pfSxlW2xdPWVbbF18fHt9LGE9ZVtsXVt0XSxvPWVbbF1bdF09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fY3JlYXRlV2lkZ2V0Pyhhcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoZSx0KSx2b2lkIDApOm5ldyBvKGUsdCl9LGUuZXh0ZW5kKG8sYSx7dmVyc2lvbjpzLnZlcnNpb24sX3Byb3RvOmUuZXh0ZW5kKHt9LHMpLF9jaGlsZENvbnN0cnVjdG9yczpbXX0pLHI9bmV3IGksci5vcHRpb25zPWUud2lkZ2V0LmV4dGVuZCh7fSxyLm9wdGlvbnMpLGUuZWFjaChzLGZ1bmN0aW9uKHQscyl7cmV0dXJuIGUuaXNGdW5jdGlvbihzKT8oaFt0XT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbj1mdW5jdGlvbihlKXtyZXR1cm4gaS5wcm90b3R5cGVbdF0uYXBwbHkodGhpcyxlKX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLl9zdXBlcixhPXRoaXMuX3N1cGVyQXBwbHk7cmV0dXJuIHRoaXMuX3N1cGVyPWUsdGhpcy5fc3VwZXJBcHBseT1uLHQ9cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fc3VwZXI9aSx0aGlzLl9zdXBlckFwcGx5PWEsdH19KCksdm9pZCAwKTooaFt0XT1zLHZvaWQgMCl9KSxvLnByb3RvdHlwZT1lLndpZGdldC5leHRlbmQocix7d2lkZ2V0RXZlbnRQcmVmaXg6YT9yLndpZGdldEV2ZW50UHJlZml4fHx0OnR9LGgse2NvbnN0cnVjdG9yOm8sbmFtZXNwYWNlOmwsd2lkZ2V0TmFtZTp0LHdpZGdldEZ1bGxOYW1lOm59KSxhPyhlLmVhY2goYS5fY2hpbGRDb25zdHJ1Y3RvcnMsZnVuY3Rpb24odCxpKXt2YXIgcz1pLnByb3RvdHlwZTtlLndpZGdldChzLm5hbWVzcGFjZSsiLiIrcy53aWRnZXROYW1lLG8saS5fcHJvdG8pfSksZGVsZXRlIGEuX2NoaWxkQ29uc3RydWN0b3JzKTppLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG8pLGUud2lkZ2V0LmJyaWRnZSh0LG8pLG99LGUud2lkZ2V0LmV4dGVuZD1mdW5jdGlvbih0KXtmb3IodmFyIHMsbixhPWkuY2FsbChhcmd1bWVudHMsMSksbz0wLHI9YS5sZW5ndGg7cj5vO28rKylmb3IocyBpbiBhW29dKW49YVtvXVtzXSxhW29dLmhhc093blByb3BlcnR5KHMpJiZ2b2lkIDAhPT1uJiYodFtzXT1lLmlzUGxhaW5PYmplY3Qobik/ZS5pc1BsYWluT2JqZWN0KHRbc10pP2Uud2lkZ2V0LmV4dGVuZCh7fSx0W3NdLG4pOmUud2lkZ2V0LmV4dGVuZCh7fSxuKTpuKTtyZXR1cm4gdH0sZS53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKHQscyl7dmFyIG49cy5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWV8fHQ7ZS5mblt0XT1mdW5jdGlvbihhKXt2YXIgbz0ic3RyaW5nIj09dHlwZW9mIGEscj1pLmNhbGwoYXJndW1lbnRzLDEpLGg9dGhpcztyZXR1cm4gYT0hbyYmci5sZW5ndGg/ZS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW2FdLmNvbmNhdChyKSk6YSxvP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpLHM9ZS5kYXRhKHRoaXMsbik7cmV0dXJuImluc3RhbmNlIj09PWE/KGg9cywhMSk6cz9lLmlzRnVuY3Rpb24oc1thXSkmJiJfIiE9PWEuY2hhckF0KDApPyhpPXNbYV0uYXBwbHkocyxyKSxpIT09cyYmdm9pZCAwIT09aT8oaD1pJiZpLmpxdWVyeT9oLnB1c2hTdGFjayhpLmdldCgpKTppLCExKTp2b2lkIDApOmUuZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciK2ErIicgZm9yICIrdCsiIHdpZGdldCBpbnN0YW5jZSIpOmUuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIit0KyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIrImF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIithKyInIil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lLmRhdGEodGhpcyxuKTt0Pyh0Lm9wdGlvbihhfHx7fSksdC5faW5pdCYmdC5faW5pdCgpKTplLmRhdGEodGhpcyxuLG5ldyBzKGEsdGhpcykpfSksaH19LGUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSxlLldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sZS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7ZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24oaSxzKXtzPWUoc3x8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PWUocyksdGhpcy51dWlkPXQrKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9ZSgpLHRoaXMuaG92ZXJhYmxlPWUoKSx0aGlzLmZvY3VzYWJsZT1lKCkscyE9PXRoaXMmJihlLmRhdGEocyx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVudCx7cmVtb3ZlOmZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09cyYmdGhpcy5kZXN0cm95KCl9fSksdGhpcy5kb2N1bWVudD1lKHMuc3R5bGU/cy5vd25lckRvY3VtZW50OnMuZG9jdW1lbnR8fHMpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksaSksdGhpcy5fY3JlYXRlKCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmUubm9vcCxfZ2V0Q3JlYXRlRXZlbnREYXRhOmUubm9vcCxfY3JlYXRlOmUubm9vcCxfaW5pdDplLm5vb3AsZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3koKSx0aGlzLmVsZW1lbnQudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89dDtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKG89e30scz10LnNwbGl0KCIuIiksdD1zLnNoaWZ0KCkscy5sZW5ndGgpe2ZvcihuPW9bdF09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1t0XSksYT0wO3MubGVuZ3RoLTE+YTthKyspbltzW2FdXT1uW3NbYV1dfHx7fSxuPW5bc1thXV07aWYodD1zLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1uW3RdP251bGw6blt0XTtuW3RdPWl9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW3RdP251bGw6dGhpcy5vcHRpb25zW3RdO29bdF09aX1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhvKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXRoaXMuX3NldE9wdGlvbih0LGVbdF0pO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub3B0aW9uc1tlXT10LCJkaXNhYmxlZCI9PT1lJiYodGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLCEhdCksdCYmKHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpKSksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX29uOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgdCYmKHM9aSxpPXQsdD0hMSkscz8oaT1uPWUoaSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChpKSk6KHM9aSxpPXRoaXMuZWxlbWVudCxuPXRoaXMud2lkZ2V0KCkpLGUuZWFjaChzLGZ1bmN0aW9uKHMsbyl7ZnVuY3Rpb24gcigpe3JldHVybiB0fHxhLm9wdGlvbnMuZGlzYWJsZWQhPT0hMCYmIWUodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik/KCJzdHJpbmciPT10eXBlb2Ygbz9hW29dOm8pLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9InN0cmluZyIhPXR5cGVvZiBvJiYoci5ndWlkPW8uZ3VpZD1vLmd1aWR8fHIuZ3VpZHx8ZS5ndWlkKyspO3ZhciBoPXMubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGw9aFsxXSthLmV2ZW50TmFtZXNwYWNlLHU9aFsyXTt1P24uZGVsZWdhdGUodSxsLHIpOmkuYmluZChsLHIpfSl9LF9vZmY6ZnVuY3Rpb24odCxpKXtpPShpfHwiIikuc3BsaXQoIiAiKS5qb2luKHRoaXMuZXZlbnROYW1lc3BhY2UrIiAiKSt0aGlzLmV2ZW50TmFtZXNwYWNlLHQudW5iaW5kKGkpLnVuZGVsZWdhdGUoaSksdGhpcy5iaW5kaW5ncz1lKHRoaXMuYmluZGluZ3Mubm90KHQpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT1lKHRoaXMuZm9jdXNhYmxlLm5vdCh0KS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9ZSh0aGlzLmhvdmVyYWJsZS5ub3QodCkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9zW2VdOmUpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24odCl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKHQpLHRoaXMuX29uKHQse21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnNbdF07aWYocz1zfHx7fSxpPWUuRXZlbnQoaSksaS50eXBlPSh0PT09dGhpcy53aWRnZXRFdmVudFByZWZpeD90OnRoaXMud2lkZ2V0RXZlbnRQcmVmaXgrdCkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sYT1pLm9yaWdpbmFsRXZlbnQpZm9yKG4gaW4gYSluIGluIGl8fChpW25dPWFbbl0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihpLHMpLCEoZS5pc0Z1bmN0aW9uKG8pJiZvLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbaV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxpKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHMsbixhKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6bn0pO3ZhciBvLHI9bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOnQ7bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSksbz0hZS5pc0VtcHR5T2JqZWN0KG4pLG4uY29tcGxldGU9YSxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLG8mJmUuZWZmZWN0cyYmZS5lZmZlY3RzLmVmZmVjdFtyXT9zW3RdKG4pOnIhPT10JiZzW3JdP3Nbcl0obi5kdXJhdGlvbixuLmVhc2luZyxhKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe2UodGhpcylbdF0oKSxhJiZhLmNhbGwoc1swXSksaSgpfSl9fSksZS53aWRnZXR9KTsKLyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE3CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwooZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCIuL3dpZGdldCJdLGUpOmUoalF1ZXJ5KX0pKGZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiBlKGRvY3VtZW50KS5tb3VzZXVwKGZ1bmN0aW9uKCl7dD0hMX0pLGUud2lkZ2V0KCJ1aS5tb3VzZSIse3ZlcnNpb246IjEuMTEuMiIsb3B0aW9uczp7Y2FuY2VsOiJpbnB1dCx0ZXh0YXJlYSxidXR0b24sc2VsZWN0LG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxheTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tb3VzZURvd24oZSl9KS5iaW5kKCJjbGljay4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihpKXtyZXR1cm4hMD09PWUuZGF0YShpLnRhcmdldCx0LndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpPyhlLnJlbW92ZURhdGEoaS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSxpLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCExKTp2b2lkIDB9KSx0aGlzLnN0YXJ0ZWQ9ITF9LF9tb3VzZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlJiZ0aGlzLmRvY3VtZW50LnVuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKX0sX21vdXNlRG93bjpmdW5jdGlvbihpKXtpZighdCl7dGhpcy5fbW91c2VNb3ZlZD0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoaSksdGhpcy5fbW91c2VEb3duRXZlbnQ9aTt2YXIgcz10aGlzLG49MT09PWkud2hpY2gsYT0ic3RyaW5nIj09dHlwZW9mIHRoaXMub3B0aW9ucy5jYW5jZWwmJmkudGFyZ2V0Lm5vZGVOYW1lP2UoaS50YXJnZXQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoOiExO3JldHVybiBuJiYhYSYmdGhpcy5fbW91c2VDYXB0dXJlKGkpPyh0aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheSx0aGlzLm1vdXNlRGVsYXlNZXR8fCh0aGlzLl9tb3VzZURlbGF5VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe3MubW91c2VEZWxheU1ldD0hMH0sdGhpcy5vcHRpb25zLmRlbGF5KSksdGhpcy5fbW91c2VEaXN0YW5jZU1ldChpKSYmdGhpcy5fbW91c2VEZWxheU1ldChpKSYmKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3VzZVN0YXJ0KGkpIT09ITEsIXRoaXMuX21vdXNlU3RhcnRlZCk/KGkucHJldmVudERlZmF1bHQoKSwhMCk6KCEwPT09ZS5kYXRhKGkudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IikmJmUucmVtb3ZlRGF0YShpLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBzLl9tb3VzZU1vdmUoZSl9LHRoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gcy5fbW91c2VVcChlKX0sdGhpcy5kb2N1bWVudC5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSxpLnByZXZlbnREZWZhdWx0KCksdD0hMCwhMCkpOiEwfX0sX21vdXNlTW92ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9tb3VzZU1vdmVkKXtpZihlLnVpLmllJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OT5kb2N1bWVudC5kb2N1bWVudE1vZGUpJiYhdC5idXR0b24pcmV0dXJuIHRoaXMuX21vdXNlVXAodCk7aWYoIXQud2hpY2gpcmV0dXJuIHRoaXMuX21vdXNlVXAodCl9cmV0dXJuKHQud2hpY2h8fHQuYnV0dG9uKSYmKHRoaXMuX21vdXNlTW92ZWQ9ITApLHRoaXMuX21vdXNlU3RhcnRlZD8odGhpcy5fbW91c2VEcmFnKHQpLHQucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX21vdXNlRGlzdGFuY2VNZXQodCkmJnRoaXMuX21vdXNlRGVsYXlNZXQodCkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCx0KSE9PSExLHRoaXMuX21vdXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcodCk6dGhpcy5fbW91c2VVcCh0KSksIXRoaXMuX21vdXNlU3RhcnRlZCl9LF9tb3VzZVVwOmZ1bmN0aW9uKGkpe3JldHVybiB0aGlzLmRvY3VtZW50LnVuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSx0aGlzLl9tb3VzZVN0YXJ0ZWQmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEsaS50YXJnZXQ9PT10aGlzLl9tb3VzZURvd25FdmVudC50YXJnZXQmJmUuZGF0YShpLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIsITApLHRoaXMuX21vdXNlU3RvcChpKSksdD0hMSwhMX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWUucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWUucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSl9KTsKLyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE3CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwooZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCIuL2NvcmUiLCIuL21vdXNlIiwiLi93aWRnZXQiXSxlKTplKGpRdWVyeSl9KShmdW5jdGlvbihlKXtyZXR1cm4gZS53aWRnZXQoInVpLmRyYWdnYWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS4yIix3aWRnZXRFdmVudFByZWZpeDoiZHJhZyIsb3B0aW9uczp7YWRkQ2xhc3NlczohMCxhcHBlbmRUbzoicGFyZW50IixheGlzOiExLGNvbm5lY3RUb1NvcnRhYmxlOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4OiExLG9wYWNpdHk6ITEscmVmcmVzaFBvc2l0aW9uczohMSxyZXZlcnQ6ITEscmV2ZXJ0RHVyYXRpb246NTAwLHNjb3BlOiJkZWZhdWx0IixzY3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc25hcDohMSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVyYW5jZToyMCxzdGFjazohMSx6SW5kZXg6ITEsZHJhZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7Im9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuX3NldFBvc2l0aW9uUmVsYXRpdmUoKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VJbml0KCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmKHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCkuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT8odGhpcy5kZXN0cm95T25DbGVhcj0hMCx2b2lkIDApOih0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZSB1aS1kcmFnZ2FibGUtZHJhZ2dpbmcgdWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VEZXN0cm95KCksdm9pZCAwKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2JsdXJBY3RpdmVFbGVtZW50KHQpLHRoaXMuaGVscGVyfHxpLmRpc2FibGVkfHxlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktcmVzaXphYmxlLWhhbmRsZSIpLmxlbmd0aD4wPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUodCksdGhpcy5oYW5kbGU/KHRoaXMuX2Jsb2NrRnJhbWVzKGkuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6aS5pZnJhbWVGaXgpLCEwKTohMSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbih0KXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQodCkubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbyh0LnBhcmVudCgpKS5vdXRlcldpZHRoKHQub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodCh0Lm91dGVySGVpZ2h0KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2JsdXJBY3RpdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZG9jdW1lbnRbMF07aWYodGhpcy5oYW5kbGVFbGVtZW50LmlzKHQudGFyZ2V0KSl0cnl7aS5hY3RpdmVFbGVtZW50JiYiYm9keSIhPT1pLmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpLmFjdGl2ZUVsZW1lbnQpLmJsdXIoKX1jYXRjaChzKXt9fSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcih0KSx0aGlzLmhlbHBlci5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGUudWkuZGRtYW5hZ2VyJiYoZS51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoITApLHRoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpLHRoaXMuaGFzRml4ZWRBbmNlc3Rvcj10aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImZpeGVkIj09PWUodGhpcykuY3NzKCJwb3NpdGlvbiIpfSkubGVuZ3RoPjAsdGhpcy5wb3NpdGlvbkFicz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fcmVmcmVzaE9mZnNldHModCksdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0LCExKSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxpLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuX3NldENvbnRhaW5tZW50KCksdGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpPT09ITE/KHRoaXMuX2NsZWFyKCksITEpOih0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCksdGhpcy5fbm9ybWFsaXplUmlnaHRCb3R0b20oKSx0aGlzLl9tb3VzZURyYWcodCwhMCksZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWdTdGFydCh0aGlzLHQpLCEwKX0sX3JlZnJlc2hPZmZzZXRzOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5wb3NpdGlvbkFicy50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMucG9zaXRpb25BYnMubGVmdC10aGlzLm1hcmdpbnMubGVmdCxzY3JvbGw6ITEscGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9LHRoaXMub2Zmc2V0LmNsaWNrPXtsZWZ0OmUucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6ZS5wYWdlWS10aGlzLm9mZnNldC50b3B9fSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQsaSl7aWYodGhpcy5oYXNGaXhlZEFuY2VzdG9yJiYodGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKSx0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCwhMCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSwhaSl7dmFyIHM9dGhpcy5fdWlIYXNoKCk7aWYodGhpcy5fdHJpZ2dlcigiZHJhZyIsdCxzKT09PSExKXJldHVybiB0aGlzLl9tb3VzZVVwKHt9KSwhMTt0aGlzLnBvc2l0aW9uPXMucG9zaXRpb259cmV0dXJuIHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsdGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIsZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9ITE7cmV0dXJuIGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJihzPWUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSksdGhpcy5kcm9wcGVkJiYocz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKSwiaW52YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiYhc3x8InZhbGlkIj09PXRoaXMub3B0aW9ucy5yZXZlcnQmJnN8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT0hMHx8ZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNhbGwodGhpcy5lbGVtZW50LHMpP2UodGhpcy5oZWxwZXIpLmFuaW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtpLl90cmlnZ2VyKCJzdG9wIix0KSE9PSExJiZpLl9jbGVhcigpfSk6dGhpcy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmdGhpcy5fY2xlYXIoKSwhMX0sX21vdXNlVXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VuYmxvY2tGcmFtZXMoKSxlLnVpLmRkbWFuYWdlciYmZS51aS5kZG1hbmFnZXIuZHJhZ1N0b3AodGhpcyx0KSx0aGlzLmhhbmRsZUVsZW1lbnQuaXModC50YXJnZXQpJiZ0aGlzLmVsZW1lbnQuZm9jdXMoKSxlLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VVcC5jYWxsKHRoaXMsdCl9LGNhbmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAoe30pOnRoaXMuX2NsZWFyKCksdGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmhhbmRsZT8hIWUodC50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhhbmRsZSkpLmxlbmd0aDohMH0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudD10aGlzLm9wdGlvbnMuaGFuZGxlP3RoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpOnRoaXMuZWxlbWVudCx0aGlzLmhhbmRsZUVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX3JlbW92ZUhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucyxzPWUuaXNGdW5jdGlvbihpLmhlbHBlciksbj1zP2UoaS5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmVsZW1lbnQuY2xvbmUoKS5yZW1vdmVBdHRyKCJpZCIpOnRoaXMuZWxlbWVudDtyZXR1cm4gbi5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxuLmFwcGVuZFRvKCJwYXJlbnQiPT09aS5hcHBlbmRUbz90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTppLmFwcGVuZFRvKSxzJiZuWzBdPT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksblswXT09PXRoaXMuZWxlbWVudFswXXx8LyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qobi5jc3MoInBvc2l0aW9uIikpfHxuLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLG59LF9zZXRQb3NpdGlvblJlbGF0aXZlOmZ1bmN0aW9uKCl7L14oPzpyfGF8ZikvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSl8fCh0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIil9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2lzUm9vdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuLyhodG1sfGJvZHkpL2kudGVzdChlLnRhZ05hbWUpfHxlPT09dGhpcy5kb2N1bWVudFswXX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpLGk9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT1pJiZlLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKHQubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLHQudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksdGhpcy5faXNSb290Tm9kZSh0aGlzLm9mZnNldFBhcmVudFswXSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb24pcmV0dXJue3RvcDowLGxlZnQ6MH07dmFyIGU9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksdD10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkpfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zLGE9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4gdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1udWxsLG4uY29udGFpbm1lbnQ/IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVtlKHdpbmRvdykuc2Nyb2xsTGVmdCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsZSh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGUod2luZG93KS5zY3JvbGxMZWZ0KCkrZSh3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxlKHdpbmRvdykuc2Nyb2xsVG9wKCkrKGUod2luZG93KS5oZWlnaHQoKXx8YS5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXSx2b2lkIDApOiJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVswLDAsZShhKS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGUoYSkuaGVpZ2h0KCl8fGEuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKTpuLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yPT09QXJyYXk/KHRoaXMuY29udGFpbm1lbnQ9bi5jb250YWlubWVudCx2b2lkIDApOigicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLGk9ZShuLmNvbnRhaW5tZW50KSxzPWlbMF0scyYmKHQ9LyhzY3JvbGx8YXV0bykvLnRlc3QoaS5jc3MoIm92ZXJmbG93IikpLHRoaXMuY29udGFpbm1lbnQ9WyhwYXJzZUludChpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKSwocGFyc2VJbnQoaS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLCh0P01hdGgubWF4KHMuc2Nyb2xsV2lkdGgscy5vZmZzZXRXaWR0aCk6cy5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKHQ/TWF0aC5tYXgocy5zY3JvbGxIZWlnaHQscy5vZmZzZXRIZWlnaHQpOnMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1pKSx2b2lkIDApOih0aGlzLmNvbnRhaW5tZW50PW51bGwsdm9pZCAwKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsdCl7dHx8KHQ9dGhpcy5wb3NpdGlvbik7dmFyIGk9ImFic29sdXRlIj09PWU/MTotMSxzPXRoaXMuX2lzUm9vdE5vZGUodGhpcy5zY3JvbGxQYXJlbnRbMF0pO3JldHVybnt0b3A6dC50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmkrdGhpcy5vZmZzZXQucGFyZW50LnRvcCppLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCkqaSxsZWZ0OnQubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmkrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnM/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCkqaX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGEsbz10aGlzLm9wdGlvbnMscj10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKSxoPWUucGFnZVgsbD1lLnBhZ2VZO3JldHVybiByJiZ0aGlzLm9mZnNldC5zY3JvbGx8fCh0aGlzLm9mZnNldC5zY3JvbGw9e3RvcDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OnRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX0pLHQmJih0aGlzLmNvbnRhaW5tZW50JiYodGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj8ocz10aGlzLnJlbGF0aXZlQ29udGFpbmVyLm9mZnNldCgpLGk9W3RoaXMuY29udGFpbm1lbnRbMF0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbMV0rcy50b3AsdGhpcy5jb250YWlubWVudFsyXStzLmxlZnQsdGhpcy5jb250YWlubWVudFszXStzLnRvcF0pOmk9dGhpcy5jb250YWlubWVudCxlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8aVswXSYmKGg9aVswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDxpWzFdJiYobD1pWzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PmlbMl0mJihoPWlbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+aVszXSYmKGw9aVszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxvLmdyaWQmJihuPW8uZ3JpZFsxXT90aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVkpL28uZ3JpZFsxXSkqby5ncmlkWzFdOnRoaXMub3JpZ2luYWxQYWdlWSxsPWk/bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV18fG4tdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10/bjpuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD49aVsxXT9uLW8uZ3JpZFsxXTpuK28uZ3JpZFsxXTpuLGE9by5ncmlkWzBdP3RoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChoLXRoaXMub3JpZ2luYWxQYWdlWCkvby5ncmlkWzBdKSpvLmdyaWRbMF06dGhpcy5vcmlnaW5hbFBhZ2VYLGg9aT9hLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PWlbMF18fGEtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdP2E6YS10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdP2Etby5ncmlkWzBdOmErby5ncmlkWzBdOmEpLCJ5Ij09PW8uYXhpcyYmKGg9dGhpcy5vcmlnaW5hbFBhZ2VYKSwieCI9PT1vLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWSkpLHt0b3A6bC10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwudG9wOnI/MDp0aGlzLm9mZnNldC5zY3JvbGwudG9wKSxsZWZ0OmgtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQ6cj8wOnRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0KX19LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmciKSx0aGlzLmhlbHBlclswXT09PXRoaXMuZWxlbWVudFswXXx8dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsfHx0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0aGlzLmRlc3Ryb3lPbkNsZWFyJiZ0aGlzLmRlc3Ryb3koKX0sX25vcm1hbGl6ZVJpZ2h0Qm90dG9tOmZ1bmN0aW9uKCl7InkiIT09dGhpcy5vcHRpb25zLmF4aXMmJiJhdXRvIiE9PXRoaXMuaGVscGVyLmNzcygicmlnaHQiKSYmKHRoaXMuaGVscGVyLndpZHRoKHRoaXMuaGVscGVyLndpZHRoKCkpLHRoaXMuaGVscGVyLmNzcygicmlnaHQiLCJhdXRvIikpLCJ4IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoImJvdHRvbSIpJiYodGhpcy5oZWxwZXIuaGVpZ2h0KHRoaXMuaGVscGVyLmhlaWdodCgpKSx0aGlzLmhlbHBlci5jc3MoImJvdHRvbSIsImF1dG8iKSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSxlLnVpLnBsdWdpbi5jYWxsKHRoaXMsdCxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KHQpJiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSxlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLHQsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10sZShzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRhYmxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIix0LG4pKX0pfSxzdG9wOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lLmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaXNPdmVyPyhlLmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCxlLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsZS5fc3RvcmVkQ1NTPXtwb3NpdGlvbjplLnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6ZS5wbGFjZWhvbGRlci5jc3MoInRvcCIpLGxlZnQ6ZS5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sZS5fbW91c2VTdG9wKHQpLGUub3B0aW9ucy5oZWxwZXI9ZS5vcHRpb25zLl9oZWxwZXIpOihlLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsZS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsdCxuKSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7ZS5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsYT10aGlzO2EucG9zaXRpb25BYnM9cy5wb3NpdGlvbkFicyxhLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsYS5vZmZzZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssYS5faW50ZXJzZWN0c1dpdGgoYS5jb250YWluZXJDYWNoZSkmJihuPSEwLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1hJiZ0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmZS5jb250YWlucyhhLmVsZW1lbnRbMF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG59KSksbj8oYS5pc092ZXJ8fChhLmlzT3Zlcj0xLGEuY3VycmVudEl0ZW09aS5oZWxwZXIuYXBwZW5kVG8oYS5lbGVtZW50KS5kYXRhKCJ1aS1zb3J0YWJsZS1pdGVtIiwhMCksYS5vcHRpb25zLl9oZWxwZXI9YS5vcHRpb25zLmhlbHBlcixhLm9wdGlvbnMuaGVscGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGkuaGVscGVyWzBdfSx0LnRhcmdldD1hLmN1cnJlbnRJdGVtWzBdLGEuX21vdXNlQ2FwdHVyZSh0LCEwKSxhLl9tb3VzZVN0YXJ0KHQsITAsITApLGEub2Zmc2V0LmNsaWNrLnRvcD1zLm9mZnNldC5jbGljay50b3AsYS5vZmZzZXQuY2xpY2subGVmdD1zLm9mZnNldC5jbGljay5sZWZ0LGEub2Zmc2V0LnBhcmVudC5sZWZ0LT1zLm9mZnNldC5wYXJlbnQubGVmdC1hLm9mZnNldC5wYXJlbnQubGVmdCxhLm9mZnNldC5wYXJlbnQudG9wLT1zLm9mZnNldC5wYXJlbnQudG9wLWEub2Zmc2V0LnBhcmVudC50b3Ascy5fdHJpZ2dlcigidG9Tb3J0YWJsZSIsdCkscy5kcm9wcGVkPWEuZWxlbWVudCxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pLHMuY3VycmVudEl0ZW09cy5lbGVtZW50LGEuZnJvbU91dHNpZGU9cyksYS5jdXJyZW50SXRlbSYmKGEuX21vdXNlRHJhZyh0KSxpLnBvc2l0aW9uPWEucG9zaXRpb24pKTphLmlzT3ZlciYmKGEuaXNPdmVyPTAsYS5jYW5jZWxIZWxwZXJSZW1vdmFsPSEwLGEub3B0aW9ucy5fcmV2ZXJ0PWEub3B0aW9ucy5yZXZlcnQsYS5vcHRpb25zLnJldmVydD0hMSxhLl90cmlnZ2VyKCJvdXQiLHQsYS5fdWlIYXNoKGEpKSxhLl9tb3VzZVN0b3AodCwhMCksYS5vcHRpb25zLnJldmVydD1hLm9wdGlvbnMuX3JldmVydCxhLm9wdGlvbnMuaGVscGVyPWEub3B0aW9ucy5faGVscGVyLGEucGxhY2Vob2xkZXImJmEucGxhY2Vob2xkZXIucmVtb3ZlKCkscy5fcmVmcmVzaE9mZnNldHModCksaS5wb3NpdGlvbj1zLl9nZW5lcmF0ZVBvc2l0aW9uKHQsITApLHMuX3RyaWdnZXIoImZyb21Tb3J0YWJsZSIsdCkscy5kcm9wcGVkPSExLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMucmVmcmVzaFBvc2l0aW9ucygpfSkpfSl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjdXJzb3IiLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG49ZSgiYm9keSIpLGE9cy5vcHRpb25zO24uY3NzKCJjdXJzb3IiKSYmKGEuX2N1cnNvcj1uLmNzcygiY3Vyc29yIikpLG4uY3NzKCJjdXJzb3IiLGEuY3Vyc29yKX0sc3RvcDpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zO24uX2N1cnNvciYmZSgiYm9keSIpLmNzcygiY3Vyc29yIixuLl9jdXJzb3IpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwib3BhY2l0eSIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lKGkuaGVscGVyKSxhPXMub3B0aW9ucztuLmNzcygib3BhY2l0eSIpJiYoYS5fb3BhY2l0eT1uLmNzcygib3BhY2l0eSIpKSxuLmNzcygib3BhY2l0eSIsYS5vcGFjaXR5KX0sc3RvcDpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zO24uX29wYWNpdHkmJmUoaS5oZWxwZXIpLmNzcygib3BhY2l0eSIsbi5fb3BhY2l0eSl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzY3JvbGwiLHtzdGFydDpmdW5jdGlvbihlLHQsaSl7aS5zY3JvbGxQYXJlbnROb3RIaWRkZW58fChpLnNjcm9sbFBhcmVudE5vdEhpZGRlbj1pLmhlbHBlci5zY3JvbGxQYXJlbnQoITEpKSxpLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXSE9PWkuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdLnRhZ05hbWUmJihpLm92ZXJmbG93T2Zmc2V0PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuLm9mZnNldCgpKX0sZHJhZzpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zLGE9ITEsbz1zLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXSxyPXMuZG9jdW1lbnRbMF07byE9PXImJiJIVE1MIiE9PW8udGFnTmFtZT8obi5heGlzJiYieCI9PT1uLmF4aXN8fChzLm92ZXJmbG93T2Zmc2V0LnRvcCtvLm9mZnNldEhlaWdodC10LnBhZ2VZPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/by5zY3JvbGxUb3A9YT1vLnNjcm9sbFRvcCtuLnNjcm9sbFNwZWVkOnQucGFnZVktcy5vdmVyZmxvd09mZnNldC50b3A8bi5zY3JvbGxTZW5zaXRpdml0eSYmKG8uc2Nyb2xsVG9wPWE9by5zY3JvbGxUb3Atbi5zY3JvbGxTcGVlZCkpLG4uYXhpcyYmInkiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC5sZWZ0K28ub2Zmc2V0V2lkdGgtdC5wYWdlWDxuLnNjcm9sbFNlbnNpdGl2aXR5P28uc2Nyb2xsTGVmdD1hPW8uc2Nyb2xsTGVmdCtuLnNjcm9sbFNwZWVkOnQucGFnZVgtcy5vdmVyZmxvd09mZnNldC5sZWZ0PG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihvLnNjcm9sbExlZnQ9YT1vLnNjcm9sbExlZnQtbi5zY3JvbGxTcGVlZCkpKToobi5heGlzJiYieCI9PT1uLmF4aXN8fCh0LnBhZ2VZLWUocikuc2Nyb2xsVG9wKCk8bi5zY3JvbGxTZW5zaXRpdml0eT9hPWUocikuc2Nyb2xsVG9wKGUocikuc2Nyb2xsVG9wKCktbi5zY3JvbGxTcGVlZCk6ZSh3aW5kb3cpLmhlaWdodCgpLSh0LnBhZ2VZLWUocikuc2Nyb2xsVG9wKCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihhPWUocikuc2Nyb2xsVG9wKGUocikuc2Nyb2xsVG9wKCkrbi5zY3JvbGxTcGVlZCkpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KHQucGFnZVgtZShyKS5zY3JvbGxMZWZ0KCk8bi5zY3JvbGxTZW5zaXRpdml0eT9hPWUocikuc2Nyb2xsTGVmdChlKHIpLnNjcm9sbExlZnQoKS1uLnNjcm9sbFNwZWVkKTplKHdpbmRvdykud2lkdGgoKS0odC5wYWdlWC1lKHIpLnNjcm9sbExlZnQoKSk8bi5zY3JvbGxTZW5zaXRpdml0eSYmKGE9ZShyKS5zY3JvbGxMZWZ0KGUocikuc2Nyb2xsTGVmdCgpK24uc2Nyb2xsU3BlZWQpKSkpLGEhPT0hMSYmZS51aS5kZG1hbmFnZXImJiFuLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHMsdCl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztzLnNuYXBFbGVtZW50cz1bXSxlKG4uc25hcC5jb25zdHJ1Y3RvciE9PVN0cmluZz9uLnNuYXAuaXRlbXN8fCI6ZGF0YSh1aS1kcmFnZ2FibGUpIjpuLnNuYXApLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5vZmZzZXQoKTt0aGlzIT09cy5lbGVtZW50WzBdJiZzLnNuYXBFbGVtZW50cy5wdXNoKHtpdGVtOnRoaXMsd2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKSx0b3A6aS50b3AsbGVmdDppLmxlZnR9KX0pfSxkcmFnOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhLG8scixoLGwsdSxkLGMsZixwPXMub3B0aW9ucyxtPXAuc25hcFRvbGVyYW5jZSxnPWkub2Zmc2V0LmxlZnQsdj1nK3MuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgseT1pLm9mZnNldC50b3AsXz15K3MuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0O2ZvcihjPXMuc25hcEVsZW1lbnRzLmxlbmd0aC0xO2M+PTA7Yy0tKWg9cy5zbmFwRWxlbWVudHNbY10ubGVmdC1zLm1hcmdpbnMubGVmdCxsPWgrcy5zbmFwRWxlbWVudHNbY10ud2lkdGgsdT1zLnNuYXBFbGVtZW50c1tjXS50b3Atcy5tYXJnaW5zLnRvcCxkPXUrcy5zbmFwRWxlbWVudHNbY10uaGVpZ2h0LGgtbT52fHxnPmwrbXx8dS1tPl98fHk+ZCttfHwhZS5jb250YWlucyhzLnNuYXBFbGVtZW50c1tjXS5pdGVtLm93bmVyRG9jdW1lbnQscy5zbmFwRWxlbWVudHNbY10uaXRlbSk/KHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlLmNhbGwocy5lbGVtZW50LHQsZS5leHRlbmQocy5fdWlIYXNoKCkse3NuYXBJdGVtOnMuc25hcEVsZW1lbnRzW2NdLml0ZW19KSkscy5zbmFwRWxlbWVudHNbY10uc25hcHBpbmc9ITEpOigiaW5uZXIiIT09cC5zbmFwTW9kZSYmKG49bT49TWF0aC5hYnModS1fKSxhPW0+PU1hdGguYWJzKGQteSksbz1tPj1NYXRoLmFicyhoLXYpLHI9bT49TWF0aC5hYnMobC1nKSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnUtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmQsbGVmdDowfSkudG9wKSxvJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aC1zLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omx9KS5sZWZ0KSksZj1ufHxhfHxvfHxyLCJvdXRlciIhPT1wLnNuYXBNb2RlJiYobj1tPj1NYXRoLmFicyh1LXkpLGE9bT49TWF0aC5hYnMoZC1fKSxvPW0+PU1hdGguYWJzKGgtZykscj1tPj1NYXRoLmFicyhsLXYpLG4mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6dSxsZWZ0OjB9KS50b3ApLGEmJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6ZC1zLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3ApLG8mJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omwtcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQpKSwhcy5zbmFwRWxlbWVudHNbY10uc25hcHBpbmcmJihufHxhfHxvfHxyfHxmKSYmcy5vcHRpb25zLnNuYXAuc25hcCYmcy5vcHRpb25zLnNuYXAuc25hcC5jYWxsKHMuZWxlbWVudCx0LGUuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50c1tjXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nPW58fGF8fG98fHJ8fGYpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG4sYT1zLm9wdGlvbnMsbz1lLm1ha2VBcnJheShlKGEuc3RhY2spKS5zb3J0KGZ1bmN0aW9uKHQsaSl7cmV0dXJuKHBhcnNlSW50KGUodCkuY3NzKCJ6SW5kZXgiKSwxMCl8fDApLShwYXJzZUludChlKGkpLmNzcygiekluZGV4IiksMTApfHwwKX0pO28ubGVuZ3RoJiYobj1wYXJzZUludChlKG9bMF0pLmNzcygiekluZGV4IiksMTApfHwwLGUobykuZWFjaChmdW5jdGlvbih0KXtlKHRoaXMpLmNzcygiekluZGV4IixuK3QpfSksdGhpcy5jc3MoInpJbmRleCIsbitvLmxlbmd0aCkpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiekluZGV4Iix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUoaS5oZWxwZXIpLGE9cy5vcHRpb25zO24uY3NzKCJ6SW5kZXgiKSYmKGEuX3pJbmRleD1uLmNzcygiekluZGV4IikpLG4uY3NzKCJ6SW5kZXgiLGEuekluZGV4KX0sc3RvcDpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zO24uX3pJbmRleCYmZShpLmhlbHBlcikuY3NzKCJ6SW5kZXgiLG4uX3pJbmRleCl9fSksZS51aS5kcmFnZ2FibGV9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/jquery.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSB2Mi4xLjMgfCAoYykgMjAwNSwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oYSxiKXsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1jLnNsaWNlLGU9Yy5jb25jYXQsZj1jLnB1c2gsZz1jLmluZGV4T2YsaD17fSxpPWgudG9TdHJpbmcsaj1oLmhhc093blByb3BlcnR5LGs9e30sbD1hLmRvY3VtZW50LG09IjIuMS4zIixuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBuLmZuLmluaXQoYSxiKX0sbz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2cscD0vXi1tcy0vLHE9Ly0oW1xkYS16XSkvZ2kscj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O24uZm49bi5wcm90b3R5cGU9e2pxdWVyeTptLGNvbnN0cnVjdG9yOm4sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBkLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8wPmE/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdOmQuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPW4ubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxiLmNvbnRleHQ9dGhpcy5jb250ZXh0LGJ9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5lYWNoKHRoaXMsYSxiKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhuLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmI+Yz9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOmYsc29ydDpjLnNvcnQsc3BsaWNlOmMuc3BsaWNlfSxuLmV4dGVuZD1uLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLGk9YXJndW1lbnRzLmxlbmd0aCxqPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBnJiYoaj1nLGc9YXJndW1lbnRzW2hdfHx7fSxoKyspLCJvYmplY3QiPT10eXBlb2YgZ3x8bi5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09PWkmJihnPXRoaXMsaC0tKTtpPmg7aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYSljPWdbYl0sZD1hW2JdLGchPT1kJiYoaiYmZCYmKG4uaXNQbGFpbk9iamVjdChkKXx8KGU9bi5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZuLmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZuLmlzUGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPW4uZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdbYl09ZCkpO3JldHVybiBnfSxuLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisobStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT09bi50eXBlKGEpfSxpc0FycmF5OkFycmF5LmlzQXJyYXksaXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3JldHVybiFuLmlzQXJyYXkoYSkmJmEtcGFyc2VGbG9hdChhKSsxPj0wfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3JldHVybiJvYmplY3QiIT09bi50eXBlKGEpfHxhLm5vZGVUeXBlfHxuLmlzV2luZG93KGEpPyExOmEuY29uc3RydWN0b3ImJiFqLmNhbGwoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKT8hMTohMH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9oW2kuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGM9ZXZhbDthPW4udHJpbShhKSxhJiYoMT09PWEuaW5kZXhPZigidXNlIHN0cmljdCIpPyhiPWwuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYi50ZXh0PWEsbC5oZWFkLmFwcGVuZENoaWxkKGIpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpOmMoYSkpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShwLCJtcy0iKS5yZXBsYWNlKHEscil9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT0wLGY9YS5sZW5ndGgsZz1zKGEpO2lmKGMpe2lmKGcpe2Zvcig7Zj5lO2UrKylpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGlmKGcpe2Zvcig7Zj5lO2UrKylpZihkPWIuY2FsbChhW2VdLGUsYVtlXSksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuY2FsbChhW2VdLGUsYVtlXSksZD09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKG8sIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKHMoT2JqZWN0KGEpKT9uLm1lcmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpmLmNhbGwoYyxhKSksY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/LTE6Zy5jYWxsKGIsYSxjKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO2M+ZDtkKyspYVtlKytdPWJbZF07cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztnPmY7ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9MCxnPWEubGVuZ3RoLGg9cyhhKSxpPVtdO2lmKGgpZm9yKDtnPmY7ZisrKWQ9YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO2Vsc2UgZm9yKGYgaW4gYSlkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtyZXR1cm4gZS5hcHBseShbXSxpKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmO3JldHVybiJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEsYT1jKSxuLmlzRnVuY3Rpb24oYSk/KGU9ZC5jYWxsKGFyZ3VtZW50cywyKSxmPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxlLmNvbmNhdChkLmNhbGwoYXJndW1lbnRzKSkpfSxmLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8bi5ndWlkKyssZik6dm9pZCAwfSxub3c6RGF0ZS5ub3csc3VwcG9ydDprfSksbi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiBzKGEpe3ZhciBiPWEubGVuZ3RoLGM9bi50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxuLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciB0PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrMSpuZXcgRGF0ZSx2PWEuZG9jdW1lbnQsdz0wLHg9MCx5PWhiKCksej1oYigpLEE9aGIoKSxCPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYobD0hMCksMH0sQz0xPDwzMSxEPXt9Lmhhc093blByb3BlcnR5LEU9W10sRj1FLnBvcCxHPUUucHVzaCxIPUUucHVzaCxJPUUuc2xpY2UsSj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sSz0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLEw9IltcXHgyMFxcdFxcclxcblxcZl0iLE09Iig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIixOPU0ucmVwbGFjZSgidyIsIncjIiksTz0iXFxbIitMKyIqKCIrTSsiKSg/OiIrTCsiKihbKl4kfCF+XT89KSIrTCsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK04rIikpfCkiK0wrIipcXF0iLFA9IjooIitNKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitPKyIpKil8LiopXFwpfCkiLFE9bmV3IFJlZ0V4cChMKyIrIiwiZyIpLFI9bmV3IFJlZ0V4cCgiXiIrTCsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitMKyIrJCIsImciKSxTPW5ldyBSZWdFeHAoIl4iK0wrIiosIitMKyIqIiksVD1uZXcgUmVnRXhwKCJeIitMKyIqKFs+K35dfCIrTCsiKSIrTCsiKiIpLFU9bmV3IFJlZ0V4cCgiPSIrTCsiKihbXlxcXSdcIl0qPykiK0wrIipcXF0iLCJnIiksVj1uZXcgUmVnRXhwKFApLFc9bmV3IFJlZ0V4cCgiXiIrTisiJCIpLFg9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitNKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitNLnJlcGxhY2UoInciLCJ3KiIpKyIpIiksQVRUUjpuZXcgUmVnRXhwKCJeIitPKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrUCksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitMKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitMKyIqKD86KFsrLV18KSIrTCsiKihcXGQrKXwpKSIrTCsiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSysiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0wrIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrTCsiKigoPzotXFxkKT9cXGQqKSIrTCsiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sWT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFo9L15oXGQkL2ksJD0vXltee10rXHtccypcW25hdGl2ZSBcdy8sXz0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGFiPS9bK35dLyxiYj0vJ3xcXC9nLGNiPW5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIrTCsiP3woIitMKyIpfC4pIiwiaWciKSxkYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IjB4IitiLTY1NTM2O3JldHVybiBkIT09ZHx8Yz9iOjA+ZD9TdHJpbmcuZnJvbUNoYXJDb2RlKGQrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoZD4+MTB8NTUyOTYsMTAyMyZkfDU2MzIwKX0sZWI9ZnVuY3Rpb24oKXttKCl9O3RyeXtILmFwcGx5KEU9SS5jYWxsKHYuY2hpbGROb2Rlcyksdi5jaGlsZE5vZGVzKSxFW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGZiKXtIPXthcHBseTpFLmxlbmd0aD9mdW5jdGlvbihhLGIpe0cuYXBwbHkoYSxJLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBnYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLGs9Yi5ub2RlVHlwZSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwxIT09ayYmOSE9PWsmJjExIT09aylyZXR1cm4gZDtpZighZSYmcCl7aWYoMTEhPT1rJiYoZj1fLmV4ZWMoYSkpKWlmKGo9ZlsxXSl7aWYoOT09PWspe2lmKGg9Yi5nZXRFbGVtZW50QnlJZChqKSwhaHx8IWgucGFyZW50Tm9kZSlyZXR1cm4gZDtpZihoLmlkPT09ailyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZSBpZihiLm93bmVyRG9jdW1lbnQmJihoPWIub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChqKSkmJnQoYixoKSYmaC5pZD09PWopcmV0dXJuIGQucHVzaChoKSxkfWVsc2V7aWYoZlsyXSlyZXR1cm4gSC5hcHBseShkLGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSkpLGQ7aWYoKGo9ZlszXSkmJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gSC5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShqKSksZH1pZihjLnFzYSYmKCFxfHwhcS50ZXN0KGEpKSl7aWYocz1yPXUsdz1iLHg9MSE9PWsmJmEsMT09PWsmJiJvYmplY3QiIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtvPWcoYSksKHI9Yi5nZXRBdHRyaWJ1dGUoImlkIikpP3M9ci5yZXBsYWNlKGJiLCJcXCQmIik6Yi5zZXRBdHRyaWJ1dGUoImlkIixzKSxzPSJbaWQ9JyIrcysiJ10gIixsPW8ubGVuZ3RoO3doaWxlKGwtLSlvW2xdPXMrcmIob1tsXSk7dz1hYi50ZXN0KGEpJiZwYihiLnBhcmVudE5vZGUpfHxiLHg9by5qb2luKCIsIil9aWYoeCl0cnl7cmV0dXJuIEguYXBwbHkoZCx3LnF1ZXJ5U2VsZWN0b3JBbGwoeCkpLGR9Y2F0Y2goeSl7fWZpbmFsbHl7cnx8Yi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gaShhLnJlcGxhY2UoUiwiJDEiKSxiLGQsZSl9ZnVuY3Rpb24gaGIoKXt2YXIgYT1bXTtmdW5jdGlvbiBiKGMsZSl7cmV0dXJuIGEucHVzaChjKyIgIik+ZC5jYWNoZUxlbmd0aCYmZGVsZXRlIGJbYS5zaGlmdCgpXSxiW2MrIiAiXT1lfXJldHVybiBifWZ1bmN0aW9uIGliKGEpe3JldHVybiBhW3VdPSEwLGF9ZnVuY3Rpb24gamIoYSl7dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBrYihhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWEubGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBsYihhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8QyktKH5hLnNvdXJjZUluZGV4fHxDKTtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbWIoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmYi50eXBlPT09YX19ZnVuY3Rpb24gbmIoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09YykmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG9iKGEpe3JldHVybiBpYihmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixpYihmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHBiKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1nYi5zdXBwb3J0PXt9LGY9Z2IuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBiPyJIVE1MIiE9PWIubm9kZU5hbWU6ITF9LG09Z2Iuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZSxnPWE/YS5vd25lckRvY3VtZW50fHxhOnY7cmV0dXJuIGchPT1uJiY5PT09Zy5ub2RlVHlwZSYmZy5kb2N1bWVudEVsZW1lbnQ/KG49ZyxvPWcuZG9jdW1lbnRFbGVtZW50LGU9Zy5kZWZhdWx0VmlldyxlJiZlIT09ZS50b3AmJihlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLGViLCExKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsZWIpKSxwPSFmKGcpLGMuYXR0cmlidXRlcz1qYihmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWpiKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKGcuY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPSQudGVzdChnLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1qYihmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFnLmdldEVsZW1lbnRzQnlOYW1lfHwhZy5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lP2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gcD9iLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSk6dm9pZCAwfSxyPVtdLHE9W10sKGMucXNhPSQudGVzdChnLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGpiKGZ1bmN0aW9uKGEpe28uYXBwZW5kQ2hpbGQoYSkuaW5uZXJIVE1MPSI8YSBpZD0nIit1KyInPjwvYT48c2VsZWN0IGlkPSciK3UrIi1cZl0nIG1zYWxsb3djYXB0dXJlPScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixhLnF1ZXJ5U2VsZWN0b3JBbGwoIlttc2FsbG93Y2FwdHVyZV49JyddIikubGVuZ3RoJiZxLnB1c2goIlsqXiRdPSIrTCsiKig/OicnfFwiXCIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxxLnB1c2goIlxcWyIrTCsiKig/OnZhbHVlfCIrSysiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW2lkfj0iK3UrIi1dIikubGVuZ3RofHxxLnB1c2goIn49IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8cS5wdXNoKCI6Y2hlY2tlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiYSMiK3UrIisqIikubGVuZ3RofHxxLnB1c2goIi4jLitbK35dIil9KSxqYihmdW5jdGlvbihhKXt2YXIgYj1nLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK0wrIipbKl4kfCF+XT89IiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmpiKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixQKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09Z3x8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1nfHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0ooayxhKS1KKGssYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgYyxkPTAsZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVudE5vZGUsaD1bYV0saT1bYl07aWYoIWV8fCFmKXJldHVybiBhPT09Zz8tMTpiPT09Zz8xOmU/LTE6Zj8xOms/SihrLGEpLUooayxiKTowO2lmKGU9PT1mKXJldHVybiBsYihhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSloLnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWkudW5zaGlmdChjKTt3aGlsZShoW2RdPT09aVtkXSlkKys7cmV0dXJuIGQ/bGIoaFtkXSxpW2RdKTpoW2RdPT09dj8tMTppW2RdPT09dj8xOjB9LGcpOm59LGdiLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2IoYSxudWxsLG51bGwsYil9LGdiLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShVLCI9JyQxJ10iKSwhKCFjLm1hdGNoZXNTZWxlY3Rvcnx8IXB8fHImJnIudGVzdChiKXx8cSYmcS50ZXN0KGIpKSl0cnl7dmFyIGQ9cy5jYWxsKGEsYik7aWYoZHx8Yy5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBkfWNhdGNoKGUpe31yZXR1cm4gZ2IoYixuLG51bGwsW2FdKS5sZW5ndGg+MH0sZ2IuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksdChhLGIpfSxnYi5hdHRyPWZ1bmN0aW9uKGEsYil7KGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpO3ZhciBlPWQuYXR0ckhhbmRsZVtiLnRvTG93ZXJDYXNlKCldLGY9ZSYmRC5jYWxsKGQuYXR0ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2UoYSxiLCFwKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PWY/ZjpjLmF0dHJpYnV0ZXN8fCFwP2EuZ2V0QXR0cmlidXRlKGIpOihmPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmYuc3BlY2lmaWVkP2YudmFsdWU6bnVsbH0sZ2IuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2EpfSxnYi51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBiLGQ9W10sZT0wLGY9MDtpZihsPSFjLmRldGVjdER1cGxpY2F0ZXMsaz0hYy5zb3J0U3RhYmxlJiZhLnNsaWNlKDApLGEuc29ydChCKSxsKXt3aGlsZShiPWFbZisrXSliPT09YVtmXSYmKGU9ZC5wdXNoKGYpKTt3aGlsZShlLS0pYS5zcGxpY2UoZFtlXSwxKX1yZXR1cm4gaz1udWxsLGF9LGU9Z2IuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjPSIiLGQ9MCxmPWEubm9kZVR5cGU7aWYoZil7aWYoMT09PWZ8fDk9PT1mfHwxMT09PWYpe2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9ZShhKX1lbHNlIGlmKDM9PT1mfHw0PT09ZilyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSB3aGlsZShiPWFbZCsrXSljKz1lKGIpO3JldHVybiBjfSxkPWdiLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmliLG1hdGNoOlgsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFjZShjYixkYiksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoY2IsZGIpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxnYi5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZnYi5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gWC5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZWLnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWE/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9fSxDTEFTUzpmdW5jdGlvbihhKXt2YXIgYj15W2ErIiAiXTtyZXR1cm4gYnx8KGI9bmV3IFJlZ0V4cCgiKF58IitMKyIpIithKyIoIitMKyJ8JCkiKSkmJnkoYSxmdW5jdGlvbihhKXtyZXR1cm4gYi50ZXN0KCJzdHJpbmciPT10eXBlb2YgYS5jbGFzc05hbWUmJmEuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1nYi5hdHRyKGQsYSk7cmV0dXJuIG51bGw9PWU/IiE9Ij09PWI6Yj8oZSs9IiIsIj0iPT09Yj9lPT09YzoiIT0iPT09Yj9lIT09YzoiXj0iPT09Yj9jJiYwPT09ZS5pbmRleE9mKGMpOiIqPSI9PT1iP2MmJmUuaW5kZXhPZihjKT4tMToiJD0iPT09Yj9jJiZlLnNsaWNlKC1jLmxlbmd0aCk9PT1jOiJ+PSI9PT1iPygiICIrZS5yZXBsYWNlKFEsIiAiKSsiICIpLmluZGV4T2YoYyk+LTE6Inw9Ij09PWI/ZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iOiExKTohMH19LENISUxEOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9Im50aCIhPT1hLnNsaWNlKDAsMyksZz0ibGFzdCIhPT1hLnNsaWNlKC00KSxoPSJvZi10eXBlIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5jdGlvbihhKXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtLG4sbyxwPWYhPT1nPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIscT1iLnBhcmVudE5vZGUscj1oJiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscz0haSYmIWg7aWYocSl7aWYoZil7d2hpbGUocCl7bD1iO3doaWxlKGw9bFtwXSlpZihoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXtrPXFbdV18fChxW3VdPXt9KSxqPWtbYV18fFtdLG49alswXT09PXcmJmpbMV0sbT1qWzBdPT09dyYmalsyXSxsPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigxPT09bC5ub2RlVHlwZSYmKyttJiZsPT09Yil7a1thXT1bdyxuLG1dO2JyZWFrfX1lbHNlIGlmKHMmJihqPShiW3VdfHwoYlt1XT17fSkpW2FdKSYmalswXT09PXcpbT1qWzFdO2Vsc2Ugd2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5ub2RlVHlwZSkmJisrbSYmKHMmJigobFt1XXx8KGxbdV09e30pKVthXT1bdyxtXSksbD09PWIpKWJyZWFrO3JldHVybiBtLT1lLG09PT1kfHxtJWQ9PT0wJiZtL2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYi5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2liKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1KKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmliKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShSLCIkMSIpKTtyZXR1cm4gZFt1XT9pYihmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmliKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2IoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYihmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoY2IsZGIpLGZ1bmN0aW9uKGIpe3JldHVybihiLnRleHRDb250ZW50fHxiLmlubmVyVGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmliKGZ1bmN0aW9uKGEpe3JldHVybiBXLnRlc3QoYXx8IiIpfHxnYi5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVwbGFjZShjYixkYikudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmMT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1uLmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxhLmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFoudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFkudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6b2IoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om9iKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpvYihmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOm9iKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOm9iKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6b2IoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpvYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWIoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmIoYik7ZnVuY3Rpb24gcWIoKXt9cWIucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyBxYixnPWdiLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpeyghY3x8KGU9Uy5leGVjKGgpKSkmJihlJiYoaD1oLnNsaWNlKGVbMF0ubGVuZ3RoKXx8aCksaS5wdXNoKGY9W10pKSxjPSExLChlPVQuZXhlYyhoKSkmJihjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTplWzBdLnJlcGxhY2UoUiwiICIpfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7Zm9yKGcgaW4gZC5maWx0ZXIpIShlPVhbZ10uZXhlYyhoKSl8fGpbZ10mJiEoZT1qW2ddKGUpKXx8KGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmcsbWF0Y2hlczplfSksaD1oLnNsaWNlKGMubGVuZ3RoKSk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9nYi5lcnJvcihhKTp6KGEsaSkuc2xpY2UoMCl9O2Z1bmN0aW9uIHJiKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGgsZD0iIjtjPmI7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gc2IoYSxiLGMpe3ZhciBkPWIuZGlyLGU9YyYmInBhcmVudE5vZGUiPT09ZCxmPXgrKztyZXR1cm4gYi5maXJzdD9mdW5jdGlvbihiLGMsZil7d2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXJldHVybiBhKGIsYyxmKX06ZnVuY3Rpb24oYixjLGcpe3ZhciBoLGksaj1bdyxmXTtpZihnKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxlKSYmYShiLGMsZykpcmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpe2lmKGk9Ylt1XXx8KGJbdV09e30pLChoPWlbZF0pJiZoWzBdPT09dyYmaFsxXT09PWYpcmV0dXJuIGpbMl09aFsyXTtpZihpW2RdPWosalsyXT1hKGIsYyxnKSlyZXR1cm4hMH19fWZ1bmN0aW9uIHRiKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJldHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHViKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIubGVuZ3RoO2U+ZDtkKyspZ2IoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHZiKGEsYixjLGQsZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2k+aDtoKyspKGY9YVtoXSkmJighY3x8YyhmLGQsZSkpJiYoZy5wdXNoKGYpLGomJmIucHVzaChoKSk7cmV0dXJuIGd9ZnVuY3Rpb24gd2IoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9d2IoZCkpLGUmJiFlW3VdJiYoZT13YihlLGYpKSxpYihmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89Zy5sZW5ndGgscD1mfHx1YihifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp2YihwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9dmIocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0ooZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pdPWwpKX19ZWxzZSByPXZiKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTpILmFwcGx5KGcscil9KX1mdW5jdGlvbiB4YihhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1nPzE6MCxrPXNiKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD1zYihmdW5jdGlvbihhKXtyZXR1cm4gSihiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVsbCxlfV07Zj5pO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVtzYih0YihtKSxjKV07ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNbdV0pe2ZvcihlPSsraTtmPmU7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1cm4gd2IoaT4xJiZ0YihtKSxpPjEmJnJiKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUiwiJDEiKSxjLGU+aSYmeGIoYS5zbGljZShpLGUpKSxmPmUmJnhiKGE9YS5zbGljZShlKSksZj5lJiZyYihhKSl9bS5wdXNoKGMpfXJldHVybiB0YihtKX1mdW5jdGlvbiB5YihhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxtLG8scD0wLHE9IjAiLHI9ZiYmW10scz1bXSx0PWosdT1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx2PXcrPW51bGw9PXQ/MTpNYXRoLnJhbmRvbSgpfHwuMSx4PXUubGVuZ3RoO2ZvcihrJiYoaj1nIT09biYmZyk7cSE9PXgmJm51bGwhPShsPXVbcV0pO3ErKyl7aWYoZSYmbCl7bT0wO3doaWxlKG89YVttKytdKWlmKG8obCxnLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9dil9YyYmKChsPSFvJiZsKSYmcC0tLGYmJnIucHVzaChsKSl9aWYocCs9cSxjJiZxIT09cCl7bT0wO3doaWxlKG89YlttKytdKW8ocixzLGcsaCk7aWYoZil7aWYocD4wKXdoaWxlKHEtLSlyW3FdfHxzW3FdfHwoc1txXT1GLmNhbGwoaSkpO3M9dmIocyl9SC5hcHBseShpLHMpLGsmJiFmJiZzLmxlbmd0aD4wJiZwK2IubGVuZ3RoPjEmJmdiLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXYsaj10KSxyfTtyZXR1cm4gYz9pYihmKTpmfXJldHVybiBoPWdiLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj14YihiW2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEseWIoZSxkKSksZi5zZWxlY3Rvcj1hfXJldHVybiBmfSxpPWdiLnNlbGVjdD1mdW5jdGlvbihhLGIsZSxmKXt2YXIgaSxqLGssbCxtLG49ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbz0hZiYmZyhhPW4uc2VsZWN0b3J8fGEpO2lmKGU9ZXx8W10sMT09PW8ubGVuZ3RoKXtpZihqPW9bMF09b1swXS5zbGljZSgwKSxqLmxlbmd0aD4yJiYiSUQiPT09KGs9alswXSkudHlwZSYmYy5nZXRCeUlkJiY5PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtqWzFdLnR5cGVdKXtpZihiPShkLmZpbmQuSUQoay5tYXRjaGVzWzBdLnJlcGxhY2UoY2IsZGIpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGU7biYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2Uoai5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1YLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6ai5sZW5ndGg7d2hpbGUoaS0tKXtpZihrPWpbaV0sZC5yZWxhdGl2ZVtsPWsudHlwZV0pYnJlYWs7aWYoKG09ZC5maW5kW2xdKSYmKGY9bShrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYWIudGVzdChqWzBdLnR5cGUpJiZwYihiLnBhcmVudE5vZGUpfHxiKSkpe2lmKGouc3BsaWNlKGksMSksYT1mLmxlbmd0aCYmcmIoaiksIWEpcmV0dXJuIEguYXBwbHkoZSxmKSxlO2JyZWFrfX19cmV0dXJuKG58fGgoYSxvKSkoZixiLCFwLGUsYWIudGVzdChhKSYmcGIoYi5wYXJlbnROb2RlKXx8YiksZX0sYy5zb3J0U3RhYmxlPXUuc3BsaXQoIiIpLnNvcnQoQikuam9pbigiIik9PT11LGMuZGV0ZWN0RHVwbGljYXRlcz0hIWwsbSgpLGMuc29ydERldGFjaGVkPWpiKGZ1bmN0aW9uKGEpe3JldHVybiAxJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24obi5jcmVhdGVFbGVtZW50KCJkaXYiKSl9KSxqYihmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxrYigidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjP3ZvaWQgMDphLmdldEF0dHJpYnV0ZShiLCJ0eXBlIj09PWIudG9Mb3dlckNhc2UoKT8xOjIpfSksYy5hdHRyaWJ1dGVzJiZqYihmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxpbnB1dC8+IixhLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxrYigidmFsdWUiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY3x8ImlucHV0IiE9PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT92b2lkIDA6YS5kZWZhdWx0VmFsdWV9KSxqYihmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8a2IoSyxmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOmFbYl09PT0hMD9iLnRvTG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZpZWQ/ZC52YWx1ZTpudWxsfSksZ2J9KGEpO24uZmluZD10LG4uZXhwcj10LnNlbGVjdG9ycyxuLmV4cHJbIjoiXT1uLmV4cHIucHNldWRvcyxuLnVuaXF1ZT10LnVuaXF1ZVNvcnQsbi50ZXh0PXQuZ2V0VGV4dCxuLmlzWE1MRG9jPXQuaXNYTUwsbi5jb250YWlucz10LmNvbnRhaW5zO3ZhciB1PW4uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsdj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLHc9L14uW146I1xbXC4sXSokLztmdW5jdGlvbiB4KGEsYixjKXtpZihuLmlzRnVuY3Rpb24oYikpcmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuISFiLmNhbGwoYSxkLGEpIT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KTtpZigic3RyaW5nIj09dHlwZW9mIGIpe2lmKHcudGVzdChiKSlyZXR1cm4gbi5maWx0ZXIoYixhLGMpO2I9bi5maWx0ZXIoYixhKX1yZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGcuY2FsbChiLGEpPj0wIT09Y30pfW4uZmlsdGVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iWzBdO3JldHVybiBjJiYoYT0iOm5vdCgiK2ErIikiKSwxPT09Yi5sZW5ndGgmJjE9PT1kLm5vZGVUeXBlP24uZmluZC5tYXRjaGVzU2VsZWN0b3IoZCxhKT9bZF06W106bi5maW5kLm1hdGNoZXMoYSxuLmdyZXAoYixmdW5jdGlvbihhKXtyZXR1cm4gMT09PWEubm9kZVR5cGV9KSl9LG4uZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGM9dGhpcy5sZW5ndGgsZD1bXSxlPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhuKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7Yz5iO2IrKylpZihuLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGI9MDtjPmI7YisrKW4uZmluZChhLGVbYl0sZCk7cmV0dXJuIGQ9dGhpcy5wdXNoU3RhY2soYz4xP24udW5pcXVlKGQpOmQpLGQuc2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIithOmEsZH0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh4KHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh4KHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISF4KHRoaXMsInN0cmluZyI9PXR5cGVvZiBhJiZ1LnRlc3QoYSk/bihhKTphfHxbXSwhMSkubGVuZ3RofX0pO3ZhciB5LHo9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW4uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWFbMF0mJiI+Ij09PWFbYS5sZW5ndGgtMV0mJmEubGVuZ3RoPj0zP1tudWxsLGEsbnVsbF06ei5leGVjKGEpLCFjfHwhY1sxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk/KGJ8fHkpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGNbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIG4/YlswXTpiLG4ubWVyZ2UodGhpcyxuLnBhcnNlSFRNTChjWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOmwsITApKSx2LnRlc3QoY1sxXSkmJm4uaXNQbGFpbk9iamVjdChiKSlmb3IoYyBpbiBiKW4uaXNGdW5jdGlvbih0aGlzW2NdKT90aGlzW2NdKGJbY10pOnRoaXMuYXR0cihjLGJbY10pO3JldHVybiB0aGlzfXJldHVybiBkPWwuZ2V0RWxlbWVudEJ5SWQoY1syXSksZCYmZC5wYXJlbnROb2RlJiYodGhpcy5sZW5ndGg9MSx0aGlzWzBdPWQpLHRoaXMuY29udGV4dD1sLHRoaXMuc2VsZWN0b3I9YSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6bi5pc0Z1bmN0aW9uKGEpPyJ1bmRlZmluZWQiIT10eXBlb2YgeS5yZWFkeT95LnJlYWR5KGEpOmEobik6KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCksbi5tYWtlQXJyYXkoYSx0aGlzKSl9O0EucHJvdG90eXBlPW4uZm4seT1uKGwpO3ZhciBCPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEM9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07bi5leHRlbmQoe2RpcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmbihhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksbi5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1uKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDtjPmE7YSsrKWlmKG4uY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz11LnRlc3QoYSl8fCJzdHJpbmciIT10eXBlb2YgYT9uKGEsYnx8dGhpcy5jb250ZXh0KTowO2U+ZDtkKyspZm9yKGM9dGhpc1tkXTtjJiZjIT09YjtjPWMucGFyZW50Tm9kZSlpZihjLm5vZGVUeXBlPDExJiYoZz9nLmluZGV4KGMpPi0xOjE9PT1jLm5vZGVUeXBlJiZuLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpKXtmLnB1c2goYyk7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYubGVuZ3RoPjE/bi51bmlxdWUoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9nLmNhbGwobihhKSx0aGlzWzBdKTpnLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4udW5pcXVlKG4ubWVyZ2UodGhpcy5nZXQoKSxuKGEsYikpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2Z1bmN0aW9uIEQoYSxiKXt3aGlsZSgoYT1hW2JdKSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfW4uZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmMTEhPT1iLm5vZGVUeXBlP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBuLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBuLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gbi5zaWJsaW5nKChhLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gbi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNvbnRlbnREb2N1bWVudHx8bi5tZXJnZShbXSxhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtuLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9bi5tYXAodGhpcyxiLGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmInN0cmluZyI9PXR5cGVvZiBkJiYoZT1uLmZpbHRlcihkLGUpKSx0aGlzLmxlbmd0aD4xJiYoQ1thXXx8bi51bmlxdWUoZSksQi50ZXN0KGEpJiZlLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIEU9L1xTKy9nLEY9e307ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBuLmVhY2goYS5tYXRjaChFKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1uLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9GW2FdfHxHKGEpOm4uZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGYsZyxoPVtdLGk9IWEub25jZSYmW10saj1mdW5jdGlvbihsKXtmb3IoYj1hLm1lbW9yeSYmbCxjPSEwLGc9ZXx8MCxlPTAsZj1oLmxlbmd0aCxkPSEwO2gmJmY+ZztnKyspaWYoaFtnXS5hcHBseShsWzBdLGxbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2I9ITE7YnJlYWt9ZD0hMSxoJiYoaT9pLmxlbmd0aCYmaihpLnNoaWZ0KCkpOmI/aD1bXTprLmRpc2FibGUoKSl9LGs9e2FkZDpmdW5jdGlvbigpe2lmKGgpe3ZhciBjPWgubGVuZ3RoOyFmdW5jdGlvbiBnKGIpe24uZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bi50eXBlKGMpOyJmdW5jdGlvbiI9PT1kP2EudW5pcXVlJiZrLmhhcyhjKXx8aC5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PWQmJmcoYyl9KX0oYXJndW1lbnRzKSxkP2Y9aC5sZW5ndGg6YiYmKGU9YyxqKGIpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGgmJm4uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1uLmluQXJyYXkoYixoLGMpKT4tMSloLnNwbGljZShjLDEpLGQmJihmPj1jJiZmLS0sZz49YyYmZy0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9uLmluQXJyYXkoYSxoKT4tMTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGY9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9aT1iPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGk9dm9pZCAwLGJ8fGsuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFpfSxmaXJlV2l0aDpmdW5jdGlvbihhLGIpe3JldHVybiFofHxjJiYhaXx8KGI9Ynx8W10sYj1bYSxiLnNsaWNlP2Iuc2xpY2UoKTpiXSxkP2kucHVzaChiKTpqKGIpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGsuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFjfX07cmV0dXJuIGt9LG4uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixuLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixuLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIG4uRGVmZXJyZWQoZnVuY3Rpb24oYyl7bi5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1uLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/bi5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixuLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWQuY2FsbChhcmd1bWVudHMpLGU9Yy5sZW5ndGgsZj0xIT09ZXx8YSYmbi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZTowLGc9MT09PWY/YTpuLkRlZmVycmVkKCksaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9kLmNhbGwoYXJndW1lbnRzKTplLGM9PT1pP2cubm90aWZ5V2l0aChiLGMpOi0tZnx8Zy5yZXNvbHZlV2l0aChiLGMpfX0saSxqLGs7aWYoZT4xKWZvcihpPW5ldyBBcnJheShlKSxqPW5ldyBBcnJheShlKSxrPW5ldyBBcnJheShlKTtlPmI7YisrKWNbYl0mJm4uaXNGdW5jdGlvbihjW2JdLnByb21pc2UpP2NbYl0ucHJvbWlzZSgpLmRvbmUoaChiLGssYykpLmZhaWwoZy5yZWplY3QpLnByb2dyZXNzKGgoYixqLGkpKTotLWY7cmV0dXJuIGZ8fGcucmVzb2x2ZVdpdGgoayxjKSxnLnByb21pc2UoKX19KTt2YXIgSDtuLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBuLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9LG4uZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP24ucmVhZHlXYWl0Kys6bi5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpeyhhPT09ITA/LS1uLnJlYWR5V2FpdDpuLmlzUmVhZHkpfHwobi5pc1JlYWR5PSEwLGEhPT0hMCYmLS1uLnJlYWR5V2FpdD4wfHwoSC5yZXNvbHZlV2l0aChsLFtuXSksbi5mbi50cmlnZ2VySGFuZGxlciYmKG4obCkudHJpZ2dlckhhbmRsZXIoInJlYWR5IiksbihsKS5vZmYoInJlYWR5IikpKSl9fSk7ZnVuY3Rpb24gSSgpe2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSSwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixJLCExKSxuLnJlYWR5KCl9bi5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe3JldHVybiBIfHwoSD1uLkRlZmVycmVkKCksImNvbXBsZXRlIj09PWwucmVhZHlTdGF0ZT9zZXRUaW1lb3V0KG4ucmVhZHkpOihsLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEksITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSSwhMSkpKSxILnByb21pc2UoYil9LG4ucmVhZHkucHJvbWlzZSgpO3ZhciBKPW4uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1uLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyluLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxuLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobihhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfTtuLmFjY2VwdERhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2RlVHlwZXx8ISthLm5vZGVUeXBlfTtmdW5jdGlvbiBLKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuY2FjaGU9e30sMCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue319fSksdGhpcy5leHBhbmRvPW4uZXhwYW5kbytLLnVpZCsrfUsudWlkPTEsSy5hY2NlcHRzPW4uYWNjZXB0RGF0YSxLLnByb3RvdHlwZT17a2V5OmZ1bmN0aW9uKGEpe2lmKCFLLmFjY2VwdHMoYSkpcmV0dXJuIDA7dmFyIGI9e30sYz1hW3RoaXMuZXhwYW5kb107aWYoIWMpe2M9Sy51aWQrKzt0cnl7Ylt0aGlzLmV4cGFuZG9dPXt2YWx1ZTpjfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhhLGIpfWNhdGNoKGQpe2JbdGhpcy5leHBhbmRvXT1jLG4uZXh0ZW5kKGEsYil9fXJldHVybiB0aGlzLmNhY2hlW2NdfHwodGhpcy5jYWNoZVtjXT17fSksY30sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPXRoaXMua2V5KGEpLGY9dGhpcy5jYWNoZVtlXTtpZigic3RyaW5nIj09dHlwZW9mIGIpZltiXT1jO2Vsc2UgaWYobi5pc0VtcHR5T2JqZWN0KGYpKW4uZXh0ZW5kKHRoaXMuY2FjaGVbZV0sYik7ZWxzZSBmb3IoZCBpbiBiKWZbZF09YltkXTtyZXR1cm4gZn0sZ2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jYWNoZVt0aGlzLmtleShhKV07cmV0dXJuIHZvaWQgMD09PWI/YzpjW2JdfSxhY2Nlc3M6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiB2b2lkIDA9PT1ifHxiJiYic3RyaW5nIj09dHlwZW9mIGImJnZvaWQgMD09PWM/KGQ9dGhpcy5nZXQoYSxiKSx2b2lkIDAhPT1kP2Q6dGhpcy5nZXQoYSxuLmNhbWVsQ2FzZShiKSkpOih0aGlzLnNldChhLGIsYyksdm9pZCAwIT09Yz9jOmIpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzLmtleShhKSxnPXRoaXMuY2FjaGVbZl07aWYodm9pZCAwPT09Yil0aGlzLmNhY2hlW2ZdPXt9O2Vsc2V7bi5pc0FycmF5KGIpP2Q9Yi5jb25jYXQoYi5tYXAobi5jYW1lbENhc2UpKTooZT1uLmNhbWVsQ2FzZShiKSxiIGluIGc/ZD1bYixlXTooZD1lLGQ9ZCBpbiBnP1tkXTpkLm1hdGNoKEUpfHxbXSkpLGM9ZC5sZW5ndGg7d2hpbGUoYy0tKWRlbGV0ZSBnW2RbY11dfX0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4hbi5pc0VtcHR5T2JqZWN0KHRoaXMuY2FjaGVbYVt0aGlzLmV4cGFuZG9dXXx8e30pfSxkaXNjYXJkOmZ1bmN0aW9uKGEpe2FbdGhpcy5leHBhbmRvXSYmZGVsZXRlIHRoaXMuY2FjaGVbYVt0aGlzLmV4cGFuZG9dXX19O3ZhciBMPW5ldyBLLE09bmV3IEssTj0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE89LyhbQS1aXSkvZztmdW5jdGlvbiBQKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9TS5zZXQoYSxiLGMpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9bi5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIE0uaGFzRGF0YShhKXx8TC5oYXNEYXRhKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTS5hY2Nlc3MoYSxiLGMpCn0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe00ucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTC5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe0wucmVtb3ZlKGEsYil9fSksbi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1NLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIUwuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW4uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLFAoZixkLGVbZF0pKSk7TC5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe00uc2V0KHRoaXMsYSl9KTpKKHRoaXMsZnVuY3Rpb24oYil7dmFyIGMsZD1uLmNhbWVsQ2FzZShhKTtpZihmJiZ2b2lkIDA9PT1iKXtpZihjPU0uZ2V0KGYsYSksdm9pZCAwIT09YylyZXR1cm4gYztpZihjPU0uZ2V0KGYsZCksdm9pZCAwIT09YylyZXR1cm4gYztpZihjPVAoZixkLHZvaWQgMCksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPU0uZ2V0KHRoaXMsZCk7TS5zZXQodGhpcyxkLGIpLC0xIT09YS5pbmRleE9mKCItIikmJnZvaWQgMCE9PWMmJk0uc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtNLnJlbW92ZSh0aGlzLGEpfSl9fSksbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYT8oYj0oYnx8ImZ4IikrInF1ZXVlIixkPUwuZ2V0KGEsYiksYyYmKCFkfHxuLmlzQXJyYXkoYyk/ZD1MLmFjY2VzcyhhLGIsbi5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1uLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW4uX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7bi5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIEwuZ2V0KGEsYyl8fEwuYWNjZXNzKGEsYyx7ZW1wdHk6bi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7TC5yZW1vdmUoYSxbYisicXVldWUiLGNdKX0pfSl9fSksbi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP24ucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9bi5xdWV1ZSh0aGlzLGEsYik7bi5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1jWzBdJiZuLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xLGU9bi5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1MLmdldChmW2ddLGErInF1ZXVlSG9va3MiKSxjJiZjLmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgpLGUucHJvbWlzZShiKX19KTt2YXIgUT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxSPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sUz1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5vbmUiPT09bi5jc3MoYSwiZGlzcGxheSIpfHwhbi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl9LFQ9L14oPzpjaGVja2JveHxyYWRpbykkL2k7IWZ1bmN0aW9uKCl7dmFyIGE9bC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxkKGwuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9bC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLGsuY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsay5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciBVPSJ1bmRlZmluZWQiO2suZm9jdXNpbkJ1YmJsZXM9Im9uZm9jdXNpbiJpbiBhO3ZhciBWPS9ea2V5LyxXPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudSl8Y2xpY2svLFg9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFk9L14oW14uXSopKD86XC4oLispfCkkLztmdW5jdGlvbiBaKCl7cmV0dXJuITB9ZnVuY3Rpb24gJCgpe3JldHVybiExfWZ1bmN0aW9uIF8oKXt0cnl7cmV0dXJuIGwuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fW4uZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG8scCxxLHI9TC5nZXQoYSk7aWYocil7Yy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVyLGU9Zi5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW4uZ3VpZCsrKSwoaT1yLmV2ZW50cyl8fChpPXIuZXZlbnRzPXt9KSwoZz1yLmhhbmRsZSl8fChnPXIuaGFuZGxlPWZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgbiE9PVUmJm4uZXZlbnQudHJpZ2dlcmVkIT09Yi50eXBlP24uZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChFKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPVkuZXhlYyhiW2pdKXx8W10sbz1xPWhbMV0scD0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZT9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8byxsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30saz1uLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZuLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbigiLiIpfSxmKSwobT1pW29dKXx8KG09aVtvXT1bXSxtLmRlbGVnYXRlQ291bnQ9MCxsLnNldHVwJiZsLnNldHVwLmNhbGwoYSxkLHAsZykhPT0hMXx8YS5hZGRFdmVudExpc3RlbmVyJiZhLmFkZEV2ZW50TGlzdGVuZXIobyxnLCExKSksbC5hZGQmJihsLmFkZC5jYWxsKGEsayksay5oYW5kbGVyLmd1aWR8fChrLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP20uc3BsaWNlKG0uZGVsZWdhdGVDb3VudCsrLDAsayk6bS5wdXNoKGspLG4uZXZlbnQuZ2xvYmFsW29dPSEwKX19LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbyxwLHEscj1MLmhhc0RhdGEoYSkmJkwuZ2V0KGEpO2lmKHImJihpPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9WS5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1uLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbT1pW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksZz1mPW0ubGVuZ3RoO3doaWxlKGYtLSlrPW1bZl0sIWUmJnEhPT1rLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1rLmd1aWR8fGgmJiFoLnRlc3Qoay5uYW1lc3BhY2UpfHxkJiZkIT09ay5zZWxlY3RvciYmKCIqKiIhPT1kfHwhay5zZWxlY3Rvcil8fChtLnNwbGljZShmLDEpLGsuc2VsZWN0b3ImJm0uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsaykpO2cmJiFtLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG4ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUgaVtvXSl9ZWxzZSBmb3IobyBpbiBpKW4uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bi5pc0VtcHR5T2JqZWN0KGkpJiYoZGVsZXRlIHIuaGFuZGxlLEwucmVtb3ZlKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGYsZyxoLGksayxtLG8scD1bZHx8bF0scT1qLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHI9ai5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoZz1oPWQ9ZHx8bCwzIT09ZC5ub2RlVHlwZSYmOCE9PWQubm9kZVR5cGUmJiFYLnRlc3QocStuLmV2ZW50LnRyaWdnZXJlZCkmJihxLmluZGV4T2YoIi4iKT49MCYmKHI9cS5zcGxpdCgiLiIpLHE9ci5zaGlmdCgpLHIuc29ydCgpKSxrPXEuaW5kZXhPZigiOiIpPDAmJiJvbiIrcSxiPWJbbi5leHBhbmRvXT9iOm5ldyBuLkV2ZW50KHEsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1lPzI6MyxiLm5hbWVzcGFjZT1yLmpvaW4oIi4iKSxiLm5hbWVzcGFjZV9yZT1iLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIityLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYi5yZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZCksYz1udWxsPT1jP1tiXTpuLm1ha2VBcnJheShjLFtiXSksbz1uLmV2ZW50LnNwZWNpYWxbcV18fHt9LGV8fCFvLnRyaWdnZXJ8fG8udHJpZ2dlci5hcHBseShkLGMpIT09ITEpKXtpZighZSYmIW8ubm9CdWJibGUmJiFuLmlzV2luZG93KGQpKXtmb3IoaT1vLmRlbGVnYXRlVHlwZXx8cSxYLnRlc3QoaStxKXx8KGc9Zy5wYXJlbnROb2RlKTtnO2c9Zy5wYXJlbnROb2RlKXAucHVzaChnKSxoPWc7aD09PShkLm93bmVyRG9jdW1lbnR8fGwpJiZwLnB1c2goaC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3d8fGEpfWY9MDt3aGlsZSgoZz1wW2YrK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1mPjE/aTpvLmJpbmRUeXBlfHxxLG09KEwuZ2V0KGcsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmTC5nZXQoZywiaGFuZGxlIiksbSYmbS5hcHBseShnLGMpLG09ayYmZ1trXSxtJiZtLmFwcGx5JiZuLmFjY2VwdERhdGEoZykmJihiLnJlc3VsdD1tLmFwcGx5KGcsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPXEsZXx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8by5fZGVmYXVsdCYmby5fZGVmYXVsdC5hcHBseShwLnBvcCgpLGMpIT09ITF8fCFuLmFjY2VwdERhdGEoZCl8fGsmJm4uaXNGdW5jdGlvbihkW3FdKSYmIW4uaXNXaW5kb3coZCkmJihoPWRba10saCYmKGRba109bnVsbCksbi5ldmVudC50cmlnZ2VyZWQ9cSxkW3FdKCksbi5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGgmJihkW2tdPWgpKSxiLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9bi5ldmVudC5maXgoYSk7dmFyIGIsYyxlLGYsZyxoPVtdLGk9ZC5jYWxsKGFyZ3VtZW50cyksaj0oTC5nZXQodGhpcywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXSxrPW4uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihpWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSE9PSExKXtoPW4uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsaiksYj0wO3doaWxlKChmPWhbYisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3VycmVudFRhcmdldD1mLmVsZW0sYz0wO3doaWxlKChnPWYuaGFuZGxlcnNbYysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFhLm5hbWVzcGFjZV9yZXx8YS5uYW1lc3BhY2VfcmUudGVzdChnLm5hbWVzcGFjZSkpJiYoYS5oYW5kbGVPYmo9ZyxhLmRhdGE9Zy5kYXRhLGU9KChuLmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWUmJihhLnJlc3VsdD1lKT09PSExJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5cGUmJighYS5idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7aSE9PXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoaS5kaXNhYmxlZCE9PSEwfHwiY2xpY2siIT09YS50eXBlKXtmb3IoZD1bXSxjPTA7aD5jO2MrKylmPWJbY10sZT1mLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1kW2VdJiYoZFtlXT1mLm5lZWRzQ29udGV4dD9uKGUsdGhpcykuaW5kZXgoaSk+PTA6bi5maW5kKGUsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxkW2VdJiZkLnB1c2goZik7ZC5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmR9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1iLmNoYXJDb2RlP2IuY2hhckNvZGU6Yi5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1iLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS5wYWdlWCYmbnVsbCE9Yi5jbGllbnRYJiYoYz1hLnRhcmdldC5vd25lckRvY3VtZW50fHxsLGQ9Yy5kb2N1bWVudEVsZW1lbnQsZT1jLmJvZHksYS5wYWdlWD1iLmNsaWVudFgrKGQmJmQuc2Nyb2xsTGVmdHx8ZSYmZS5zY3JvbGxMZWZ0fHwwKS0oZCYmZC5jbGllbnRMZWZ0fHxlJiZlLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yi5jbGllbnRZKyhkJiZkLnNjcm9sbFRvcHx8ZSYmZS5zY3JvbGxUb3B8fDApLShkJiZkLmNsaWVudFRvcHx8ZSYmZS5jbGllbnRUb3B8fDApKSxhLndoaWNofHx2b2lkIDA9PT1mfHwoYS53aGljaD0xJmY/MToyJmY/Mzo0JmY/MjowKSxhfX0sZml4OmZ1bmN0aW9uKGEpe2lmKGFbbi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGQsZT1hLnR5cGUsZj1hLGc9dGhpcy5maXhIb29rc1tlXTtnfHwodGhpcy5maXhIb29rc1tlXT1nPVcudGVzdChlKT90aGlzLm1vdXNlSG9va3M6Vi50ZXN0KGUpP3RoaXMua2V5SG9va3M6e30pLGQ9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZiksYj1kLmxlbmd0aDt3aGlsZShiLS0pYz1kW2JdLGFbY109ZltjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1sKSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzIT09XygpJiZ0aGlzLmZvY3VzPyh0aGlzLmZvY3VzKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09XygpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2smJm4ubm9kZU5hbWUodGhpcywiaW5wdXQiKT8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiBuLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uLmV4dGVuZChuZXcgbi5FdmVudCxjLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2Q/bi5ldmVudC50cmlnZ2VyKGUsbnVsbCxiKTpuLmV2ZW50LmRpc3BhdGNoLmNhbGwoYixlKSxlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZjLnByZXZlbnREZWZhdWx0KCl9fSxuLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfSxuLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT9aOiQpOnRoaXMudHlwZT1hLGImJm4uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG4ubm93KCksdm9pZCh0aGlzW24uZXhwYW5kb109ITApKTpuZXcgbi5FdmVudChhLGIpfSxuLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOiQsaXNQcm9wYWdhdGlvblN0b3BwZWQ6JCxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDokLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPVosYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1aLGEmJmEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1aLGEmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxuLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7bi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhbi5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksay5mb2N1c2luQnViYmxlc3x8bi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe24uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxuLmV2ZW50LmZpeChhKSwhMCl9O24uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1MLmFjY2VzcyhkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLEwuYWNjZXNzKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9TC5hY2Nlc3MoZCxiKS0xO2U/TC5hY2Nlc3MoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxMLnJlbW92ZShkLGIpKX19fSksbi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZztpZigib2JqZWN0Ij09dHlwZW9mIGEpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9Y3x8YixiPXZvaWQgMCk7Zm9yKGcgaW4gYSl0aGlzLm9uKGcsYixjLGFbZ10sZSk7cmV0dXJuIHRoaXN9aWYobnVsbD09YyYmbnVsbD09ZD8oZD1iLGM9Yj12b2lkIDApOm51bGw9PWQmJigic3RyaW5nIj09dHlwZW9mIGI/KGQ9YyxjPXZvaWQgMCk6KGQ9YyxjPWIsYj12b2lkIDApKSxkPT09ITEpZD0kO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1lJiYoZj1kLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4oKS5vZmYoYSksZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1mLmd1aWR8fChmLmd1aWQ9bi5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LmFkZCh0aGlzLGEsZCxjLGIpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5kbGVPYmosbihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCksYz09PSExJiYoYz0kKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe24uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP24uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO3ZhciBhYj0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLGJiPS88KFtcdzpdKykvLGNiPS88fCYjP1x3KzsvLGRiPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksZWI9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksZmI9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLGdiPS9edHJ1ZVwvKC4qKS8saGI9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLGliPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07aWIub3B0Z3JvdXA9aWIub3B0aW9uLGliLnRib2R5PWliLnRmb290PWliLmNvbGdyb3VwPWliLmNhcHRpb249aWIudGhlYWQsaWIudGg9aWIudGQ7ZnVuY3Rpb24gamIoYSxiKXtyZXR1cm4gbi5ub2RlTmFtZShhLCJ0YWJsZSIpJiZuLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIGtiKGEpe3JldHVybiBhLnR5cGU9KG51bGwhPT1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gbGIoYSl7dmFyIGI9Z2IuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiBtYihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylMLnNldChhW2NdLCJnbG9iYWxFdmFsIiwhYnx8TC5nZXQoYltjXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBuYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7aWYoMT09PWIubm9kZVR5cGUpe2lmKEwuaGFzRGF0YShhKSYmKGY9TC5hY2Nlc3MoYSksZz1MLnNldChiLGYpLGo9Zi5ldmVudHMpKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGUgaW4gailmb3IoYz0wLGQ9altlXS5sZW5ndGg7ZD5jO2MrKyluLmV2ZW50LmFkZChiLGUsaltlXVtjXSl9TS5oYXNEYXRhKGEpJiYoaD1NLmFjY2VzcyhhKSxpPW4uZXh0ZW5kKHt9LGgpLE0uc2V0KGIsaSkpfX1mdW5jdGlvbiBvYihhLGIpe3ZhciBjPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOmEucXVlcnlTZWxlY3RvckFsbD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXTtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmbi5ub2RlTmFtZShhLGIpP24ubWVyZ2UoW2FdLGMpOmN9ZnVuY3Rpb24gcGIoYSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJlQudGVzdChhLnR5cGUpP2IuY2hlY2tlZD1hLmNoZWNrZWQ6KCJpbnB1dCI9PT1jfHwidGV4dGFyZWEiPT09YykmJihiLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZSl9bi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPW4uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKCEoay5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bi5pc1hNTERvYyhhKSkpZm9yKGc9b2IoaCksZj1vYihhKSxkPTAsZT1mLmxlbmd0aDtlPmQ7ZCsrKXBiKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG9iKGEpLGc9Z3x8b2IoaCksZD0wLGU9Zi5sZW5ndGg7ZT5kO2QrKyluYihmW2RdLGdbZF0pO2Vsc2UgbmIoYSxoKTtyZXR1cm4gZz1vYihoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZtYihnLCFpJiZvYihhLCJzY3JpcHQiKSksaH0sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGUsZixnLGgsaSxqLGs9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbD1bXSxtPTAsbz1hLmxlbmd0aDtvPm07bSsrKWlmKGU9YVttXSxlfHwwPT09ZSlpZigib2JqZWN0Ij09PW4udHlwZShlKSluLm1lcmdlKGwsZS5ub2RlVHlwZT9bZV06ZSk7ZWxzZSBpZihjYi50ZXN0KGUpKXtmPWZ8fGsuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksZz0oYmIuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxoPWliW2ddfHxpYi5fZGVmYXVsdCxmLmlubmVySFRNTD1oWzFdK2UucmVwbGFjZShhYiwiPCQxPjwvJDI+IikraFsyXSxqPWhbMF07d2hpbGUoai0tKWY9Zi5sYXN0Q2hpbGQ7bi5tZXJnZShsLGYuY2hpbGROb2RlcyksZj1rLmZpcnN0Q2hpbGQsZi50ZXh0Q29udGVudD0iIn1lbHNlIGwucHVzaChiLmNyZWF0ZVRleHROb2RlKGUpKTtrLnRleHRDb250ZW50PSIiLG09MDt3aGlsZShlPWxbbSsrXSlpZigoIWR8fC0xPT09bi5pbkFycmF5KGUsZCkpJiYoaT1uLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKSxmPW9iKGsuYXBwZW5kQ2hpbGQoZSksInNjcmlwdCIpLGkmJm1iKGYpLGMpKXtqPTA7d2hpbGUoZT1mW2orK10pZmIudGVzdChlLnR5cGV8fCIiKSYmYy5wdXNoKGUpfXJldHVybiBrfSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZCxlLGY9bi5ldmVudC5zcGVjaWFsLGc9MDt2b2lkIDAhPT0oYz1hW2ddKTtnKyspe2lmKG4uYWNjZXB0RGF0YShjKSYmKGU9Y1tMLmV4cGFuZG9dLGUmJihiPUwuY2FjaGVbZV0pKSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZltkXT9uLmV2ZW50LnJlbW92ZShjLGQpOm4ucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtMLmNhY2hlW2VdJiZkZWxldGUgTC5jYWNoZVtlXX1kZWxldGUgTS5jYWNoZVtjW00uZXhwYW5kb11dfX19KSxuLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hP24udGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpeygxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSkmJih0aGlzLnRleHRDb250ZW50PWEpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1qYih0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPWpiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9uLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bi5jbGVhbkRhdGEob2IoYykpLGMucGFyZW50Tm9kZSYmKGImJm4uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZtYihvYihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKG4uY2xlYW5EYXRhKG9iKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsPT1hPyExOmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBuLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBKKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIWRiLnRlc3QoYSkmJiFpYlsoYmIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKGFiLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihuLmNsZWFuRGF0YShvYihiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbi5jbGVhbkRhdGEob2IodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG09dGhpcyxvPWwtMSxwPWFbMF0scT1uLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJmViLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1tLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoYz1uLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksZD1jLmZpcnN0Q2hpbGQsMT09PWMuY2hpbGROb2Rlcy5sZW5ndGgmJihjPWQpLGQpKXtmb3IoZj1uLm1hcChvYihjLCJzY3JpcHQiKSxrYiksZz1mLmxlbmd0aDtsPmo7aisrKWg9YyxqIT09byYmKGg9bi5jbG9uZShoLCEwLCEwKSxnJiZuLm1lcmdlKGYsb2IoaCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxoLGopO2lmKGcpZm9yKGk9ZltmLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG4ubWFwKGYsbGIpLGo9MDtnPmo7aisrKWg9ZltqXSxmYi50ZXN0KGgudHlwZXx8IiIpJiYhTC5hY2Nlc3MoaCwiZ2xvYmFsRXZhbCIpJiZuLmNvbnRhaW5zKGksaCkmJihoLnNyYz9uLl9ldmFsVXJsJiZuLl9ldmFsVXJsKGguc3JjKTpuLmdsb2JhbEV2YWwoaC50ZXh0Q29udGVudC5yZXBsYWNlKGhiLCIiKSkpfXJldHVybiB0aGlzfX0pLG4uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD1bXSxlPW4oYSksZz1lLmxlbmd0aC0xLGg9MDtnPj1oO2grKyljPWg9PT1nP3RoaXM6dGhpcy5jbG9uZSghMCksbihlW2hdKVtiXShjKSxmLmFwcGx5KGQsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQpfX0pO3ZhciBxYixyYj17fTtmdW5jdGlvbiBzYihiLGMpe3ZhciBkLGU9bihjLmNyZWF0ZUVsZW1lbnQoYikpLmFwcGVuZFRvKGMuYm9keSksZj1hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlJiYoZD1hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlKGVbMF0pKT9kLmRpc3BsYXk6bi5jc3MoZVswXSwiZGlzcGxheSIpO3JldHVybiBlLmRldGFjaCgpLGZ9ZnVuY3Rpb24gdGIoYSl7dmFyIGI9bCxjPXJiW2FdO3JldHVybiBjfHwoYz1zYihhLGIpLCJub25lIiE9PWMmJmN8fChxYj0ocWJ8fG4oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9cWJbMF0uY29udGVudERvY3VtZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz1zYihhLGIpLHFiLmRldGFjaCgpKSxyYlthXT1jKSxjfXZhciB1Yj0vXm1hcmdpbi8sdmI9bmV3IFJlZ0V4cCgiXigiK1ErIikoPyFweClbYS16JV0rJCIsImkiKSx3Yj1mdW5jdGlvbihiKXtyZXR1cm4gYi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfTtmdW5jdGlvbiB4YihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fHdiKGEpLGMmJihnPWMuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXSksYyYmKCIiIT09Z3x8bi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPW4uc3R5bGUoYSxiKSksdmIudGVzdChnKSYmdWIudGVzdChiKSYmKGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgubWluV2lkdGg9aC5tYXhXaWR0aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldpZHRoPWUsaC5tYXhXaWR0aD1mKSksdm9pZCAwIT09Zz9nKyIiOmd9ZnVuY3Rpb24geWIoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoKT92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkPWwuZG9jdW1lbnRFbGVtZW50LGU9bC5jcmVhdGVFbGVtZW50KCJkaXYiKSxmPWwuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoZi5zdHlsZSl7Zi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGYuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixrLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09Zi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxlLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixlLmFwcGVuZENoaWxkKGYpO2Z1bmN0aW9uIGcoKXtmLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixmLmlubmVySFRNTD0iIixkLmFwcGVuZENoaWxkKGUpO3ZhciBnPWEuZ2V0Q29tcHV0ZWRTdHlsZShmLG51bGwpO2I9IjElIiE9PWcudG9wLGM9IjRweCI9PT1nLndpZHRoLGQucmVtb3ZlQ2hpbGQoZSl9YS5nZXRDb21wdXRlZFN0eWxlJiZuLmV4dGVuZChrLHtwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGcoKSxifSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1jJiZnKCksY30scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3ZhciBiLGM9Zi5hcHBlbmRDaGlsZChsLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtyZXR1cm4gYy5zdHlsZS5jc3NUZXh0PWYuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowIixjLnN0eWxlLm1hcmdpblJpZ2h0PWMuc3R5bGUud2lkdGg9IjAiLGYuc3R5bGUud2lkdGg9IjFweCIsZC5hcHBlbmRDaGlsZChlKSxiPSFwYXJzZUZsb2F0KGEuZ2V0Q29tcHV0ZWRTdHlsZShjLG51bGwpLm1hcmdpblJpZ2h0KSxkLnJlbW92ZUNoaWxkKGUpLGYucmVtb3ZlQ2hpbGQoYyksYn19KX19KCksbi5zd2FwPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3JldHVybiBlfTt2YXIgemI9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLEFiPW5ldyBSZWdFeHAoIl4oIitRKyIpKC4qKSQiLCJpIiksQmI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIitRKyIpIiwiaSIpLENiPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxEYj17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0sRWI9WyJXZWJraXQiLCJPIiwiTW96IiwibXMiXTtmdW5jdGlvbiBGYihhLGIpe2lmKGIgaW4gYSlyZXR1cm4gYjt2YXIgYz1iWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1FYi5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9RWJbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gR2IoYSxiLGMpe3ZhciBkPUFiLmV4ZWMoYik7cmV0dXJuIGQ/TWF0aC5tYXgoMCxkWzFdLShjfHwwKSkrKGRbMl18fCJweCIpOmJ9ZnVuY3Rpb24gSGIoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPW4uY3NzKGEsYytSW2ZdLCEwLGUpKSxkPygiY29udGVudCI9PT1jJiYoZy09bi5jc3MoYSwicGFkZGluZyIrUltmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09bi5jc3MoYSwiYm9yZGVyIitSW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9bi5jc3MoYSwicGFkZGluZyIrUltmXSwhMCxlKSwicGFkZGluZyIhPT1jJiYoZys9bi5jc3MoYSwiYm9yZGVyIitSW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBJYihhLGIsYyl7dmFyIGQ9ITAsZT0id2lkdGgiPT09Yj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGY9d2IoYSksZz0iYm9yZGVyLWJveCI9PT1uLmNzcyhhLCJib3hTaXppbmciLCExLGYpO2lmKDA+PWV8fG51bGw9PWUpe2lmKGU9eGIoYSxiLGYpLCgwPmV8fG51bGw9PWUpJiYoZT1hLnN0eWxlW2JdKSx2Yi50ZXN0KGUpKXJldHVybiBlO2Q9ZyYmKGsuYm94U2l6aW5nUmVsaWFibGUoKXx8ZT09PWEuc3R5bGVbYl0pLGU9cGFyc2VGbG9hdChlKXx8MH1yZXR1cm4gZStIYihhLGIsY3x8KGc/ImJvcmRlciI6ImNvbnRlbnQiKSxkLGYpKyJweCJ9ZnVuY3Rpb24gSmIoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109TC5nZXQoZCwib2xkZGlzcGxheSIpLGM9ZC5zdHlsZS5kaXNwbGF5LGI/KGZbZ118fCJub25lIiE9PWN8fChkLnN0eWxlLmRpc3BsYXk9IiIpLCIiPT09ZC5zdHlsZS5kaXNwbGF5JiZTKGQpJiYoZltnXT1MLmFjY2VzcyhkLCJvbGRkaXNwbGF5Iix0YihkLm5vZGVOYW1lKSkpKTooZT1TKGQpLCJub25lIj09PWMmJmV8fEwuc2V0KGQsIm9sZGRpc3BsYXkiLGU/YzpuLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfW4uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9eGIoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjoiY3NzRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGIsYyxkKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBlLGYsZyxoPW4uY2FtZWxDYXNlKGIpLGk9YS5zdHlsZTtyZXR1cm4gYj1uLmNzc1Byb3BzW2hdfHwobi5jc3NQcm9wc1toXT1GYihpLGgpKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sdm9pZCAwPT09Yz9nJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTooZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPUJiLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobi5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG4uY3NzTnVtYmVyW2hdfHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9Zy5zZXQoYSxjLGQpKXx8KGlbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bi5jYW1lbENhc2UoYik7cmV0dXJuIGI9bi5jc3NQcm9wc1toXXx8KG4uY3NzUHJvcHNbaF09RmIoYS5zdHlsZSxoKSksZz1uLmNzc0hvb2tzW2JdfHxuLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZSYmKGU9eGIoYSxiLGQpKSwibm9ybWFsIj09PWUmJmIgaW4gRGImJihlPURiW2JdKSwiIj09PWN8fGM/KGY9cGFyc2VGbG9hdChlKSxjPT09ITB8fG4uaXNOdW1lcmljKGYpP2Z8fDA6ZSk6ZX19KSxuLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz96Yi50ZXN0KG4uY3NzKGEsImRpc3BsYXkiKSkmJjA9PT1hLm9mZnNldFdpZHRoP24uc3dhcChhLENiLGZ1bmN0aW9uKCl7cmV0dXJuIEliKGEsYixkKX0pOkliKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmd2IoYSk7cmV0dXJuIEdiKGEsYyxkP0hiKGEsYixkLCJib3JkZXItYm94Ij09PW4uY3NzKGEsImJveFNpemluZyIsITEsZSksZSk6MCl9fX0pLG4uY3NzSG9va3MubWFyZ2luUmlnaHQ9eWIoay5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bi5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LHhiLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxuLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe24uY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStSW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LHViLnRlc3QoYSl8fChuLmNzc0hvb2tzW2ErYl0uc2V0PUdiKX0pLG4uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG4uaXNBcnJheShiKSl7Zm9yKGQ9d2IoYSksZT1iLmxlbmd0aDtlPmc7ZysrKWZbYltnXV09bi5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP24uc3R5bGUoYSxiLGMpOm4uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIEpiKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIEpiKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1ModGhpcyk/bih0aGlzKS5zaG93KCk6bih0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBLYihhLGIsYyxkLGUpe3JldHVybiBuZXcgS2IucHJvdG90eXBlLmluaXQoYSxiLGMsZCxlKX1uLlR3ZWVuPUtiLEtiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2IsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsdGhpcy5lYXNpbmc9ZXx8InN3aW5nIix0aGlzLm9wdGlvbnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9Znx8KG4uY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1LYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6S2IucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9S2IucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMucG9zPWI9dGhpcy5vcHRpb25zLmR1cmF0aW9uP24uZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOmEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ/Yy5zZXQodGhpcyk6S2IucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sS2IucHJvdG90eXBlLmluaXQucHJvdG90eXBlPUtiLnByb3RvdHlwZSxLYi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW4uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe24uZnguc3RlcFthLnByb3BdP24uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVtuLmNzc1Byb3BzW2EucHJvcF1dfHxuLmNzc0hvb2tzW2EucHJvcF0pP24uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LEtiLnByb3BIb29rcy5zY3JvbGxUb3A9S2IucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbi5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbi5meD1LYi5wcm90b3R5cGUuaW5pdCxuLmZ4LnN0ZXA9e307dmFyIExiLE1iLE5iPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxPYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUSsiKShbYS16JV0qKSQiLCJpIiksUGI9L3F1ZXVlSG9va3MkLyxRYj1bVmJdLFJiPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPU9iLmV4ZWMoYiksZj1lJiZlWzNdfHwobi5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0obi5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJk9iLmV4ZWMobi5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxuLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBTYigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TGI9dm9pZCAwfSksTGI9bi5ub3coKX1mdW5jdGlvbiBUYihhLGIpe3ZhciBjLGQ9MCxlPXtoZWlnaHQ6YX07Zm9yKGI9Yj8xOjA7ND5kO2QrPTItYiljPVJbZF0sZVsibWFyZ2luIitjXT1lWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZS5vcGFjaXR5PWUud2lkdGg9YSksZX1mdW5jdGlvbiBVYihhLGIsYyl7Zm9yKHZhciBkLGU9KFJiW2JdfHxbXSkuY29uY2F0KFJiWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIFZiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw9dGhpcyxtPXt9LG89YS5zdHlsZSxwPWEubm9kZVR5cGUmJlMoYSkscT1MLmdldChhLCJmeHNob3ciKTtjLnF1ZXVlfHwoaD1uLl9xdWV1ZUhvb2tzKGEsImZ4IiksbnVsbD09aC51bnF1ZXVlZCYmKGgudW5xdWV1ZWQ9MCxpPWguZW1wdHkuZmlyZSxoLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtoLnVucXVldWVkfHxpKCl9KSxoLnVucXVldWVkKyssbC5hbHdheXMoZnVuY3Rpb24oKXtsLmFsd2F5cyhmdW5jdGlvbigpe2gudW5xdWV1ZWQtLSxuLnF1ZXVlKGEsImZ4IikubGVuZ3RofHxoLmVtcHR5LmZpcmUoKX0pfSkpLDE9PT1hLm5vZGVUeXBlJiYoImhlaWdodCJpbiBifHwid2lkdGgiaW4gYikmJihjLm92ZXJmbG93PVtvLm92ZXJmbG93LG8ub3ZlcmZsb3dYLG8ub3ZlcmZsb3dZXSxqPW4uY3NzKGEsImRpc3BsYXkiKSxrPSJub25lIj09PWo/TC5nZXQoYSwib2xkZGlzcGxheSIpfHx0YihhLm5vZGVOYW1lKTpqLCJpbmxpbmUiPT09ayYmIm5vbmUiPT09bi5jc3MoYSwiZmxvYXQiKSYmKG8uZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLGMub3ZlcmZsb3cmJihvLm92ZXJmbG93PSJoaWRkZW4iLGwuYWx3YXlzKGZ1bmN0aW9uKCl7by5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLG8ub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0sby5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxOYi5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHA/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFxfHx2b2lkIDA9PT1xW2RdKWNvbnRpbnVlO3A9ITB9bVtkXT1xJiZxW2RdfHxuLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihuLmlzRW1wdHlPYmplY3QobSkpImlubGluZSI9PT0oIm5vbmUiPT09aj90YihhLm5vZGVOYW1lKTpqKSYmKG8uZGlzcGxheT1qKTtlbHNle3E/ImhpZGRlbiJpbiBxJiYocD1xLmhpZGRlbik6cT1MLmFjY2VzcyhhLCJmeHNob3ciLHt9KSxmJiYocS5oaWRkZW49IXApLHA/bihhKS5zaG93KCk6bC5kb25lKGZ1bmN0aW9uKCl7bihhKS5oaWRlKCl9KSxsLmRvbmUoZnVuY3Rpb24oKXt2YXIgYjtMLnJlbW92ZShhLCJmeHNob3ciKTtmb3IoYiBpbiBtKW4uc3R5bGUoYSxiLG1bYl0pfSk7Zm9yKGQgaW4gbSlnPVViKHA/cVtkXTowLGQsbCksZCBpbiBxfHwocVtkXT1nLnN0YXJ0LHAmJihnLmVuZD1nLnN0YXJ0LGcuc3RhcnQ9IndpZHRoIj09PWR8fCJoZWlnaHQiPT09ZD8xOjApKX19ZnVuY3Rpb24gV2IoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1uLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLG4uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9bi5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBYYihhLGIsYyl7dmFyIGQsZSxmPTAsZz1RYi5sZW5ndGgsaD1uLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxlbX0pLGk9ZnVuY3Rpb24oKXtpZihlKXJldHVybiExO2Zvcih2YXIgYj1MYnx8U2IoKSxjPU1hdGgubWF4KDAsai5zdGFydFRpbWUrai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxnPTAsaT1qLnR3ZWVucy5sZW5ndGg7aT5nO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtqLGYsY10pLDE+ZiYmaT9jOihoLnJlc29sdmVXaXRoKGEsW2pdKSwhMSl9LGo9aC5wcm9taXNlKHtlbGVtOmEscHJvcHM6bi5leHRlbmQoe30sYiksb3B0czpuLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOkxifHxTYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9bi5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRoKGEsW2osYl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoV2IoayxqLm9wdHMuc3BlY2lhbEVhc2luZyk7Zz5mO2YrKylpZihkPVFiW2ZdLmNhbGwoaixhLGssai5vcHRzKSlyZXR1cm4gZDtyZXR1cm4gbi5tYXAoayxVYixqKSxuLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYmai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxuLmZ4LnRpbWVyKG4uZXh0ZW5kKGkse2VsZW06YSxhbmltOmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpfW4uQW5pbWF0aW9uPW4uZXh0ZW5kKFhiLHt0d2VlbmVyOmZ1bmN0aW9uKGEsYil7bi5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLFJiW2NdPVJiW2NdfHxbXSxSYltjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP1FiLnVuc2hpZnQoYSk6UWIucHVzaChhKX19KSxuLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/bi5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxuLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIW4uaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIGQuZHVyYXRpb249bi5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIGQuZHVyYXRpb24/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIG4uZnguc3BlZWRzP24uZnguc3BlZWRzW2QuZHVyYXRpb25dOm4uZnguc3BlZWRzLl9kZWZhdWx0LChudWxsPT1kLnF1ZXVlfHxkLnF1ZXVlPT09ITApJiYoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtuLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJm4uZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxuLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihTKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uLmlzRW1wdHlPYmplY3QoYSksZj1uLnNwZWVkKGIsYyxkKSxnPWZ1bmN0aW9uKCl7dmFyIGI9WGIodGhpcyxuLmV4dGVuZCh7fSxhKSxmKTsoZXx8TC5nZXQodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1uLnRpbWVycyxnPUwuZ2V0KHRoaXMpO2lmKGUpZ1tlXSYmZ1tlXS5zdG9wJiZkKGdbZV0pO2Vsc2UgZm9yKGUgaW4gZylnW2VdJiZnW2VdLnN0b3AmJlBiLnRlc3QoZSkmJmQoZ1tlXSk7Zm9yKGU9Zi5sZW5ndGg7ZS0tOylmW2VdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZmW2VdLnF1ZXVlIT09YXx8KGZbZV0uYW5pbS5zdG9wKGMpLGI9ITEsZi5zcGxpY2UoZSwxKSk7KGJ8fCFjKSYmbi5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiBhIT09ITEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGM9TC5nZXQodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1jW2ErInF1ZXVlSG9va3MiXSxmPW4udGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0hMCxuLnF1ZXVlKHRoaXMsYSxbXSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYubGVuZ3RoO2ItLTspZltiXS5lbGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0uc3RvcCghMCksZi5zcGxpY2UoYiwxKSk7Zm9yKGI9MDtnPmI7YisrKWRbYl0mJmRbYl0uZmluaXNoJiZkW2JdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBjLmZpbmlzaH0pfX0pLG4uZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oYSxiKXt2YXIgYz1uLmZuW2JdO24uZm5bYl09ZnVuY3Rpb24oYSxkLGUpe3JldHVybiBudWxsPT1hfHwiYm9vbGVhbiI9PXR5cGVvZiBhP2MuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShUYihiLCEwKSxhLGQsZSl9fSksbi5lYWNoKHtzbGlkZURvd246VGIoInNob3ciKSxzbGlkZVVwOlRiKCJoaWRlIiksc2xpZGVUb2dnbGU6VGIoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtuLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLG4udGltZXJzPVtdLG4uZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGI9MCxjPW4udGltZXJzO2ZvcihMYj1uLm5vdygpO2I8Yy5sZW5ndGg7YisrKWE9Y1tiXSxhKCl8fGNbYl0hPT1hfHxjLnNwbGljZShiLS0sMSk7Yy5sZW5ndGh8fG4uZnguc3RvcCgpLExiPXZvaWQgMH0sbi5meC50aW1lcj1mdW5jdGlvbihhKXtuLnRpbWVycy5wdXNoKGEpLGEoKT9uLmZ4LnN0YXJ0KCk6bi50aW1lcnMucG9wKCl9LG4uZnguaW50ZXJ2YWw9MTMsbi5meC5zdGFydD1mdW5jdGlvbigpe01ifHwoTWI9c2V0SW50ZXJ2YWwobi5meC50aWNrLG4uZnguaW50ZXJ2YWwpKX0sbi5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChNYiksTWI9bnVsbH0sbi5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sbi5mbi5kZWxheT1mdW5jdGlvbihhLGIpe3JldHVybiBhPW4uZng/bi5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCIsdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1sLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1sLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChsLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixrLmNoZWNrT249IiIhPT1hLnZhbHVlLGsub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxiLmRpc2FibGVkPSEwLGsub3B0RGlzYWJsZWQ9IWMuZGlzYWJsZWQsYT1sLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1ZT0idCIsYS50eXBlPSJyYWRpbyIsay5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIFliLFpiLCRiPW4uZXhwci5hdHRySGFuZGxlO24uZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEoodGhpcyxuLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe24ucmVtb3ZlQXR0cih0aGlzLGEpfSl9fSksbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBlO2lmKGEmJjMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuIHR5cGVvZiBhLmdldEF0dHJpYnV0ZT09PVU/bi5wcm9wKGEsYixjKTooMT09PWYmJm4uaXNYTUxEb2MoYSl8fChiPWIudG9Mb3dlckNhc2UoKSxkPW4uYXR0ckhvb2tzW2JdfHwobi5leHByLm1hdGNoLmJvb2wudGVzdChiKT9aYjpZYikpLHZvaWQgMD09PWM/ZCYmImdldCJpbiBkJiZudWxsIT09KGU9ZC5nZXQoYSxiKSk/ZTooZT1uLmZpbmQuYXR0cihhLGIpLG51bGw9PWU/dm9pZCAwOmUpOm51bGwhPT1jP2QmJiJzZXQiaW4gZCYmdm9pZCAwIT09KGU9ZC5zZXQoYSxjLGIpKT9lOihhLnNldEF0dHJpYnV0ZShiLGMrIiIpLGMpOnZvaWQgbi5yZW1vdmVBdHRyKGEsYikpCn0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT0wLGY9YiYmYi5tYXRjaChFKTtpZihmJiYxPT09YS5ub2RlVHlwZSl3aGlsZShjPWZbZSsrXSlkPW4ucHJvcEZpeFtjXXx8YyxuLmV4cHIubWF0Y2guYm9vbC50ZXN0KGMpJiYoYVtkXT0hMSksYS5yZW1vdmVBdHRyaWJ1dGUoYyl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm4ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksWmI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9uLnJlbW92ZUF0dHIoYSxjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fSxuLmVhY2gobi5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz0kYltiXXx8bi5maW5kLmF0dHI7JGJbYl09ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPSRiW2JdLCRiW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCwkYltiXT1mKSxlfX0pO3ZhciBfYj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pO24uZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIEoodGhpcyxuLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW24ucHJvcEZpeFthXXx8YV19KX19KSxuLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW4uaXNYTUxEb2MoYSksZiYmKGI9bi5wcm9wRml4W2JdfHxiLGU9bi5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8X2IudGVzdChhLm5vZGVOYW1lKXx8YS5ocmVmP2EudGFiSW5kZXg6LTF9fX19KSxrLm9wdFNlbGVjdGVkfHwobi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJmIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsbnVsbH19KSxuLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe24ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTt2YXIgYWM9L1tcdFxyXG5cZl0vZztuLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9InN0cmluZyI9PXR5cGVvZiBhJiZhLGk9MCxqPXRoaXMubGVuZ3RoO2lmKG4uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoaClmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtqPmk7aSsrKWlmKGM9dGhpc1tpXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoYWMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW4udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYSxpPTAsaj10aGlzLmxlbmd0aDtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGgpZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aj5pO2krKylpZihjPXRoaXNbaV0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKGFjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP24udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXtuKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1uKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09VXx8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmTC5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxhPT09ITE/IiI6TC5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIil9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIgIithKyIgIixjPTAsZD10aGlzLmxlbmd0aDtkPmM7YysrKWlmKDE9PT10aGlzW2NdLm5vZGVUeXBlJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShhYywiICIpLmluZGV4T2YoYik+PTApcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIGJjPS9cci9nO24uZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1uLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOm4uaXNBcnJheShlKSYmKGU9bi5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9bi52YWxIb29rc1t0aGlzLnR5cGVdfHxuLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUpKX0pO2lmKGUpcmV0dXJuIGI9bi52YWxIb29rc1tlLnR5cGVdfHxuLnZhbEhvb2tzW2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1ZSIpKT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShiYywiIik6bnVsbD09Yz8iIjpjKX19fSksbi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1uLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6bi50cmltKG4udGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkPWEub3B0aW9ucyxlPWEuc2VsZWN0ZWRJbmRleCxmPSJzZWxlY3Qtb25lIj09PWEudHlwZXx8MD5lLGc9Zj9udWxsOltdLGg9Zj9lKzE6ZC5sZW5ndGgsaT0wPmU/aDpmP2U6MDtoPmk7aSsrKWlmKGM9ZFtpXSwhKCFjLnNlbGVjdGVkJiZpIT09ZXx8KGsub3B0RGlzYWJsZWQ/Yy5kaXNhYmxlZDpudWxsIT09Yy5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpfHxjLnBhcmVudE5vZGUuZGlzYWJsZWQmJm4ubm9kZU5hbWUoYy5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYoYj1uKGMpLnZhbCgpLGYpcmV0dXJuIGI7Zy5wdXNoKGIpfXJldHVybiBnfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9bi5tYWtlQXJyYXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0pZD1lW2ddLChkLnNlbGVjdGVkPW4uaW5BcnJheShkLnZhbHVlLGYpPj0wKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksbi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bi52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uaXNBcnJheShiKT9hLmNoZWNrZWQ9bi5pbkFycmF5KG4oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobi52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pLG4uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe24uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG4uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIGNjPW4ubm93KCksZGM9L1w/LztuLnBhcnNlSlNPTj1mdW5jdGlvbihhKXtyZXR1cm4gSlNPTi5wYXJzZShhKyIiKX0sbi5wYXJzZVhNTD1mdW5jdGlvbihhKXt2YXIgYixjO2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e2M9bmV3IERPTVBhcnNlcixiPWMucGFyc2VGcm9tU3RyaW5nKGEsInRleHQveG1sIil9Y2F0Y2goZCl7Yj12b2lkIDB9cmV0dXJuKCFifHxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCkmJm4uZXJyb3IoIkludmFsaWQgWE1MOiAiK2EpLGJ9O3ZhciBlYz0vIy4qJC8sZmM9LyhbPyZdKV89W14mXSovLGdjPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20saGM9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8saWM9L14oPzpHRVR8SEVBRCkkLyxqYz0vXlwvXC8vLGtjPS9eKFtcdy4rLV0rOikoPzpcL1wvKD86W15cLz8jXSpAfCkoW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLGxjPXt9LG1jPXt9LG5jPSIqLyIuY29uY2F0KCIqIiksb2M9YS5sb2NhdGlvbi5ocmVmLHBjPWtjLmV4ZWMob2MudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIHFjKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihuLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZFswXT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiByYyhhLGIsYyxkKXt2YXIgZT17fSxmPWE9PT1tYztmdW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLG4uZWFjaChhW2hdfHxbXSxmdW5jdGlvbihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8ZVtqXT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJldHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIHNjKGEsYil7dmFyIGMsZCxlPW4uYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoYyBpbiBiKXZvaWQgMCE9PWJbY10mJigoZVtjXT9hOmR8fChkPXt9KSlbY109YltjXSk7cmV0dXJuIGQmJm4uZXh0ZW5kKCEwLGEsZCksYX1mdW5jdGlvbiB0YyhhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRzLGk9YS5kYXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZCYmKGQ9YS5taW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGQpZm9yKGUgaW4gaClpZihoW2VdJiZoW2VdLnRlc3QoZCkpe2kudW5zaGlmdChlKTticmVha31pZihpWzBdaW4gYylmPWlbMF07ZWxzZXtmb3IoZSBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2UrIiAiK2lbMF1dKXtmPWU7YnJlYWt9Z3x8KGc9ZSl9Zj1mfHxnfXJldHVybiBmPyhmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl0pOnZvaWQgMH1mdW5jdGlvbiB1YyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9e30saz1hLmRhdGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJzKWpbZy50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpKWlmKCIqIj09PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitmXXx8alsiKiAiK2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihnPWpbaSsiICIraFswXV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJdKWI9ZyhiKTtlbHNlIHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6Zz9sOiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOmJ9fW4uZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpvYyx0eXBlOiJHRVQiLGlzTG9jYWw6aGMudGVzdChwY1sxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpuYyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOm4ucGFyc2VKU09OLCJ0ZXh0IHhtbCI6bi5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/c2Moc2MoYSxuLmFqYXhTZXR0aW5ncyksYik6c2Mobi5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6cWMobGMpLGFqYXhUcmFuc3BvcnQ6cWMobWMpLGFqYXg6ZnVuY3Rpb24oYSxiKXsib2JqZWN0Ij09dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGI9Ynx8e307dmFyIGMsZCxlLGYsZyxoLGksaixrPW4uYWpheFNldHVwKHt9LGIpLGw9ay5jb250ZXh0fHxrLG09ay5jb250ZXh0JiYobC5ub2RlVHlwZXx8bC5qcXVlcnkpP24obCk6bi5ldmVudCxvPW4uRGVmZXJyZWQoKSxwPW4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHE9ay5zdGF0dXNDb2RlfHx7fSxyPXt9LHM9e30sdD0wLHU9ImNhbmNlbGVkIix2PXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoMj09PXQpe2lmKCFmKXtmPXt9O3doaWxlKGI9Z2MuZXhlYyhlKSlmW2JbMV0udG9Mb3dlckNhc2UoKV09YlsyXX1iPWZbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09dD9lOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHR8fChhPXNbY109c1tjXXx8YSxyW2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHR8fChrLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlpZigyPnQpZm9yKGIgaW4gYSlxW2JdPVtxW2JdLGFbYl1dO2Vsc2Ugdi5hbHdheXMoYVt2LnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx1O3JldHVybiBjJiZjLmFib3J0KGIpLHgoMCxiKSx0aGlzfX07aWYoby5wcm9taXNlKHYpLmNvbXBsZXRlPXAuYWRkLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsay51cmw9KChhfHxrLnVybHx8b2MpKyIiKS5yZXBsYWNlKGVjLCIiKS5yZXBsYWNlKGpjLHBjWzFdKyIvLyIpLGsudHlwZT1iLm1ldGhvZHx8Yi50eXBlfHxrLm1ldGhvZHx8ay50eXBlLGsuZGF0YVR5cGVzPW4udHJpbShrLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goRSl8fFsiIl0sbnVsbD09ay5jcm9zc0RvbWFpbiYmKGg9a2MuZXhlYyhrLnVybC50b0xvd2VyQ2FzZSgpKSxrLmNyb3NzRG9tYWluPSEoIWh8fGhbMV09PT1wY1sxXSYmaFsyXT09PXBjWzJdJiYoaFszXXx8KCJodHRwOiI9PT1oWzFdPyI4MCI6IjQ0MyIpKT09PShwY1szXXx8KCJodHRwOiI9PT1wY1sxXT8iODAiOiI0NDMiKSkpKSxrLmRhdGEmJmsucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygay5kYXRhJiYoay5kYXRhPW4ucGFyYW0oay5kYXRhLGsudHJhZGl0aW9uYWwpKSxyYyhsYyxrLGIsdiksMj09PXQpcmV0dXJuIHY7aT1uLmV2ZW50JiZrLmdsb2JhbCxpJiYwPT09bi5hY3RpdmUrKyYmbi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxrLnR5cGU9ay50eXBlLnRvVXBwZXJDYXNlKCksay5oYXNDb250ZW50PSFpYy50ZXN0KGsudHlwZSksZD1rLnVybCxrLmhhc0NvbnRlbnR8fChrLmRhdGEmJihkPWsudXJsKz0oZGMudGVzdChkKT8iJiI6Ij8iKStrLmRhdGEsZGVsZXRlIGsuZGF0YSksay5jYWNoZT09PSExJiYoay51cmw9ZmMudGVzdChkKT9kLnJlcGxhY2UoZmMsIiQxXz0iK2NjKyspOmQrKGRjLnRlc3QoZCk/IiYiOiI/IikrIl89IitjYysrKSksay5pZk1vZGlmaWVkJiYobi5sYXN0TW9kaWZpZWRbZF0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG4ubGFzdE1vZGlmaWVkW2RdKSxuLmV0YWdbZF0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsbi5ldGFnW2RdKSksKGsuZGF0YSYmay5oYXNDb250ZW50JiZrLmNvbnRlbnRUeXBlIT09ITF8fGIuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsay5jb250ZW50VHlwZSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGsuZGF0YVR5cGVzWzBdJiZrLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dP2suYWNjZXB0c1trLmRhdGFUeXBlc1swXV0rKCIqIiE9PWsuZGF0YVR5cGVzWzBdPyIsICIrbmMrIjsgcT0wLjAxIjoiIik6ay5hY2NlcHRzWyIqIl0pO2ZvcihqIGluIGsuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoaixrLmhlYWRlcnNbal0pO2lmKGsuYmVmb3JlU2VuZCYmKGsuYmVmb3JlU2VuZC5jYWxsKGwsdixrKT09PSExfHwyPT09dCkpcmV0dXJuIHYuYWJvcnQoKTt1PSJhYm9ydCI7Zm9yKGogaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pdltqXShrW2pdKTtpZihjPXJjKG1jLGssYix2KSl7di5yZWFkeVN0YXRlPTEsaSYmbS50cmlnZ2VyKCJhamF4U2VuZCIsW3Ysa10pLGsuYXN5bmMmJmsudGltZW91dD4wJiYoZz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5hYm9ydCgidGltZW91dCIpfSxrLnRpbWVvdXQpKTt0cnl7dD0xLGMuc2VuZChyLHgpfWNhdGNoKHcpe2lmKCEoMj50KSl0aHJvdyB3O3goLTEsdyl9fWVsc2UgeCgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24geChhLGIsZixoKXt2YXIgaixyLHMsdSx3LHg9YjsyIT09dCYmKHQ9MixnJiZjbGVhclRpbWVvdXQoZyksYz12b2lkIDAsZT1ofHwiIix2LnJlYWR5U3RhdGU9YT4wPzQ6MCxqPWE+PTIwMCYmMzAwPmF8fDMwND09PWEsZiYmKHU9dGMoayx2LGYpKSx1PXVjKGssdSx2LGopLGo/KGsuaWZNb2RpZmllZCYmKHc9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihuLmxhc3RNb2RpZmllZFtkXT13KSx3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYobi5ldGFnW2RdPXcpKSwyMDQ9PT1hfHwiSEVBRCI9PT1rLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1hP3g9Im5vdG1vZGlmaWVkIjooeD11LnN0YXRlLHI9dS5kYXRhLHM9dS5lcnJvcixqPSFzKSk6KHM9eCwoYXx8IXgpJiYoeD0iZXJyb3IiLDA+YSYmKGE9MCkpKSx2LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0oYnx8eCkrIiIsaj9vLnJlc29sdmVXaXRoKGwsW3IseCx2XSk6by5yZWplY3RXaXRoKGwsW3YseCxzXSksdi5zdGF0dXNDb2RlKHEpLHE9dm9pZCAwLGkmJm0udHJpZ2dlcihqPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3YsayxqP3I6c10pLHAuZmlyZVdpdGgobCxbdix4XSksaSYmKG0udHJpZ2dlcigiYWpheENvbXBsZXRlIixbdixrXSksLS1uLmFjdGl2ZXx8bi5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIHZ9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSksbi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYil7bltiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gbi5pc0Z1bmN0aW9uKGMpJiYoZT1lfHxkLGQ9YyxjPXZvaWQgMCksbi5hamF4KHt1cmw6YSx0eXBlOmIsZGF0YVR5cGU6ZSxkYXRhOmMsc3VjY2VzczpkfSl9fSksbi5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbi5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxuLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk6KHRoaXNbMF0mJihiPW4oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpcyl9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXtuKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1uLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG4odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG4uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB9LG4uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIW4uZXhwci5maWx0ZXJzLmhpZGRlbihhKX07dmFyIHZjPS8lMjAvZyx3Yz0vXFtcXSQvLHhjPS9ccj9cbi9nLHljPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSx6Yz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gQWMoYSxiLGMsZCl7dmFyIGU7aWYobi5pc0FycmF5KGIpKW4uZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8d2MudGVzdChhKT9kKGEsZSk6QWMoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PW4udHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKUFjKGErIlsiK2UrIl0iLGJbZV0sYyxkKX1uLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1uLmlzRnVuY3Rpb24oYik/YigpOm51bGw9PWI/IiI6YixkW2QubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07aWYodm9pZCAwPT09YiYmKGI9bi5hamF4U2V0dGluZ3MmJm4uYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxuLmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhbi5pc1BsYWluT2JqZWN0KGEpKW4uZWFjaChhLGZ1bmN0aW9uKCl7ZSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpQWMoYyxhW2NdLGIsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UodmMsIisiKX0sbi5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBuLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9bi5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/bi5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhbih0aGlzKS5pcygiOmRpc2FibGVkIikmJnpjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiF5Yy50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwhVC50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPW4odGhpcykudmFsKCk7cmV0dXJuIG51bGw9PWM/bnVsbDpuLmlzQXJyYXkoYyk/bi5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKHhjLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZSh4YywiXHJcbiIpfX0pLmdldCgpfX0pLG4uYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fWNhdGNoKGEpe319O3ZhciBCYz0wLENjPXt9LERjPXswOjIwMCwxMjIzOjIwNH0sRWM9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIENjKUNjW2FdKCl9KSxrLmNvcnM9ISFFYyYmIndpdGhDcmVkZW50aWFscyJpbiBFYyxrLmFqYXg9RWM9ISFFYyxuLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIGsuY29yc3x8RWMmJiFhLmNyb3NzRG9tYWluP3tzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytCYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKWYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0pO2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7YiYmKGRlbGV0ZSBDY1tnXSxiPWYub25sb2FkPWYub25lcnJvcj1udWxsLCJhYm9ydCI9PT1hP2YuYWJvcnQoKToiZXJyb3IiPT09YT9kKGYuc3RhdHVzLGYuc3RhdHVzVGV4dCk6ZChEY1tmLnN0YXR1c118fGYuc3RhdHVzLGYuc3RhdHVzVGV4dCwic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0P3t0ZXh0OmYucmVzcG9uc2VUZXh0fTp2b2lkIDAsZi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sZi5vbmxvYWQ9YigpLGYub25lcnJvcj1iKCJlcnJvciIpLGI9Q2NbZ109YigiYWJvcnQiKTt0cnl7Zi5zZW5kKGEuaGFzQ29udGVudCYmYS5kYXRhfHxudWxsKX1jYXRjaChoKXtpZihiKXRocm93IGh9fSxhYm9ydDpmdW5jdGlvbigpe2ImJmIoKX19OnZvaWQgMH0pLG4uYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ2xvYmFsRXZhbChhKSxhfX19KSxuLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSksbi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZCxlKXtiPW4oIjxzY3JpcHQ+IikucHJvcCh7YXN5bmM6ITAsY2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oYSl7Yi5yZW1vdmUoKSxjPW51bGwsYSYmZSgiZXJyb3IiPT09YS50eXBlPzQwNDoyMDAsYS50eXBlKX0pLGwuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX19KTt2YXIgRmM9W10sR2M9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9RmMucG9wKCl8fG4uZXhwYW5kbysiXyIrY2MrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKEdjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmR2MudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKEdjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPShkYy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssRmMucHVzaChlKSksZyYmbi5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fGw7dmFyIGQ9di5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW4uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbihlKS5yZW1vdmUoKSxuLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgSGM9bi5mbi5sb2FkO24uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZIYylyZXR1cm4gSGMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bi50cmltKGEuc2xpY2UoaCkpLGE9YS5zbGljZSgwLGgpKSxuLmlzRnVuY3Rpb24oYik/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZT0iUE9TVCIpLGcubGVuZ3RoPjAmJm4uYWpheCh7dXJsOmEsdHlwZTplLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP24oIjxkaXY+IikuYXBwZW5kKG4ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxmfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxuLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe24uZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxuLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbi5ncmVwKG4udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgSWM9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gSmMoYSl7cmV0dXJuIG4uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZSYmYS5kZWZhdWx0Vmlld31uLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW4uY3NzKGEsInBvc2l0aW9uIiksbD1uKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1uLmNzcyhhLCJ0b3AiKSxpPW4uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLG4uaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXRoaXNbMF0sZT17dG9wOjAsbGVmdDowfSxmPWQmJmQub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixkKT8odHlwZW9mIGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09VSYmKGU9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1KYyhmKSx7dG9wOmUudG9wK2MucGFnZVlPZmZzZXQtYi5jbGllbnRUb3AsbGVmdDplLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTplfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PW4uY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLG4ubm9kZU5hbWUoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkLnRvcCs9bi5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxkLmxlZnQrPW4uY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWQudG9wLW4uY3NzKGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1uLmNzcyhjLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fEljO3doaWxlKGEmJiFuLm5vZGVOYW1lKGEsImh0bWwiKSYmInN0YXRpYyI9PT1uLmNzcyhhLCJwb3NpdGlvbiIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fEljfSl9fSksbi5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGIsYyl7dmFyIGQ9InBhZ2VZT2Zmc2V0Ij09PWM7bi5mbltiXT1mdW5jdGlvbihlKXtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGIsZSxmKXt2YXIgZz1KYyhiKTtyZXR1cm4gdm9pZCAwPT09Zj9nP2dbY106YltlXTp2b2lkKGc/Zy5zY3JvbGxUbyhkP2EucGFnZVhPZmZzZXQ6ZixkP2Y6YS5wYWdlWU9mZnNldCk6YltlXT1mKX0sYixlLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbi5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT15YihrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz14YihhLGIpLHZiLnRlc3QoYyk/bihhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxuLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe24uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtuLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gSih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbi5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9uLmNzcyhiLGMsZyk6bi5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxuLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG4uZm4uYW5kU2VsZj1uLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIgS2M9YS5qUXVlcnksTGM9YS4kO3JldHVybiBuLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW4mJihhLiQ9TGMpLGImJmEualF1ZXJ5PT09biYmKGEualF1ZXJ5PUtjKSxufSx0eXBlb2YgYj09PVUmJihhLmpRdWVyeT1hLiQ9biksbn0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1qcXVlcnkubWluLm1hcA==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/moment.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8hIG1vbWVudC5qcwovLyEgdmVyc2lvbiA6IDIuOS4wCi8vISBhdXRob3JzIDogVGltIFdvb2QsIElza3JlbiBDaGVybmV2LCBNb21lbnQuanMgY29udHJpYnV0b3JzCi8vISBsaWNlbnNlIDogTUlUCi8vISBtb21lbnRqcy5jb20KKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGMpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDI6cmV0dXJuIG51bGwhPWE/YTpiO2Nhc2UgMzpyZXR1cm4gbnVsbCE9YT9hOm51bGwhPWI/YjpjO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbXBsZW1lbnQgbWUiKX19ZnVuY3Rpb24gYyhhLGIpe3JldHVybiBCYi5jYWxsKGEsYil9ZnVuY3Rpb24gZCgpe3JldHVybntlbXB0eTohMSx1bnVzZWRUb2tlbnM6W10sdW51c2VkSW5wdXQ6W10sb3ZlcmZsb3c6LTIsY2hhcnNMZWZ0T3ZlcjowLG51bGxJbnB1dDohMSxpbnZhbGlkTW9udGg6bnVsbCxpbnZhbGlkRm9ybWF0OiExLHVzZXJJbnZhbGlkYXRlZDohMSxpc286ITF9fWZ1bmN0aW9uIGUoYSl7dmIuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPT09ITEmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrYSl9ZnVuY3Rpb24gZihhLGIpe3ZhciBjPSEwO3JldHVybiBvKGZ1bmN0aW9uKCl7cmV0dXJuIGMmJihlKGEpLGM9ITEpLGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxiKX1mdW5jdGlvbiBnKGEsYil7c2NbYV18fChlKGIpLHNjW2FdPSEwKX1mdW5jdGlvbiBoKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiByKGEuY2FsbCh0aGlzLGMpLGIpfX1mdW5jdGlvbiBpKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGEuY2FsbCh0aGlzLGMpLGIpfX1mdW5jdGlvbiBqKGEsYil7dmFyIGMsZCxlPTEyKihiLnllYXIoKS1hLnllYXIoKSkrKGIubW9udGgoKS1hLm1vbnRoKCkpLGY9YS5jbG9uZSgpLmFkZChlLCJtb250aHMiKTtyZXR1cm4gMD5iLWY/KGM9YS5jbG9uZSgpLmFkZChlLTEsIm1vbnRocyIpLGQ9KGItZikvKGYtYykpOihjPWEuY2xvbmUoKS5hZGQoZSsxLCJtb250aHMiKSxkPShiLWYpLyhjLWYpKSwtKGUrZCl9ZnVuY3Rpb24gayhhLGIsYyl7dmFyIGQ7cmV0dXJuIG51bGw9PWM/YjpudWxsIT1hLm1lcmlkaWVtSG91cj9hLm1lcmlkaWVtSG91cihiLGMpOm51bGwhPWEuaXNQTT8oZD1hLmlzUE0oYyksZCYmMTI+YiYmKGIrPTEyKSxkfHwxMiE9PWJ8fChiPTApLGIpOmJ9ZnVuY3Rpb24gbCgpe31mdW5jdGlvbiBtKGEsYil7YiE9PSExJiZIKGEpLHAodGhpcyxhKSx0aGlzLl9kPW5ldyBEYXRlKCthLl9kKSx1Yz09PSExJiYodWM9ITAsdmIudXBkYXRlT2Zmc2V0KHRoaXMpLHVjPSExKX1mdW5jdGlvbiBuKGEpe3ZhciBiPUEoYSksYz1iLnllYXJ8fDAsZD1iLnF1YXJ0ZXJ8fDAsZT1iLm1vbnRofHwwLGY9Yi53ZWVrfHwwLGc9Yi5kYXl8fDAsaD1iLmhvdXJ8fDAsaT1iLm1pbnV0ZXx8MCxqPWIuc2Vjb25kfHwwLGs9Yi5taWxsaXNlY29uZHx8MDt0aGlzLl9taWxsaXNlY29uZHM9K2srMWUzKmorNmU0KmkrMzZlNSpoLHRoaXMuX2RheXM9K2crNypmLHRoaXMuX21vbnRocz0rZSszKmQrMTIqYyx0aGlzLl9kYXRhPXt9LHRoaXMuX2xvY2FsZT12Yi5sb2NhbGVEYXRhKCksdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gbyhhLGIpe2Zvcih2YXIgZCBpbiBiKWMoYixkKSYmKGFbZF09YltkXSk7cmV0dXJuIGMoYiwidG9TdHJpbmciKSYmKGEudG9TdHJpbmc9Yi50b1N0cmluZyksYyhiLCJ2YWx1ZU9mIikmJihhLnZhbHVlT2Y9Yi52YWx1ZU9mKSxhfWZ1bmN0aW9uIHAoYSxiKXt2YXIgYyxkLGU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9pc0FNb21lbnRPYmplY3QmJihhLl9pc0FNb21lbnRPYmplY3Q9Yi5faXNBTW9tZW50T2JqZWN0KSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX2kmJihhLl9pPWIuX2kpLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fZiYmKGEuX2Y9Yi5fZiksInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9sJiYoYS5fbD1iLl9sKSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX3N0cmljdCYmKGEuX3N0cmljdD1iLl9zdHJpY3QpLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fdHptJiYoYS5fdHptPWIuX3R6bSksInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9pc1VUQyYmKGEuX2lzVVRDPWIuX2lzVVRDKSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuX29mZnNldCYmKGEuX29mZnNldD1iLl9vZmZzZXQpLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fcGYmJihhLl9wZj1iLl9wZiksInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9sb2NhbGUmJihhLl9sb2NhbGU9Yi5fbG9jYWxlKSxLYi5sZW5ndGg+MClmb3IoYyBpbiBLYilkPUtiW2NdLGU9YltkXSwidW5kZWZpbmVkIiE9dHlwZW9mIGUmJihhW2RdPWUpO3JldHVybiBhfWZ1bmN0aW9uIHEoYSl7cmV0dXJuIDA+YT9NYXRoLmNlaWwoYSk6TWF0aC5mbG9vcihhKX1mdW5jdGlvbiByKGEsYixjKXtmb3IodmFyIGQ9IiIrTWF0aC5hYnMoYSksZT1hPj0wO2QubGVuZ3RoPGI7KWQ9IjAiK2Q7cmV0dXJuKGU/Yz8iKyI6IiI6Ii0iKStkfWZ1bmN0aW9uIHMoYSxiKXt2YXIgYz17bWlsbGlzZWNvbmRzOjAsbW9udGhzOjB9O3JldHVybiBjLm1vbnRocz1iLm1vbnRoKCktYS5tb250aCgpKzEyKihiLnllYXIoKS1hLnllYXIoKSksYS5jbG9uZSgpLmFkZChjLm1vbnRocywiTSIpLmlzQWZ0ZXIoYikmJi0tYy5tb250aHMsYy5taWxsaXNlY29uZHM9K2ItK2EuY2xvbmUoKS5hZGQoYy5tb250aHMsIk0iKSxjfWZ1bmN0aW9uIHQoYSxiKXt2YXIgYztyZXR1cm4gYj1NKGIsYSksYS5pc0JlZm9yZShiKT9jPXMoYSxiKTooYz1zKGIsYSksYy5taWxsaXNlY29uZHM9LWMubWlsbGlzZWNvbmRzLGMubW9udGhzPS1jLm1vbnRocyksY31mdW5jdGlvbiB1KGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMsZCl7dmFyIGUsZjtyZXR1cm4gbnVsbD09PWR8fGlzTmFOKCtkKXx8KGcoYiwibW9tZW50KCkuIitiKyIocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuIitiKyIobnVtYmVyLCBwZXJpb2QpLiIpLGY9YyxjPWQsZD1mKSxjPSJzdHJpbmciPT10eXBlb2YgYz8rYzpjLGU9dmIuZHVyYXRpb24oYyxkKSx2KHRoaXMsZSxhKSx0aGlzfX1mdW5jdGlvbiB2KGEsYixjLGQpe3ZhciBlPWIuX21pbGxpc2Vjb25kcyxmPWIuX2RheXMsZz1iLl9tb250aHM7ZD1udWxsPT1kPyEwOmQsZSYmYS5fZC5zZXRUaW1lKCthLl9kK2UqYyksZiYmcGIoYSwiRGF0ZSIsb2IoYSwiRGF0ZSIpK2YqYyksZyYmbmIoYSxvYihhLCJNb250aCIpK2cqYyksZCYmdmIudXBkYXRlT2Zmc2V0KGEsZnx8Zyl9ZnVuY3Rpb24gdyhhKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIHgoYSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfHxhIGluc3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiB5KGEsYixjKXt2YXIgZCxlPU1hdGgubWluKGEubGVuZ3RoLGIubGVuZ3RoKSxmPU1hdGguYWJzKGEubGVuZ3RoLWIubGVuZ3RoKSxnPTA7Zm9yKGQ9MDtlPmQ7ZCsrKShjJiZhW2RdIT09YltkXXx8IWMmJkMoYVtkXSkhPT1DKGJbZF0pKSYmZysrO3JldHVybiBnK2Z9ZnVuY3Rpb24geihhKXtpZihhKXt2YXIgYj1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKC4pcyQvLCIkMSIpO2E9bGNbYV18fG1jW2JdfHxifXJldHVybiBhfWZ1bmN0aW9uIEEoYSl7dmFyIGIsZCxlPXt9O2ZvcihkIGluIGEpYyhhLGQpJiYoYj16KGQpLGImJihlW2JdPWFbZF0pKTtyZXR1cm4gZX1mdW5jdGlvbiBCKGIpe3ZhciBjLGQ7aWYoMD09PWIuaW5kZXhPZigid2VlayIpKWM9NyxkPSJkYXkiO2Vsc2V7aWYoMCE9PWIuaW5kZXhPZigibW9udGgiKSlyZXR1cm47Yz0xMixkPSJtb250aCJ9dmJbYl09ZnVuY3Rpb24oZSxmKXt2YXIgZyxoLGk9dmIuX2xvY2FsZVtiXSxqPVtdO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmKGY9ZSxlPWEpLGg9ZnVuY3Rpb24oYSl7dmFyIGI9dmIoKS51dGMoKS5zZXQoZCxhKTtyZXR1cm4gaS5jYWxsKHZiLl9sb2NhbGUsYixlfHwiIil9LG51bGwhPWYpcmV0dXJuIGgoZik7Zm9yKGc9MDtjPmc7ZysrKWoucHVzaChoKGcpKTtyZXR1cm4gan19ZnVuY3Rpb24gQyhhKXt2YXIgYj0rYSxjPTA7cmV0dXJuIDAhPT1iJiZpc0Zpbml0ZShiKSYmKGM9Yj49MD9NYXRoLmZsb29yKGIpOk1hdGguY2VpbChiKSksY31mdW5jdGlvbiBEKGEsYil7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGEsYisxLDApKS5nZXRVVENEYXRlKCl9ZnVuY3Rpb24gRShhLGIsYyl7cmV0dXJuIGpiKHZiKFthLDExLDMxK2ItY10pLGIsYykud2Vla31mdW5jdGlvbiBGKGEpe3JldHVybiBHKGEpPzM2NjozNjV9ZnVuY3Rpb24gRyhhKXtyZXR1cm4gYSU0PT09MCYmYSUxMDAhPT0wfHxhJTQwMD09PTB9ZnVuY3Rpb24gSChhKXt2YXIgYjthLl9hJiYtMj09PWEuX3BmLm92ZXJmbG93JiYoYj1hLl9hW0RiXTwwfHxhLl9hW0RiXT4xMT9EYjphLl9hW0ViXTwxfHxhLl9hW0ViXT5EKGEuX2FbQ2JdLGEuX2FbRGJdKT9FYjphLl9hW0ZiXTwwfHxhLl9hW0ZiXT4yNHx8MjQ9PT1hLl9hW0ZiXSYmKDAhPT1hLl9hW0diXXx8MCE9PWEuX2FbSGJdfHwwIT09YS5fYVtJYl0pP0ZiOmEuX2FbR2JdPDB8fGEuX2FbR2JdPjU5P0diOmEuX2FbSGJdPDB8fGEuX2FbSGJdPjU5P0hiOmEuX2FbSWJdPDB8fGEuX2FbSWJdPjk5OT9JYjotMSxhLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXImJihDYj5ifHxiPkViKSYmKGI9RWIpLGEuX3BmLm92ZXJmbG93PWIpfWZ1bmN0aW9uIEkoYil7cmV0dXJuIG51bGw9PWIuX2lzVmFsaWQmJihiLl9pc1ZhbGlkPSFpc05hTihiLl9kLmdldFRpbWUoKSkmJmIuX3BmLm92ZXJmbG93PDAmJiFiLl9wZi5lbXB0eSYmIWIuX3BmLmludmFsaWRNb250aCYmIWIuX3BmLm51bGxJbnB1dCYmIWIuX3BmLmludmFsaWRGb3JtYXQmJiFiLl9wZi51c2VySW52YWxpZGF0ZWQsYi5fc3RyaWN0JiYoYi5faXNWYWxpZD1iLl9pc1ZhbGlkJiYwPT09Yi5fcGYuY2hhcnNMZWZ0T3ZlciYmMD09PWIuX3BmLnVudXNlZFRva2Vucy5sZW5ndGgmJmIuX3BmLmJpZ0hvdXI9PT1hKSksYi5faXNWYWxpZH1mdW5jdGlvbiBKKGEpe3JldHVybiBhP2EudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCJfIiwiLSIpOmF9ZnVuY3Rpb24gSyhhKXtmb3IodmFyIGIsYyxkLGUsZj0wO2Y8YS5sZW5ndGg7KXtmb3IoZT1KKGFbZl0pLnNwbGl0KCItIiksYj1lLmxlbmd0aCxjPUooYVtmKzFdKSxjPWM/Yy5zcGxpdCgiLSIpOm51bGw7Yj4wOyl7aWYoZD1MKGUuc2xpY2UoMCxiKS5qb2luKCItIikpKXJldHVybiBkO2lmKGMmJmMubGVuZ3RoPj1iJiZ5KGUsYywhMCk+PWItMSlicmVhaztiLS19ZisrfXJldHVybiBudWxsfWZ1bmN0aW9uIEwoYSl7dmFyIGI9bnVsbDtpZighSmJbYV0mJkxiKXRyeXtiPXZiLmxvY2FsZSgpLHJlcXVpcmUoIi4vbG9jYWxlLyIrYSksdmIubG9jYWxlKGIpfWNhdGNoKGMpe31yZXR1cm4gSmJbYV19ZnVuY3Rpb24gTShhLGIpe3ZhciBjLGQ7cmV0dXJuIGIuX2lzVVRDPyhjPWIuY2xvbmUoKSxkPSh2Yi5pc01vbWVudChhKXx8eChhKT8rYTordmIoYSkpLStjLGMuX2Quc2V0VGltZSgrYy5fZCtkKSx2Yi51cGRhdGVPZmZzZXQoYywhMSksYyk6dmIoYSkubG9jYWwoKX1mdW5jdGlvbiBOKGEpe3JldHVybiBhLm1hdGNoKC9cW1tcc1xTXS8pP2EucmVwbGFjZSgvXlxbfFxdJC9nLCIiKTphLnJlcGxhY2UoL1xcL2csIiIpfWZ1bmN0aW9uIE8oYSl7dmFyIGIsYyxkPWEubWF0Y2goUGIpO2ZvcihiPTAsYz1kLmxlbmd0aDtjPmI7YisrKWRbYl09cmNbZFtiXV0/cmNbZFtiXV06TihkW2JdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGY9IiI7Zm9yKGI9MDtjPmI7YisrKWYrPWRbYl1pbnN0YW5jZW9mIEZ1bmN0aW9uP2RbYl0uY2FsbChlLGEpOmRbYl07cmV0dXJuIGZ9fWZ1bmN0aW9uIFAoYSxiKXtyZXR1cm4gYS5pc1ZhbGlkKCk/KGI9UShiLGEubG9jYWxlRGF0YSgpKSxuY1tiXXx8KG5jW2JdPU8oYikpLG5jW2JdKGEpKTphLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIFEoYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBiLmxvbmdEYXRlRm9ybWF0KGEpfHxhfXZhciBkPTU7Zm9yKFFiLmxhc3RJbmRleD0wO2Q+PTAmJlFiLnRlc3QoYSk7KWE9YS5yZXBsYWNlKFFiLGMpLFFiLmxhc3RJbmRleD0wLGQtPTE7cmV0dXJuIGF9ZnVuY3Rpb24gUihhLGIpe3ZhciBjLGQ9Yi5fc3RyaWN0O3N3aXRjaChhKXtjYXNlIlEiOnJldHVybiBfYjtjYXNlIkREREQiOnJldHVybiBiYztjYXNlIllZWVkiOmNhc2UiR0dHRyI6Y2FzZSJnZ2dnIjpyZXR1cm4gZD9jYzpUYjtjYXNlIlkiOmNhc2UiRyI6Y2FzZSJnIjpyZXR1cm4gZWM7Y2FzZSJZWVlZWVkiOmNhc2UiWVlZWVkiOmNhc2UiR0dHR0ciOmNhc2UiZ2dnZ2ciOnJldHVybiBkP2RjOlViO2Nhc2UiUyI6aWYoZClyZXR1cm4gX2I7Y2FzZSJTUyI6aWYoZClyZXR1cm4gYWM7Y2FzZSJTU1MiOmlmKGQpcmV0dXJuIGJjO2Nhc2UiREREIjpyZXR1cm4gU2I7Y2FzZSJNTU0iOmNhc2UiTU1NTSI6Y2FzZSJkZCI6Y2FzZSJkZGQiOmNhc2UiZGRkZCI6cmV0dXJuIFdiO2Nhc2UiYSI6Y2FzZSJBIjpyZXR1cm4gYi5fbG9jYWxlLl9tZXJpZGllbVBhcnNlO2Nhc2UieCI6cmV0dXJuIFpiO2Nhc2UiWCI6cmV0dXJuICRiO2Nhc2UiWiI6Y2FzZSJaWiI6cmV0dXJuIFhiO2Nhc2UiVCI6cmV0dXJuIFliO2Nhc2UiU1NTUyI6cmV0dXJuIFZiO2Nhc2UiTU0iOmNhc2UiREQiOmNhc2UiWVkiOmNhc2UiR0ciOmNhc2UiZ2ciOmNhc2UiSEgiOmNhc2UiaGgiOmNhc2UibW0iOmNhc2Uic3MiOmNhc2Uid3ciOmNhc2UiV1ciOnJldHVybiBkP2FjOlJiO2Nhc2UiTSI6Y2FzZSJEIjpjYXNlImQiOmNhc2UiSCI6Y2FzZSJoIjpjYXNlIm0iOmNhc2UicyI6Y2FzZSJ3IjpjYXNlIlciOmNhc2UiZSI6Y2FzZSJFIjpyZXR1cm4gUmI7Y2FzZSJEbyI6cmV0dXJuIGQ/Yi5fbG9jYWxlLl9vcmRpbmFsUGFyc2U6Yi5fbG9jYWxlLl9vcmRpbmFsUGFyc2VMZW5pZW50O2RlZmF1bHQ6cmV0dXJuIGM9bmV3IFJlZ0V4cCgkKFooYS5yZXBsYWNlKCJcXCIsIiIpKSwiaSIpKX19ZnVuY3Rpb24gUyhhKXthPWF8fCIiO3ZhciBiPWEubWF0Y2goWGIpfHxbXSxjPWJbYi5sZW5ndGgtMV18fFtdLGQ9KGMrIiIpLm1hdGNoKGpjKXx8WyItIiwwLDBdLGU9Kyg2MCpkWzFdKStDKGRbMl0pO3JldHVybiIrIj09PWRbMF0/ZTotZX1mdW5jdGlvbiBUKGEsYixjKXt2YXIgZCxlPWMuX2E7c3dpdGNoKGEpe2Nhc2UiUSI6bnVsbCE9YiYmKGVbRGJdPTMqKEMoYiktMSkpO2JyZWFrO2Nhc2UiTSI6Y2FzZSJNTSI6bnVsbCE9YiYmKGVbRGJdPUMoYiktMSk7YnJlYWs7Y2FzZSJNTU0iOmNhc2UiTU1NTSI6ZD1jLl9sb2NhbGUubW9udGhzUGFyc2UoYixhLGMuX3N0cmljdCksbnVsbCE9ZD9lW0RiXT1kOmMuX3BmLmludmFsaWRNb250aD1iO2JyZWFrO2Nhc2UiRCI6Y2FzZSJERCI6bnVsbCE9YiYmKGVbRWJdPUMoYikpO2JyZWFrO2Nhc2UiRG8iOm51bGwhPWImJihlW0ViXT1DKHBhcnNlSW50KGIubWF0Y2goL1xkezEsMn0vKVswXSwxMCkpKTticmVhaztjYXNlIkRERCI6Y2FzZSJEREREIjpudWxsIT1iJiYoYy5fZGF5T2ZZZWFyPUMoYikpO2JyZWFrO2Nhc2UiWVkiOmVbQ2JdPXZiLnBhcnNlVHdvRGlnaXRZZWFyKGIpO2JyZWFrO2Nhc2UiWVlZWSI6Y2FzZSJZWVlZWSI6Y2FzZSJZWVlZWVkiOmVbQ2JdPUMoYik7YnJlYWs7Y2FzZSJhIjpjYXNlIkEiOmMuX21lcmlkaWVtPWI7YnJlYWs7Y2FzZSJoIjpjYXNlImhoIjpjLl9wZi5iaWdIb3VyPSEwO2Nhc2UiSCI6Y2FzZSJISCI6ZVtGYl09QyhiKTticmVhaztjYXNlIm0iOmNhc2UibW0iOmVbR2JdPUMoYik7YnJlYWs7Y2FzZSJzIjpjYXNlInNzIjplW0hiXT1DKGIpO2JyZWFrO2Nhc2UiUyI6Y2FzZSJTUyI6Y2FzZSJTU1MiOmNhc2UiU1NTUyI6ZVtJYl09QygxZTMqKCIwLiIrYikpO2JyZWFrO2Nhc2UieCI6Yy5fZD1uZXcgRGF0ZShDKGIpKTticmVhaztjYXNlIlgiOmMuX2Q9bmV3IERhdGUoMWUzKnBhcnNlRmxvYXQoYikpO2JyZWFrO2Nhc2UiWiI6Y2FzZSJaWiI6Yy5fdXNlVVRDPSEwLGMuX3R6bT1TKGIpO2JyZWFrO2Nhc2UiZGQiOmNhc2UiZGRkIjpjYXNlImRkZGQiOmQ9Yy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoYiksbnVsbCE9ZD8oYy5fdz1jLl93fHx7fSxjLl93LmQ9ZCk6Yy5fcGYuaW52YWxpZFdlZWtkYXk9YjticmVhaztjYXNlInciOmNhc2Uid3ciOmNhc2UiVyI6Y2FzZSJXVyI6Y2FzZSJkIjpjYXNlImUiOmNhc2UiRSI6YT1hLnN1YnN0cigwLDEpO2Nhc2UiZ2dnZyI6Y2FzZSJHR0dHIjpjYXNlIkdHR0dHIjphPWEuc3Vic3RyKDAsMiksYiYmKGMuX3c9Yy5fd3x8e30sYy5fd1thXT1DKGIpKTticmVhaztjYXNlImdnIjpjYXNlIkdHIjpjLl93PWMuX3d8fHt9LGMuX3dbYV09dmIucGFyc2VUd29EaWdpdFllYXIoYil9fWZ1bmN0aW9uIFUoYSl7dmFyIGMsZCxlLGYsZyxoLGk7Yz1hLl93LG51bGwhPWMuR0d8fG51bGwhPWMuV3x8bnVsbCE9Yy5FPyhnPTEsaD00LGQ9YihjLkdHLGEuX2FbQ2JdLGpiKHZiKCksMSw0KS55ZWFyKSxlPWIoYy5XLDEpLGY9YihjLkUsMSkpOihnPWEuX2xvY2FsZS5fd2Vlay5kb3csaD1hLl9sb2NhbGUuX3dlZWsuZG95LGQ9YihjLmdnLGEuX2FbQ2JdLGpiKHZiKCksZyxoKS55ZWFyKSxlPWIoYy53LDEpLG51bGwhPWMuZD8oZj1jLmQsZz5mJiYrK2UpOmY9bnVsbCE9Yy5lP2MuZStnOmcpLGk9a2IoZCxlLGYsaCxnKSxhLl9hW0NiXT1pLnllYXIsYS5fZGF5T2ZZZWFyPWkuZGF5T2ZZZWFyfWZ1bmN0aW9uIFYoYSl7dmFyIGMsZCxlLGYsZz1bXTtpZighYS5fZCl7Zm9yKGU9WChhKSxhLl93JiZudWxsPT1hLl9hW0ViXSYmbnVsbD09YS5fYVtEYl0mJlUoYSksYS5fZGF5T2ZZZWFyJiYoZj1iKGEuX2FbQ2JdLGVbQ2JdKSxhLl9kYXlPZlllYXI+RihmKSYmKGEuX3BmLl9vdmVyZmxvd0RheU9mWWVhcj0hMCksZD1mYihmLDAsYS5fZGF5T2ZZZWFyKSxhLl9hW0RiXT1kLmdldFVUQ01vbnRoKCksYS5fYVtFYl09ZC5nZXRVVENEYXRlKCkpLGM9MDszPmMmJm51bGw9PWEuX2FbY107KytjKWEuX2FbY109Z1tjXT1lW2NdO2Zvcig7Nz5jO2MrKylhLl9hW2NdPWdbY109bnVsbD09YS5fYVtjXT8yPT09Yz8xOjA6YS5fYVtjXTsyND09PWEuX2FbRmJdJiYwPT09YS5fYVtHYl0mJjA9PT1hLl9hW0hiXSYmMD09PWEuX2FbSWJdJiYoYS5fbmV4dERheT0hMCxhLl9hW0ZiXT0wKSxhLl9kPShhLl91c2VVVEM/ZmI6ZWIpLmFwcGx5KG51bGwsZyksbnVsbCE9YS5fdHptJiZhLl9kLnNldFVUQ01pbnV0ZXMoYS5fZC5nZXRVVENNaW51dGVzKCktYS5fdHptKSxhLl9uZXh0RGF5JiYoYS5fYVtGYl09MjQpfX1mdW5jdGlvbiBXKGEpe3ZhciBiO2EuX2R8fChiPUEoYS5faSksYS5fYT1bYi55ZWFyLGIubW9udGgsYi5kYXl8fGIuZGF0ZSxiLmhvdXIsYi5taW51dGUsYi5zZWNvbmQsYi5taWxsaXNlY29uZF0sVihhKSl9ZnVuY3Rpb24gWChhKXt2YXIgYj1uZXcgRGF0ZTtyZXR1cm4gYS5fdXNlVVRDP1tiLmdldFVUQ0Z1bGxZZWFyKCksYi5nZXRVVENNb250aCgpLGIuZ2V0VVRDRGF0ZSgpXTpbYi5nZXRGdWxsWWVhcigpLGIuZ2V0TW9udGgoKSxiLmdldERhdGUoKV19ZnVuY3Rpb24gWShiKXtpZihiLl9mPT09dmIuSVNPXzg2MDEpcmV0dXJuIHZvaWQgYWIoYik7Yi5fYT1bXSxiLl9wZi5lbXB0eT0hMDt2YXIgYyxkLGUsZixnLGg9IiIrYi5faSxpPWgubGVuZ3RoLGo9MDtmb3IoZT1RKGIuX2YsYi5fbG9jYWxlKS5tYXRjaChQYil8fFtdLGM9MDtjPGUubGVuZ3RoO2MrKylmPWVbY10sZD0oaC5tYXRjaChSKGYsYikpfHxbXSlbMF0sZCYmKGc9aC5zdWJzdHIoMCxoLmluZGV4T2YoZCkpLGcubGVuZ3RoPjAmJmIuX3BmLnVudXNlZElucHV0LnB1c2goZyksaD1oLnNsaWNlKGguaW5kZXhPZihkKStkLmxlbmd0aCksais9ZC5sZW5ndGgpLHJjW2ZdPyhkP2IuX3BmLmVtcHR5PSExOmIuX3BmLnVudXNlZFRva2Vucy5wdXNoKGYpLFQoZixkLGIpKTpiLl9zdHJpY3QmJiFkJiZiLl9wZi51bnVzZWRUb2tlbnMucHVzaChmKTtiLl9wZi5jaGFyc0xlZnRPdmVyPWktaixoLmxlbmd0aD4wJiZiLl9wZi51bnVzZWRJbnB1dC5wdXNoKGgpLGIuX3BmLmJpZ0hvdXI9PT0hMCYmYi5fYVtGYl08PTEyJiYoYi5fcGYuYmlnSG91cj1hKSxiLl9hW0ZiXT1rKGIuX2xvY2FsZSxiLl9hW0ZiXSxiLl9tZXJpZGllbSksVihiKSxIKGIpfWZ1bmN0aW9uIFooYSl7cmV0dXJuIGEucmVwbGFjZSgvXFwoXFspfFxcKFxdKXxcWyhbXlxdXFtdKilcXXxcXCguKS9nLGZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGJ8fGN8fGR8fGV9KX1mdW5jdGlvbiAkKGEpe3JldHVybiBhLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9ZnVuY3Rpb24gXyhhKXt2YXIgYixjLGUsZixnO2lmKDA9PT1hLl9mLmxlbmd0aClyZXR1cm4gYS5fcGYuaW52YWxpZEZvcm1hdD0hMCx2b2lkKGEuX2Q9bmV3IERhdGUoMC8wKSk7Zm9yKGY9MDtmPGEuX2YubGVuZ3RoO2YrKylnPTAsYj1wKHt9LGEpLG51bGwhPWEuX3VzZVVUQyYmKGIuX3VzZVVUQz1hLl91c2VVVEMpLGIuX3BmPWQoKSxiLl9mPWEuX2ZbZl0sWShiKSxJKGIpJiYoZys9Yi5fcGYuY2hhcnNMZWZ0T3ZlcixnKz0xMCpiLl9wZi51bnVzZWRUb2tlbnMubGVuZ3RoLGIuX3BmLnNjb3JlPWcsKG51bGw9PWV8fGU+ZykmJihlPWcsYz1iKSk7byhhLGN8fGIpfWZ1bmN0aW9uIGFiKGEpe3ZhciBiLGMsZD1hLl9pLGU9ZmMuZXhlYyhkKTtpZihlKXtmb3IoYS5fcGYuaXNvPSEwLGI9MCxjPWhjLmxlbmd0aDtjPmI7YisrKWlmKGhjW2JdWzFdLmV4ZWMoZCkpe2EuX2Y9aGNbYl1bMF0rKGVbNl18fCIgIik7YnJlYWt9Zm9yKGI9MCxjPWljLmxlbmd0aDtjPmI7YisrKWlmKGljW2JdWzFdLmV4ZWMoZCkpe2EuX2YrPWljW2JdWzBdO2JyZWFrfWQubWF0Y2goWGIpJiYoYS5fZis9IloiKSxZKGEpfWVsc2UgYS5faXNWYWxpZD0hMX1mdW5jdGlvbiBiYihhKXthYihhKSxhLl9pc1ZhbGlkPT09ITEmJihkZWxldGUgYS5faXNWYWxpZCx2Yi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhhKSl9ZnVuY3Rpb24gY2IoYSxiKXt2YXIgYyxkPVtdO2ZvcihjPTA7YzxhLmxlbmd0aDsrK2MpZC5wdXNoKGIoYVtjXSxjKSk7cmV0dXJuIGR9ZnVuY3Rpb24gZGIoYil7dmFyIGMsZD1iLl9pO2Q9PT1hP2IuX2Q9bmV3IERhdGU6eChkKT9iLl9kPW5ldyBEYXRlKCtkKTpudWxsIT09KGM9TWIuZXhlYyhkKSk/Yi5fZD1uZXcgRGF0ZSgrY1sxXSk6InN0cmluZyI9PXR5cGVvZiBkP2JiKGIpOncoZCk/KGIuX2E9Y2IoZC5zbGljZSgwKSxmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VJbnQoYSwxMCl9KSxWKGIpKToib2JqZWN0Ij09dHlwZW9mIGQ/VyhiKToibnVtYmVyIj09dHlwZW9mIGQ/Yi5fZD1uZXcgRGF0ZShkKTp2Yi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhiKX1mdW5jdGlvbiBlYihhLGIsYyxkLGUsZixnKXt2YXIgaD1uZXcgRGF0ZShhLGIsYyxkLGUsZixnKTtyZXR1cm4gMTk3MD5hJiZoLnNldEZ1bGxZZWFyKGEpLGh9ZnVuY3Rpb24gZmIoYSl7dmFyIGI9bmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCxhcmd1bWVudHMpKTtyZXR1cm4gMTk3MD5hJiZiLnNldFVUQ0Z1bGxZZWFyKGEpLGJ9ZnVuY3Rpb24gZ2IoYSxiKXtpZigic3RyaW5nIj09dHlwZW9mIGEpaWYoaXNOYU4oYSkpe2lmKGE9Yi53ZWVrZGF5c1BhcnNlKGEpLCJudW1iZXIiIT10eXBlb2YgYSlyZXR1cm4gbnVsbH1lbHNlIGE9cGFyc2VJbnQoYSwxMCk7cmV0dXJuIGF9ZnVuY3Rpb24gaGIoYSxiLGMsZCxlKXtyZXR1cm4gZS5yZWxhdGl2ZVRpbWUoYnx8MSwhIWMsYSxkKX1mdW5jdGlvbiBpYihhLGIsYyl7dmFyIGQ9dmIuZHVyYXRpb24oYSkuYWJzKCksZT1BYihkLmFzKCJzIikpLGY9QWIoZC5hcygibSIpKSxnPUFiKGQuYXMoImgiKSksaD1BYihkLmFzKCJkIikpLGk9QWIoZC5hcygiTSIpKSxqPUFiKGQuYXMoInkiKSksaz1lPG9jLnMmJlsicyIsZV18fDE9PT1mJiZbIm0iXXx8ZjxvYy5tJiZbIm1tIixmXXx8MT09PWcmJlsiaCJdfHxnPG9jLmgmJlsiaGgiLGddfHwxPT09aCYmWyJkIl18fGg8b2MuZCYmWyJkZCIsaF18fDE9PT1pJiZbIk0iXXx8aTxvYy5NJiZbIk1NIixpXXx8MT09PWomJlsieSJdfHxbInl5IixqXTtyZXR1cm4ga1syXT1iLGtbM109K2E+MCxrWzRdPWMsaGIuYXBwbHkoe30sayl9ZnVuY3Rpb24gamIoYSxiLGMpe3ZhciBkLGU9Yy1iLGY9Yy1hLmRheSgpO3JldHVybiBmPmUmJihmLT03KSxlLTc+ZiYmKGYrPTcpLGQ9dmIoYSkuYWRkKGYsImQiKSx7d2VlazpNYXRoLmNlaWwoZC5kYXlPZlllYXIoKS83KSx5ZWFyOmQueWVhcigpfX1mdW5jdGlvbiBrYihhLGIsYyxkLGUpe3ZhciBmLGcsaD1mYihhLDAsMSkuZ2V0VVRDRGF5KCk7cmV0dXJuIGg9MD09PWg/NzpoLGM9bnVsbCE9Yz9jOmUsZj1lLWgrKGg+ZD83OjApLShlPmg/NzowKSxnPTcqKGItMSkrKGMtZSkrZisxLHt5ZWFyOmc+MD9hOmEtMSxkYXlPZlllYXI6Zz4wP2c6RihhLTEpK2d9fWZ1bmN0aW9uIGxiKGIpe3ZhciBjLGQ9Yi5faSxlPWIuX2Y7cmV0dXJuIGIuX2xvY2FsZT1iLl9sb2NhbGV8fHZiLmxvY2FsZURhdGEoYi5fbCksbnVsbD09PWR8fGU9PT1hJiYiIj09PWQ/dmIuaW52YWxpZCh7bnVsbElucHV0OiEwfSk6KCJzdHJpbmciPT10eXBlb2YgZCYmKGIuX2k9ZD1iLl9sb2NhbGUucHJlcGFyc2UoZCkpLHZiLmlzTW9tZW50KGQpP25ldyBtKGQsITApOihlP3coZSk/XyhiKTpZKGIpOmRiKGIpLGM9bmV3IG0oYiksYy5fbmV4dERheSYmKGMuYWRkKDEsImQiKSxjLl9uZXh0RGF5PWEpLGMpKX1mdW5jdGlvbiBtYihhLGIpe3ZhciBjLGQ7aWYoMT09PWIubGVuZ3RoJiZ3KGJbMF0pJiYoYj1iWzBdKSwhYi5sZW5ndGgpcmV0dXJuIHZiKCk7Zm9yKGM9YlswXSxkPTE7ZDxiLmxlbmd0aDsrK2QpYltkXVthXShjKSYmKGM9YltkXSk7cmV0dXJuIGN9ZnVuY3Rpb24gbmIoYSxiKXt2YXIgYztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihiPWEubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKGIpLCJudW1iZXIiIT10eXBlb2YgYik/YTooYz1NYXRoLm1pbihhLmRhdGUoKSxEKGEueWVhcigpLGIpKSxhLl9kWyJzZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrIk1vbnRoIl0oYixjKSxhKX1mdW5jdGlvbiBvYihhLGIpe3JldHVybiBhLl9kWyJnZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrYl0oKX1mdW5jdGlvbiBwYihhLGIsYyl7cmV0dXJuIk1vbnRoIj09PWI/bmIoYSxjKTphLl9kWyJzZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrYl0oYyl9ZnVuY3Rpb24gcWIoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIG51bGwhPWM/KHBiKHRoaXMsYSxjKSx2Yi51cGRhdGVPZmZzZXQodGhpcyxiKSx0aGlzKTpvYih0aGlzLGEpfX1mdW5jdGlvbiByYihhKXtyZXR1cm4gNDAwKmEvMTQ2MDk3fWZ1bmN0aW9uIHNiKGEpe3JldHVybiAxNDYwOTcqYS80MDB9ZnVuY3Rpb24gdGIoYSl7dmIuZHVyYXRpb24uZm5bYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YVthXX19ZnVuY3Rpb24gdWIoYSl7InVuZGVmaW5lZCI9PXR5cGVvZiBlbmRlciYmKHdiPXpiLm1vbWVudCx6Yi5tb21lbnQ9YT9mKCJBY2Nlc3NpbmcgTW9tZW50IHRocm91Z2ggdGhlIGdsb2JhbCBzY29wZSBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIHJlbGVhc2UuIix2Yik6dmIpfWZvcih2YXIgdmIsd2IseGIseWI9IjIuOS4wIix6Yj0idW5kZWZpbmVkIj09dHlwZW9mIGdsb2JhbHx8InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdyE9PWdsb2JhbC53aW5kb3c/dGhpczpnbG9iYWwsQWI9TWF0aC5yb3VuZCxCYj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LENiPTAsRGI9MSxFYj0yLEZiPTMsR2I9NCxIYj01LEliPTYsSmI9e30sS2I9W10sTGI9InVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmbW9kdWxlLmV4cG9ydHMsTWI9L15cLz9EYXRlXCgoXC0/XGQrKS9pLE5iPS8oXC0pPyg/OihcZCopXC4pPyhcZCspXDooXGQrKSg/Olw6KFxkKylcLj8oXGR7M30pPyk/LyxPYj0vXigtKT9QKD86KD86KFswLTksLl0qKVkpPyg/OihbMC05LC5dKilNKT8oPzooWzAtOSwuXSopRCk/KD86VCg/OihbMC05LC5dKilIKT8oPzooWzAtOSwuXSopTSk/KD86KFswLTksLl0qKVMpPyk/fChbMC05LC5dKilXKSQvLFBiPS8oXFtbXlxbXSpcXSl8KFxcKT8oTW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UXxZWVlZWVl8WVlZWVl8WVlZWXxZWXxnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xtbT98c3M/fFN7MSw0fXx4fFh8eno/fFpaP3wuKS9nLFFiPS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLFJiPS9cZFxkPy8sU2I9L1xkezEsM30vLFRiPS9cZHsxLDR9LyxVYj0vWytcLV0/XGR7MSw2fS8sVmI9L1xkKy8sV2I9L1swLTldKlsnYS16XHUwMEEwLVx1MDVGRlx1MDcwMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0rfFtcdTA2MDAtXHUwNkZGXC9dKyhccyo/W1x1MDYwMC1cdTA2RkZdKyl7MSwyfS9pLFhiPS9afFtcK1wtXVxkXGQ6P1xkXGQvZ2ksWWI9L1QvaSxaYj0vW1wrXC1dP1xkKy8sJGI9L1tcK1wtXT9cZCsoXC5cZHsxLDN9KT8vLF9iPS9cZC8sYWM9L1xkXGQvLGJjPS9cZHszfS8sY2M9L1xkezR9LyxkYz0vWystXT9cZHs2fS8sZWM9L1srLV0/XGQrLyxmYz0vXlxzKig/OlsrLV1cZHs2fXxcZHs0fSktKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLGdjPSJZWVlZLU1NLUREVEhIOm1tOnNzWiIsaGM9W1siWVlZWVlZLU1NLUREIiwvWystXVxkezZ9LVxkezJ9LVxkezJ9L10sWyJZWVlZLU1NLUREIiwvXGR7NH0tXGR7Mn0tXGR7Mn0vXSxbIkdHR0ctW1ddV1ctRSIsL1xkezR9LVdcZHsyfS1cZC9dLFsiR0dHRy1bV11XVyIsL1xkezR9LVdcZHsyfS9dLFsiWVlZWS1EREQiLC9cZHs0fS1cZHszfS9dXSxpYz1bWyJISDptbTpzcy5TU1NTIiwvKFR8IClcZFxkOlxkXGQ6XGRcZFwuXGQrL10sWyJISDptbTpzcyIsLyhUfCApXGRcZDpcZFxkOlxkXGQvXSxbIkhIOm1tIiwvKFR8IClcZFxkOlxkXGQvXSxbIkhIIiwvKFR8IClcZFxkL11dLGpjPS8oW1wrXC1dfFxkXGQpL2dpLGtjPSgiRGF0ZXxIb3Vyc3xNaW51dGVzfFNlY29uZHN8TWlsbGlzZWNvbmRzIi5zcGxpdCgifCIpLHtNaWxsaXNlY29uZHM6MSxTZWNvbmRzOjFlMyxNaW51dGVzOjZlNCxIb3VyczozNmU1LERheXM6ODY0ZTUsTW9udGhzOjI1OTJlNixZZWFyczozMTUzNmU2fSksbGM9e21zOiJtaWxsaXNlY29uZCIsczoic2Vjb25kIixtOiJtaW51dGUiLGg6ImhvdXIiLGQ6ImRheSIsRDoiZGF0ZSIsdzoid2VlayIsVzoiaXNvV2VlayIsTToibW9udGgiLFE6InF1YXJ0ZXIiLHk6InllYXIiLERERDoiZGF5T2ZZZWFyIixlOiJ3ZWVrZGF5IixFOiJpc29XZWVrZGF5IixnZzoid2Vla1llYXIiLEdHOiJpc29XZWVrWWVhciJ9LG1jPXtkYXlvZnllYXI6ImRheU9mWWVhciIsaXNvd2Vla2RheToiaXNvV2Vla2RheSIsaXNvd2VlazoiaXNvV2VlayIsd2Vla3llYXI6IndlZWtZZWFyIixpc293ZWVreWVhcjoiaXNvV2Vla1llYXIifSxuYz17fSxvYz17czo0NSxtOjQ1LGg6MjIsZDoyNixNOjExfSxwYz0iREREIHcgVyBNIEQgZCIuc3BsaXQoIiAiKSxxYz0iTSBEIEggaCBtIHMgdyBXIi5zcGxpdCgiICIpLHJjPXtNOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9udGgoKSsxfSxNTU06ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsYSl9LE1NTU06ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLGEpfSxEOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0ZSgpfSxEREQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXlPZlllYXIoKX0sZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRheSgpfSxkZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcyxhKX0sZGRkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsYSl9LGRkZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsYSl9LHc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrKCl9LFc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc29XZWVrKCl9LFlZOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy55ZWFyKCklMTAwLDIpfSxZWVlZOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy55ZWFyKCksNCl9LFlZWVlZOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy55ZWFyKCksNSl9LFlZWVlZWTpmdW5jdGlvbigpe3ZhciBhPXRoaXMueWVhcigpLGI9YT49MD8iKyI6Ii0iO3JldHVybiBiK3IoTWF0aC5hYnMoYSksNil9LGdnOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy53ZWVrWWVhcigpJTEwMCwyKX0sZ2dnZzpmdW5jdGlvbigpe3JldHVybiByKHRoaXMud2Vla1llYXIoKSw0KX0sZ2dnZ2c6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLndlZWtZZWFyKCksNSl9LEdHOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5pc29XZWVrWWVhcigpJTEwMCwyKX0sR0dHRzpmdW5jdGlvbigpe3JldHVybiByKHRoaXMuaXNvV2Vla1llYXIoKSw0KX0sR0dHR0c6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLmlzb1dlZWtZZWFyKCksNSl9LGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrZGF5KCl9LEU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc29XZWVrZGF5KCl9LGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLCEwKX0sQTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksITEpfSxIOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG91cnMoKX0saDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvdXJzKCklMTJ8fDEyfSxtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWludXRlcygpfSxzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vjb25kcygpfSxTOmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcy5taWxsaXNlY29uZHMoKS8xMDApfSxTUzpmdW5jdGlvbigpe3JldHVybiByKEModGhpcy5taWxsaXNlY29uZHMoKS8xMCksMil9LFNTUzpmdW5jdGlvbigpe3JldHVybiByKHRoaXMubWlsbGlzZWNvbmRzKCksMyl9LFNTU1M6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLm1pbGxpc2Vjb25kcygpLDMpfSxaOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy51dGNPZmZzZXQoKSxiPSIrIjtyZXR1cm4gMD5hJiYoYT0tYSxiPSItIiksYityKEMoYS82MCksMikrIjoiK3IoQyhhKSU2MCwyKX0sWlo6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnV0Y09mZnNldCgpLGI9IisiO3JldHVybiAwPmEmJihhPS1hLGI9Ii0iKSxiK3IoQyhhLzYwKSwyKStyKEMoYSklNjAsMil9LHo6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56b25lQWJicigpfSx6ejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpvbmVOYW1lKCl9LHg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZU9mKCl9LFg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bml4KCl9LFE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWFydGVyKCl9fSxzYz17fSx0Yz1bIm1vbnRocyIsIm1vbnRoc1Nob3J0Iiwid2Vla2RheXMiLCJ3ZWVrZGF5c1Nob3J0Iiwid2Vla2RheXNNaW4iXSx1Yz0hMTtwYy5sZW5ndGg7KXhiPXBjLnBvcCgpLHJjW3hiKyJvIl09aShyY1t4Yl0seGIpO2Zvcig7cWMubGVuZ3RoOyl4Yj1xYy5wb3AoKSxyY1t4Yit4Yl09aChyY1t4Yl0sMik7cmMuRERERD1oKHJjLkRERCwzKSxvKGwucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYztmb3IoYyBpbiBhKWI9YVtjXSwiZnVuY3Rpb24iPT10eXBlb2YgYj90aGlzW2NdPWI6dGhpc1siXyIrY109Yjt0aGlzLl9vcmRpbmFsUGFyc2VMZW5pZW50PW5ldyBSZWdFeHAodGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSsifCIrL1xkezEsMn0vLnNvdXJjZSl9LF9tb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9tb250aHNbYS5tb250aCgpXX0sX21vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fbW9udGhzU2hvcnRbYS5tb250aCgpXX0sbW9udGhzUGFyc2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZjtmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSksZD0wOzEyPmQ7ZCsrKXtpZihlPXZiLnV0YyhbMmUzLGRdKSxjJiYhdGhpcy5fbG9uZ01vbnRoc1BhcnNlW2RdJiYodGhpcy5fbG9uZ01vbnRoc1BhcnNlW2RdPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzKGUsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2RdPW5ldyBSZWdFeHAoIl4iK3RoaXMubW9udGhzU2hvcnQoZSwiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpKSxjfHx0aGlzLl9tb250aHNQYXJzZVtkXXx8KGY9Il4iK3RoaXMubW9udGhzKGUsIiIpKyJ8XiIrdGhpcy5tb250aHNTaG9ydChlLCIiKSx0aGlzLl9tb250aHNQYXJzZVtkXT1uZXcgUmVnRXhwKGYucmVwbGFjZSgiLiIsIiIpLCJpIikpLGMmJiJNTU1NIj09PWImJnRoaXMuX2xvbmdNb250aHNQYXJzZVtkXS50ZXN0KGEpKXJldHVybiBkO2lmKGMmJiJNTU0iPT09YiYmdGhpcy5fc2hvcnRNb250aHNQYXJzZVtkXS50ZXN0KGEpKXJldHVybiBkO2lmKCFjJiZ0aGlzLl9tb250aHNQYXJzZVtkXS50ZXN0KGEpKXJldHVybiBkfX0sX3dlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5czpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNbYS5kYXkoKV19LF93ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFthLmRheSgpXX0sX3dlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5bYS5kYXkoKV19LHdlZWtkYXlzUGFyc2U6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkO2Zvcih0aGlzLl93ZWVrZGF5c1BhcnNlfHwodGhpcy5fd2Vla2RheXNQYXJzZT1bXSksYj0wOzc+YjtiKyspaWYodGhpcy5fd2Vla2RheXNQYXJzZVtiXXx8KGM9dmIoWzJlMywxXSkuZGF5KGIpLGQ9Il4iK3RoaXMud2Vla2RheXMoYywiIikrInxeIit0aGlzLndlZWtkYXlzU2hvcnQoYywiIikrInxeIit0aGlzLndlZWtkYXlzTWluKGMsIiIpLHRoaXMuX3dlZWtkYXlzUGFyc2VbYl09bmV3IFJlZ0V4cChkLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2JdLnRlc3QoYSkpcmV0dXJuIGJ9LF9sb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIExUIixMTExMOiJkZGRkLCBNTU1NIEQsIFlZWVkgTFQifSxsb25nRGF0ZUZvcm1hdDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9sb25nRGF0ZUZvcm1hdFthXTtyZXR1cm4hYiYmdGhpcy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXSYmKGI9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXS5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gYS5zbGljZSgxKX0pLHRoaXMuX2xvbmdEYXRlRm9ybWF0W2FdPWIpLGJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuInAiPT09KGErIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApfSxfbWVyaWRpZW1QYXJzZTovW2FwXVwuP20/XC4/L2ksbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhPjExP2M/InBtIjoiUE0iOmM/ImFtIjoiQU0ifSxfY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fY2FsZW5kYXJbYV07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGQ/ZC5hcHBseShiLFtjXSk6ZH0sX3JlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LHJlbGF0aXZlVGltZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLl9yZWxhdGl2ZVRpbWVbY107cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShhLGIsYyxkKTplLnJlcGxhY2UoLyVkL2ksYSl9LHBhc3RGdXR1cmU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9yZWxhdGl2ZVRpbWVbYT4wPyJmdXR1cmUiOiJwYXN0Il07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGM/YyhiKTpjLnJlcGxhY2UoLyVzL2ksYil9LG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLGEpfSxfb3JkaW5hbDoiJWQiLF9vcmRpbmFsUGFyc2U6L1xkezEsMn0vLHByZXBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhfSx3ZWVrOmZ1bmN0aW9uKGEpe3JldHVybiBqYihhLHRoaXMuX3dlZWsuZG93LHRoaXMuX3dlZWsuZG95KS53ZWVrfSxfd2Vlazp7ZG93OjAsZG95OjZ9LGZpcnN0RGF5T2ZXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dlZWsuZG93fSxmaXJzdERheU9mWWVhcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93ZWVrLmRveX0sX2ludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLGludmFsaWREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ludmFsaWREYXRlfX0pLHZiPWZ1bmN0aW9uKGIsYyxlLGYpe3ZhciBnO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJihmPWUsZT1hKSxnPXt9LGcuX2lzQU1vbWVudE9iamVjdD0hMCxnLl9pPWIsZy5fZj1jLGcuX2w9ZSxnLl9zdHJpY3Q9ZixnLl9pc1VUQz0hMSxnLl9wZj1kKCksbGIoZyl9LHZiLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncz0hMSx2Yi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1mKCJtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZS4gVGhpcyBpcyBkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQwNyBmb3IgbW9yZSBpbmZvLiIsZnVuY3Rpb24oYSl7YS5fZD1uZXcgRGF0ZShhLl9pKyhhLl91c2VVVEM/IiBVVEMiOiIiKSl9KSx2Yi5taW49ZnVuY3Rpb24oKXt2YXIgYT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gbWIoImlzQmVmb3JlIixhKX0sdmIubWF4PWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIG1iKCJpc0FmdGVyIixhKX0sdmIudXRjPWZ1bmN0aW9uKGIsYyxlLGYpe3ZhciBnO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJihmPWUsZT1hKSxnPXt9LGcuX2lzQU1vbWVudE9iamVjdD0hMCxnLl91c2VVVEM9ITAsZy5faXNVVEM9ITAsZy5fbD1lLGcuX2k9YixnLl9mPWMsZy5fc3RyaWN0PWYsZy5fcGY9ZCgpLGxiKGcpLnV0YygpfSx2Yi51bml4PWZ1bmN0aW9uKGEpe3JldHVybiB2YigxZTMqYSl9LHZiLmR1cmF0aW9uPWZ1bmN0aW9uKGEsYil7dmFyIGQsZSxmLGcsaD1hLGk9bnVsbDtyZXR1cm4gdmIuaXNEdXJhdGlvbihhKT9oPXttczphLl9taWxsaXNlY29uZHMsZDphLl9kYXlzLE06YS5fbW9udGhzfToibnVtYmVyIj09dHlwZW9mIGE/KGg9e30sYj9oW2JdPWE6aC5taWxsaXNlY29uZHM9YSk6KGk9TmIuZXhlYyhhKSk/KGQ9Ii0iPT09aVsxXT8tMToxLGg9e3k6MCxkOkMoaVtFYl0pKmQsaDpDKGlbRmJdKSpkLG06QyhpW0diXSkqZCxzOkMoaVtIYl0pKmQsbXM6QyhpW0liXSkqZH0pOihpPU9iLmV4ZWMoYSkpPyhkPSItIj09PWlbMV0/LTE6MSxmPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJnBhcnNlRmxvYXQoYS5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4oYik/MDpiKSpkfSxoPXt5OmYoaVsyXSksTTpmKGlbM10pLGQ6ZihpWzRdKSxoOmYoaVs1XSksbTpmKGlbNl0pLHM6ZihpWzddKSx3OmYoaVs4XSl9KTpudWxsPT1oP2g9e306Im9iamVjdCI9PXR5cGVvZiBoJiYoImZyb20iaW4gaHx8InRvImluIGgpJiYoZz10KHZiKGguZnJvbSksdmIoaC50bykpLGg9e30saC5tcz1nLm1pbGxpc2Vjb25kcyxoLk09Zy5tb250aHMpLGU9bmV3IG4oaCksdmIuaXNEdXJhdGlvbihhKSYmYyhhLCJfbG9jYWxlIikmJihlLl9sb2NhbGU9YS5fbG9jYWxlKSxlfSx2Yi52ZXJzaW9uPXliLHZiLmRlZmF1bHRGb3JtYXQ9Z2MsdmIuSVNPXzg2MDE9ZnVuY3Rpb24oKXt9LHZiLm1vbWVudFByb3BlcnRpZXM9S2IsdmIudXBkYXRlT2Zmc2V0PWZ1bmN0aW9uKCl7fSx2Yi5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4gb2NbYl09PT1hPyExOmM9PT1hP29jW2JdOihvY1tiXT1jLCEwKX0sdmIubGFuZz1mKCJtb21lbnQubGFuZyBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZSBpbnN0ZWFkLiIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdmIubG9jYWxlKGEsYil9KSx2Yi5sb2NhbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYSYmKGM9InVuZGVmaW5lZCIhPXR5cGVvZiBiP3ZiLmRlZmluZUxvY2FsZShhLGIpOnZiLmxvY2FsZURhdGEoYSksYyYmKHZiLmR1cmF0aW9uLl9sb2NhbGU9dmIuX2xvY2FsZT1jKSksdmIuX2xvY2FsZS5fYWJicn0sdmIuZGVmaW5lTG9jYWxlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGwhPT1iPyhiLmFiYnI9YSxKYlthXXx8KEpiW2FdPW5ldyBsKSxKYlthXS5zZXQoYiksdmIubG9jYWxlKGEpLEpiW2FdKTooZGVsZXRlIEpiW2FdLG51bGwpfSx2Yi5sYW5nRGF0YT1mKCJtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuIixmdW5jdGlvbihhKXtyZXR1cm4gdmIubG9jYWxlRGF0YShhKX0pLHZiLmxvY2FsZURhdGE9ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSYmYS5fbG9jYWxlJiZhLl9sb2NhbGUuX2FiYnImJihhPWEuX2xvY2FsZS5fYWJiciksIWEpcmV0dXJuIHZiLl9sb2NhbGU7aWYoIXcoYSkpe2lmKGI9TChhKSlyZXR1cm4gYjthPVthXX1yZXR1cm4gSyhhKX0sdmIuaXNNb21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBtfHxudWxsIT1hJiZjKGEsIl9pc0FNb21lbnRPYmplY3QiKX0sdmIuaXNEdXJhdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIG59O2Zvcih4Yj10Yy5sZW5ndGgtMTt4Yj49MDstLXhiKUIodGNbeGJdKTt2Yi5ub3JtYWxpemVVbml0cz1mdW5jdGlvbihhKXtyZXR1cm4geihhKX0sdmIuaW52YWxpZD1mdW5jdGlvbihhKXt2YXIgYj12Yi51dGMoMC8wKTtyZXR1cm4gbnVsbCE9YT9vKGIuX3BmLGEpOmIuX3BmLnVzZXJJbnZhbGlkYXRlZD0hMCxifSx2Yi5wYXJzZVpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdmIuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfSx2Yi5wYXJzZVR3b0RpZ2l0WWVhcj1mdW5jdGlvbihhKXtyZXR1cm4gQyhhKSsoQyhhKT42OD8xOTAwOjJlMyl9LHZiLmlzRGF0ZT14LG8odmIuZm49bS5wcm90b3R5cGUse2Nsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKHRoaXMpfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuK3RoaXMuX2QtNmU0Kih0aGlzLl9vZmZzZXR8fDApfSx1bml4OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoK3RoaXMvMWUzKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgiZW4iKS5mb3JtYXQoImRkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaIil9LHRvRGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vZmZzZXQ/bmV3IERhdGUoK3RoaXMpOnRoaXMuX2R9LHRvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9dmIodGhpcykudXRjKCk7cmV0dXJuIDA8YS55ZWFyKCkmJmEueWVhcigpPD05OTk5PyJmdW5jdGlvbiI9PXR5cGVvZiBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz90aGlzLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk6UChhLCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIik6UChhLCJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKX0sdG9BcnJheTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuW2EueWVhcigpLGEubW9udGgoKSxhLmRhdGUoKSxhLmhvdXJzKCksYS5taW51dGVzKCksYS5zZWNvbmRzKCksYS5taWxsaXNlY29uZHMoKV19LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzKX0saXNEU1RTaGlmdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2E/dGhpcy5pc1ZhbGlkKCkmJnkodGhpcy5fYSwodGhpcy5faXNVVEM/dmIudXRjKHRoaXMuX2EpOnZiKHRoaXMuX2EpKS50b0FycmF5KCkpPjA6ITF9LHBhcnNpbmdGbGFnczpmdW5jdGlvbigpe3JldHVybiBvKHt9LHRoaXMuX3BmKX0saW52YWxpZEF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BmLm92ZXJmbG93fSx1dGM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsYSl9LGxvY2FsOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9pc1VUQyYmKHRoaXMudXRjT2Zmc2V0KDAsYSksdGhpcy5faXNVVEM9ITEsYSYmdGhpcy5zdWJ0cmFjdCh0aGlzLl9kYXRlVXRjT2Zmc2V0KCksIm0iKSksdGhpc30sZm9ybWF0OmZ1bmN0aW9uKGEpe3ZhciBiPVAodGhpcyxhfHx2Yi5kZWZhdWx0Rm9ybWF0KTtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChiKX0sYWRkOnUoMSwiYWRkIiksc3VidHJhY3Q6dSgtMSwic3VidHJhY3QiKSxkaWZmOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9TShhLHRoaXMpLGc9NmU0KihmLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpO3JldHVybiBiPXooYiksInllYXIiPT09Ynx8Im1vbnRoIj09PWJ8fCJxdWFydGVyIj09PWI/KGU9aih0aGlzLGYpLCJxdWFydGVyIj09PWI/ZS89MzoieWVhciI9PT1iJiYoZS89MTIpKTooZD10aGlzLWYsZT0ic2Vjb25kIj09PWI/ZC8xZTM6Im1pbnV0ZSI9PT1iP2QvNmU0OiJob3VyIj09PWI/ZC8zNmU1OiJkYXkiPT09Yj8oZC1nKS84NjRlNToid2VlayI9PT1iPyhkLWcpLzYwNDhlNTpkKSxjP2U6cShlKX0sZnJvbTpmdW5jdGlvbihhLGIpe3JldHVybiB2Yi5kdXJhdGlvbih7dG86dGhpcyxmcm9tOmF9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIWIpfSxmcm9tTm93OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmZyb20odmIoKSxhKX0sY2FsZW5kYXI6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dmIoKSxjPU0oYix0aGlzKS5zdGFydE9mKCJkYXkiKSxkPXRoaXMuZGlmZihjLCJkYXlzIiwhMCksZT0tNj5kPyJzYW1lRWxzZSI6LTE+ZD8ibGFzdFdlZWsiOjA+ZD8ibGFzdERheSI6MT5kPyJzYW1lRGF5IjoyPmQ/Im5leHREYXkiOjc+ZD8ibmV4dFdlZWsiOiJzYW1lRWxzZSI7cmV0dXJuIHRoaXMuZm9ybWF0KHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGUsdGhpcyx2YihiKSkpfSxpc0xlYXBZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy55ZWFyKCkpfSxpc0RTVDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCgwKS51dGNPZmZzZXQoKXx8dGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoNSkudXRjT2Zmc2V0KCl9LGRheTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pc1VUQz90aGlzLl9kLmdldFVUQ0RheSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPWE/KGE9Z2IoYSx0aGlzLmxvY2FsZURhdGEoKSksdGhpcy5hZGQoYS1iLCJkIikpOmJ9LG1vbnRoOnFiKCJNb250aCIsITApLHN0YXJ0T2Y6ZnVuY3Rpb24oYSl7c3dpdGNoKGE9eihhKSl7Y2FzZSJ5ZWFyIjp0aGlzLm1vbnRoKDApO2Nhc2UicXVhcnRlciI6Y2FzZSJtb250aCI6dGhpcy5kYXRlKDEpO2Nhc2Uid2VlayI6Y2FzZSJpc29XZWVrIjpjYXNlImRheSI6dGhpcy5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMubWludXRlcygwKTtjYXNlIm1pbnV0ZSI6dGhpcy5zZWNvbmRzKDApO2Nhc2Uic2Vjb25kIjp0aGlzLm1pbGxpc2Vjb25kcygwKX1yZXR1cm4id2VlayI9PT1hP3RoaXMud2Vla2RheSgwKToiaXNvV2VlayI9PT1hJiZ0aGlzLmlzb1dlZWtkYXkoMSksInF1YXJ0ZXIiPT09YSYmdGhpcy5tb250aCgzKk1hdGguZmxvb3IodGhpcy5tb250aCgpLzMpKSx0aGlzfSxlbmRPZjpmdW5jdGlvbihiKXtyZXR1cm4gYj16KGIpLGI9PT1hfHwibWlsbGlzZWNvbmQiPT09Yj90aGlzOnRoaXMuc3RhcnRPZihiKS5hZGQoMSwiaXNvV2VlayI9PT1iPyJ3ZWVrIjpiKS5zdWJ0cmFjdCgxLCJtcyIpfSxpc0FmdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJuIGI9eigidW5kZWZpbmVkIiE9dHlwZW9mIGI/YjoibWlsbGlzZWNvbmQiKSwibWlsbGlzZWNvbmQiPT09Yj8oYT12Yi5pc01vbWVudChhKT9hOnZiKGEpLCt0aGlzPithKTooYz12Yi5pc01vbWVudChhKT8rYTordmIoYSksYzwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYikpfSxpc0JlZm9yZTpmdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBiPXooInVuZGVmaW5lZCIhPXR5cGVvZiBiP2I6Im1pbGxpc2Vjb25kIiksIm1pbGxpc2Vjb25kIj09PWI/KGE9dmIuaXNNb21lbnQoYSk/YTp2YihhKSwrYT4rdGhpcyk6KGM9dmIuaXNNb21lbnQoYSk/K2E6K3ZiKGEpLCt0aGlzLmNsb25lKCkuZW5kT2YoYik8Yyl9LGlzQmV0d2VlbjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuaXNBZnRlcihhLGMpJiZ0aGlzLmlzQmVmb3JlKGIsYyl9LGlzU2FtZTpmdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBiPXooYnx8Im1pbGxpc2Vjb25kIiksIm1pbGxpc2Vjb25kIj09PWI/KGE9dmIuaXNNb21lbnQoYSk/YTp2YihhKSwrdGhpcz09PSthKTooYz0rdmIoYSksK3RoaXMuY2xvbmUoKS5zdGFydE9mKGIpPD1jJiZjPD0rdGhpcy5jbG9uZSgpLmVuZE9mKGIpKX0sbWluOmYoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTU0OCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9dmIuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXM+YT90aGlzOmF9KSxtYXg6ZigibW9tZW50KCkubWF4IGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQubWF4IGluc3RlYWQuIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNTQ4IixmdW5jdGlvbihhKXtyZXR1cm4gYT12Yi5hcHBseShudWxsLGFyZ3VtZW50cyksYT50aGlzP3RoaXM6YX0pLHpvbmU6ZigibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNzc5IixmdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT1hPygic3RyaW5nIiE9dHlwZW9mIGEmJihhPS1hKSx0aGlzLnV0Y09mZnNldChhLGIpLHRoaXMpOi10aGlzLnV0Y09mZnNldCgpfSksdXRjT2Zmc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD10aGlzLl9vZmZzZXR8fDA7cmV0dXJuIG51bGwhPWE/KCJzdHJpbmciPT10eXBlb2YgYSYmKGE9UyhhKSksTWF0aC5hYnMoYSk8MTYmJihhPTYwKmEpLCF0aGlzLl9pc1VUQyYmYiYmKGM9dGhpcy5fZGF0ZVV0Y09mZnNldCgpKSx0aGlzLl9vZmZzZXQ9YSx0aGlzLl9pc1VUQz0hMCxudWxsIT1jJiZ0aGlzLmFkZChjLCJtIiksZCE9PWEmJighYnx8dGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz92KHRoaXMsdmIuZHVyYXRpb24oYS1kLCJtIiksMSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M9ITAsdmIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M9bnVsbCkpLHRoaXMpOnRoaXMuX2lzVVRDP2Q6dGhpcy5fZGF0ZVV0Y09mZnNldCgpfSxpc0xvY2FsOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2lzVVRDfSxpc1V0Y09mZnNldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQ30saXNVdGM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEMmJjA9PT10aGlzLl9vZmZzZXR9LHpvbmVBYmJyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifSx6b25lTmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1VUQz8iQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiOiIifSxwYXJzZVpvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHptP3RoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSk6InN0cmluZyI9PXR5cGVvZiB0aGlzLl9pJiZ0aGlzLnV0Y09mZnNldChTKHRoaXMuX2kpKSx0aGlzfSxoYXNBbGlnbmVkSG91ck9mZnNldDpmdW5jdGlvbihhKXtyZXR1cm4gYT1hP3ZiKGEpLnV0Y09mZnNldCgpOjAsKHRoaXMudXRjT2Zmc2V0KCktYSklNjA9PT0wfSxkYXlzSW5Nb250aDpmdW5jdGlvbigpe3JldHVybiBEKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSl9LGRheU9mWWVhcjpmdW5jdGlvbihhKXt2YXIgYj1BYigodmIodGhpcykuc3RhcnRPZigiZGF5IiktdmIodGhpcykuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKGEtYiwiZCIpfSxxdWFydGVyOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP01hdGguY2VpbCgodGhpcy5tb250aCgpKzEpLzMpOnRoaXMubW9udGgoMyooYS0xKSt0aGlzLm1vbnRoKCklMyl9LHdlZWtZZWFyOmZ1bmN0aW9uKGEpe3ZhciBiPWpiKHRoaXMsdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG93LHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRveSkueWVhcjtyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKGEtYiwieSIpfSxpc29XZWVrWWVhcjpmdW5jdGlvbihhKXt2YXIgYj1qYih0aGlzLDEsNCkueWVhcjtyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKGEtYiwieSIpfSx3ZWVrOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCg3KihhLWIpLCJkIil9LGlzb1dlZWs6ZnVuY3Rpb24oYSl7dmFyIGI9amIodGhpcywxLDQpLndlZWs7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCg3KihhLWIpLCJkIil9LHdlZWtkYXk6ZnVuY3Rpb24oYSl7dmFyIGI9KHRoaXMuZGF5KCkrNy10aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpJTc7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZChhLWIsImQiKX0saXNvV2Vla2RheTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT90aGlzLmRheSgpfHw3OnRoaXMuZGF5KHRoaXMuZGF5KCklNz9hOmEtNyl9LGlzb1dlZWtzSW5ZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy55ZWFyKCksMSw0KX0sd2Vla3NJblllYXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gRSh0aGlzLnllYXIoKSxhLmRvdyxhLmRveSl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT16KGEpLHRoaXNbYV0oKX0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoIm9iamVjdCI9PXR5cGVvZiBhKWZvcihjIGluIGEpdGhpcy5zZXQoYyxhW2NdKTtlbHNlIGE9eihhKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpc1thXSYmdGhpc1thXShiKTtyZXR1cm4gdGhpc30sbG9jYWxlOmZ1bmN0aW9uKGIpe3ZhciBjO3JldHVybiBiPT09YT90aGlzLl9sb2NhbGUuX2FiYnI6KGM9dmIubG9jYWxlRGF0YShiKSxudWxsIT1jJiYodGhpcy5fbG9jYWxlPWMpLHRoaXMpfSxsYW5nOmYoIm1vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuIixmdW5jdGlvbihiKXtyZXR1cm4gYj09PWE/dGhpcy5sb2NhbGVEYXRhKCk6dGhpcy5sb2NhbGUoYil9KSxsb2NhbGVEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX0sX2RhdGVVdGNPZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTUqLU1hdGgucm91bmQodGhpcy5fZC5nZXRUaW1lem9uZU9mZnNldCgpLzE1KX19KSx2Yi5mbi5taWxsaXNlY29uZD12Yi5mbi5taWxsaXNlY29uZHM9cWIoIk1pbGxpc2Vjb25kcyIsITEpLHZiLmZuLnNlY29uZD12Yi5mbi5zZWNvbmRzPXFiKCJTZWNvbmRzIiwhMSksdmIuZm4ubWludXRlPXZiLmZuLm1pbnV0ZXM9cWIoIk1pbnV0ZXMiLCExKSx2Yi5mbi5ob3VyPXZiLmZuLmhvdXJzPXFiKCJIb3VycyIsITApLHZiLmZuLmRhdGU9cWIoIkRhdGUiLCEwKSx2Yi5mbi5kYXRlcz1mKCJkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLiIscWIoIkRhdGUiLCEwKSksdmIuZm4ueWVhcj1xYigiRnVsbFllYXIiLCEwKSx2Yi5mbi55ZWFycz1mKCJ5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkLiIscWIoIkZ1bGxZZWFyIiwhMCkpLHZiLmZuLmRheXM9dmIuZm4uZGF5LHZiLmZuLm1vbnRocz12Yi5mbi5tb250aCx2Yi5mbi53ZWVrcz12Yi5mbi53ZWVrLHZiLmZuLmlzb1dlZWtzPXZiLmZuLmlzb1dlZWssdmIuZm4ucXVhcnRlcnM9dmIuZm4ucXVhcnRlcix2Yi5mbi50b0pTT049dmIuZm4udG9JU09TdHJpbmcsdmIuZm4uaXNVVEM9dmIuZm4uaXNVdGMsbyh2Yi5kdXJhdGlvbi5mbj1uLnByb3RvdHlwZSx7X2J1YmJsZTpmdW5jdGlvbigpe3ZhciBhLGIsYyxkPXRoaXMuX21pbGxpc2Vjb25kcyxlPXRoaXMuX2RheXMsZj10aGlzLl9tb250aHMsZz10aGlzLl9kYXRhLGg9MDtnLm1pbGxpc2Vjb25kcz1kJTFlMyxhPXEoZC8xZTMpLGcuc2Vjb25kcz1hJTYwLGI9cShhLzYwKSxnLm1pbnV0ZXM9YiU2MCxjPXEoYi82MCksZy5ob3Vycz1jJTI0LGUrPXEoYy8yNCksaD1xKHJiKGUpKSxlLT1xKHNiKGgpKSxmKz1xKGUvMzApLGUlPTMwLGgrPXEoZi8xMiksZiU9MTIsZy5kYXlzPWUsZy5tb250aHM9ZixnLnllYXJzPWh9LGFiczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9TWF0aC5hYnModGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPU1hdGguYWJzKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1NYXRoLmFicyh0aGlzLl9tb250aHMpLHRoaXMuX2RhdGEubWlsbGlzZWNvbmRzPU1hdGguYWJzKHRoaXMuX2RhdGEubWlsbGlzZWNvbmRzKSx0aGlzLl9kYXRhLnNlY29uZHM9TWF0aC5hYnModGhpcy5fZGF0YS5zZWNvbmRzKSx0aGlzLl9kYXRhLm1pbnV0ZXM9TWF0aC5hYnModGhpcy5fZGF0YS5taW51dGVzKSx0aGlzLl9kYXRhLmhvdXJzPU1hdGguYWJzKHRoaXMuX2RhdGEuaG91cnMpLHRoaXMuX2RhdGEubW9udGhzPU1hdGguYWJzKHRoaXMuX2RhdGEubW9udGhzKSx0aGlzLl9kYXRhLnllYXJzPU1hdGguYWJzKHRoaXMuX2RhdGEueWVhcnMpLHRoaXN9LHdlZWtzOmZ1bmN0aW9uKCl7cmV0dXJuIHEodGhpcy5kYXlzKCkvNyl9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhpcy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2KkModGhpcy5fbW9udGhzLzEyKQp9LGh1bWFuaXplOmZ1bmN0aW9uKGEpe3ZhciBiPWliKHRoaXMsIWEsdGhpcy5sb2NhbGVEYXRhKCkpO3JldHVybiBhJiYoYj10aGlzLmxvY2FsZURhdGEoKS5wYXN0RnV0dXJlKCt0aGlzLGIpKSx0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KGIpfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz12Yi5kdXJhdGlvbihhLGIpO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHMrPWMuX21pbGxpc2Vjb25kcyx0aGlzLl9kYXlzKz1jLl9kYXlzLHRoaXMuX21vbnRocys9Yy5fbW9udGhzLHRoaXMuX2J1YmJsZSgpLHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dmIuZHVyYXRpb24oYSxiKTtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzLT1jLl9taWxsaXNlY29uZHMsdGhpcy5fZGF5cy09Yy5fZGF5cyx0aGlzLl9tb250aHMtPWMuX21vbnRocyx0aGlzLl9idWJibGUoKSx0aGlzfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9eihhKSx0aGlzW2EudG9Mb3dlckNhc2UoKSsicyJdKCl9LGFzOmZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoYT16KGEpLCJtb250aCI9PT1hfHwieWVhciI9PT1hKXJldHVybiBiPXRoaXMuX2RheXMrdGhpcy5fbWlsbGlzZWNvbmRzLzg2NGU1LGM9dGhpcy5fbW9udGhzKzEyKnJiKGIpLCJtb250aCI9PT1hP2M6Yy8xMjtzd2l0Y2goYj10aGlzLl9kYXlzK01hdGgucm91bmQoc2IodGhpcy5fbW9udGhzLzEyKSksYSl7Y2FzZSJ3ZWVrIjpyZXR1cm4gYi83K3RoaXMuX21pbGxpc2Vjb25kcy82MDQ4ZTU7Y2FzZSJkYXkiOnJldHVybiBiK3RoaXMuX21pbGxpc2Vjb25kcy84NjRlNTtjYXNlImhvdXIiOnJldHVybiAyNCpiK3RoaXMuX21pbGxpc2Vjb25kcy8zNmU1O2Nhc2UibWludXRlIjpyZXR1cm4gMjQqYio2MCt0aGlzLl9taWxsaXNlY29uZHMvNmU0O2Nhc2Uic2Vjb25kIjpyZXR1cm4gMjQqYio2MCo2MCt0aGlzLl9taWxsaXNlY29uZHMvMWUzO2Nhc2UibWlsbGlzZWNvbmQiOnJldHVybiBNYXRoLmZsb29yKDI0KmIqNjAqNjAqMWUzKSt0aGlzLl9taWxsaXNlY29uZHM7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdW5pdCAiK2EpfX0sbGFuZzp2Yi5mbi5sYW5nLGxvY2FsZTp2Yi5mbi5sb2NhbGUsdG9Jc29TdHJpbmc6ZigidG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscykiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0pLHRvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5hYnModGhpcy55ZWFycygpKSxiPU1hdGguYWJzKHRoaXMubW9udGhzKCkpLGM9TWF0aC5hYnModGhpcy5kYXlzKCkpLGQ9TWF0aC5hYnModGhpcy5ob3VycygpKSxlPU1hdGguYWJzKHRoaXMubWludXRlcygpKSxmPU1hdGguYWJzKHRoaXMuc2Vjb25kcygpK3RoaXMubWlsbGlzZWNvbmRzKCkvMWUzKTtyZXR1cm4gdGhpcy5hc1NlY29uZHMoKT8odGhpcy5hc1NlY29uZHMoKTwwPyItIjoiIikrIlAiKyhhP2ErIlkiOiIiKSsoYj9iKyJNIjoiIikrKGM/YysiRCI6IiIpKyhkfHxlfHxmPyJUIjoiIikrKGQ/ZCsiSCI6IiIpKyhlP2UrIk0iOiIiKSsoZj9mKyJTIjoiIik6IlAwRCJ9LGxvY2FsZURhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9jYWxlfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b0lTT1N0cmluZygpfX0pLHZiLmR1cmF0aW9uLmZuLnRvU3RyaW5nPXZiLmR1cmF0aW9uLmZuLnRvSVNPU3RyaW5nO2Zvcih4YiBpbiBrYyljKGtjLHhiKSYmdGIoeGIudG9Mb3dlckNhc2UoKSk7dmIuZHVyYXRpb24uZm4uYXNNaWxsaXNlY29uZHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcygibXMiKX0sdmIuZHVyYXRpb24uZm4uYXNTZWNvbmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoInMiKX0sdmIuZHVyYXRpb24uZm4uYXNNaW51dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoIm0iKX0sdmIuZHVyYXRpb24uZm4uYXNIb3Vycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKCJoIil9LHZiLmR1cmF0aW9uLmZuLmFzRGF5cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFzKCJkIil9LHZiLmR1cmF0aW9uLmZuLmFzV2Vla3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcygid2Vla3MiKX0sdmIuZHVyYXRpb24uZm4uYXNNb250aHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcygiTSIpfSx2Yi5kdXJhdGlvbi5mbi5hc1llYXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoInkiKX0sdmIubG9jYWxlKCJlbiIse29yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPTE9PT1DKGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY319KSxMYj9tb2R1bGUuZXhwb3J0cz12YjoiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kPyhkZWZpbmUoZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjLmNvbmZpZyYmYy5jb25maWcoKSYmYy5jb25maWcoKS5ub0dsb2JhbD09PSEwJiYoemIubW9tZW50PXdiKSx2Yn0pLHViKCEwKSk6dWIoKX0pLmNhbGwodGhpcyk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IEFkYW0gU2hhdwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQppbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELApFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQpMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCk9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgpXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCB2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCc1LjQuMycpIDwgMCApIHsKICAgIHJldHVybiAiTWluaW11bSBQSFAgdmVyc2lvbiBvZiA1LjQuMyByZXF1aXJlZCI7Cn0KCiR1aWQgPSBnZXRfdXNlcmlkKCk7CiRkYiA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiR0YWJsZV9vcHRpb25zID0gYXJyYXkoJ215c3FsJyA9PiAnRU5HSU5FPUlubm9EQicpOwoKLy8gY3JlYXRlIGNhdGVnb3JpZXMgdGFibGUKJGZpZWxkcyA9ICIKCQkJY2F0ZWdvcnlfaWQgSSBLRVkgTk9UIE5VTEwsCgkJCWNhdGVnb3J5X25hbWUgQygyNTUpIE5PVCBOVUxMLAogICAgICAgICAgICBjYXRlZ29yeV9iZ2NvbG9yIEMoMTApLAogICAgICAgICAgICBjYXRlZ29yeV9mZ2NvbG9yIEMoMTApLAoJCQljYXRlZ29yeV9vcmRlciBJCgkJIjsKJHNxbF9hcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLCAkZmllbGRzLCAkdGFibGVfb3B0aW9ucyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbF9hcnJheSk7CgokZGItPkNyZWF0ZVNlcXVlbmNlKCR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAnX3NlcScpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdpbmRleF9jYXRlZ29yeV9uYW1lJywkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLCdjYXRlZ29yeV9uYW1lJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIGNyZWF0ZSBmaWVsZHMgdGFibGUKJGZpZWxkcyA9ICJmaWVsZF9uYW1lIEMoMjU1KSBLRVksCiAgICAgICAgICAgZmllbGRfdHlwZSBJLAogICAgICAgICAgIGZpZWxkX3NlYXJjaGFibGUgSTEsCiAgICAgICAgICAgZmllbGRfZXh0cmEgWCwKICAgICAgICAgICBmaWVsZF9vcmRlciBJCgkgICI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsICRmaWVsZHMsICR0YWJsZV9vcHRpb25zKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdpbmRleF9maWVsZF9uYW1lJywkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsJ2ZpZWxkX25hbWUnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCi8vIGNyZWF0ZSBldmVudHMgdGFibGUKJGZpZWxkcyA9ICIKCQkJZXZlbnRfaWQgSSBLRVksCgkJCWV2ZW50X3RpdGxlIEMoMjU1KSwKCQkJZXZlbnRfc3VtbWFyeSBYLAoJCQlldmVudF9kZXRhaWxzIFgsCgkJCWV2ZW50X2RhdGVfc3RhcnQgIi5DTVNfQURPREJfRFQuIiwKCQkJZXZlbnRfZGF0ZV9lbmQgIi5DTVNfQURPREJfRFQuIiwKCQkJZXZlbnRfcGFyZW50X2lkIEksCgkJCWV2ZW50X3JlY3VyX3BlcmlvZCBDKDEwKSwKCQkJZXZlbnRfZGF0ZV9yZWN1cl9lbmQgIi5DTVNfQURPREJfRFQuIiwKCQkJZXZlbnRfY3JlYXRlZF9ieSBJLAoJCQlldmVudF9jcmVhdGVfZGF0ZSAiLkNNU19BRE9EQl9EVC4iLAoJCQlldmVudF9tb2RpZmllZF9kYXRlICIuQ01TX0FET0RCX0RULiIsCiAgICAgICAgICAgIGV2ZW50X3JlY3VyX25ldmVudHMgSSwKICAgICAgICAgICAgZXZlbnRfcmVjdXJfaW50ZXJ2YWwgSSwKICAgICAgICAgICAgZXZlbnRfcmVjdXJfd2Vla2RheXMgQygyNTUpLAogICAgICAgICAgICBldmVudF9yZWN1cl9tb250aGRheXMgQygyNTUpLAogICAgICAgICAgICBldmVudF9hbGxvd3Nfb3ZlcmxhcCBJMSwKICAgICAgICAgICAgZXZlbnRfYWxsX2RheSBJMSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUsICRmaWVsZHMsICR0YWJsZV9vcHRpb25zKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJGRiLT5FeGVjdXRlKCdBTFRFUiBUQUJMRSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIEFERCBGVUxMVEVYVChldmVudF90aXRsZSxldmVudF9zdW1tYXJ5LGV2ZW50X2RldGFpbHMpJyk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgnY2djYWxlbmRhcl9ldmVudHNfZGF0ZScsJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCdldmVudF9kYXRlX3N0YXJ0LGV2ZW50X2RhdGVfZW5kJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdjZ2NhbGVuZGFyX2V2ZW50c19jcmVhdGVkJywkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUsJ2V2ZW50X2NyZWF0ZV9kYXRlJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdjZ2NhbGVuZGFyX2V2ZW50c19tb2RpZmllZCcsJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCdldmVudF9tb2RpZmllZF9kYXRlJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdjZ2NhbGVuZGFyX2V2ZW50c19wYXJlbnQnLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwnZXZlbnRfcGFyZW50X2lkJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRkYi0+Q3JlYXRlU2VxdWVuY2UoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLidfc2VxJyk7CgovLyBjcmVhdGUgZXZlbnRfZmllbGRfdmFsdWVzIHRhYmxlCiRmaWVsZHMgPSAiCgkJCWZpZWxkX25hbWUgQygyNTUpIEtFWSwKCQkJZXZlbnRfaWQgSSBLRVksCgkJCWZpZWxkX3ZhbHVlIFgKCQkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lLCAkZmllbGRzLCAkdGFibGVfb3B0aW9ucyApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCi8vIGNyZWF0ZSBldmVudHNfdG9fY2F0ZWdvcmllcyB0YWJsZQokZmllbGRzID0gIgoJCQljYXRlZ29yeV9pZCBJIEtFWSwKCQkJZXZlbnRfaWQgSSBLRVkKCQkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUsICRmaWVsZHMsICR0YWJsZV9vcHRpb25zICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKLy8gc2V0IHVwIGEgR2VuZXJhbCBjYXRlZ29yeQokbmV3X2lkID0gJGRiLT5HZW5JRCgkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLidfc2VxJyk7Cgokc3FsID0gJ0lOU0VSVCBJTlRPICcgLiAkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lIC4gIiAoY2F0ZWdvcnlfaWQsIGNhdGVnb3J5X25hbWUsIGNhdGVnb3J5X29yZGVyKQoJCQkJCQlWQUxVRVMgKCRuZXdfaWQsICdHZW5lcmFsJywgNTApIjsKJGRiLT5FeGVjdXRlKCRzcWwpOwoKCgovLwovLyB0ZW1wbGF0ZXMKLy8KCi8vIHRvZG86IGdldCB0aGUgaWQgb2YgdGhlIGRlZmF1bHQgZGVzaWduLgoKdHJ5IHsKICAgIC8vIHNlYXJjaCBmb3JtIHRlbXBsYXRlIHR5cGUKICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnc2VhcmNoZm9ybScpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19zZWFyY2hfdGVtcGxhdGUudHBsJzsKICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgU2VhcmNoIEZvcm0gU2FtcGxlJyk7CiAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGUoJHNlYXJjaF90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICR0cGwtPnNhdmUoKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKdHJ5IHsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnc2VhcmNocmVzdWx0Jyk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX3NlYXJjaHJlc3VsdF90ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBTZWFyY2ggUmVzdWx0cyBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgfQp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgLy8gbG9nIGl0CiAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwp9Cgp0cnkgewogICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdldmVudCcpOwogICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAvLyBjcmVhdGUgYSBzYW1wbGUgdGVtcGxhdGUgb2YgdGhpcyB0eXBlCiAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgRXZlbnQgVmlldyBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkZXZlbnRfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBsb2cgaXQKICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCnRyeSB7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2V2ZW50bGlzdCcpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19saXN0X3RlbXBsYXRlLnRwbCc7CiAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIExpc3QgVmlldyBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgfQp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgLy8gbG9nIGl0CiAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwp9Cgp0cnkgewogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdteWV2ZW50cycpOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAvLyBjcmVhdGUgYSBzYW1wbGUgdGVtcGxhdGUgb2YgdGhpcyB0eXBlCiAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfbXlldmVudHNfdGVtcGxhdGUudHBsJzsKICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgTXlFdmVudHMgVmlldyBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkbXlldmVudHNfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBsb2cgaXQKICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCnRyeSB7CiAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2VkaXRldmVudCcpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19lZGl0ZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgRWRpdCBFdmVudCBGb3JtIFNhbXBsZScpOwogICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICR0cGwtPnNldF90eXBlKCRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBsb2cgaXQKICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCnRyeSB7CiAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2RlbGV0ZWV2ZW50Jyk7CiAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19kZWxldGVldmVudF90ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBEZWxldGUgRXZlbnQgRm9ybSBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBsb2cgaXQKICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCnRyeSB7CiAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2Z1bGxjYWxlbmRhcicpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19mdWxsY2FsZW5kYXJfdGVtcGxhdGUudHBsJzsKICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgRnVsbENhbGVuZGFyIFZpZXcgU2FtcGxlJyk7CiAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGUoJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICR0cGwtPnNhdmUoKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKLy8gUHJlZmVyZW5jZXMKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VwbG9hZGRpcmVjdG9yeScsJycpOwoKLy8gRXZlbnRzCiR0aGlzLT5DcmVhdGVFdmVudCgnRXZlbnRBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0V2ZW50RWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnRXZlbnREZWxldGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3J5RWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnQ2F0ZWdvcnlEZWxldGVkJyk7CgovLyBQZXJtaXNzaW9ucwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJywgJ01vZGlmeSBDYWxlbmRhcicpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycsICdBZGQgQ2FsZW5kYXIgRXZlbnRzJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IE15IENhbGVuZGFyIEV2ZW50cycsICdFZGl0IE15IENhbGVuZGFyIEV2ZW50cycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIENhbGVuZGFyIEF0dHJpYnV0ZXMnLCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpOwo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgokZGIgPSBjbXNtcygpLT5HZXREYigpOwovLyRkYi0+cmFpc2VFcnJvckZuID0gbnVsbDsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCgkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCR0aGlzLT5maWVsZHNfdGFibGVfbmFtZSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCnRyeSB7CiAgICAkZGItPkRyb3BTZXF1ZW5jZSgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJ19zZXEnKTsKICAgICRkYi0+RHJvcFNlcXVlbmNlKCR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJ19zZXEnKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKCn0KCi8vIHRlbXBsYXRlcwokdGhpcy0+RGVsZXRlVGVtcGxhdGUoKTsKCi8vIHByZWZlcmVuY2VzCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgovLyBFdmVudHMKJHRoaXMtPlJlbW92ZUV2ZW50KCdFdmVudEFkZGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnRXZlbnRFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdFdmVudERlbGV0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdDYXRlZ29yeUFkZGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnQ2F0ZWdvcnlFZGl0ZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdDYXRlZ29yeURlbGV0ZWQnKTsKCi8vIFBlcm1pc3Npb25zCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0VkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpOwoKdHJ5IHsKICAgICR0eXBlcyA9IENtc0xheW91dFRlbXBsYXRlVHlwZTo6bG9hZF9hbGxfYnlfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgIGlmKCBpc19hcnJheSgkdHlwZXMpICYmIGNvdW50KCR0eXBlcykgKSB7CiAgICAgICAgZm9yZWFjaCggJHR5cGVzIGFzICR0eXBlICkgewogICAgICAgICAgICAkdGVtcGxhdGVzID0gJHR5cGUtPmdldF90ZW1wbGF0ZV9saXN0KCk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdGVtcGxhdGVzKSAmJiBjb3VudCgkdGVtcGxhdGVzKSApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goICR0ZW1wbGF0ZXMgYXMgJHRlbXBsYXRlICkgewogICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZS0+ZGVsZXRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHR5cGUtPmRlbGV0ZSgpOwogICAgICAgIH0KICAgIH0KfQpjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgLy8gbG9nIGl0CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdVbmluc3RhbGwgRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCiRkYiA9ICR0aGlzLT5HZXREYigpOwkJCQkvKiBAdmFyICRkYiBBRE9Db25uZWN0aW9uICovCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsgCS8qIEB2YXIgJGRpY3QgQURPREJfRGF0YURpY3QgKi8KCmlmKCB2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCc1LjQuMycpIDwgMCApIHsKICAgIHJldHVybiAiTWluaW11bSBQSFAgdmVyc2lvbiBvZiA1LjQuMyByZXF1aXJlZCI7Cn0KCmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV0NBTEVOREFSX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld2NhbGVuZGFyX3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRDQUxFTkRBUl9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0Y2FsZW5kYXJfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXTElTVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdsaXN0X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRMSVNUX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRsaXN0X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV1VQQ09NSU5HTElTVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXd1cGNvbWluZ2xpc3RfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfREZMVFVQQ09NSU5HTElTVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0dXBjb21pbmdsaXN0X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV0VWRU5UX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld2V2ZW50X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRFVkVOVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0ZXZlbnRfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXU0VBUkNIX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld3NlYXJjaF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRzZWFyY2hfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXU0VBUkNIUkVTVUxUX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld3NlYXJjaHJlc3VsdF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIUkVTVUxUX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRzZWFyY2hyZXN1bHRfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXTVlFVkVOVFNfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3bXlldmVudHNfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfREZMVE1ZRVZFTlRTX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRteWV2ZW50c190ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ORVdFRElURVZFTlRfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3ZWRpdGV2ZW50X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRFRElURVZFTlRfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdGVkaXRldmVudF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ORVdERUxFVEVFVkVOVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdkZWxldGVldmVudF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ERkxUREVMRVRFRVZFTlRfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdGRlbGV0ZWV2ZW50X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV0ZVTExDQUxFTkRBUl9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdmdWxsY2FsZW5kYXJfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfREZMVEZVTExDQUxFTkRBUl9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0ZnVsbGNhbGVuZGFyX3RlbXBsYXRlJyk7Cgpzd2l0Y2goICRvbGR2ZXJzaW9uICkKICB7CiAgY2FzZSAnMS4wJzoKICBjYXNlICcxLjAuMSc6CiAgICAkZGItPkV4ZWN1dGUoJ0FMVEVSIFRBQkxFICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgQUREIEZVTExURVhUKGV2ZW50X3RpdGxlLGV2ZW50X3N1bW1hcnksZXZlbnRfZGV0YWlscyknKTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCAiZXZlbnRfcmVjdXJfbW9udGhkYXlzIEMoMjU1KSIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAgIC8vIFNlYXJjaCBmb3JtIHRlbXBsYXRlKHMpCiAgICAkZm4gPSBjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCd0ZW1wbGF0ZXMnLCdvcmlnX3NlYXJjaF90ZW1wbGF0ZS50cGwnKTsKICAgIGlmKCBmaWxlX2V4aXN0cygkZm4pICkKICAgICAgewoJJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ORVdTRUFSQ0hfVEVNUExBVEUsJHRlbXBsYXRlKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnc2VhcmNoX1NhbXBsZScsJHRlbXBsYXRlKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIX1RFTVBMQVRFLCdTYW1wbGUnKTsKICAgICAgfQoKICAgIC8vIFNlYXJjaCByZXN1bHQgdGVtcGxhdGUocykKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3RlbXBsYXRlcycsJ29yaWdfc2VhcmNocmVzdWx0X3RlbXBsYXRlLnRwbCcpOwogICAgaWYoIGZpbGVfZXhpc3RzKCRmbikgKQogICAgICB7CgkkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX05FV1NFQVJDSFJFU1VMVF9URU1QTEFURSwkdGVtcGxhdGUpOwoJJHRoaXMtPlNldFRlbXBsYXRlKCdzZWFyY2hyZXN1bHRfU2FtcGxlJywkdGVtcGxhdGUpOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX0RGTFRTRUFSQ0hSRVNVTFRfVEVNUExBVEUsJ1NhbXBsZScpOwogICAgICB9CgogIGNhc2UgJzEuMic6CiAgY2FzZSAnMS4yLjEnOgogIGNhc2UgJzEuMi4yJzoKICBjYXNlICcxLjIuMyc6CiAgY2FzZSAnMS4yLjQnOgogIGNhc2UgJzEuMi41JzoKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLAoJCQkJICAgICJldmVudF9hbGxvd3Nfb3ZlcmxhcCBJMSIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICBjYXNlICcxLjMnOgogIGNhc2UgJzEuMy4xJzoKICAgIC8vIE15IEV2ZW50cyB0ZW1wbGF0ZShzKQogICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19teWV2ZW50c190ZW1wbGF0ZS50cGwnKTsKICAgIGlmKCBmaWxlX2V4aXN0cygkZm4pICkKICAgICAgewoJJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ORVdNWUVWRU5UU19URU1QTEFURSwkdGVtcGxhdGUpOwoJJHRoaXMtPlNldFRlbXBsYXRlKCdteWV2ZW50c19TYW1wbGUnLCR0ZW1wbGF0ZSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfREZMVE1ZRVZFTlRTX1RFTVBMQVRFLCdTYW1wbGUnKTsKICAgICAgfQoKICAgIC8vIEVkaXQgRXZlbnQgZm9ybSB0ZW1wbGF0ZShzKQogICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19lZGl0ZXZlbnRfdGVtcGxhdGUudHBsJyk7CiAgICBpZiggZmlsZV9leGlzdHMoJGZuKSApCiAgICAgIHsKCSR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfTkVXRURJVEVWRU5UX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2VkaXRldmVudF9TYW1wbGUnLCR0ZW1wbGF0ZSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfREZMVEVESVRFVkVOVF9URU1QTEFURSwnU2FtcGxlJyk7CiAgICAgIH0KCiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2V2ZW50X3BlcmlvZCcsJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLAoJCQkJICAgICAgJ2V2ZW50X2RhdGVfc3RhcnQsZXZlbnRfZGF0ZV9lbmQnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJwogICAgICAgICAgICAgICAgIFNFVCBldmVudF9jcmVhdGVkX2J5ID0gZXZlbnRfY3JlYXRlZF9ieSAqIC0xIC0gMTAwJzsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKICBjYXNlICcxLjQnOgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsJ2ZpZWxkX3NlYXJjaGFibGUgSTEnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLicgU0VUIGZpZWxkX3NlYXJjaGFibGUgPSAxCiAgICAgICAgICAgICAgIFdIRVJFIGZpZWxkX3R5cGUgIT0gMSc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiAgY2FzZSAnMS40LjEnOiAvLyBqdXN0IGZvciBzYWZldHkKICBjYXNlICcxLjQuMic6IC8vIGp1c3QgZm9yIHNhZmV0eQogIGNhc2UgJzEuNSc6CiAgY2FzZSAnMS41LjEnOgogIGNhc2UgJzEuNS4yJzoKICBjYXNlICcxLjUuMyc6CiAgY2FzZSAnMS41LjQnOgogIGNhc2UgJzEuNS41JzoKICBjYXNlICcxLjUuNic6CiAgY2FzZSAnMS41LjcnOgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsJ2ZpZWxkX2V4dHJhIFgnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgfQoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xMS4xJykgPCAwICkgewogICRjYXRzID0gJHRoaXMtPkdldENhdGVnb3JpZXMoKTsKICBpZiggaXNfYXJyYXkoJGNhdHMpICYmIGNvdW50KCRjYXRzKSApIHsKICAgIC8vIGNoYW5nZSB0aGUgb3JkZXIgc3R1ZmYgdG8gYmUgYXV0b21hdGljYWxseSBhc2NlbmRpbmcKICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgU0VUIGNhdGVnb3J5X29yZGVyID0gPyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNhdHMpOyAkaSsrICkgewogICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpLCRjYXRzWyRpXVsnY2F0ZWdvcnlfaWQnXSkpOwogICAgfQogIH0KCiAgLy8gdXBkYXRlIGZpZWxkcy4KICAkZmllbGRzID0gJHRoaXMtPkdldEZpZWxkcygpOwogICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLCdmaWVsZF9vcmRlciBJJyk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogIGlmKCBpc19hcnJheSgkZmllbGRzKSAmJiBjb3VudCgkZmllbGRzKSApIHsKICAgIC8vIGFkZCB0aGUgb3JkZXIgc3R1ZmYuCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLicgU0VUIGZpZWxkX2V4dHJhID0gPywgZmllbGRfb3JkZXIgPSA/IFdIRVJFIGZpZWxkX25hbWUgPSA/JzsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRmaWVsZHMpOyAkaSsrICkgewogICAgICAkcm93ID0gJGZpZWxkc1skaV07CiAgICAgIGlmKCAkcm93WydmaWVsZF90eXBlJ10gIT0gMCAmJiAkcm93WydmaWVsZF90eXBlJ10gIT0gMiApICRyb3dbJ2ZpZWxkX3NlYXJjaGFibGUnXSA9IDA7CiAgICAgICRmaWVsZF9leHRyYSA9IHNlcmlhbGl6ZShhcnJheSgnc2VhcmNoYWJsZScsJHJvd1snZmllbGRfc2VhcmNoYWJsZSddLCd3eXNpd3lnJz0+MCkpOwogICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWVsZF9leHRyYSwkaSwkcm93WydmaWVsZF9uYW1lJ10pKTsKICAgIH0KICB9CiAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BDb2x1bW5TUUwoJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLCdmaWVsZF9zZWFyY2hhYmxlJyk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwp9CgppZiggdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCcxLjEzJykgPCAwICkgewogICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdBZGQgQ2FsZW5kYXIgRXZlbnRzJywgJ0FkZCBDYWxlbmRhciBFdmVudHMnKTsKICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnLCAnRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKTsKfQoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xNCcpIDwgMCApIHsKICAgIHRyeSB7CiAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUsICJldmVudF9hbGxfZGF5IEMoMjU1KSIpOwogICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIG5vdGhpbmcgaGVyZS4KICAgIH0KCiAgICAvLyBjb252ZXJ0IGV2ZW50cyB0aGF0IHN0YXJ0IGF0IDAwOjAwLCBhbmQgZW5kIGF0IDIzOjU5IHRvIGFsbCBkYXkgZXZlbnRzIChzZXQgdGhlaXIgc3RhcnQgYW5kIGVuZCB0aW1lcyB0byAxMzowMCBhbmQgMTQ6MDAKICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIEhPVVIoZXZlbnRfZGF0ZV9zdGFydCkgPSAwIEFORCBNSU5VVEUoZXZlbnRfZGF0ZV9zdGFydCkgPSAwIEFORCBIT1VSKGV2ZW50X2RhdGVfZW5kKSA9IDIzIEFORCBNSU5VVEUoZXZlbnRfZGF0ZV9lbmQpID0gNTknOwogICAgJGxpc3QgPSAkZGItPkdldENvbCgkcXVlcnkpOwogICAgaWYoIGlzX2FycmF5KCRsaXN0KSAmJiBjb3VudCgkbGlzdCkgKSB7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFNFVCBldmVudF9kYXRlX3N0YXJ0ID0gQ09OQ0FUX1dTKFwnIFwnLCBEQVRFKGV2ZW50X2RhdGVfc3RhcnQpLCBcJzEzOjAwOjAwXCcpLAogICAgICAgICAgICAgICAgICAgICBldmVudF9kYXRlX2VuZCA9IENPTkNBVF9XUyhcJyBcJywgREFURShldmVudF9kYXRlX2VuZCksIFwnMTQ6MDA6MDBcJyksIGV2ZW50X2FsbF9kYXkgPSAxCiAgICAgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkIElOICgnLmltcGxvZGUoJywnLCRsaXN0KS4nKSc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICB9CgogICAgLy8gYWRkIHNvbWUgY29sdW1ucyB0byB0aGUgY2F0ZWdvcmllcyB0YWJsZSwgYW5kIHNldCBzb21lIGluaXRpYWwgdmFsdWVzLgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLCdjYXRlZ29yeV9iZ2NvbG9yIEMoMTApLGNhdGVnb3J5X2ZnY29sb3IgQygxMCknKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgU0VUIGNhdGVnb3J5X2JnY29sb3IgPSA/LCBjYXRlZ29yeV9mZ2NvbG9yID0gPyc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCcjMzM2NmZmJywnI2ZmZmZmZicpKTsKCiAgICAvLyBmaXggY2F0ZWdvcnkgb3JkZXJzCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLiR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBPUkRFUiBCWSBjYXRlZ29yeV9vcmRlcic7CiAgICAkY2F0cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgIGlmKCBjb3VudCgkY2F0cykgKSB7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfb3JkZXIgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNhdHMpOyAkaSsrICkgewogICAgICAgICAgICAkcm93ID0gJGNhdHNbJGldOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpKzEsJHJvd1snY2F0ZWdvcnlfaWQnXSkpOwogICAgICAgIH0KICAgIH0KfQoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xNS4zJykgPCAwICkgewogICAgJHRtcDEgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfTkVXRlVMTENBTEVOREFSX1RFTVBsQVRFKTsKICAgICR0bXAyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX0RGTFRGVUxMQ0FMRU5EQVJfVEVNUExBVEUpOwogICAgaWYoICEkdG1wMSB8fCAhJHRtcDIgKSB7CiAgICAgICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19mdWxsY2FsZW5kYXJfdGVtcGxhdGUudHBsJyk7CiAgICAgICAgJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfTkVXRlVMTENBTEVOREFSX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CiAgICAgICAgJHRoaXMtPlNldFRlbXBsYXRlKCdmdWxsY2FsZW5kYXJfU2FtcGxlJywkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxURlVMTENBTEVOREFSX1RFTVBMQVRFLCdTYW1wbGUnKTsKICAgIH0KfQoKLy8gRGVsZXRlIEV2ZW50IGZvcm0gdGVtcGxhdGUocykKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xNicpIDwgMCApIHsKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3RlbXBsYXRlcycsJ29yaWdfZGVsZXRlZXZlbnRfdGVtcGxhdGUudHBsJyk7CiAgICBpZiggZmlsZV9leGlzdHMoJGZuKSApIHsKICAgICAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ORVdERUxFVEVFVkVOVF9URU1QTEFURSwkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZGVsZXRlZXZlbnRfU2FtcGxlJywkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxUREVMRVRFRVZFTlRfVEVNUExBVEUsJ1NhbXBsZScpOwogICAgfQp9CgppZiggdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCcyLjAnKSA8IDAgKSB7CgogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlID0gbnVsbDsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZSA9IG51bGw7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZSA9IG51bGw7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUgPSBudWxsOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUgPSBudWxsOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlID0gbnVsbDsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlID0gbnVsbDsKICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZSA9IG51bGw7CgogICAgLy8gY3JlYXRlIHRlbXBsYXRlIHR5cGVzCiAgICB0cnkgewogICAgICAgIC8vIHNlYXJjaCBmb3JtIHRlbXBsYXRlIHR5cGUKICAgICAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAgICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnc2VhcmNoZm9ybScpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfc2VhcmNoX3RlbXBsYXRlLnRwbCc7CiAgICAgICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBTZWFyY2ggRm9ybSBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkc2VhcmNoX3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ3NlYXJjaHJlc3VsdCcpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfc2VhcmNocmVzdWx0X3RlbXBsYXRlLnRwbCc7CiAgICAgICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBTZWFyY2ggUmVzdWx0cyBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2V2ZW50Jyk7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIEV2ZW50IFZpZXcgU2FtcGxlJyk7CiAgICAgICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGUoJGV2ZW50X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2V2ZW50bGlzdCcpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfbGlzdF90ZW1wbGF0ZS50cGwnOwogICAgICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgTGlzdCBWaWV3IFNhbXBsZScpOwogICAgICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlKCRldmVudGxpc3RfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgICAgICR0cGwtPnNhdmUoKTsKICAgICAgICB9CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAvLyBsb2cgaXQKICAgICAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAgICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICRteWV2ZW50c190ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnbXlldmVudHMnKTsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAgICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAgICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19teWV2ZW50c190ZW1wbGF0ZS50cGwnOwogICAgICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgTXlFdmVudHMgVmlldyBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkbXlldmVudHNfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgICAgICR0cGwtPnNhdmUoKTsKICAgICAgICB9CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAvLyBsb2cgaXQKICAgICAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnZWRpdGV2ZW50Jyk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAgICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19lZGl0ZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIEVkaXQgRXZlbnQgRm9ybSBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2RlbGV0ZWV2ZW50Jyk7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfZGVsZXRlZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIERlbGV0ZSBFdmVudCBGb3JtIFNhbXBsZScpOwogICAgICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlKCRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgICAgIH0KICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIGxvZyBpdAogICAgICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIH0KCiAgICB0cnkgewogICAgICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAgICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdmdWxsY2FsZW5kYXInKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAgICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgICAgICAvLyBjcmVhdGUgYSBzYW1wbGUgdGVtcGxhdGUgb2YgdGhpcyB0eXBlCiAgICAgICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZS50cGwnOwogICAgICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgRnVsbENhbGVuZGFyIFZpZXcgU2FtcGxlJyk7CiAgICAgICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGUoJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgICAgIH0KICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIGxvZyBpdAogICAgICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIH0KCiAgICAvLyBhIG1hcCBvZiB0aGUgb2xkIHByZWZpeGVzLCB0byB0aGUgbmV3IHR5cGVzLgogICAgJG1hcCA9IGFycmF5KCdzZWFyY2gnID0+IGFycmF5KCd0eXBlX25hbWUnPT4nQ0dDYWxlbmRhcjo6c2VhcmNoZm9ybScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kc2VhcmNoX3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnID0+ICdDR0NhbGVuZGFyLVNlYXJjaC1Gb3JtLScpLAogICAgICAgICAgICAgICAgICdzZWFyY2hyZXN1bHQnID0+IGFycmF5KCd0eXBlX25hbWUnPT4nQ0dDYWxlbmRhcjo6c2VhcmNocmVzdWx0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc9PiRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0X3ByZWZpeCcgPT4gJ0NHQ2FsZW5kYXItU2VhcmNocmVzdWx0LVZpZXctJyksCiAgICAgICAgICAgICAgICAgJ2V2ZW50JyA9PiBhcnJheSgndHlwZV9uYW1lJyA9PiAnQ0dDYWxlbmRhcjo6ZXZlbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZXZlbnRfdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRfcHJlZml4JyA9PiAnQ0dDYWxlbmRhci1FdmVudC1WaWV3LScpLAogICAgICAgICAgICAgICAgICdsaXN0JyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmV2ZW50bGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJz0+JGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0X3ByZWZpeCc9PidDR0NhbGVuZGFyLUxpc3QtVmlldy0nKSwKICAgICAgICAgICAgICAgICAndXBjb21pbmdsaXN0JyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmV2ZW50bGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnPT4nQ0dDYWxlbmRhci1MaXN0LVZpZXctJyksCiAgICAgICAgICAgICAgICAgJ215ZXZlbnRzJyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6Om15ZXZlbnRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJz0+JG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0X3ByZWZpeCcgPT4gJ0NHQ2FsZW5kYXItTXlldmVudHMtVmlldy0nKSwKICAgICAgICAgICAgICAgICAnZWRpdGV2ZW50JyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmVkaXRldmVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnPT4nQ0dDYWxlbmRhci1FZGl0ZXZlbnQtRm9ybS0nKSwKICAgICAgICAgICAgICAgICAnZGVsZXRlZXZlbnQnID0+IGFycmF5KCd0eXBlX25hbWUnPT4nQ0dDYWxlbmRhcjo6ZGVsZXRlZXZlbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRfcHJlZml4Jz0+J0NHQ2FsZW5kYXItRGVsZXRlZXZlbnQtRm9ybS0nKSwKICAgICAgICAgICAgICAgICAnZnVsbGNhbGVuZGFyJyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmZ1bGxjYWxlbmRhcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnPT4nQ0dDYWxlbmRhci1mdWxsQ2FsZW5kYXItVmlldy0nKQogICAgICAgICk7CgogICAgLy8gbm93LCBqdXN0IGluIGNhc2UuLi4gd2UncmUgZ29ubmEgcmVsb2FkIHRoZSB0eXBlcyBpZiB3ZSBoYXZlIHRvLgogICAgZm9yZWFjaCggJG1hcCBhcyAka2V5ID0+ICRyZWMgKSB7CiAgICAgICAgaWYoICEkcmVjWyd0eXBlJ10tPmdldF9pZCgpICkgewogICAgICAgICAgICAkcmVjWyd0eXBlJ10gPSBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlOjpsb2FkKCdDR0NhbGVuZGFyOjonLiRyZWNbJ3R5cGUnXS0+Z2V0X25hbWUoKSk7CiAgICAgICAgfQogICAgfQogICAgLy8gZ2V0IGFsbCBvZiB0aGUgbW9kdWxlIGRhdGFiYXNlIHRlbXBsYXRlcwogICAgJGFsbF9tb2R1bGVfZGJfdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsKCiAgICAkX2ZpeF9uYW1lID0gZnVuY3Rpb24oJHN0cil7CiAgICAgICAgaWYoIFxDbXNBZG1pblV0aWxzOjppc192YWxpZF9pdGVtbmFtZSgkc3RyKSApIHJldHVybiAkc3RyOwogICAgICAgICRvcmlnID0gJHN0cjsKICAgICAgICAkc3RyID0gdHJpbSgkc3RyKTsKICAgICAgICBpZiggIUNtc0FkbWluVXRpbHM6OmlzX3ZhbGlkX2l0ZW1uYW1lKCRzdHJbMF0pICkgJHN0clswXSA9ICdfJzsKICAgICAgICBmb3IoICRpID0gMTsgJGkgPCBzdHJsZW4oJHN0cik7ICRpKysgKSB7CiAgICAgICAgICAgIGlmKCAhQ21zQWRtaW5VdGlsczo6aXNfdmFsaWRfaXRlbW5hbWUoJHN0clskaV0pICkgJHN0clskaV0gPSAnXyc7CiAgICAgICAgfQogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IDU7ICRpKysgKSB7CiAgICAgICAgICAgICRpbiA9ICRzdHI7CiAgICAgICAgICAgICRzdHIgPSBzdHJfcmVwbGFjZSgnX18nLCdfJywkc3RyKTsKICAgICAgICAgICAgaWYoICRpbiA9PSAkc3RyICkgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmKCAkc3RyID09ICdfJyApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgJy4kb3JpZy4nIGFuZCBjYW5ub3QgYmUgY29ycmVjdGVkJyk7CiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9OwoKICAgICR1aWQgPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICRtb2QgPSAkdGhpczsKICAgICRfdXBncmFkZV90ZW1wbGF0ZSA9IGZ1bmN0aW9uKENtc0xheW91dFRlbXBsYXRlVHlwZSAkdHlwZSwkdHlwZV9wcmVmaXgsJHRwbF9uYW1lLCRpc19kZmx0LCRuYW1lcHJlZml4KSB1c2UgKCYkbW9kLCYkX2ZpeF9uYW1lLCR1aWQpIHsKICAgICAgICAkY29udGVudHMgPSAkbW9kLT5HZXRUZW1wbGF0ZSgkdHBsX25hbWUpOwogICAgICAgIGlmKCAhJGNvbnRlbnRzICkgcmV0dXJuOwogICAgICAgICRwcm90b3R5cGVfbmFtZSA9IHN1YnN0cigkdHBsX25hbWUsc3RybGVuKCR0eXBlX3ByZWZpeCkpOwogICAgICAgICRwcm90b3R5cGUgPSAkbmFtZXByZWZpeC4kX2ZpeF9uYW1lKCR0cGxfbmFtZSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0cGwgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGUoJHR5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfbmFtZSgkdHBsOjpnZW5lcmF0ZV91bmlxdWVfbmFtZSgkcHJvdG90eXBlLCRuYW1lcHJlZml4KSk7CiAgICAgICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoJGlzX2RmbHQpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CgogICAgICAgICAgICAkbW9kLT5EZWxldGVUZW1wbGF0ZSgkdHBsX25hbWUpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXENtc0ludmFsaWREYXRhRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAvLyBsb2cgaXQuCiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH07CgogICAgLy8gZm9yIGVhY2ggdGVtcGxhdGUKICAgIGZvcmVhY2goICRhbGxfbW9kdWxlX2RiX3RlbXBsYXRlcyBhcyAkdHBsX25hbWUgKSB7CiAgICAgICAgLy8gICAgZ2V0IGl0cyBwcmVmaXgKICAgICAgICBsaXN0KCRwcmVmaXgsJG5hbWVwYXJ0KSA9IGV4cGxvZGUoJ18nLCR0cGxfbmFtZSk7CiAgICAgICAgaWYoICFpc3NldCgkbWFwWyRwcmVmaXhdKSApIGNvbnRpbnVlOwoKICAgICAgICAkcmVjID0mICRtYXBbJHByZWZpeF07CiAgICAgICAgJHR5cGUgPSAkcmVjWyd0eXBlJ107CgogICAgICAgICRoYXZlX2RmbHQgPSAoaXNzZXQoJHJlY1snaGF2ZV9kZmx0J10pICYmICRyZWNbJ2hhdmVfZGZsdCddKSA/IFRSVUUgOiBGQUxTRTsKICAgICAgICBpZiggISRoYXZlX2RmbHQgKSAkcmVjWydoYXZlX2RmbHQnXSA9IFRSVUU7CiAgICAgICAgJGlzX2RmbHQgPSAhJGhhdmVfZGZsdDsKICAgICAgICAkX3VwZ3JhZGVfdGVtcGxhdGUoJHJlY1sndHlwZSddLCRwcmVmaXgsJG5hbWVwYXJ0LCRpc19kZmx0LCRyZWNbJ291dF9wcmVmaXgnXSk7CiAgICB9CgogICAgLy8gcmVtb3ZlIHNvbWUgcHJlZmVyZW5jZXMKICAgICRwcmVmZCA9IGFycmF5KCdjZ2NhbGVuZGFyX3ByZWZfbmV3Y2FsZW5kYXJfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdGNhbGVuZGFyX3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX25ld2xpc3RfdGVtcGxhdGUnLAogICAgICAgICAgICAgICAgICAgJ2NnY2FsZW5kYXJfcHJlZl9kZmx0bGlzdF90ZW1wbGF0ZScsJ2NnY2FsZW5kYXJfcHJlZl9uZXd1cGNvbWluZ2xpc3RfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdHVwY29taW5nbGlzdF90ZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAnY2djYWxlbmRhcl9wcmVmX25ld2V2ZW50X3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX2RmbHRldmVudF90ZW1wbGF0ZScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdzZWFyY2hfdGVtcGxhdGUnLAogICAgICAgICAgICAgICAgICAgJ2NnY2FsZW5kYXJfcHJlZl9kZmx0c2VhcmNoX3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX25ld3NlYXJjaHJlc3VsdF90ZW1wbGF0ZScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0c2VhcmNocmVzdWx0X3RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICdjZ2NhbGVuZGFyX3ByZWZfbmV3bXlldmVudHNfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdG15ZXZlbnRzX3RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICdjZ2NhbGVuZGFyX3ByZWZfbmV3ZWRpdGV2ZW50X3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX2RmbHRlZGl0ZXZlbnRfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3ZGVsZXRlZXZlbnRfdGVtcGxhdGUnLAogICAgICAgICAgICAgICAgICAgJ2NnY2FsZW5kYXJfcHJlZl9kZmx0ZGVsZXRlZXZlbnRfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3ZnVsbGNhbGVuZGFyX3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX2RmbHRmdWxsY2FsZW5kYXJfdGVtcGxhdGUnKTsKICAgIGZvcmVhY2goICRwcmVmcyBhcyAkcHJlZl9uYW1lICkgewogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCRwcmVmX25hbWUpOwogICAgfQoKICAgIC8vIHNob3VsZCBiZSBhbGwgZG9uZSBub3cuCn0=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9IENHQ2FsZW5kYXIKdmVyc2lvbiA9IDIuMS4xCmRlc2NyaXB0aW9uID0gQ0dDYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgZXZlbnRzIG9uIHlvdXIgd2Vic2l0ZQphdXRob3IgPSBSb2JlcnQgQ2FtcGJlbGwKYXV0aG9yZW1haWwgPSBjYWxndXkxMDAwQGdtYWlsLmNvbQptaW5jbXN2ZXJzaW9uID0gMi4xLjIKMTFbZGVwZW5kc10KQ0dFeHRlbnNpb25zID0gMS41MQpDR1NpbXBsZVNtYXJ0eSA9IDEuOAo=]]></data>
	</file>
	<file>
	  <filename>/sample_csv_file.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3RhcnQgdGltZSxlbmQgdGltZSxUaXRsZSxzdW1tYXJ5LERlc2NyaXB0aW9uLGNhdGVnb3J5LHRlc3QxLHRlc3QyIC8vIGFueXRoaW5nIGFmdGVyIC8vIG9uIGEgbGluZSBpcyBpZ25vcmVkCi8vIHRoaXMgaXMgYSBmdWxsIGxpbmUgY29tbWVudAoyMDEyLTAxLTMxIDAwOjAwOjAwLDIwMTItMDEtMzEgMjM6NTk6MDAsTGFzdCBEYXksIkxhc3QgRGF5IG9mIEphbnVhcnkiLCJUaGlzIGlzIHRoZSBsYXN0IGRheSBvZiBqYW51YXJ5LCBmb3IgdGVzdGluZyIsR2VuZXJhbCxmb28sYmFyCjIwMTItMDItMTQsLFZhbGVudGluZXMgRGF5LFN0IFZhbGVudGluZXMgRGF5LCJSZW1lbWJlciB0byBnaXZlIHlvdXIgbG92ZWQgb25lIHNvbWUgZ2lmdHMsIHByb2JhYmx5IGNob2NvbGF0ZSBhbmQgZmxvd2VycyIsIkhvbGlkYXlzO1JvbWFudGljIix0ZXN0MXZhbCx0ZXN0MnZhbAowNC0wMS0yMDEyLDA0LTAxLTIwMTIgMTI6MDAsQXByaWwgRm9vbHMsQXByaWwgRm9vbHMgRGF5LCJXYXRjaCBvdXQgZm9yIHByYWN0aWNhbCBqb2tlcyIsSG9saWRheXMsdGVzdDF2YWxhLHRlc3QydmFsYSAvLyBqdXN0IHNvbWUgZHVtbXkgdmFsdWVzIGZvciB0ZXN0MSx0ZXN0Mgo=]]></data>
	</file>
	<file>
	  <filename>/skeleton.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_addedit_category.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBjc3NmaWxlPSdsaWIvY29sb3JQaWNrZXIvY29sb3JQaWNrZXIuY3NzJ30Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9jb2xvclBpY2tlci9qcXVlcnkuY29sb3JQaWNrZXIubWluLmpzJ30Ke2NnanNfYWRkfQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogIGZ1bmN0aW9uIHVwZGF0ZV9jb2xvcigpIHsKICAgIHZhciBiZ2NvbG9yID0gJCgnI2JnY29sb3InKS52YWwoKTsKICAgIHZhciBmZ2NvbG9yID0gJCgnI2ZnY29sb3InKS52YWwoKTsKICAgIGlmKCBiZ2NvbG9yICYmIGZnY29sb3IgKSB7CiAgICAgICQoJy50ZXN0bGFiZWwnKS5jc3MoJ2JhY2tncm91bmQtY29sb3InLCBiZ2NvbG9yICkuY3NzKCdjb2xvcicsIGZnY29sb3IpOwogICAgfQogIH0KICB1cGRhdGVfY29sb3IoKTsKICAkKCcjYmdjb2xvciwjZmdjb2xvcicpLmNoYW5nZShmdW5jdGlvbigpewogICAgdXBkYXRlX2NvbG9yKCk7CiAgfSkKICAkKCdpbnB1dC5jb2xvclBpY2tlcicpLmNvbG9yUGlja2VyKCk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnI2NhbmNlbCcsZnVuY3Rpb24oKXsKICAgICQoJzppbnB1dCcpLnJlbW92ZUF0dHIoJ3JlcXVpcmVkJyk7CiAgfSkKfSk7CnsvY2dqc19hZGR9Cgp7aWYgJGNhdGVnb3J5LmlkID4gMH0KPGgzPnskbW9kLT5MYW5nKCdlZGl0X2NhdGVnb3J5Jyl9PC9oMz4Ke2Vsc2V9CjxoMz57JG1vZC0+TGFuZygnYWRkX2NhdGVnb3J5Jyl9PC9oMz4Key9pZn0KCnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICA8aW5wdXQgaWQ9ImNhbmNlbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+KnskbW9kLT5MYW5nKCduYW1lJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW5hbWUiIHZhbHVlPSJ7JGNhdGVnb3J5Lm5hbWV8ZGVmYXVsdDonJ30iIHNpemU9IjQwIiByZXF1aXJlZC8+CiAgICAmbmJzcDs8c3BhbiBjbGFzcz0idGVzdGxhYmVsIiBzdHlsZT0icGFkZGluZzogNXB4OyI+U2FtcGxlPC9zcGFuPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRtb2QtPkxhbmcoJ2JnY29sb3InKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IGlkPSJiZ2NvbG9yIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sb3JQaWNrZXIiIG5hbWU9InskYWN0aW9uaWR9Ymdjb2xvciIgdmFsdWU9InskY2F0ZWdvcnkuYmdjb2xvcnxkZWZhdWx0OicnfSIgc2l6ZT0iNyIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRtb2QtPkxhbmcoJ2ZnY29sb3InKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IGlkPSJmZ2NvbG9yIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sb3JQaWNrZXIiIG5hbWU9InskYWN0aW9uaWR9Zmdjb2xvciIgdmFsdWU9InskY2F0ZWdvcnkuZmdjb2xvcnxkZWZhdWx0OicnfSIgc2l6ZT0iNyIvPgogIDwvcD4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_add_event.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnY3NzX2FkZH0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTIwMHB4KSB7CiAgLmdyaWRfOCB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogIH0KICAuZ3JpZF80IHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9CnRleHRhcmVhIHsKICB3aWR0aDogaW5pdGlhbDsKICBoZWlnaHQ6IGluaXRpYWw7Cn0Key9jZ2Nzc19hZGR9Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgdmFyIGF1dG9jaGFuZ2VfZW5kZGF0ZSA9IHtpZiAkZXZlbnQuZXZlbnRfaWQgPiAwfTB7ZWxzZX0xey9pZn07CiAgJCgnI3VwZGF0ZV9jaGlsZHJlbicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjcmVjdXJfYWxsJykudG9nZ2xlKCk7CiAgfSk7CiAgJCgnI3N0YXJ0ZGF0ZSA6aW5wdXQnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgIGlmKCAhYXV0b2NoYW5nZV9lbmRkYXRlICkgcmV0dXJuOwogICAgdmFyIG5hbWUgPSAkKHRoaXMpLmF0dHIoJ25hbWUnKS5yZXBsYWNlKCdzdGFydCcsJ2VuZCcpOwogICAgdmFyIG5hbWUyID0gJCh0aGlzKS5hdHRyKCduYW1lJykucmVwbGFjZSgnc3RhcnRkYXRlJywnZXZlbnRfcmVjdXJfZGF0ZScpOwogICAgdmFyIHMgPSAiOmlucHV0W25hbWU9JyIgKyBuYW1lICsgIiddIjsKICAgICQocykudmFsKCQodGhpcykudmFsKCkpOwogICAgdmFyIHMyID0gIjppbnB1dFtuYW1lPSciICsgbmFtZTIgKyAiJ10iOwogICAgJChzMikudmFsKCQodGhpcykudmFsKCkpOwogIH0pOwogICQoJyNzdGFydGRhdGUgOmlucHV0JykudHJpZ2dlcignY2hhbmdlJyk7CgogICQoJyNlbmRkYXRlIDppbnB1dCcpLmNoYW5nZShmdW5jdGlvbigpewogICAgYXV0b2NoYW5nZV9lbmRkYXRlID0gMDsKICB9KQoKICAkKCcjYWxsX2RheV9ldmVudCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICBpZiggJCh0aGlzKS5hdHRyKCdjaGVja2VkJykgKSB7CiAgICAgICQoJyNzdGFydHRpbWUnKS5oaWRlKCk7CiAgICAgICQoJyNlbmR0aW1lJykuaGlkZSgpOwogICAgICAkKCcjdXNlX2VuZGRhdGUnKS5oaWRlKCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgJCgnI3N0YXJ0dGltZScpLnNob3coKTsKICAgICAgJCgnI2VuZHRpbWUnKS5zaG93KCk7CiAgICAgICQoJyN1c2VfZW5kZGF0ZScpLnNob3coKTsKICAgIH0KICB9KTsKICAkKCcjZW5kZGF0ZV92YWxpZCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICBpZiggJCh0aGlzKS5hdHRyKCdjaGVja2VkJykgKSB7CiAgICAgICQoJyNlbmRkYXRlJykuc2hvdygpOwogICAgfQogICAgZWxzZSB7CiAgICAgICQoJyNlbmRkYXRlJykuaGlkZSgpOwogICAgfQogIH0pOwp9KTsKZnVuY3Rpb24gaGFuZGxlRHJvcGRvd24oKQp7CiAgdmFyIGxhYmVscyA9IG5ldyBBcnJheSgpOwogIGxhYmVsc1siZGFpbHkiXSA9ICJ7JG1vZC0+TGFuZygncGx1cmFsX2RhaWx5Jyl9IjsKICBsYWJlbHNbIndlZWtseSJdID0gInskbW9kLT5MYW5nKCdwbHVyYWxfd2Vla2x5Jyl9IjsKICBsYWJlbHNbIm1vbnRobHkiXSA9ICJ7JG1vZC0+TGFuZygncGx1cmFsX21vbnRobHknKX0iOwogIGxhYmVsc1sieWVhcmx5Il0gPSAieyRtb2QtPkxhbmcoJ3BsdXJhbF95ZWFybHknKX0iOwoKICB2YXIgZWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3VyZGV0YWlscycpOwogIHZhciBlbDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjdXJwZXJpb2QnKTsKICB2YXIgd2Vla2x5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3VyX3dlZWtseScpOwogIHZhciBlbDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW50ZXJ2YWxsYWJlbCcpOwogIHZhciBtb250aGx5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3VyX21vbnRobHknKTsKICB2YXIgaWR4ID0gZWwyLnNlbGVjdGVkSW5kZXg7CiAgdmFyIHZhbCA9IGVsMltpZHhdLnZhbHVlOwogIHZhciB0eHQgPSAnaW5saW5lJzsKICB2YXIgdHh0X3dlZWtseSA9ICdub25lJzsKICB2YXIgdHh0X21vbnRobHkgPSAnbm9uZSc7CgogIGlmKCB2YWwgPT0gJ25vbmUnICkKICB7CiAgICB0eHQgPSAnbm9uZSc7CiAgICB0eHRfd2Vla2x5ID0gJ25vbmUnOwogICAgdHh0X21vbnRobHkgPSAnbm9uZSc7CiAgfQoKICBlbHNlIGlmKCB2YWwgPT0gJ3dlZWtseScgKQogIHsKICAgIHR4dCA9ICdpbmxpbmUnOwogICAgdHh0X3dlZWtseSA9ICdibG9jayc7CiAgICB0eHRfbW9udGhseSA9ICdub25lJzsKICB9CgogIGVsc2UgaWYoIHZhbCA9PSAnbW9udGhseScgKQogIHsKICAgIHR4dCA9ICdpbmxpbmUnOwogICAgdHh0X3dlZWtseSA9ICdub25lJzsKICAgIHR4dF9tb250aGx5ID0gJ2Jsb2NrJzsKICB9CgogIGVsLnN0eWxlLmRpc3BsYXkgPSB0eHQ7CiAgd2Vla2x5LnN0eWxlLmRpc3BsYXkgPSB0eHRfd2Vla2x5OwogIG1vbnRobHkuc3R5bGUuZGlzcGxheSA9IHR4dF9tb250aGx5OwoKICBlbDQuaW5uZXJIVE1MID0gbGFiZWxzW3ZhbF07Cn0KPC9zY3JpcHQ+Cgp7aWYgJGV2ZW50LmV2ZW50X2lkID4gMH0KPGgzPnskbW9kLT5MYW5nKCdlZGl0X2V2ZW50Jyl9PC9oMz4Ke2Vsc2V9CjxoMz57JG1vZC0+TGFuZygnY2FsX2FkZGV2ZW50Jyl9PC9oMz4Key9pZn0KCntpZiAkZXZlbnQuZXZlbnRfaWQgPiAwICYmICRldmVudC5ldmVudF9wYXJlbnRfaWQgPiAwfQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+eyRtb2QtPkxhbmcoJ2luZm9fZWRpdF9jaGlsZGV2ZW50Jyl9PC9kaXY+CnsvaWZ9CntpZiAkZXZlbnQuZXZlbnRfaWQgPiAwICYmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJ25vbmUnICYmICRldmVudC5ldmVudF9wYXJlbnRfaWQgPT0gLTF9CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij57JG1vZC0+TGFuZygnaW5mb19lZGl0X3BhcmVudGV2ZW50Jyl9PC9kaXY+CnsvaWZ9Cgp7JGZvcm1zdGFydH17JGhpZGRlbnxkZWZhdWx0OicnfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgPC9wPgo8L2Rpdj4KCntjYXB0dXJlIGFzc2lnbj0ndXNlMjQnfXskbW9kLT5HZXRQcmVmZXJlbmNlKCd1c2VfdHdlbHZlX2hvdXJfY2xvY2snKX17L2NhcHR1cmV9CntpZiAkdXNlMjQgPT0gMX0KICB7YXNzaWduIHZhcj0ndXNlMjQnIHZhbHVlPTB9CntlbHNlfQogIHthc3NpZ24gdmFyPSd1c2UyNCcgdmFsdWU9MX0Key9pZn0KCjxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgPGRpdiBjbGFzcz0iZ3JpZF84IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDA7Ij4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+KnskbW9kLT5MYW5nKCdjYWxfZnJvbWRhdGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1zdGFydGRhdGVfey9jYXB0dXJlfQogICAgICAgIDxzcGFuIGlkPSJzdGFydGRhdGUiPntodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kdG1wIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnRfdXQgc3RhcnRfeWVhcj0kc3RhcnRfeWVhciBlbmRfeWVhcj0kZW5kX3llYXJ9PC9zcGFuPgogICAgICAgICZuYnNwOzxzcGFuIGlkPSJzdGFydHRpbWUie2lmICRldmVudC5hbGxfZGF5X2V2ZW50ID09IDF9IHN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4gPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6IDAuNWVtOyI+QDwvc3Bhbj4ge2h0bWxfc2VsZWN0X3RpbWUgdXNlXzI0X2hvdXJzPSR1c2UyNCBwcmVmaXg9JHRtcCB0aW1lPSRldmVudC5ldmVudF9kYXRlX3N0YXJ0X3V0IG1pbnV0ZV9pbnRlcnZhbD0xNSBkaXNwbGF5X3NlY29uZHM9ZmFsc2V9PC9zcGFuPgogICAgICAgICZuYnNwO0FsbCBEYXk6IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1hbGxfZGF5X2V2ZW50IiBpZD0iYWxsX2RheV9ldmVudCIgdmFsdWU9IjEiIHtpZiAkZXZlbnQuYWxsX2RheV9ldmVudH0gY2hlY2tlZD0iY2hlY2tlZCJ7L2lmfS8+CiAgICAgICAge2Fzc2lnbiB2YXI9J3NfZGF0ZScgdmFsdWU9JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnRfdXR9e2Fzc2lnbiB2YXI9J2VfZGF0ZScgdmFsdWU9JGV2ZW50LmV2ZW50X2RhdGVfZW5kX3V0fTxici8+CiAgICAgICAgPGxhYmVsIGlkPSJ1c2VfZW5kZGF0ZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZW5kZGF0ZV92YWxpZCIgbmFtZT0ieyRhY3Rpb25pZH1lbmRkYXRlX3ZhbGlkIiB2YWx1ZT0iMSIge2lmICRzX2RhdGUgIT0gJGVfZGF0ZSAmJiAkZV9kYXRlICE9IDB9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfS8+eyRtb2QtPkxhbmcoJ3VzZV90b19kYXRlJyl9PC9sYWJlbD4KICAgICAgPC9wPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW5kZGF0ZSIgY2xhc3M9InBhZ2VvdmVyZmxvdyIge2lmICRzX2RhdGUgPT0gJGVfZGF0ZSB8fCAkZV9kYXRlID09IDB9c3R5bGU9ImRpc3BsYXk6IG5vbmU7InsvaWZ9PgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdjYWxfdG9kYXRlJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAge2NhcHR1cmUgYXNzaWduPSd0bXAnfXskYWN0aW9uaWR9ZW5kZGF0ZV97L2NhcHR1cmV9CiAgICAgICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfZW5kX3V0IHN0YXJ0X3llYXI9JHN0YXJ0X3llYXIgZW5kX3llYXI9JGVuZF95ZWFyfTxzcGFuIGlkPSJlbmR0aW1lIntpZiAkZXZlbnQuYWxsX2RheV9ldmVudCA9PSAxfSBzdHlsZT0iZGlzcGxheTogbm9uZTsiey9pZn0+IDxzcGFuIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiAwLjVlbTsiPkA8L3NwYW4+IHtodG1sX3NlbGVjdF90aW1lIHVzZV8yNF9ob3Vycz0kdXNlMjQgdGltZT0kZXZlbnQuZXZlbnRfZGF0ZV9lbmRfdXQgcHJlZml4PSR0bXAgbWludXRlX2ludGVydmFsPTE1IGRpc3BsYXlfc2Vjb25kcz1mYWxzZX08L3NwYW4+CiAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+KnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGV2ZW50X3RpdGxlfTwvcD4KICAgIDwvZGl2PgoKICAgIHtpZiBpc3NldCgkZXZlbnRfc3VtbWFyeSl9CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdjYWxfc3VtbWFyeScpfTo8L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZXZlbnRfc3VtbWFyeX08L3A+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CgogICAge2lmIGlzc2V0KCRldmVudF9kZXRhaWxzKX0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NhbF9kZXRhaWxzJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRldmVudF9kZXRhaWxzfTwvcD4KICAgIDwvZGl2PgogICAgey9pZn0KCiAgICB7aWYgaXNzZXQoJGZpZWxkcyl9CiAgICAgIHtmb3JlYWNoIGZyb209JGZpZWxkcyBpdGVtPSdvbmUnfQogICAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRvbmUtPm5hbWV9PC9wPgogICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskb25lLT5maWVsZH08L3A+CiAgICAgIDwvZGl2PgogICAgICB7L2ZvcmVhY2h9CiAgICB7L2lmfQoKICA8L2Rpdj57KiAuZ3JpZF84ICp9CgogIDxkaXYgY2xhc3M9ImdyaWRfNCI+CiAgICB7aWYgaXNzZXQoJGV2ZW50Lm93bmVyX25hbWUpfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnb3duZXInKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGV2ZW50Lm93bmVyX25hbWV9PC9wPgogICAgPC9kaXY+CiAgICB7L2lmfQoKICAgIHtpZiBpc3NldCgkY2F0ZWdvcmllcyl9CiAgICA8ZmllbGRzZXQgc3R5bGU9Im1heC1oZWlnaHQ6IDIwZW07IG92ZXJmbG93LXk6IGF1dG87Ij4KICAgICAgPGxlZ2VuZD57JG1vZC0+TGFuZygnY2FsX2NhdGVnb3JpZXMnKX06PC9sZWdlbmQ+CiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7Zm9yZWFjaCBmcm9tPSRjYXRlZ29yaWVzIGl0ZW09J29uZSd9CiAgICAgICAgeyRvbmUtPmZpZWxkfSZuYnNwO3skb25lLT5uYW1lfTxici8+CiAgICAgIHsvZm9yZWFjaH0KICAgICAgPC9wPgogICAgPC9maWVsZHNldD4KICAgIHsvaWZ9CgogICAge2lmIGlzc2V0KCRhbGxvd19vdmVybGFwKX0KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NhbF9vdmVybGFwJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1ldmVudF9hbGxvd3Nfb3ZlcmxhcCIgdmFsdWU9IjAiLz4KICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9ZXZlbnRfYWxsb3dzX292ZXJsYXAiIHZhbHVlPSIxIiBjaGVja2VkPSJjaGVja2VkIi8+CiAgICAgICAgPGJyLz57JG1vZC0+TGFuZygnY2FsX2luZm9fb3ZlcmxhcCcpfQogICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CgogICAgPGRpdiBpZD0icmVjdXJfYWxsIiB7aWYgJGV2ZW50LmV2ZW50X3JlY3VyX3BlcmlvZCAhPSAnbm9uZScgJiYgJGV2ZW50LmV2ZW50X2lkID4gMH1zdHlsZT0iZGlzcGxheTogbm9uZTsiey9pZn0+CiAgICB7aWYgJGV2ZW50LmV2ZW50X3BhcmVudF9pZCA8PSAwfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY2FsX3JlY3VyX3BlcmlvZCcpfTo8L3A+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX3BlcmlvZHsvY2FwdHVyZX0KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgPHNlbGVjdCBpZD0icmVjdXJwZXJpb2QiIG5hbWU9InskYWN0aW9uaWR9ZXZlbnRfcmVjdXJfcGVyaW9kIiBvbmNsaWNrPSJoYW5kbGVEcm9wZG93bigpOyI+CiAgICAgICAge2ZvcmVhY2ggZnJvbT0kcmVjdXJfb3B0aW9ucyBrZXk9a2V5IGl0ZW09dmFsdWV9CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ7JHZhbHVlfSIge2lmICR2YWx1ZSA9PSAkZXZlbnRfcmVjdXJfcGVyaW9kfXNlbGVjdGVkPSJzZWxlY3RlZCJ7L2lmfT57JGtleX08L29wdGlvbj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9InJlY3VyZGV0YWlscyIge2lmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgPT0gJ25vbmUnfXN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl9kZXRhaWxzJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX2ludGVydmFsey9jYXB0dXJlfQogICAgICB7JG1vZC0+TGFuZygnaW50ZXJ2YWwnKX06Jm5ic3A7e2h0bWxfb3B0aW9ucyBuYW1lPSR0bXAgc2VsZWN0ZWQ9JGV2ZW50LmV2ZW50X3JlY3VyX2ludGVydmFsIG9wdGlvbnM9JG51bXN9Jm5ic3A7PHNwYW4gaWQ9ImludGVydmFsbGFiZWwiPnskcmVwZWF0X3N0cn08L3NwYW4+PGJyLz4KICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIGlkPSJyZWN1cl93ZWVrbHkiIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICd3ZWVrbHknfXN0eWxlPSJkaXNwbGF5OiBub25lO3svaWZ9Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnd2Vla2RheXMnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3dlZWtkYXlzfTwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBpZD0icmVjdXJfbW9udGhseSIge2lmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJ21vbnRobHknfXN0eWxlPSJkaXNwbGF5OiBub25lO3svaWZ9Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZnJlcXVlbmN5Jyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZXZlbnRfcmVjdXJfbW9udGhkYXlzW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iNSI+CiAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kcmVjdXJfZGF5cyBzZWxlY3RlZD0kZXZlbnQuZXZlbnRfcmVjdXJfbW9udGhkYXlzfQogICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl91bnRpbCcpfTo8L3A+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX2RhdGVfey9jYXB0dXJlfQogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcDInfXskYWN0aW9uaWR9ZXZlbnRfcmVjdXJfY291bnR7L2NhcHR1cmV9CiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfcmVjdXJfZW5kX3V0IHByZWZpeD0kdG1wIHN0YXJ0X3llYXI9JHN0YXJ0X3llYXIgZW5kX3llYXI9JGVuZF95ZWFyfQogICAgICA8YnIvPnskbW9kLT5MYW5nKCdtYXhfcmVjdXJfZXZlbnRzJyl9OiZuYnNwO3todG1sX29wdGlvbnMgbmFtZT0kdG1wMiBvcHRpb25zPSRtYXhpdGVycyBzZWxlY3RlZD0kZXZlbnQuZXZlbnRfcmVjdXJfY291bnR9PC9wPgogICAgPC9kaXY+CiAgICA8L2Rpdj57KiByZWN1cmRldGFpbHMgKn0KICAgIDwvZGl2PnsqIHJlY3VyX2FsbCAqfQogICAgey9pZn0KCiAgICB7aWYgJGV2ZW50LmV2ZW50X2lkID4gMCAmJiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICdub25lJyAmJiAkZXZlbnQuZXZlbnRfcGFyZW50X2lkID09IC0xfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndXBkYXRlX2NoaWxkcmVuJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAge2NhcHR1cmUgYXNzaWduPSd0bXAnfXskYWN0aW9uaWR9dXBkYXRlX2NoaWxkcmVuey9jYXB0dXJlfQogICAgICAgIDxpbnB1dCBpZD0idXBkYXRlX2NoaWxkcmVuIiB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyR0bXB9IiB2YWx1ZT0iMSIvPgogICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CgogICAge2lmICRldmVudC5ldmVudF9pZCA+IDAgJiYgJGV2ZW50LmV2ZW50X3BhcmVudF9pZCA+IDB9CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCcpfTwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAge2NnZV95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1yZW1vdmVmcm9tcGFyZW50fQogICAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fcmVtb3ZlZnJvbXBhcmVudCcpfQogICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CiAgPC9kaXY+eyogLmdyaWRfNCAqfQoKPC9kaXY+eyogY19mdWxsICp9Cgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_ajax_getcategories.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRjYXRlZ29yaWVzKSAmJiBjb3VudCgkY2F0ZWdvcmllcyl9Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnbmFtZScpfTwvdGg+CiAgICAgIDx0aD48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keSBpZD0iY2F0ZWdvcnlsaXN0Ij4KICB7Zm9yZWFjaCAkY2F0ZWdvcmllcyBhcyAkY2F0fQogICAge21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249YWRtaW5fYWRkZWRpdF9jYXRlZ29yeSBjYXRpZD0kY2F0LmNhdGVnb3J5X2lkIHVybG9ubHk9MSBhc3NpZ249J2VkaXRfdXJsJ30KICAgIHttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2RlbGV0ZV9jYXRlZ29yeSBjYXRpZD0kY2F0LmNhdGVnb3J5X2lkIHVybG9ubHk9MSBhc3NpZ249J2RlbGV0ZV91cmwnfQogICAgPHRyIGlkPSJjYXRfeyRjYXQuY2F0ZWdvcnlfaWR9Ij4KICAgICAgPHRkPgogICAgICAgIDxhIGhyZWY9InskZWRpdF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2VkaXQnKX0iPnskY2F0LmNhdGVnb3J5X25hbWV9PC9hPgogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAgIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAycHg7IHtpZiAkY2F0LmNhdGVnb3J5X2JnY29sb3J9YmFja2dyb3VuZC1jb2xvcjogeyRjYXQuY2F0ZWdvcnlfYmdjb2xvcn07ey9pZn0ge2lmICRjYXQuY2F0ZWdvcnlfZmdjb2xvcn1jb2xvcjogeyRjYXQuY2F0ZWdvcnlfZmdjb2xvcn07ey9pZn0iPlNhbXBsZSBUZXh0PC9zcGFuPgogICAgICA8L3RkPgogICAgICA8dGQ+PGEgaHJlZj0ieyRlZGl0X3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdCcpfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9lZGl0LmdpZicgY2xhc3M9J3N5c3RlbWljb24nIGFsdD0kbW9kLT5MYW5nKCdlZGl0Jyl9PC9hPjwvdGQ+CiAgICAgIDx0ZD48YSBocmVmPSJ7JGRlbGV0ZV91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2RlbGV0ZScpfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyBjbGFzcz0nc3lzdGVtaWNvbicgYWx0PSRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT48L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_categories_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogIHZhciBjYXRlZ29yeV9yZWZyZXNoX3VybCA9ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj0nYWRtaW5fYWpheF9nZXRjYXRlZ29yaWVzJyBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiAgJCgnI2NhdGVnb3J5dGFibGUnKS5sb2FkKGNhdGVnb3J5X3JlZnJlc2hfdXJsKTsKCiAgJCgnI3Jlb3JkZXJfbW9kZV9idXR0b24nKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2NhdGVnb3J5X29wdGlvbnMnKS5oaWRlKCk7CiAgICAkKCcjcmVvcmRlcl9tb2RlJykuc2hvdygpOwogICAgJCgndGJvZHkjY2F0ZWdvcnlsaXN0Jykuc29ydGFibGUoewogICAgICBpdGVtczogJz4gdHInLAogICAgICBjdXJzb3I6ICdtb3ZlJwogICAgfSkKICB9KTsKICAkKCcjcmVvcmRlcl9tb2RlX2NhbmNlbCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjcmVvcmRlcl9tb2RlJykuaGlkZSgpOwogICAgJCgnI2NhdGVnb3J5X29wdGlvbnMnKS5zaG93KCk7CiAgICAkKCd0Ym9keSNjYXRlZ29yeWxpc3QnKS5zb3J0YWJsZSgnZGVzdHJveScpOwogICAgLy8gYWpheCBjYWxsIHRvIHJlc3RvcmUgdGhlIGNhdGVnb3J5IGxpc3QKICAgICQoJyNjYXRlZ29yeXRhYmxlJykubG9hZChjYXRlZ29yeV9yZWZyZXNoX3VybCk7CiAgfSk7CiAgJCgnI3Jlb3JkZXJfbW9kZV9zdWJtaXQnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3Jlb3JkZXJfbW9kZScpLmhpZGUoKTsKICAgICQoJyNjYXRlZ29yeV9vcHRpb25zJykuc2hvdygpOwogICAgLy8gYWpheCBjYWxsIHRvIHN1Ym1pdCB0aGUgY2F0ZWdvcnkgbGlzdAogICAgJC5hamF4KHsKICAgICAgdHlwZTogJ1BPU1QnLAogICAgICB1cmw6ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X29yZGVyY2F0ZWdvcmllcyBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCiAgICAgIGRhdGE6ICQoJ3Rib2R5I2NhdGVnb3J5bGlzdCcpLnNvcnRhYmxlKCdzZXJpYWxpemUnKSwKICAgICAgc3VjY2VzczogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAgICAgLy8gYWpheCBjYWxsIHRvIHJlc3RvcmUgdGhlIGNhdGVnb3J5IGxpc3QKICAgICAgICAkKCcjY2F0ZWdvcnl0YWJsZScpLmxvYWQoY2F0ZWdvcnlfcmVmcmVzaF91cmwpOwogICAgICB9LAogICAgICBlcnJvcjogZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7CiAgICAgICAgYWxlcnQoJ2ZhaWwgJyt0ZXh0U3RhdHVzKTsKICAgICAgICAvLyBhamF4IGNhbGwgdG8gcmVzdG9yZSB0aGUgY2F0ZWdvcnkgbGlzdAogICAgICAgICQoJyNjYXRlZ29yeXRhYmxlJykubG9hZChjYXRlZ29yeV9yZWZyZXNoX3VybCk7CiAgICAgIH0KICAgIH0pOwogIH0pOwp9KTsKPC9zY3JpcHQ+Cgo8ZGl2IGlkPSJjYXRlZ29yeV9vcHRpb25zIiBjbGFzcz0icGFnZW9wdGlvbnMiPgogIDxhIGhyZWY9Inttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9hZGRlZGl0X2NhdGVnb3J5JyB1cmxvbmx5PTF9Ij57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnIGFsdD0kbW9kLT5MYW5nKCdhZGRfY2F0ZWdvcnknKSBjbGFzcz0nc3lzdGVtaWNvbid9IHskbW9kLT5MYW5nKCdhZGRfY2F0ZWdvcnknKX08L2E+CiAgPGEgaWQ9InJlb3JkZXJfbW9kZV9idXR0b24iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vcmVvcmRlci5naWYnIGFsdD0kbW9kLT5MYW5nKCdyZW9yZGVyJyl9IHskbW9kLT5MYW5nKCdyZW9yZGVyJyl9PC9hPgo8L2Rpdj4KCjxkaXYgaWQ9InJlb3JkZXJfbW9kZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+eyRtb2QtPkxhbmcoJ2luZm9fcmVvcmRlcl9jYXRlZ29yaWVzJyl9PC9kaXY+CiAgPGEgaWQ9InJlb3JkZXJfbW9kZV9jYW5jZWwiPntjZ2ltYWdlIGltYWdlPSdmYWxzZS5naWYnIGFsdD0kbW9kLT5MYW5nKCdjYW5jZWwnKX0geyRtb2QtPkxhbmcoJ2NhbmNlbCcpfTwvYT4mbmJzcDsKICA8YSBpZD0icmVvcmRlcl9tb2RlX3N1Ym1pdCI+e2NnaW1hZ2UgaW1hZ2U9J3RydWUuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnc3VibWl0Jyl9IHskbW9kLT5MYW5nKCdzdWJtaXQnKX08L2E+CjwvZGl2PgoKPGRpdiBpZD0iY2F0ZWdvcnl0YWJsZSI+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_events_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBjc3NmaWxlPSdsaWIvZnVsbGNhbGVuZGFyL2Z1bGxjYWxlbmRhci5taW4uY3NzJ30Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9mdWxsY2FsZW5kYXIvbGliL21vbWVudC5taW4uanMnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nbGliL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIuanMnfQp7Y2dqc19yZXF1aXJlIGNzc2ZpbGU9J2xpYi9jb2xvclBpY2tlci9jb2xvclBpY2tlci5jc3MnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nbGliL2NvbG9yUGlja2VyL2pxdWVyeS5jb2xvclBpY2tlci5taW4uanMnfQp7Y2djc3NfYWRkfQouZmMtZXZlbnQgewogIG1pbi1oZWlnaHQ6IDIwcHg7Cn0KLmZjLWV2ZW50LWljb25zIHsKICB0ZXh0LWFsaWduOiByaWdodDsKICBmbG9hdDogcmlnaHQ7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMDsKICByaWdodDogMDsKfQouaW5mb3JtYXRpb24gewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5lcnJvciB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmZjLWV2ZW50LWNvbnRhaW5lciBhIHsKICBjb2xvcjogd2hpdGU7Cn0KLnRleHRfcmlnaHQgewogIHRleHQtYWxpZ246IHJpZ2h0Owp9Ci5mb3JtX3JvdyB7CiAgcGFkZGluZzogMnB4IDA7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5mb3JtX3Byb21wdCB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLmZvcm1faW5wdXQgewp9CmEuZ290b19kYXRlIHsKICBjdXJzb3I6IHBvaW50ZXI7IGN1cnNvcjogaGFuZDsKfQojZmluZF9yZXN1bHRzX3BhbmVsIHRhYmxlIHsKICB3aWR0aDogMTAwJTsKfQojZmluZF9yZXN1bHRzX3BhbmVsIHRoIHsKICBwYWRkaW5nLXJpZ2h0OiAxZW07Cn0KI2ZpbmRfcmVzdWx0c19wYW5lbCB0ZCB7CiAgcGFkZGluZy1yaWdodDogMWVtOwp9CiNmaW5kX3Jlc3VsdHNfbm9uZSB7CiAgd2lkdGg6IDk1JTsKfQp7L2NnY3NzX2FkZH0KCnttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9hamF4X2ZldGNoZXZlbnRzJyBqc2ZyaWVuZGx5PTEgYXNzaWduPWZldGNoX3VybH0KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KU3RyaW5nLnByb3RvdHlwZS5hZGRTbGFzaGVzID0gZnVuY3Rpb24oKQp7CiAgIC8vbm8gbmVlZCB0byBkbyAoc3RyKycnKSBhbnltb3JlIGJlY2F1c2UgJ3RoaXMnIGNhbiBvbmx5IGJlIGEgc3RyaW5nCiAgIHJldHVybiB0aGlzLnJlcGxhY2UoL1tcXCInXS9nLCAnXFwkJicpLnJlcGxhY2UoL1x1MDAwMC9nLCAnXFwwJyk7Cn0KCmZ1bmN0aW9uIGNsb3NlRGlhbG9nKHNlbCkgewogIHRyeSB7CiAgICBpZiggJChzZWwpLmRpYWxvZygnaXNPcGVuJykgKSAkKHNlbCkuZGlhbG9nKCdjbG9zZScpOwogIH0gY2F0Y2goIGVyciApIHsKICAgIC8vIG5vdGhpbmcuCiAgfQp9CmZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZSxzaG93X3RpbWUpIHsKICB2YXIgbG9jYWxlID0gd2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZTsKICBkYXRlLmxvY2FsZShsb2NhbGUpOwogIHZhciBvdXQgPSBkYXRlLmZvcm1hdCgnTCcpOwogIGlmKCBzaG93X3RpbWUgKSBvdXQgPSBkYXRlLmZvcm1hdCgnTCBMVCcpOwogIC8qCiAgdmFyIG91dCA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7CiAgaWYoIHNob3dfdGltZSApIHsKICAgIG91dCA9IG91dCArICcgJzsKICAgIG91dCA9IG91dCArIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCk7CiAgfQogICovCiAgcmV0dXJuIG91dDsKfQpmdW5jdGlvbiBjcmVhdGVDb29raWUobmFtZSwgdmFsdWUsIGRheXMpIHsKICAgIHZhciBleHBpcmVzOwoKICAgIGlmIChkYXlzKSB7CiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwogICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpOwogICAgICAgIGV4cGlyZXMgPSAiOyBleHBpcmVzPSIgKyBkYXRlLnRvR01UU3RyaW5nKCk7CiAgICB9IGVsc2UgewogICAgICAgIGV4cGlyZXMgPSAiIjsKICAgIH0KICAgIGRvY3VtZW50LmNvb2tpZSA9IGVzY2FwZShuYW1lKSArICI9IiArIGVzY2FwZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpICsgZXhwaXJlcyArICI7IHBhdGg9LyI7Cn0KZnVuY3Rpb24gcmVhZENvb2tpZShuYW1lKSB7CiAgICB2YXIgbmFtZUVRID0gZXNjYXBlKG5hbWUpICsgIj0iOwogICAgdmFyIGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGMgPSBjYVtpXTsKICAgICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT09ICcgJykgYyA9IGMuc3Vic3RyaW5nKDEsIGMubGVuZ3RoKTsKICAgICAgICBpZiAoYy5pbmRleE9mKG5hbWVFUSkgPT09IDApIHsKCSAgdmFyIHQgPSB1bmVzY2FwZShjLnN1YnN0cmluZyhuYW1lRVEubGVuZ3RoLCBjLmxlbmd0aCkpOwoJICB0ID0galF1ZXJ5LnBhcnNlSlNPTih0KTsKCSAgcmV0dXJuIHQ7Cgl9CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQpmdW5jdGlvbiBlcmFzZUNvb2tpZShuYW1lKSB7CiAgICBjcmVhdGVDb29raWUobmFtZSwgIiIsIC0xKTsKfQoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAvLyByZXN0b3JlIG91ciBzZWxlY3RlZCBkYXRlIGZyb20gYSBjb29raWUuCiAgdmFyIGN1cl9kYXRlID0gbmV3IERhdGUoKTsKICB2YXIgdG1wID0gcmVhZENvb2tpZSgnY2FsZW5kYXJfZGF0ZScpOwogIGlmKCB0bXAgIT0gbnVsbCApIGN1cl9kYXRlID0gbmV3IERhdGUodG1wKTsKICB2YXIgX2hvbGlkYXlzID0gbnVsbDsKICAkLmFqYXgoewogICAgIHVybDogJ3ttb2R1bGVfYWN0aW9uX3VybCBhY3Rpb249YWpheF9mZXRjaGhvbGlkYXlzIGZvcmFqYXg9MX0nCiAgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsKICAgICBpZiggdHlwZW9mIGRhdGEgIT0gJ3VuZGVmaW5lZCcgJiYgZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoID4gMCApIHsKICAgICAgICBfaG9saWRheXMgPSBkYXRhOwogICAgIH0KICAkKCcjY2FsZW5kYXJ2aWV3JykuZnVsbENhbGVuZGFyKHsKICAgIGRheVJlbmRlcjogZnVuY3Rpb24oIGRhdGUsIGNlbGwgKSB7CiAgICAgICAvLyBnZXQgaG9saWRheSBldmVudHMgZm9yIHRvZGF5LgogICAgICAgaWYoICEgX2hvbGlkYXlzIGluc3RhbmNlb2YgQXJyYXkgKSByZXR1cm47CiAgICAgICBpZiggX2hvbGlkYXlzID09IG51bGwgfHwgX2hvbGlkYXlzLmxlbmd0aCA9PSAwICkgcmV0dXJuOwogICAgICAgdmFyIF90c3QxID0gZGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKTsKICAgICAgIF9ob2xpZGF5cy5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5KXsKICAgICAgICAgIGlmKCBfdHN0MSA9PSBlbnRyeS5zdGFydCApIHsKICAgICAgICAgICAgIGNlbGwuYWRkQ2xhc3MoJ2hvbGlkYXknKTsKCSAgICAgY2VsbC5jc3MoJ2JhY2tncm91bmRDb2xvcicsJ3skaG9saWRheV9iZ2NvbG9yfScpLmNzcygnY29sb3InLCd7JGhvbGlkYXlfZmdjb2xvcn0nKTsKCSAgICAgY2VsbC5odG1sKGVudHJ5LnRpdGxlKTsKCSAgfQogICAgICAgfSk7CiAgICB9LAogICAgZXZlbnRzOiB7CiAgICAgICB1cmw6ICd7JGZldGNoX3VybH0mc2hvd3RlbXBsYXRlPWZhbHNlJywKICAgICAgIHR5cGU6ICdHRVQnLAogICAgICAgZGF0YTogewogICAgICAgICAneyRhY3Rpb25pZH1zaG93Y2hpbGRyZW4nOiAxCiAgICAgICB9LAogICAgICAgZXJyb3I6IGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgYWxlcnQoZGF0YSk7CiAgICAgICAgIGFsZXJ0KCd7JG1vZC0+TGFuZygnZXJyb3JfZmV0Y2hpbmdfZXZlbnRzJyl8Y21zX2VzY2FwZX0nKTsKICAgICAgIH0KICAgIH0sCiAgICB5ZWFyOiBjdXJfZGF0ZS5nZXRGdWxsWWVhcigpLAogICAgbW9udGg6IGN1cl9kYXRlLmdldE1vbnRoKCksCiAgICBkYXRlOiBjdXJfZGF0ZS5nZXREYXRlKCksCiAgICBoZWFkZXI6IHsKICAgICAgbGVmdDogJ3ByZXYsbmV4dCx0b2RheScsCiAgICAgIGNlbnRlcjogJ3RpdGxlJywKICAgICAgcmlnaHQ6ICdtb250aCxhZ2VuZGFXZWVrLGFnZW5kYURheScKICAgIH0sCiAgICBldmVudENvbG9yOiAneyRkZmx0X2JnY29sb3J9JywKICAgIGV2ZW50VGV4dENvbG9yOiAneyRkZmx0X2ZnY29sb3J9JywKICAgIGFsbERheVRleHQ6ICd7JG1vZC0+TGFuZygnYWxsZGF5Jyl8Y21zX2VzY2FwZX0nLAogICAgbW9udGhOYW1lczogeyRkYXRlc3RyaW5ncy5tb250aE5hbWVzfSwKICAgIG1vbnRoTmFtZXNTaG9ydDogeyRkYXRlc3RyaW5ncy5tb250aE5hbWVzU2hvcnR9LAogICAgZGF5TmFtZXM6IHskZGF0ZXN0cmluZ3MuZGF5TmFtZXN9LAogICAgZGF5TmFtZXNTaG9ydDogeyRkYXRlc3RyaW5ncy5kYXlOYW1lc1Nob3J0fSwKICAgIGJ1dHRvblRleHQ6IHsKICAgICAgIHRvZGF5OiAneyR0ZXh0X3RvZGF5fGNtc19lc2NhcGV9JywKICAgICAgIHdlZWs6ICd7JHRleHRfd2Vla3xjbXNfZXNjYXBlfScsCiAgICAgICBtb250aDogJ3skdGV4dF9tb250aHxjbXNfZXNjYXBlfScsCiAgICAgICBkYXk6ICd7JHRleHRfZGF5fGNtc19lc2NhcGV9JwogICAgfSwKICAgIGZpcnN0RGF5OiB7JGZpcnN0ZGF5b2Z3ZWVrfSwKICAgIGRlZmF1bHRFdmVudE1pbnV0ZXM6IDE1LAogICAgc2xvdE1pbnV0ZXM6IDE1LAogICAgZWRpdGFibGU6IHRydWUsCiAgICB2aWV3UmVuZGVyOiBmdW5jdGlvbiggdmlldywgZWxlbWVudCApIHsKICAgICAgY3VyX2RhdGUgPSAkKCcjY2FsZW5kYXJ2aWV3JykuZnVsbENhbGVuZGFyKCdnZXREYXRlJyk7CiAgICAgIGNyZWF0ZUNvb2tpZSgnY2FsZW5kYXJfZGF0ZScsY3VyX2RhdGUsNyk7CiAgICB9LAoKICAgIHZpZXdEZXN0cm95OiBmdW5jdGlvbih2aWV3KSB7CiAgICAgICAgY2xvc2VEaWFsb2coJyNldmVudHByZXZpZXcnKTsKCWNsb3NlRGlhbG9nKCcjZmluZF9wYW5lbCcpOwoJY2xvc2VEaWFsb2coJyNmaW5kX3Jlc3VsdHNfcGFuZWwnKTsKICAgIH0sCgogICAgZXZlbnRDbGljazogZnVuY3Rpb24oZXZlbnQsIGpzRXZlbnQsIHZpZXcpIHsKICAgICAgICQoJyNldmVudF9zdGFydCcpLmh0bWwoZm9ybWF0RGF0ZShldmVudC5zdGFydCwhZXZlbnQuYWxsRGF5KSk7CiAgICAgICAkKCcjZXZlbnRfZGVzYycpLmh0bWwoZXZlbnQuc3VtbWFyeSk7CiAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5wYXJlbnRfYmxvY2snKS5oaWRlKCk7CiAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5jaGlsZF9ibG9jaycpLmhpZGUoKTsKICAgICAgIGlmKCBldmVudC5jaGlsZCApIHsKICAgICAgICAgJCgnI2V2ZW50cHJldmlldyAuY2hpbGRfYmxvY2snKS5zaG93KCk7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKCBldmVudC5yZWN1cnMgKSB7CiAgICAgICAgICQoJyNldmVudHByZXZpZXcgLmNoaWxkX2Jsb2NrJykuaGlkZSgpOwogICAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5wYXJlbnRfYmxvY2snKS5zaG93KCk7CiAgICAgICB9CgogICAgICAgaWYoIGV2ZW50LmFsbERheSApIHsKICAgICAgICAgJCgnI2V2ZW50cHJldmlldyAuZW5kX2Jsb2NrJykuaGlkZSgpOwoJICQoJyNldmVudHByZXZpZXcgLmFsbGRheV9ibG9jaycpLnNob3coKTsKICAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5hbGxkYXlfYmxvY2snKS5oaWRlKCk7CiAgICAgICAgIGlmKCBldmVudC5lbmQgKSB7CiAgICAgICAgICAgJCgnI2V2ZW50cHJldmlldyAuZW5kX2Jsb2NrJykuc2hvdygpOwogICAgICAgICAgICQoJyNldmVudF9lbmQnKS5odG1sKGZvcm1hdERhdGUoZXZlbnQuZW5kLCFldmVudC5hbGxEYXkpKTsKCSB9CgkgZWxzZSB7CiAgICAgICAgICAgJCgnI2V2ZW50cHJldmlldyAuZW5kX2Jsb2NrJykuaGlkZSgpOwoJIH0KICAgICAgIH0KCiAgICAgICB2YXIgdG1wX2J1dHRvbnMgPSBbewogICAgICAgICB0ZXh0OiAneyRtb2QtPkxhbmcoJ2NhbF9lZGl0Jyl9JywKCSBjbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgdmFyIHVybCA9ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hZGRfZXZlbnQgZXZlbnRfaWQ9eHgganNmcmllbmRseT0xfSc7CiAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJ3h4JyxldmVudC5faWQpOwogICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7CgkgfQogICAgICAgfV07CgogICAgICAgaWYoIGV2ZW50LmNoaWxkICkgewogICAgICAgICB0bXBfYnV0dG9ucy5wdXNoKHsKICAgICAgICAgICB0ZXh0OiAneyRtb2QtPkxhbmcoJ2VkaXRwYXJlbnQnKX0nLAoJICAgY2xpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdmFyIHVybCA9ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hZGRfZXZlbnQgZXZlbnRfaWQ9eHgganNmcmllbmRseT0xfSc7CiAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgneHgnLGV2ZW50LmNoaWxkKTsKICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7CgkgICB9CiAgICAgICAgIH0pOwogICAgICAgfQoKICAgICAgIHRtcF9idXR0b25zLnB1c2goewogICAgICAgICB0ZXh0OiAneyRtb2QtPkxhbmcoJ2RlbGV0ZScpfScsCiAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBjb250ID0gdGhpczsKCSAgICAgJC5hamF4KHsKCSAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICB1cmw6ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X2RlbGV0ZWV2ZW50IGpzZnJpZW5kbHk9MX0mc2hvd3RlbXBsYXRlPWZhbHNlJywKICAgICAJICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKIAkgICAgICAgICBkYXRhOiB7CiAgCSAgICAgIAkgICAgJ3skYWN0aW9uaWR9ZXZlbnRfaWQnOiBldmVudC5faWQsCgkgICAgIAkgICAgJ3skYWN0aW9uaWR9ZGVsZXRlX2NoaWxkcmVuJzogMSAvLyB0b2RvLCBtYWtlIHRoaXMgYW4gb3B0aW9uCgkgICAgICAgICB9CiAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpIHsKCSAgICAgICAgIGlmKCBkYXRhLnN0YXR1cyA9PSAwICkgewogICAJICAgICAgICAgICAgIGFsZXJ0KGRhdGEubXNnKTsKCSAgICAgICAgIH0gZWxzZSB7CgkgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGl0J3Mgbm90IHZpc2libGUKCSAgICAgICAgICAgICAkKCcjY2FsZW5kYXJ2aWV3JykuZnVsbENhbGVuZGFyKCdyZWZldGNoRXZlbnRzJyk7CiAgICAgIAkgICAgICAgICB9CgkgICAgICAgICBjbG9zZURpYWxvZyhjb250KTsKICAgCSAgICAgfSkuZmFpbChmdW5jdGlvbihqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHsKCSAgICAgICAgIGFsZXJ0KCdmYWlsICcrdGV4dFN0YXR1cyk7CgkgICAgICAgICBjbG9zZURpYWxvZyhjb250KTsKICAgICAgICAgICAgIH0pOwoJIH0KICAgICAgIH0pOwoKICAgICAgIHRtcF9idXR0b25zLnB1c2goewogICAgICAgICB0ZXh0OiAneyRtb2QtPkxhbmcoJ2NhbmNlbCcpfScsCgkgY2xpY2s6IGZ1bmN0aW9uKCkgewoJICAgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgfQogICAgICAgfSk7CgogICAgICAgJCgnI2V2ZW50cHJldmlldycpLmRpYWxvZyh7CiAgICAgICAgIHRpdGxlOiBldmVudC50aXRsZSwKICAgICAgICAgd2lkdGg6ICdhdXRvJywKCSBoZWlnaHQ6ICdhdXRvJywKCSBwb3NpdGlvbjogewoJICAgbXk6ICdjZW50ZXIgYm90dG9tJywKCSAgIGF0OiAndG9wIGNlbnRlcicsCgkgICBvZjoganNFdmVudAoJIH0sCgkgYnV0dG9uczogdG1wX2J1dHRvbnMKICAgICAgIH0pOwogICAgfSwKCiAgICBldmVudFJlc2l6ZTogZnVuY3Rpb24oZXYsIGRheURlbHRhLCBtaW51dGVEZWx0YSwgcmV2ZXJ0RnVuYyApIHsKICAgICAgLy8gYW4gZXZlbnQgdGltZSBoYXMgYmVlbiBleHRlbmRlZAogICAgICAkLmFqYXgoewogICAgICAgIHR5cGU6ICdQT1NUJywKCXVybDogICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X2VkaXRldmVudCBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCglkYXRhVHlwZTogJ2pzb24nLAoJZGF0YTogewoJICAneyRhY3Rpb25pZH1ldmVudF9pZCc6IGV2LmlkLAoJICAneyRhY3Rpb25pZH1kYXlEZWx0YSc6IGRheURlbHRhLAoJICAneyRhY3Rpb25pZH1taW51dGVEZWx0YSc6IG1pbnV0ZURlbHRhLAoJfSwKCXN1Y2Nlc3M6IGZ1bmN0aW9uKCBkYXRhICkgewoJICBpZiggZGF0YS5zdGF0dXMgPT0gMCApIHsKCSAgICAgIGFsZXJ0KGRhdGEubXNnKTsKCSAgICAgIHJldmVydEZ1bmMoKTsKCSAgfQoJfSwKCWZhaWw6IGZ1bmN0aW9uKCBkYXRhICkgewoJICBhbGVydCgnZmFpbCcpOwoJICByZXZlcnRGdW5jKCk7Cgl9CiAgICAgIH0pOwogICAgfSwKCiAgICBldmVudERyb3A6IGZ1bmN0aW9uKGV2LCBkYXlEZWx0YSwgbWludXRlRGVsdGEsIGFsbERheSwgcmV2ZXJ0RnVuYykgewogICAgICAvLyBhbiBldmVudCBoYXMgYmVlbiBtb3ZlZAogICAgICAkLmFqYXgoewogICAgICAgIHR5cGU6ICdQT1NUJywKCXVybDogICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X2VkaXRldmVudCBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCglkYXRhVHlwZTogJ2pzb24nLAoJZGF0YTogewoJICAneyRhY3Rpb25pZH1ldmVudF9pZCc6IGV2LmlkLAoJICAneyRhY3Rpb25pZH1kYXlEZWx0YSc6IGRheURlbHRhLAoJICAneyRhY3Rpb25pZH1taW51dGVEZWx0YSc6IG1pbnV0ZURlbHRhLAoJICAneyRhY3Rpb25pZH1hbGxEYXknOiBhbGxEYXkgPyAxIDogMCwKCSAgJ3skYWN0aW9uaWR9bW92ZSc6IDEKCX0sCglzdWNjZXNzOiBmdW5jdGlvbiggZGF0YSApIHsKCSAgaWYoIGRhdGEuc3RhdHVzID09IDAgKSB7CgkgICAgICBhbGVydChkYXRhLm1zZyk7CgkgICAgICByZXZlcnRGdW5jKCk7CgkgIH0KCX0sCglmYWlsOiBmdW5jdGlvbiggZGF0YSApIHsKCSAgYWxlcnQoJ2ZhaWwnKTsKCSAgcmV2ZXJ0RnVuYygpOwoJfQogICAgICB9KTsKICAgIH0KICB9KTsKCiAgfSk7ICAvLyBmZXRjaCBob2xpZGF5cyBkb25lLi4uCgogICQoJ2EjYWRkX2V2ZW50JykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciBkID0gJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcignZ2V0RGF0ZScpLmdldFRpbWUoKS8xMDAwOwogICAgJCh0aGlzKS5hdHRyKCdocmVmJywkKHRoaXMpLmF0dHIoJ2hyZWYnKS5yZXBsYWNlKCd4eHh4JyxkKSk7CiAgfSk7CgogICQoJ2EjZmluZF9ldmVudCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICB2YXIgdCA9IHJlYWRDb29raWUoJ2NnY2FsX2ZpbmQnKTsKICAgIGlmKCB0ICE9IG51bGwgKSB7CiAgICAgIGZvciggdmFyIGsgaW4gdCApIHsKICAgICAgICB2YXIgcyA9ICcjZmluZF9wYW5lbCA6aW5wdXRbbmFtZT0iJyArIGsgKyAnIl0nOwoJJChzKS52YWwodFtrXSk7CiAgICAgIH0KICAgIH0KICAgICQoJyNmaW5kX3BhbmVsJykuZGlhbG9nKHsKICAgICAgd2lkdGg6IDM3NSwKICAgICAgYnV0dG9uczogWwogICAgICAgIHsKCSAgdGV4dDogJ3skbW9kLT5MYW5nKCdzdWJtaXQnKX0nLAoJICBjbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIGdldCB0aGUgZGF0YQoJICAgIHZhciBkYXRhID0ge307CgkgICAgdmFyIGYgPSAwOwoJICAgICQoJyNmaW5kX3BhbmVsIDppbnB1dCcpLmVhY2goZnVuY3Rpb24oKXsKCSAgICAgICB2YXIgbiA9ICQodGhpcykuYXR0cignbmFtZScpOwoJICAgICAgIHZhciB2ID0gJCh0aGlzKS52YWwoKTsKCSAgICAgICBpZiggdiApIHsKCSAgICAgICAgIGRhdGFbbl0gPSB2OwoJCSBmID0gMTsKCSAgICAgICB9CgkgICAgfSkKCSAgICAvLyBzYXZlIGl0IGluIGEgY29va2llCgkgICAgaWYoIGYgKSBjcmVhdGVDb29raWUoJ2NnY2FsX2ZpbmQnLGRhdGEsNyk7CgoJICAgIC8vIGNsb3NlIHRoZSBkaWFsb2cKCSAgICAkKHRoaXMpLmRpYWxvZygnY2xvc2UnKTsKCgkgICAgJC5hamF4KHsKCSAgICAgICB1cmw6ICd7JGZldGNoX3VybH0mc2hvd3RlbXBsYXRlPWZhbHNlJywKCSAgICAgICB0eXBlOiAnR0VUJywKCSAgICAgICBkYXRhVHlwZTogJ2pzb24nLAoJICAgICAgIGRhdGE6IHsKCQkgJ3skYWN0aW9uaWR9a2V5d29yZCc6IGRhdGEua2V5d29yZCwKCQkgJ3skYWN0aW9uaWR9Y2F0ZWdvcnknOiBkYXRhLmNhdGVnb3J5LAoJICAgICAgICAgJ3skYWN0aW9uaWR9c2hvd2NoaWxkcmVuJzogZGF0YS5zaG93Y2hpbGRyZW4sCgkJICd7JGFjdGlvbmlkfXdoZW4nOiBkYXRhLndoZW4sCgkJICd7JGFjdGlvbmlkfWxpbWl0JzogMTAKCSAgICAgICB9LAoJICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCBkYXRhICkgewoJICAgICAgICAgaWYoIHR5cGVvZiBkYXRhLnN0YXR1cyAhPSAndW5kZWZpbmVkJyAmJiBkYXRhLnN0YXR1cyA9PSAwICkgewoJCSAgIGFsZXJ0KCdmZXRjaDogJytkYXRhLm1zZyk7CgkJIH0gZWxzZSB7CgkJICAgLy8gZ290IDAgb3IgbW9yZSByZXN1bHRzCgkJICAgaWYoIGRhdGEubGVuZ3RoID09IDAgKSB7CgkJICAgICAkKCcjZmluZF9yZXN1bHRzX25vbmUnKS5zaG93KCk7CgkJICAgICAkKCcjZmluZF9yZXN1bHRzX2FyZWEnKS5oaWRlKCk7CgkJICAgfQoJCSAgIGVsc2UgewoJCSAgICAgJCgnI2ZpbmRfcmVzdWx0c19ub25lJykuaGlkZSgpOwoJCSAgICAgJCgnI2ZpbmRfcmVzdWx0c19hcmVhJykuc2hvdygpOwoJCSAgICAgJCgnI2ZpbmRfcmVzdWx0c19kYXRhJykuaHRtbCgnJyk7CgoJCSAgICAgJC5lYWNoKGRhdGEsIGZ1bmN0aW9uKGlkeCxyb3cpIHsKCQkgICAgICAgLy8gZGlzcGxheSBlYWNoIG9mIHRoZSByZXN1bHRzIG9mIHRoZSByb3cuCgkJICAgICAgIHZhciBzX2RhdGUgPSBtb21lbnQocm93LnN0YXJ0KTsKCQkgICAgICAgdmFyIGVfZGF0ZSA9IG51bGw7CgkJICAgICAgIGlmKCByb3cuZW5kICkgZV9kYXRlID0gbW9tZW50KHJvdy5lbmQpOwoKCQkgICAgICAgdmFyIG91dCA9ICQoJzx0cj48L3RyPicpOwoJCSAgICAgICBvdXQuYXBwZW5kKCc8dGQ+PGEgY2xhc3M9ImVkaXRfZXZlbnQiIGhyZWY9Iicrcm93LmVkaXRfdXJsKyciIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdF9ldmVudCcpfGNtc19lc2NhcGV9Ij4nK3Jvdy50aXRsZSsnPC9hPjwvdGQ+Jyk7CgkJICAgICAgIG91dC5hcHBlbmQoJzx0ZD4nICsgZm9ybWF0RGF0ZShzX2RhdGUsIXJvdy5hbGxEYXkpICsgJzwvdGQ+Jyk7CgkJICAgICAgIGlmKCBlX2RhdGUgKSB7CgkJICAgICAgICAgb3V0LmFwcGVuZCgnPHRkPicgKyBmb3JtYXREYXRlKGVfZGF0ZSwhcm93LmFsbERheSkgKyAnPC90ZD4nKTsKCQkgICAgICAgfSBlbHNlIHsKCQkgICAgICAgICBvdXQuYXBwZW5kKCc8dGQ+PC90ZD4nKTsKCQkgICAgICAgfQoJICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgnPHRkPjxhIGNsYXNzPSJnb3RvX2RhdGUiIGRhdGEtZGF0ZT0iJytzX2RhdGUudG9TdHJpbmcoKSsnIj57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL3ZpZXcuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZ290b19kYXRlJyl9PC9hPjwvdGQ+Jyk7CgkgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCc8dGQ+PGEgY2xhc3M9ImVkaXRfZXZlbnQiIGhyZWY9Iicrcm93LmVkaXRfdXJsKyciPntjZ2ltYWdlIGNsYXNzPSdlZGl0X2V2ZW50JyBpbWFnZT0naWNvbnMvc3lzdGVtL2VkaXQuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZWRpdF9ldmVudCcpfTwvYT48L3RkPicpOwoJCSAgICAgICAkKCcjZmluZF9yZXN1bHRzX2RhdGEnKS5hcHBlbmQob3V0KTsKCQkgICAgIH0pOwoJCSAgIH0gLyogZWxzZSAqLwoJCSB9CgkgICAgICAgfQoJICAgIH0pOwoKCSAgICAvLyBvcGVuIG91ciByZXN1bHRzIGRpYWxvZwoJICAgICQoJyNmaW5kX3Jlc3VsdHNfcGFuZWwnKS5kaWFsb2coewoJICAgICAgd2lkdGg6ICdhdXRvJwoJICAgIH0pOwoKCSAgfQoJfSwKICAgICAgICB7CgkgIHRleHQ6ICd7JG1vZC0+TGFuZygnY2FuY2VsJyl9JywKCSAgY2xpY2s6IGZ1bmN0aW9uKCkgewoJICAgICQodGhpcykuZGlhbG9nKCdjbG9zZScpOwoJICB9Cgl9CiAgICAgIF0KICAgIH0pOwogIH0pOwoKICAkKGRvY3VtZW50KS5vbignY2xpY2snLCdhLmdvdG9fZGF0ZScsZnVuY3Rpb24oKXsKICAgIGNsb3NlRGlhbG9nKCcjZmluZF9yZXN1bHRzX3BhbmVsJyk7CiAgICB2YXIgZGF0ZSA9ICQodGhpcykuZGF0YSgnZGF0ZScpOwogICAgaWYoICFkYXRlICkgcmV0dXJuIGZhbHNlOwogICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpOwogICAgJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcignZ290b0RhdGUnLGRhdGUpOwogIH0pCgogICQoJyNwYWdlX3RhYnMgPiBkaXYnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcigncmVuZGVyJyk7CiAgICBjbG9zZURpYWxvZygnI2V2ZW50cHJldmlldycpOwogICAgY2xvc2VEaWFsb2coJyNmaW5kX3BhbmVsJyk7CiAgICBjbG9zZURpYWxvZygnI2ZpbmRfcmVzdWx0c19wYW5lbCcpOwogIH0pOwp9KTsKPC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuNWVtIj4KICA8YSBpZD0iYWRkX2V2ZW50IiBocmVmPSJ7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hZGRfZXZlbnQgc3RhcnQ9eHh4eCB1cmxvbmx5PTF9Ij57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnIGFsdD0kbW9kLT5MYW5nKCdjYWxfYWRkX2V2ZW50JykgY2xhc3M9J3N5c3RlbWljb24nfSB7JG1vZC0+TGFuZygnY2FsX2FkZF9ldmVudCcpfS4uLjwvYT4mbmJzcDsmbmJzcDsKICB7aWYgJGNhbl9tYW5hZ2V9CiAgPGEgaWQ9ImltcG9ydF9ldmVudHMiIGhyZWY9Inttb2R1bGVfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5faW1wb3J0fSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnY2FsX2ltcG9ydF9ldmVudHMnKSBjbGFzcz0nc3lzdGVtaWNvbid9IHskbW9kLT5MYW5nKCdjYWxfaW1wb3J0X2V2ZW50cycpfTwvYT4mbmJzcDsmbmJzcDsKICA8YSBpZD0iaW1wb3J0X2V2ZW50cyIgaHJlZj0ie21vZHVsZV9hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9yZW1vdmVfZXhwaXJlZH0iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicgYWx0PSRtb2QtPkxhbmcoJ2NhbF9kZWxldGVfZXhwaXJlZCcpIGNsYXNzPSdzeXN0ZW1pY29uJ30geyRtb2QtPkxhbmcoJ2NhbF9kZWxldGVfZXhwaXJlZCcpfTwvYT4mbmJzcDsmbmJzcDsKICB7L2lmfQogIDxhIGlkPSJmaW5kX2V2ZW50Ij57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL3ZpZXcuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZmluZCcpfSB7JG1vZC0+TGFuZygnZmluZCcpfTwvYT4KICA8ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+e2NnZV9oZWxwdGFnIGtleT0nZXZlbnRzdGFiJ308L2Rpdj4KPC9kaXY+CgoKCnsqIHRoaXMgaXMgd2hlcmUgdGhlIGZ1bGxjYWxlbmRhciBnb2VzICp9CjxkaXYgaWQ9ImNhbGVuZGFydmlldyI+PC9kaXY+Cgp7KiBvdGhlciBzdHVmZiAqfQoKeyogdGhlIHBvcHVwIGRpYWxvZyB3aGVuIGNsaWNraW5nIG9uIGFuIGV2ZW50ICp9CjxkaXYgaWQ9ImV2ZW50cHJldmlldyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2V2ZW50X2FjdGlvbicpfSI+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGFsbGRheV9ibG9jayI+CiAgICA8c3Ryb25nPnskbW9kLT5MYW5nKCdhbGxkYXlfZXZlbnQnKX08L3N0cm9uZz4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwgc3RhcnRfYmxvY2siPgogICAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0Ij57JG1vZC0+TGFuZygnc3RhcnQnKX06PC9wPgogICAgPHAgaWQ9ImV2ZW50X3N0YXJ0IiBjbGFzcz0iZ3JpZF85IGNmIj48L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGVuZF9ibG9jayI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIHRleHRfcmlnaHQiPnskbW9kLT5MYW5nKCdlbmQnKX06PC9wPgogICAgPHAgaWQ9ImV2ZW50X2VuZCIgY2xhc3M9ImdyaWRfOSBjZiI+PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCBjaGlsZF9ibG9jayI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIHRleHRfcmlnaHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+eyRtb2QtPkxhbmcoJ25vdGUnKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOSBjZiI+eyRtb2QtPkxhbmcoJ3RpdGxlX2NoaWxkX2V2ZW50Jyl9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhcmVudF9ibG9jayI+CiAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgcGFyZW50X2Jsb2NrIj4KICAgICAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0IiBzdHlsZT0iY29sb3I6IHJlZDsiPnskbW9kLT5MYW5nKCdub3RlJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9ImdyaWRfOSBjZiI+eyRtb2QtPkxhbmcoJ3RpdGxlX3BhcmVudF9ldmVudCcpfTwvcD4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCBkZXNjX2Jsb2NrIj4KICAgIDxwIGlkPSJldmVudF9kZXNjIiBjbGFzcz0iZ3JpZF85IGNmIj48L3A+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iZmluZF9wYW5lbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2ZpbmQnKX0iPgogIDxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19maW5kX2V2ZW50cycpfTwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCBmb3JtX3JvdyI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIGZvcm1fcHJvbXB0Ij57JG1vZC0+TGFuZygna2V5d29yZHMnKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOSBmb3JtX2lucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImtleXdvcmQiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0iIi8+CiAgICAgIHtjZ2VfaGVscHRhZyBrZXk9J2ZpbmRfdGl0bGUnfQogICAgPC9wPgogIDwvZGl2PgoKICB7aWYgaXNzZXQoJGNhdGVnb3JpZXMpfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIGZvcm1fcHJvbXB0Ij57JG1vZC0+TGFuZygnY2F0ZWdvcnknKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOSBmb3JtX2lucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJjYXRlZ29yeSI+CiAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kY2F0ZWdvcmllc30KICAgICAgPC9zZWxlY3Q+CiAgICA8L3A+CiAgPC9kaXY+CiAgey9pZn0KCiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxwIGNsYXNzPSJncmlkXzMgZm9ybV9wcm9tcHQiPnskbW9kLT5MYW5nKCdmaW5kX3Nob3djaGlsZHJlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF85IGZvcm1faW5wdXQiPgogICAgICB7Y2dlX3llc25vX29wdGlvbnMgbmFtZT0nc2hvd2NoaWxkcmVuJ30KICAgICAge2NnZV9oZWxwdGFnIGtleT0nZmluZF9zaG93Y2hpbGRyZW4nfQogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfMyBmb3JtX3Byb21wdCI+eyRtb2QtPkxhbmcoJ2ZpbmRfd2hlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF85IGZvcm1faW5wdXQiPgogICAgICA8c2VsZWN0IG5hbWU9IndoZW4iPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImFueSI+eyRtb2QtPkxhbmcoJ2FueScpfTwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9InBhc3QiPnskbW9kLT5MYW5nKCdwYXN0Jyl9PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZnV0dXJlIj57JG1vZC0+TGFuZygnZnV0dXJlJyl9PC9vcHRpb24+CiAgICAgIDwvc2VsZWN0PiZuYnNwO3tjZ2VfaGVscHRhZyBrZXk9J2hmaW5kX3doZW4nfQogICAgPC9wPgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImZpbmRfcmVzdWx0c19wYW5lbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3Jlc3VsdHMnKX0uLi4iPgo8ZGl2IGlkPSJmaW5kX3Jlc3VsdHNfbm9uZSIgY2xhc3M9InJlZCI+eyRtb2QtPkxhbmcoJ25vcmVzdWx0cycpfTwvZGl2Pgo8ZGl2IGlkPSJmaW5kX3Jlc3VsdHNfYXJlYSI+CiAgPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX2ZpbmRfcmVzdWx0cycpfTwvZGl2PgogIDx0YWJsZSBjbGFzcz0idWktd2lkZ2V0IiBpZD0iZmluZF9yZXN1bHRzX3RhYmxlIj4KICA8dGhlYWQgY2xhc3M9InVpLXdpZGdldC1oZWFkZXIiPgogICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdzdGFydCcpfTwvdGg+CiAgICA8dGg+eyRtb2QtPkxhbmcoJ2VuZCcpfTwvdGg+CiAgICA8dGg+PC90aD4KICAgIDx0aD48L3RoPgogIDwvdGhlYWQgY2xhc3M9InVpLXdpZGdldC1jb250ZW50Ij4KICA8dGJvZHkgaWQ9ImZpbmRfcmVzdWx0c19kYXRhIj4KICA8L3Rib2R5PgogIDwvdGFibGU+CjwvZGl2Pgo8L2Rpdj4KCntjZ2VfaGVscGhhbmRsZXJ9CjxkaXYgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4Ke2NnZV9oZWxwY29udGVudCBrZXk9J2V2ZW50c3RhYicgdGV4dD0kbW9kLT5MYW5nKCdoZWxwX2V2ZW50c3RhYicpfQp7Y2dlX2hlbHBjb250ZW50IGtleT0nZmluZF90aXRsZScgdGV4dD0kbW9kLT5MYW5nKCdoZWxwX2ZpbmRfZXZlbnRfa2V5d29yZCcpfQp7Y2dlX2hlbHBjb250ZW50IGtleT0nZmluZF9zaG93Y2hpbGRyZW4nIHRleHQ9JG1vZC0+TGFuZygnaGVscF9maW5kX3Nob3djaGlsZHJlbicpfQp7Y2dlX2hlbHBjb250ZW50IGtleT0naGZpbmRfd2hlbicgdGV4dD0kbW9kLT5MYW5nKCdoZWxwX2ZpbmRfd2hlbicpfQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdjYWxfaW1wb3J0X2V2ZW50cycpfTwvaDM+CntpZiBpc3NldCgkZm9ybXN0YXJ0KX0KeyRmb3Jtc3RhcnR9CjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2luZm9fY3N2X2Zvcm1hdCcpfTo8L3A+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY29sdW1uX2RlbGltaXRlcicpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1kZWxpbWl0ZXIiIHZhbHVlPSJ7JGltcG9ydF9kZWxpbWl0ZXJ9IiBzaXplPSIzIiBtYXhsZW5ndGg9IjMiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9jc3ZfZmlsZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0ieyRhY3Rpb25pZH1jc3ZfZmlsZSIgc2l6ZT0iNTAiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICA8L3A+CjwvZGl2Pgp7JGZvcm1lbmR9CntlbHNlfQo8aDQ+eyRtb2QtPkxhbmcoJ2ltcG9ydF9jb21wbGV0ZWQnKX06PC9oND4KPHA+eyRtb2QtPkxhbmcoJ251bV9pbXBvcnRlZCcsJGltcG9ydGVkKX08L3A+CjxwPnskbW9kLT5MYW5nKCdpbXBvcnRfbGluZXMnLCRsaW5lbnVtKX08L3A+CntpZiBpc3NldCgkZXJyb3JzKX0KICA8aDQgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JG1vZC0+TGFuZygnZXJyb3JzJyl9OjwvaDQ+CiAgPHVsIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij4KICB7Zm9yZWFjaCBmcm9tPSRlcnJvcnMgaXRlbT0nZXJyb3InfQogICAgPHVsPnskZXJyb3J9PC91bD4KICB7L2ZvcmVhY2h9CiAgPC91bD4Key9pZn0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_remove_expired.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgJCgnI3NlbGVjdF9hbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgICAgdmFyIF92ID0gJCh0aGlzKS5pcygnOmNoZWNrZWQnKTsKICAgICAgIGlmKCBfdiApIHsKICAgICAgICAgICQoJy5jYWxfc2VsZWN0JykuYXR0cignY2hlY2tlZCcsJ2NoZWNrZWQnKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkKCcuY2FsX3NlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgICAgIH0KICAgICB9KQogIH0pOwo8L3NjcmlwdD4KCjxoMz57JG1vZC0+TGFuZygnY2FsX2RlbGV0ZV9leHBpcmVkJyl9PC9oMz4KCntmb3JtX3N0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfY2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIvPgogIDwvcD4KPC9kaXY+CjxoND5FdmVudHMgdG8gRGVsZXRlOjwvaDQ+Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX2lkJyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX0vdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX3N1bW1hcnknKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2NhbF9mcm9tZGF0ZScpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX3RvZGF0ZScpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX3JlY3VyX3VudGlsJyl9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0X2FsbCIgdmFsdWU9IjEiIHRpdGxlPSJTZWxlY3QgQWxsIi8+CiAgICAgIDwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogIHtmb3JlYWNoICRldmVudHMgYXMgJG9uZV9ldmVudH0KICAgIDx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0ncm93MSxyb3cyJ30iPgogICAgICA8dGQ+eyRvbmVfZXZlbnQuZXZlbnRfaWR9PC90ZD4KICAgICAgPHRkPnskb25lX2V2ZW50LmV2ZW50X3RpdGxlfTwvdGQ+CiAgICAgIDx0ZD57JG9uZV9ldmVudC5ldmVudF9zdW1tYXJ5fHN1bW1hcml6ZTozMH08L3RkPgogICAgICA8dGQ+eyRvbmVfZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDonJXggJVgnfTwvdGQ+CiAgICAgIDx0ZD57aWYgIWVtcHR5KCRvbmVfZXZlbnQuZXZlbnRfZGF0ZV9lbmQpfXskb25lX2V2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OicleCAlWCd9ey9pZn08L3RkPgogICAgICA8dGQ+CiAgICAgICAge2lmICFlbXB0eSgkb25lX2V2ZW50LmV2ZW50X3JlY3VyX2xhc3QpfQoJICB7aWYgJG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0ID4gJHNtYXJ0eS5ub3d9CgkgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij57JG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0fGRhdGVfZm9ybWF0OicleCAlWCd9PC9zcGFuPgoJICB7ZWxzZX0KCSAgICA8c3Bhbj57JG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0fGRhdGVfZm9ybWF0OicleCAlWCd9PC9zcGFuPgoJICB7L2lmfQogICAgICAgIHsvaWZ9CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICAge2lmIGVtcHR5KCRvbmVfZXZlbnQuZXZlbnRfcmVjdXJfbGFzdCkgfHwgJG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0IDwgJHNtYXJ0eS5ub3d9CiAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc2VsZWN0W10iIHZhbHVlPSJ7JG9uZV9ldmVudC5ldmVudF9pZH0iIGNsYXNzPSJjYWxfc2VsZWN0Ii8+Cgkgey9pZn0KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgey9mb3JlYWNofQogIDwvdGJvZHk+CjwvdGFibGU+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/editevent.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRsYW5ndWFnZXRleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGxhbmd1YWdlaW5wdXR9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0=]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19DQp7JHRlbXBsYXRlbmFtZX0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZWlucHV0fTwvcD4KCTwvZGl2PgoJCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/fieldstab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiB1cGRhdGVfZmllbGRfcm93KCRyb3cpIHsKICB2YXIgdHlwZSA9ICQoJ3NlbGVjdC5mbGRfdHlwZScsJHJvdykudmFsKCk7CiAgaWYoIHR5cGUgIT0gMCAmJiB0eXBlICE9IDIgKSB7CiAgICAkKCcuZmxkX3NlYXJjaGFibGUnLCRyb3cpLmhpZGUoKTsKICB9IGVsc2UgewogICAgJCgnLmZsZF9zZWFyY2hhYmxlJywkcm93KS5zaG93KCk7CiAgfQoKICBpZiggdHlwZSAhPSA2ICkgewogICAgJCgnLmZsZF9idG5fZGRvcHRzJywkcm93KS5oaWRlKCk7CiAgfSBlbHNlIHsKICAgICQoJy5mbGRfYnRuX2Rkb3B0cycsJHJvdykuc2hvdygpOwogIH0KCiAgaWYoIHR5cGUgIT0gMiApIHsKICAgICQoJy5mbGRfd3lzaXd5ZycsJHJvdykuaGlkZSgpOwogIH0gZWxzZSB7CiAgICAkKCcuZmxkX3d5c2l3eWcnLCRyb3cpLnNob3coKTsKICB9Cn0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjY2djYWxfZmllbGRzID4gdGJvZHknKS5zb3J0YWJsZSgpOwogICQoJyNjZ2NhbF9maWVsZHMgPiB0Ym9keSB0cicpLmVhY2goZnVuY3Rpb24oaWR4LGVsKXsKICAgIGlmKCAkKGVsKS5hdHRyKCdpZCcpID09ICdmbGRfc2tlbGV0b24nICkgcmV0dXJuOwogICAgdXBkYXRlX2ZpZWxkX3JvdyhlbCk7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsJ3NlbGVjdC5mbGRfdHlwZScsZnVuY3Rpb24oKXsKICAgIHVwZGF0ZV9maWVsZF9yb3coJCh0aGlzKS5jbG9zZXN0KCd0cicpKTsKICB9KTsKICAkKGRvY3VtZW50KS5vbignY2xpY2snLCcuZmxkX2RlbGV0ZScsZnVuY3Rpb24oKXsKICAgIGlmKCAhY29uZmlybSgneyRtb2QtPkxhbmcoJ2NhbF9hcmV5b3VzdXJlJyl9JykgKSByZXR1cm4gZmFsc2U7CiAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykucmVtb3ZlKCk7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnI2ZsZF9hZGQnLGZ1bmN0aW9uKCl7CiAgICB2YXIgcm93ID0gJCgndHIjZmxkX3NrZWxldG9uJykuY2xvbmUoKTsKICAgIHVwZGF0ZV9maWVsZF9yb3cocm93KTsKICAgICQocm93KS5zaG93KCkucmVtb3ZlQXR0cignaWQnKS5hcHBlbmRUbygnI2NnY2FsX2ZpZWxkcyA+IHRib2R5Jyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnI2ZsZF91cGRhdGUnLGZ1bmN0aW9uKCl7CiAgICAkKCcjY2djYWxfZmllbGRzID4gdGJvZHkgdHInKS5lYWNoKGZ1bmN0aW9uKGlkeCwkZWwpewogICAgICB2YXIgb2xkbmFtZSA9ICQoJ2lucHV0LmZsZF9pZCcsJGVsKS52YWwoKTsKICAgICAgdmFyIG5ld25hbWUgPSAkKCdpbnB1dC5mbGRfbmFtZScsJGVsKS52YWwoKTsKICAgICAgaWYoIG9sZG5hbWUgIT0gJycgJiYgbmV3bmFtZSA9PSAnJyApIHsKICAgICAgICBhbGVydCgnZ290IGVtcHRpZWQgbmFtZScpOwogICAgICB9CiAgICB9KTsKICAgICQoJ3RyI2ZpZWxkX3NrZWxldG9uJykucmVtb3ZlKCk7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnLmZsZF9idG5fZGRvcHRzJyxmdW5jdGlvbihldil7CiAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICB2YXIgcm93ID0gJCh0aGlzKS5jbG9zZXN0KCd0cicpOwogICAgIHZhciB0ZXh0ID0gJCgnLmZsZF9kZG9wdHMnLHJvdykudmFsKCk7CiAgICAgJCgnI2lucHV0X2Rkb3B0cycpLnZhbCh0ZXh0KTsKICAgICAkKCcjZGxnX2VkaXRfZGRvcHRzJykuZGlhbG9nKHsKICAgICAgICBtb2RhbDogdHJ1ZSwKCXdpZHRoOiAnYXV0bycsCglidXR0b25zOiBbCiAgICAgICAgICAgewoJICAgICAgdGV4dDogJ3skbW9kLT5MYW5nKCdvaycpfScsCgkgICAgICBjbGljazogZnVuY3Rpb24oKSB7CgkgICAgICAgICAkKCcuZmxkX2Rkb3B0cycscm93KS52YWwoJCgnI2lucHV0X2Rkb3B0cycpLnZhbCgpKTsKCQkgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgICAgICB9LAoJICAgfSwKICAgICAgICAgICB7CgkgICAgICB0ZXh0OiAneyRtb2QtPkxhbmcoJ2NhbmNlbCcpfScsCgkgICAgICBjbGljazogZnVuY3Rpb24oKXsKCQkgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgICAgICB9CgkgICB9LAoJXQogICAgIH0pCiAgfSk7Cn0pOwo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19jdXN0b21maWVsZHNfdGFiJyl9PC9kaXY+CnskZm9ybXN0YXJ0fQoKPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGlkPSJjZ2NhbF9maWVsZHMiPgogIDx0aGVhZD4KICAgIDx0aD57JG5hbWV0ZXh0fTwvdGg+CiAgICA8dGg+eyR0eXBldGV4dH08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdzZWFyY2hhYmxlJyl9PC90aD4KICAgIDx0aD57JG1vZC0+TGFuZygnd3lzaXd5ZycpfTwvdGg+CiAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAge2lmIGlzc2V0KCRmaWVsZHMpfQogICAge2ZvcmVhY2ggZnJvbT0kZmllbGRzIGl0ZW09J2VudHJ5J30KICAgICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZmxkX2lkIiB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfaWRzW10iIHZhbHVlPSJ7JGVudHJ5LmZpZWxkX25hbWV9Ii8+CiAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZsZF9uYW1lIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX25hbWVzW10iIHZhbHVlPSJ7JGVudHJ5LmZpZWxkX25hbWV9IiBtYXhsZW5ndGg9IjI1NSIvPgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPgoJICAgPHNlbGVjdCBjbGFzcz0iZmxkX3R5cGUiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfdHlwZXNbXSI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSR0eXBlcyBzZWxlY3RlZD0kZW50cnkuZmllbGRfdHlwZX08L3NlbGVjdD4KCSAgIDxpbnB1dCBjbGFzcz0iZmxkX2Rkb3B0cyIgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX2Rkb3B0c1tdIiB2YWx1ZT0ieyRlbnRyeS5maWVsZF9leHRyYS5kZG9wdHN8ZGVmYXVsdDonJ30iLz4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmbGRfYnRuX2Rkb3B0cyIgdGl0bGU9InskbW9kLT5MYW5nKCd0aXRsZV9lZGl0X2Rkb3B0cycpfSI+Li4uPC9idXR0b24+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+PHNlbGVjdCBjbGFzcz0iZmxkX3NlYXJjaGFibGUiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfc2VhcmNoYWJsZVtdIj57Y2dlX3llc25vX29wdGlvbnMgc2VsZWN0ZWQ9JGVudHJ5LmZpZWxkX2V4dHJhLnNlYXJjaGFibGV9PC9zZWxlY3Q+PC90ZD4KICAgICAgICA8dGQ+PHNlbGVjdCBjbGFzcz0iZmxkX3d5c2l3eWciIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfd3lzaXd5Z1tdIj57Y2dlX3llc25vX29wdGlvbnMgc2VsZWN0ZWQ9JGVudHJ5LmZpZWxkX2V4dHJhLnd5c2l3eWd9PC9zZWxlY3Q+PC90ZD4KCTx0ZD57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnIGNsYXNzPSJmbGRfZGVsZXRlIn08L3RkPgogICAgICA8L3RyPgogICAgey9mb3JlYWNofQogICAgey9pZn0KICAgIDx0ciBpZD0iZmxkX3NrZWxldG9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICA8dGQ+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmbGRfaWQiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfaWRzW10iIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZmxkX25hbWUiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfbmFtZXNbXSIgdHlwZT0idGV4dCIgdmFsdWU9IiIgbWF4bGVuZ3RoPSIyNTUiLz4KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImZsZF90eXBlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX3R5cGVzW10iPntodG1sX29wdGlvbnMgb3B0aW9ucz0kdHlwZXN9PC9zZWxlY3Q+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmbGRfZGRvcHRzIiB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfZGRvcHRzW10iIHZhbHVlPSJ7JGVudHJ5LmZpZWxkX2Rkb3B0c3xkZWZhdWx0OicnfSIvPgogICAgICAgIDxidXR0b24gY2xhc3M9ImZsZF9idG5fZGRvcHRzIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2VkaXRfZGRvcHRzJyl9Ij4uLi48L2J1dHRvbj4KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImZsZF9zZWFyY2hhYmxlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX3NlYXJjaGFibGVbXSI+e2NnZV95ZXNub19vcHRpb25zfTwvc2VsZWN0PgogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZmxkX3d5c2l3eWciIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfd3lzaXd5Z1tdIj57Y2dlX3llc25vX29wdGlvbnN9PC9zZWxlY3Q+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnIGNsYXNzPSJmbGRfZGVsZXRlIn08L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgaWQ9ImZsZF9hZGQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnYWRkX2ZpZWxkJyl9Ii8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iZmxkX3VwZGF0ZSIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FsX3VwZGF0ZV9maWVsZHMnKX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGlkPSJkbGdfZWRpdF9kZG9wdHMiIHRpdGxlPSJ7JG1vZC0+TGFuZygndGl0bGVfZWRpdF9kZG9wdHMnKX0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+KiB7JG1vZC0+TGFuZygncHJvbXB0X2Rkb3B0cycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHRleHRhcmVhIGlkPSJpbnB1dF9kZG9wdHMiIHJvd3M9IjgiIGNvbHM9IjMwIj48L3RleHRhcmVhPgogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2Rkb3B0cycpfQogICAgPC9wPgogIDwvZGl2Pgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/filetpllist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQoKPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD57JGZpbGVuYW1ldGV4dH08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPgoJCQk8dGQgc3R5bGU9IndpZHRoOjUwJSI+eyRlbnRyeS0+ZmlsZW5hbWV9PC90ZD4KCQkJPHRkIHN0eWxlPSJ3aWR0aDo1MCU7IHRleHQtYWxpZ246cmlnaHQiPnskZW50cnktPmltcG9ydGxpbmt9PC90ZD4KCQk8L3RyPgoJey9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4Ke2Vsc2V9CjxoND57JG5vZmlsZXN0ZXh0fTwvaDQ+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/importtemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRlcnJvcm1zZyAhPSAiIn0KCTxkaXYgY2xhc3M9InBhZ2VlcnJvciI+eyRlcnJvcm1zZ308L2Rpdj4Key9pZn0KeyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskbmV3dGVtcGxhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/newedittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+DQoJPC9kaXY+DQoNCg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KiB7JG5hbWV0ZXh0fTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbmFtZWlucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskY29udGVudHRleHR9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjb250ZW50aW5wdXR9PC9wPg0KCTwvZGl2Pg0KDQoJDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4NCgk8L2Rpdj4NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_calendar_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFpc3NldCgkc21hcnR5LmdldC5ub2pzKX0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntqc21pbn0KLy8gdGhlIGpzbWluIHBsdWdpbiBpcyBpbmNsdWRlZCB3aXRoIENHRXh0ZW5zaW9ucy4KaWYoIHR5cGVvZiBqUXVlcnkgIT0gJ3VuZGVmaW5lZCcgKSB7CiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EuY2FsZW5kYXItbmF2JyxmdW5jdGlvbihldil7CiAgICAgIC8vIGFsbG93IHBhZ2luYXRpbmcgdGhyb3VnaCBtb250aHMgdmlhIGFqYXguCiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHZhciB1cmwgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKSsnJm5vanM9MSZzaG93dGVtcGxhdGU9ZmFsc2UnOwogICAgICB1cmwgPSB1cmwucmVwbGFjZSgvYW1wOy9nLCcnKTsKICAgICAgJCgnI2NhbC1jYWxlbmRhcicpLmxvYWQodXJsKTsKICAgIH0pOwoKICAgIGlmKCBqUXVlcnkoKS5kaWFsb2cgKSB7CiAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EuY2FsZW5kYXItZGF5bGlzdCcsZnVuY3Rpb24oZXYpewogICAgICAgIC8vIGRlbW9uc3RyYXRlIHZpZXdpbmcgYSBkYXkgbGlzdCBpbiBhIHBvcHVwIGRpYWxvZwogICAgICAgIC8vIGFuZCBtaXhpbmcgc21hcnR5IGFuZCBqYXZhc2NyaXB0IGNvZGUuCiAgICAgICAgLy8gdXNlcyBqcXVlcnkgdWkgZGlhbG9nLi4uIGJ1dCBjb3VsZCBqdXN0IGFzIGVhc2lseSB1c2UgZmFuY3lib3ggZXRjLgogICAgICAgIC8vIHlvdSBjb3VsZCBhZGQgcGFyYW1ldGVycyBoZXJlIGZvciBjaGFuZ2luZyB0aGUgdGVtcGxhdGUgZnJvbSB0aGUgZGVmYXVsdCwgZXRjLCBvciBldmVuIGZpbHRlciBieSBjYXRlZ29yeS4KICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciBkYXkgPSBuZXcgRGF0ZSggJCh0aGlzKS5kYXRhKCdkYXknKSAqIDEwMDAgKTsKICAgICAgICB2YXIgbSA9IGRheS5nZXRNb250aCgpKzE7CiAgICAgICAgdmFyIGQgPSBkYXkuZ2V0RGF0ZSgpOwogICAgICAgIHZhciB5ID0gZGF5LmdldEZ1bGxZZWFyKCk7CiAgICAgICAgdmFyIHVybCA9ICd7bW9kdWxlX2FjdGlvbl9saW5rIG1vZHVsZT1DR0NhbGVuZGFyIGRpc3BsYXk9bGlzdCBkYXk9RERERCAgbW9udGg9TU1NTSB5ZWFyPVlZWVkganNmcmllbmRseT0xfSZzaG93dGVtcGxhdGU9ZmFsc2UnOwogICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCdNTU1NJyxtKS5yZXBsYWNlKCdEREREJyxkKS5yZXBsYWNlKCdZWVlZJyx5KTsKICAgICAgICAkKCcjY2FsLWRheXZpZXcnKS5sb2FkKHVybCxmdW5jdGlvbihkYXRhKXsKICAgICAgICAgICQoJyNjYWwtZGF5dmlldycpLmRpYWxvZyh7CiAgICAgICAgICAgIHRpdGxlOiAneyRtb2QtPkxhbmcoJ2RheXZpZXcnKX0nCiAgICAgICAgICB9KQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0KICB9KQp9IC8vIGpxdWVyeSB0ZXN0CnsvanNtaW59PC9zY3JpcHQ+CnsvaWZ9Cgp7c3RyaXB9CntpZiAhaXNzZXQoJHNtYXJ0eS5nZXQubm9qcyl9CjxkaXYgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij57KiBhIHNpbXBsZSB3cmFwcGVyICp9CiAgPGRpdiBpZD0iY2FsLWRheXZpZXciPjwvZGl2Pgo8L2Rpdj4Key9pZn0KCjx0YWJsZSBjbGFzcz0iY2FsZW5kYXIiIGlkPSJjYWwtY2FsZW5kYXIiPgo8Y2FwdGlvbiBjbGFzcz0iY2FsZW5kYXItbW9udGgiPgogICA8c3BhbiBjbGFzcz0iY2FsZW5kYXItcHJldiI+PGEgY2xhc3M9ImNhbGVuZGFyLW5hdiIgaHJlZj0ieyRuYXZpZ2F0aW9uLnByZXZ9Ij4mbGFxdW87PC9hPjwvc3Bhbj4KICAgICA8c3BhbiBjbGFzcz0iY2FsZW5kYXItbGJsIj57JGRhdGV8ZGF0ZV9mb3JtYXQ6JyViICVZJ308L3NwYW4+CiAgIDxzcGFuIGNsYXNzPSJjYWxlbmRhci1uZXh0Ij48YSBjbGFzcz0iY2FsZW5kYXItbmF2IiBocmVmPSJ7JG5hdmlnYXRpb24ubmV4dH0iPiZyYXF1bzs8L2E+PC9zcGFuPgo8L2NhcHRpb24+Cjx0Ym9keT48dHI+Cntmb3JlYWNoIGZyb209JGRheV9uYW1lcyBpdGVtPWRheSBrZXk9a2V5fQo8dGggY2xhc3M9ImNhbC1kYXloZHIgY2FsLXskZGF5X3Nob3J0X25hbWVzWyRrZXldfHN0cnRvbG93ZXJ9IiBhYmJyPSJ7JGRheX0iPnskZGF5X3Nob3J0X25hbWVzWyRrZXldfTwvdGg+CnsvZm9yZWFjaH08L3RyPgoKPHRyPgp7KiBpbml0aWFsIGVtcHR5IGRheXMgKn0Ke2lmICRmaXJzdF9vZl9tb250aF93ZWVrZGF5X251bWJlciA+IDB9Cjx0ZCBjb2xzcGFuPSJ7JGZpcnN0X29mX21vbnRoX3dlZWtkYXlfbnVtYmVyfSI+Jm5ic3A7PC90ZD4Key9pZn0KCnsqIGl0ZXJhdGUgb3ZlciB0aGUgZGF5cyBvZiB0aGlzIG1vbnRoICp9Cnthc3NpZ24gdmFyPXdlZWtkYXkgdmFsdWU9JGZpcnN0X29mX21vbnRoX3dlZWtkYXlfbnVtYmVyfQp7Zm9yZWFjaCBmcm9tPSRkYXlzIGl0ZW09ZGF5IGtleT1rZXl9CntpZiAkd2Vla2RheSA9PSA3fQogIHthc3NpZ24gdmFyPXdlZWtkYXkgdmFsdWU9MH0KPC90cj4KPHRyPgp7L2lmfQo8dGQge2lmIGlzc2V0KCRkYXkuY2xhc3MpfWNsYXNzPSJ7JGRheS5jbGFzc30gY2FsLWRheSBjYWwteyRkYXlfc2hvcnRfbmFtZXNbJHdlZWtkYXldfHN0cnRvbG93ZXJ9InsvaWZ9Pgp7aWYgaXNzZXQoJGRheS5ldmVudHMuMCl9PGEgY2xhc3M9ImNhbGVuZGFyLWRheWxpc3QiIGRhdGEtZGF5PSJ7JGRheS5kYXRlfSIgaHJlZj0ieyRkYXkubmlfdXJsfSI+eyRrZXl9PC9hPnsqIGJ5IGRlZmF1bHQgdXNlIHRoZSBub24gaW5saW5lIChyZXBsYWNlIGNvbnRlbnQgdGFnKSB2ZXJzaW9uIG9mIHRoZSBVUkwgKn0KPHVsPgp7Zm9yZWFjaCBmcm9tPSRkYXkuZXZlbnRzIGl0ZW09ZXZlbnR9CjxsaT4KICB7KiBzb21lIHNpbXBsZSBzbWFydHkgbG9naWMgdG8gdXNlIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBhc3NpZ25lZCB0byBhbiBldmVudCAqfQogIHskc3R5bGU9Jyd9e2lmICRldmVudC5iZ2NvbG9yfXskc3R5bGU9InN0eWxlPVwiY29sb3I6IHskZXZlbnQuZmdjb2xvcn07IGJhY2tncm91bmQtY29sb3I6IHskZXZlbnQuYmdjb2xvcn1cIiJ9ey9pZn0KICA8YSBjbGFzcz0iY2FsZW5kYXItZXZlbnQiIGhyZWY9InskZXZlbnQudXJsfSIgeyRzdHlsZX0+eyRldmVudC5ldmVudF90aXRsZXxzdW1tYXJpemU6MjB9PC9hPjwvbGk+CnsvZm9yZWFjaH0KPC91bD4Ke2Vsc2V9eyRrZXl9ey9pZn0KPC90ZD4Ke21hdGggYXNzaWduPXdlZWtkYXkgZXF1YXRpb249InggKyAxIiB4PSR3ZWVrZGF5fQp7L2ZvcmVhY2h9Cgp7KiByZW1haW5pbmcgZW1wdHkgZGF5cyAqfQp7aWYgJHdlZWtkYXkgIT0gN30KPHRkIGNvbHNwYW49InttYXRoIGVxdWF0aW9uPSI3LXgiIHg9JHdlZWtkYXl9Ij4mbmJzcDs8L3RkPgp7L2lmfQoKCjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KCnsvc3RyaXB9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_deleteevent_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZGVsZXRlIGV2ZW50IHRlbXBsYXRlICp9CjxoMz5EZWxldGUgRXZlbnQ8L2gzPgoKe2lmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJycgJiYgJGV2ZW50LmV2ZW50X3JlY3VyX3BlcmlvZCAhPSAnbm9uZSd9CiAgPGRpdiBjbGFzcz0icm93IHdhcm5pbmciPgogICAgPHA+eyRtb2QtPkxhbmcoJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGRyZW4nKX08L3A+CiAgPC9kaXY+CntlbHNlaWYgJGV2ZW50LmV2ZW50X3BhcmVudF9pZCA+IDB9CiAgPGRpdiBjbGFzcz0icm93IHdhcm5pbmciPgogICAgPHA+eyRtb2QtPkxhbmcoJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGQnKX08L3A+CiAgPC9kaXY+CnsvaWZ9Cgp7JGZvcm1zdGFydH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2NhbF9kZXRhaWxzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF90aXRsZScpfTo8cD4KICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPnskZXZlbnQuZXZlbnRfdGl0bGV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF9zdW1tYXJ5Jyl9OjxwPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+eyRldmVudC5ldmVudF9zdW1tYXJ5fTwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxkaXYgY2xhc3M9InJvdyI+CiAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2RlbGV0ZScpfSIvPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2NhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_editevent_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZWRpdCBldmVudCB0ZW1wbGF0ZSAqfQoKeyogTk9URTogVGhpcyB0ZW1wbGF0ZSByZXF1aXJlcyBKUVVFUlkgYmUgZW5hYmxlZCAqfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnsqIEkgd291bGQgcHJlZmVyIHRvIHVzZSBqcXVlcnkgaGVyZSwgYnV0IGFzIHdlIGRvbid0IG5lZWQgYW55IG90aGVyIGZ1bmN0aW9uYWxpdHksIHRoaXMgZnVuY3Rpb24gaXMgc2ltcGxlIGVub3VnaCB0byB1c2UgKn0KZnVuY3Rpb24gdG9nZ2xlRGlzcGxheShlbGVtKSB7CiAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbSk7CiAgdmFyIHR4dCA9IGVsLnN0eWxlLmRpc3BsYXk7CiAgaWYoIHR4dCA9PSAnbm9uZScgKSB7CiAgICAgIHR4dCA9ICdibG9jayc7CiAgfSBlbHNlIHsKICAgICAgdHh0ID0gJ25vbmUnOwogIH0KICBlbC5zdHlsZS5kaXNwbGF5ID0gdHh0Owp9CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgIHZhciBpbnRlcnZhbHMgPSB7JHBsdXJhbHNfanNvbn07CiAgICQoJyNldmVudF9yZWN1cnMnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgICB2YXIgX3JlY3VycyA9ICQodGhpcykudmFsKCk7CiAgICAgaWYoIF9yZWN1cnMgPT0gJ25vbmUnICkgewogICAgICAgICQoJyNyZWN1cnNfYXJlYScpLmhpZGUoKTsKICAgICB9IGVsc2UgewogICAgICAgIC8vIHNldCB0aGUgbGFiZWwgZm9yIHRoZSByZWN1ciBpbnRldmFsCgkkKCcjaW50ZXJ2YWxfcGx1cmFsJykuaHRtbChpbnRlcnZhbHNbX3JlY3Vyc10pOwoKICAgICAgICAvLyBoaWRlIGFuZCBzaG93IG90aGVyIHN0dWZmIGhlcmUuCiAgICAgICAgJCgnI3JlY3Vyc193ZWVrbHksI3JlY3Vyc19tb250aGx5JykuaGlkZSgpOwoJc3dpdGNoKF9yZWN1cnMpIHsKCSAgIGNhc2UgJ3dlZWtseSc6CgkgICAgICAkKCcjcmVjdXJzX3dlZWtseScpLnNob3coKTsKCSAgICAgIGJyZWFrOwoJICAgY2FzZSAnbW9udGhseSc6CgkgICAgICAkKCcjcmVjdXJzX21vbnRobHknKS5zaG93KCk7CgkgICAgICBicmVhazsKCX0KCgkvLyBzaG93IHRoZSBhcmVhCiAgICAgICAgJCgnI3JlY3Vyc19hcmVhJykuc2hvdygpOwogICAgIH0KICAgfSk7CiAgICQoJyNldmVudF9yZWN1cnMnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKfSk7Cjwvc2NyaXB0PgoKe2lmIGlzc2V0KCRtZXNzYWdlKX0KICB7aWYgaXNzZXQoJHN0YXR1cyl9CiAgICA8ZGl2IGNsYXNzPSJlcnJvciI+eyRtZXNzYWdlfTwvZGl2PgogIHtlbHNlfQogICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgo8ZGl2IGlkPSJjZ2NhbGVuZGFyX2FkZGVkaXRfZXZlbnQiPgogIHtpZiAkZXZlbnQuZXZlbnRfaWQgPiAwIH0KICAgIDxoND57JG1vZC0+TGFuZygnY2FsX2VkaXRfZXZlbnQnLCRldmVudC5ldmVudF9pZCl9PC9oND4KICB7ZWxzZX0KICAgIDxoND57JG1vZC0+TGFuZygnY2FsX2FkZF9ldmVudCcpfTwvaDQ+CiAgey9pZn0KCiAgeyR1c2UyND0xfQogIHskdXNlMTI9JG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJyl9CiAge2lmICR1c2UxMn17JHVzZTI0PTB9ey9pZn0KICB7JGZvcm1zdGFydH0KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnY2FsX2Zyb21kYXRlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfc3RhcnRkYXRlX3svY2FwdHVyZX0KICAgICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgdGltZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydF91dCBzdGFydF95ZWFyPSRzdGFydF95ZWFyIGVuZF95ZWFyPSRlbmRfeWVhcn0KICAgICAgJm5ic3A7QWxsIERheTogPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9hbGxfZGF5X2V2ZW50IiBpZD0iYWxsX2RheV9ldmVudCIgdmFsdWU9IjEie2lmICRldmVudC5hbGxfZGF5X2V2ZW50ID09IDF9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gb25jbGljaz0idG9nZ2xlRGlzcGxheSgnc3RhcnR0aW1lJyk7IHRvZ2dsZURpc3BsYXkoJ2VuZHRpbWUnKTsiLz4KICAgICAgPHNwYW4gaWQ9InN0YXJ0dGltZSJ7aWYgJGV2ZW50LmFsbF9kYXlfZXZlbnQgPT0gMX0gc3R5bGU9ImRpc3BsYXk6IG5vbmU7InsvaWZ9PiBhdCB7aHRtbF9zZWxlY3RfdGltZSB1c2VfMjRfaG91cnM9JHVzZTI0IHByZWZpeD0kdG1wIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnRfdXQgbWludXRlX2ludGVydmFsPTE1IGRpc3BsYXlfc2Vjb25kcz1mYWxzZX08L3NwYW4+CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF90b2RhdGUnKX06PC9wPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfZW5kZGF0ZV92YWxpZCIgdmFsdWU9IjEiIHtpZiAkZXZlbnQuYWx0X2VuZF9kYXRlID09IDF9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfSBvbmNsaWNrPSJ0b2dnbGVEaXNwbGF5KCdlbmRkYXRlJyk7Ij57JG1vZC0+TGFuZygndXNlX3RvX2RhdGUnKX08YnIvPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfZW5kZGF0ZV97L2NhcHR1cmV9CiAgICAgIDxzcGFuIGlkPSJlbmRkYXRlIiB7aWYgZW1wdHkoJGV2ZW50LmV2ZW50X2RhdGVfZW5kKSB8fCAkZXZlbnQuZXZlbnRfZGF0ZV9lbmQgPT0gJycgfHwgJGV2ZW50LmFsdF9lbmRfZGF0ZSA9PSAwfXN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4KICAgICAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCAgdGltZT0kZXZlbnQuZXZlbnRfZGF0ZV9lbmRfdXQgc3RhcnRfeWVhcj0kc3RhcnRfeWVhciBlbmRfeWVhcj0kZW5kX3llYXJ9CiAgICAgICAgPHNwYW4gaWQ9ImVuZHRpbWUie2lmICRldmVudC5hbGxfZGF5X2V2ZW50ID09IDF9IHN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4gYXQge2h0bWxfc2VsZWN0X3RpbWUgdXNlXzI0X2hvdXJzPSR1c2UyNCB0aW1lPSRldmVudC5ldmVudF9kYXRlX2VuZF91dCBwcmVmaXg9JHRtcCBtaW51dGVfaW50ZXJ2YWw9MTUgZGlzcGxheV9zZWNvbmRzPWZhbHNlfTwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9wPgogIDwvZGl2PgoKICB7aWYgJGV2ZW50LmV2ZW50X3BhcmVudF9pZCA8IDF9CiAgICA8ZGl2IGNsYXNzPSJyb3ciPnsqIHJlY3VycyBvcHRpb24gKn0KICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygncmVjdXJzJyl9OjwvcD4KICAgICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3JlY3VyX3BlcmlvZCIgaWQ9ImV2ZW50X3JlY3VycyI+CiAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRyZWN1cl9vcHRpb25zIHNlbGVjdGVkPSRldmVudC5ldmVudF9yZWN1cl9wZXJpb2R9CiAgICAgICAgIDwvc2VsZWN0PgogICAgICAgPC9wPgogICAgPC9kaXY+eyogcmVjdXJzIG9wdGlvbiAqfQoKICAgIDxmaWVsZHNldCBpZD0icmVjdXJzX2FyZWEiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICA8bGVnZW5kPnskbW9kLT5MYW5nKCdjYWxfcmVjdXJfZGV0YWlscycpfTo8L2xlZ2VuZD4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnaW50ZXJ2YWwnKX08L3NwYW4+PC9wPgogICAgICAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgICAgICB7JG1vZC0+TGFuZygnZXZlcnknKX0KICAgICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3JlY3VyX2ludGVydmFsIj4KCSAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRudW1zIHNlbGVjdGVkPSRldmVudC5ldmVudF9yZWN1cl9pbnRlcnZhbH0KCSAgIDwvc2VsZWN0PgoJICAgPHNwYW4gaWQ9ImludGVydmFsX3BsdXJhbCI+PC9zcGFuPgogICAgICAgICA8L3A+CiAgICAgICA8L2Rpdj4KCiAgICAgICB7KiB3ZWVrbHkgcmVjdXJzIGFyZWEgKn0KICAgICAgIDxkaXYgaWQ9InJlY3Vyc193ZWVrbHkiPgogICAgICAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ3dlZWtkYXlzJyl9OjwvcD4KICAgICAgICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9ldmVudF9yZWN1cl93ZWVrZGF5c1tdIiBtdWx0aXBsZT0ibXVsdGlwbGUiIHNpemU9IjciPgoJICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JHdlZWtkYXlzIHNlbGVjdGVkPSRldmVudC5ldmVudF9yZWN1cl93ZWVrZGF5c30KCSAgIDwvc2VsZWN0PgogICAgICAgICA8L3A+CiAgICAgICA8L2Rpdj4KCiAgICAgICA8ZGl2IGlkPSJyZWN1cnNfbW9udGhseSI+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnZnJlcXVlbmN5Jyl9OjwvcD4KICAgICAgICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9ldmVudF9yZWN1cl9tb250aGRheXMiIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iNSI+CgkgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kcmVjdXJfZGF5cyBzZWxlY3RlZD0kZXZlbnQuZXZlbnRfcmVjdXJfbW9udGhkYXlzfQoJICAgPC9zZWxlY3Q+CiAgICAgICAgIDwvcD4KICAgICAgIDwvZGl2PgoKICAgICAgIHsqIHJlY3VycyB1bnRpbCBhcmVhICp9CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl91bnRpbCcpfTo8L3A+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICAgICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9ldmVudF9yZWN1cl9kYXRlIiBwbGFjZWhvbGRlcj0iWVlZWS1NTS1ERCIgdmFsdWU9InskZXZlbnQuZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXR8ZGF0ZV9mb3JtYXQ6JyVZLSVtLSVkJ30iLz4KICAgICAgICAgPC9wPgogICAgICAgPC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ21heF9yZWN1cl9ldmVudHMnKX06PC9wPgogICAgICAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3JlY3VyX2NvdW50Ij4KCSAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRtYXhpdGVycyBzZWxlY3RlZD0kZXZlbnQuZXZlbnRfcmVjdXJfY291bnR9CgkgICA8L3NlbGVjdD4KICAgICAgICAgPC9wPgogICAgICAgPC9kaXY+CiAgICA8L2ZpZWxkc2V0PnsqICNyZWN1cnNfYXJlYSAqfQogIHsvaWZ9CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+KnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX06PC9wPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9ldmVudF90aXRsZSIgdmFsdWU9InskZXZlbnQuZXZlbnRfdGl0bGV9IiBzaXplPSI4MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnY2FsX3N1bW1hcnknKX06PC9wPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9ldmVudF9zdW1tYXJ5IiB2YWx1ZT0ieyRldmVudC5ldmVudF9zdW1tYXJ5fSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF9kZXRhaWxzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICB7Y2dlX3RleHRhcmVhIG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X2RldGFpbHMiIHJvd3M9IjUiIHZhbHVlPSRldmVudC5ldmVudF9kZXRhaWxzIHd5c2l3eWc9MX0KICAgIDwvcD4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRmaWVsZHMpfQogICAge2ZvcmVhY2ggZnJvbT0kZmllbGRzIGl0ZW09J2ZpZWxkJ30KICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRmaWVsZC0+bmFtZX06PC9wPgogICAgICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICAgICAge2lmICRmaWVsZC0+dHlwZSA9PSAwfQogICAgICAJICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9maWVsZF97JGZpZWxkLT5zYWZlbmFtZX0iIHNpemU9IjQwIiB2YWx1ZT0ieyRmaWVsZC0+dmFsdWV9Ii8+CiAgICAgICAgICB7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSAyfQogICAgIAkgICAge2NnZV90ZXh0YXJlYSB3eXNpd3lnPSRmaWVsZC0+ZXh0cmEud3lzaXd5ZyBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9maWVsZF97JGZpZWxkLT5zYWZlbmFtZX0iIHJvd3M9IjUiIHZhbHVlPSJ7JGZpZWxkLT52YWx1ZX0ifQogICAgICAgICAge2Vsc2V9CiAgICAgICAgICAgIHtpZiAkZmllbGQtPnR5cGUgPT0gMX08c3Bhbj57JGZpZWxkLT52YWx1ZX08L3NwYW4+PGJyLz57L2lmfQogICAgICAgICAgICB7JGZpZWxkLT5maWVsZH0KICAgICAgICAgIHsvaWZ9CiAgICAgICAgPC9wPgogICAgICA8L2Rpdj4KICAgIHsvZm9yZWFjaH0KICB7L2lmfQoKICB7aWYgaXNzZXQoJGNhdGVnb3JpZXMpfQogICAge2ZvcmVhY2ggZnJvbT0kY2F0ZWdvcmllcyBpdGVtPSdjYXRlZ29yeSd9CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRjYXRlZ29yeS0+bmFtZX06PC9wPgogICAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgICB7JGNhdGVnb3J5LT5maWVsZH0KICAgICAgPC9wPgogICAgPC9kaXY+CiAgICB7L2ZvcmVhY2h9CiAgey9pZn0KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij48L3A+CiAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgICA8L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2Rpdj57KiAjY2djYWxlbmRhcl9hZGRlZGl0X2V2ZW50ICp9]]></data>
	</file>
	<file>
	  <filename>/templates/orig_event_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2FsZW5kYXItZXZlbnQiPgo8aDE+eyRldmVudC5ldmVudF90aXRsZX08L2gxPgoKeyogY3JlYXRlIGEgY2Fub25pY2FsIHZhcmlhYmxlIHRvIHVzZSBpbiB0aGUgcGFnZSBoZWFkZXIuLi4gbm90ZSB3ZSBtdXN0IGNvcHkgaXQgdG8gdGhlIGdsb2JhbCBzY29wZSAqfQp7aWYgaXNzZXQoJGV2ZW50LnVybCl9eyRjYW5vbmljYWw9JGV2ZW50LnVybCBzY29wZT1nbG9iYWx9ey9pZn0KCnthc3NpZ24gdmFyPW1vbnRoX251bWJlciB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJW0ifQp7YXNzaWduIHZhcj1lbmRfbW9udGhfbnVtYmVyIHZhbHVlPSRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJW0ifQp7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnQgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kIHx8ICRldmVudC5ldmVudF9kYXRlX2VuZCA9PSAwfQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRhdGUtZnJvbSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRhdGUtdGl0bGUiPnskbGFuZy5kYXRlfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxjbXNfZGF0ZV9mb3JtYXR9IHskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJVgifTwvZGl2Pgp7ZWxzZX0Ke2lmICRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlZCVtJVkiID09ICRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJWQlbSVZIn0KICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8Y21zX2RhdGVfZm9ybWF0fSB7JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVYIn0geyRsYW5nLnRvfSB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlSDolTSJ9PC9kaXY+CntlbHNlfQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRhdGUtZnJvbSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRhdGUtdGl0bGUiPnskbGFuZy5kYXRlfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJWUifSB7JGV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6JyVCJ30geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJWQifSB7JGV2bmV0X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiclQid9IHskZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVZICVIOiVNIn08L2Rpdj4Key9pZn0Key9pZn0Ke2lmICRldmVudC5ldmVudF9zdW1tYXJ5ICE9IiIgJiYgJGV2ZW50LmV2ZW50X2RldGFpbHMgPT0iIn0KCTxkaXYgY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnkiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5LXRpdGxlIj57JGxhbmcuc3VtbWFyeX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X3N1bW1hcnl9PC9kaXY+CnsvaWZ9CntpZiAkZXZlbnQuZXZlbnRfcGFyZW50X2lkID4gMH0KICB7KiB0aGlzIGlzIGEgY2hpbGQgZXZlbnQuLi4gd2UgY2FuIGRpc3BsYXkgYSBsaW5rIHRvIHRoZSBwYXJlbnQgKn0KICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fYWJvdXRfY2hpbGRfZXZlbnQnKX08L2Rpdj4KICA8ZGl2PgogICAgeyogbm90ZSwgdGhpcyBkb2VzIG5vdCBnZW5lcmF0ZSBhIHByZXR0eSB1cmwgdG8gdGhlIGV2ZW50IGF0IHRoaXMgdGltZSwgIGJ1dCB0aGUgY2Fub25pY2FsIFVSTCBzdHVmZiBpbiB0aGUgZGV0YWlsIHZpZXcgc2hvdWxkIHJlc29sdmUgYW55IHByb2JsZW1zICp9CiAgICA8YSBocmVmPSJ7bW9kdWxlX2FjdGlvbl91cmwgbW9kdWxlPUNHQ2FsZW5kYXIgYWN0aW9uPWRlZmF1bHQgZGlzcGxheT1ldmVudCBldmVudF9pZD0kZXZlbnQuZXZlbnRfcGFyZW50X2lkfSI+eyRtb2QtPkxhbmcoJ3ZpZXdfcGFyZW50X2V2ZW50Jyl9PC9hPgogIDwvZGl2Pgp7ZWxzZX0KICB7KiB0aGlzIGlzIGEgcGFyZW50L29ycGhhbiBldmVudCAqfQogIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICcnICYmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJ25vbmUnIH0KICAgIDxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19hYm91dF9wYXJlbnRfZXZlbnQnKX08L2Rpdj4KICAgIDxkaXY+CiAgICAgICB7JHBlcmlvZD0kbGFuZy5yZWN1cl9wZXJpb2RbJGV2ZW50LmV2ZW50X3JlY3VyX3BlcmlvZF18c3RydG9sb3dlcn0KICAgICAgIHskZGF0ZXN0cj0kZXZlbnQuZXZlbnRfZGF0ZV9yZWN1cl9lbmR8ZGF0ZV9mb3JtYXQ6JyVkICViICVZJ30KICAgICAgIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfbmV2ZW50cyA+IDB9CiAgICAgICAgIHskbW9kLT5MYW5nKCdjYWxfcmVjdXJfc3RyJywkcGVyaW9kLCRkYXRlc3RyLCRldmVudC5ldmVudF9yZWN1cl9uZXZlbnRzKX0KICAgICAgIHtlbHNlfQogICAgICAgICB7JG1vZC0+TGFuZygnY2FsX3JlY3VyX3N0cjInLCRwZXJpb2QsJGRhdGVzdHIpfQogICAgICAgey9pZn0KICAgIDwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgp7aWYgJGV2ZW50LmV2ZW50X2RldGFpbHMgIT0iIiAmJiAkZXZlbnQuZXZlbnRfZGV0YWlscyAhPSAiPGJyIC8+In0KCTxkaXYgY2xhc3M9ImNhbGVuZGFyLWRldGFpbHMiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzLXRpdGxlIj57JGxhbmcuZGV0YWlsc306IDwvc3Bhbj57ZXZhbCB2YXI9JGV2ZW50LmV2ZW50X2RldGFpbHN9PC9kaXY+CnsvaWZ9Cgp7KiBEaXNwbGF5IGN1c3RvbSBmaWVsZHMKICAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGFkZHJlc3MgY3VzdG9tIGZpZWxkcwogICAxKSB7JGV2ZW50LmZpZWxkcy5maWVsZG5hbWV9CiAgIDIpIHtmb3JlYWNoICRldmVudC5maWVsZHMgYXMgJGZpZWxkbmFtZSA9PiAkZmllbGRyZWN9CiAgICAgICAgeyRmaWVsZG5hbWV9OiZuYnNwO3skZmllbGRyZWMuZmllbGRfdmFsdWV9CiAgICAgIHsvZm9yZWFjaH0KICAgWW91IG1heSB3YW50IHRvIHVzZSB0aGUgZm9ybWVyIG1ldGhvZCB3aXRoIGZpbGUgdXBsb2FkIG9yIGF0dGFjaG1lbnQgZmllbGRzLgogICBOb3RlOiAgVGhlIGZpZWxkcmVjIGFycmF5IGNvbnRhaW5zIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpZWxkLCBpbmNsdWRpbmcgaXRzIG9wdGlvbnMsIGFuZCByYXdfdmFsdWUgKGZvciBkcm9wZG93biBvciBzaW1pbGFyIGZpZWxkcykKKn0Ke2lmIGlzc2V0KCRldmVudC5maWVsZHMpfQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWZpZWxkcyI+CiAgICB7Zm9yZWFjaCAkZXZlbnQuZmllbGRzIGFzICRmaWVsZG5hbWUgPT4gJGZpZWxkcmVjfQogICAgICB7JGZpZWxkbmFtZX06Jm5ic3A7eyRmaWVsZHJlYy5maWVsZF92YWx1ZX08YnIvPgogICAgey9mb3JlYWNofQogIDwvZGl2Pgp7L2lmfQoKe2lmIGlzc2V0KCRlZGl0X3VybCl9CiAgeyogb25seSBhdmFpbGFibGUgaWYgbG9nZ2VkIGluIHRvIEZFVS4uLiBidXQgc2luY2UgRkVVIGlzIG5vdCBhIGRlcGVuZGVuY3kgd2UgY2Fubm90IHVzZSB0aGUgZmV1IHNtYXJ0eSBwbHVnaW5zIGluIGEgc3RvY2sgdGVtcGxhdGUgKn0KICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1lZGl0Ij4KICAgIDxhIGhyZWY9InskZWRpdF91cmx9Ij48aW1nIHNyYz0ieyRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKX0vaW1hZ2VzL2NhbGVuZGFyX2VkaXQucG5nIiBhbHQ9IiIvPiB7JG1vZC0+TGFuZygnZWRpdCcpfTwvYT4KICAgIDxhIGhyZWY9Inttb2R1bGVfYWN0aW9uX3VybCBtb2R1bGU9Q0dDYWxlbmRhciBhY3Rpb249ZGVsZXRlX2V2ZW50IGV2ZW50X2lkPSRldmVudC5ldmVudF9pZH0iPjxpbWcgc3JjPSJ7JG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpfS9pbWFnZXMvY2FsZW5kYXJfZGVsZXRlLnBuZyIgYWx0PSIiLz4geyRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT4KICA8L2Rpdj4Key9pZn0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_fullcalendar_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZyBmdWxsY2FsZW5kYXIgdmlldyAqfQp7KiBUaGlzIHRlbXBsYXRlIHV0aWxpemVzIGZ1bGxjYWxlbmRhciAoaHR0cDovL2Z1bGxjYWxlbmRhci5pbykgYW4gaW50ZXJhY3RpdmUgamF2YXNjcmlwdCBjYWxlbmRhciAqfQp7KiB0aGlzIGFjdGlvbiByZXF1aXJlcyB0aGF0OgogICBhOiBqcXVlcnkgYW5kIGpxdWVyeS11aSBiZSBlbmFibGVkIGluIHRoZSBwYWdlIGhlYWRlci4gIFlvdSBjYW4gdXNlIGpRdWVyeVRvb2xzLCBvciB7Y21zX2pxdWVyeX0gZm9yIHRoaXMuCiAgIGI6IHtjZ2pzX3JlbmRlcn0gYmUgY2FsbGVkIGluIHRoZSBwYWdlIGhlYWRlciwgYWZ0ZXIgdGhlIGluY2x1c2lvbiBvZiBqcXVlcnkgYW5kIGpxdWVyeSB1aS4KKn0Ke2NnanNfcmVxdWlyZSBjc3NmaWxlPSdsaWIvZnVsbGNhbGVuZGFyL2Z1bGxjYWxlbmRhci5taW4uY3NzJ30Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9mdWxsY2FsZW5kYXIvbGliL21vbWVudC5taW4uanMnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nbGliL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIuanMnfQp7Y2dqc19hZGQgbm9taW5pZnk9MX0Ke21vZHVsZV9hY3Rpb25fdXJsIGFjdGlvbj1hamF4X2ZldGNoZXZlbnRzIGZvcmFqYXg9MSBhc2lnbj0nZmV0Y2hfdXJsJ30KeyRhY3Rpb25pZD0nY250bnQwMSd9CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgdmFyIF9ob2xpZGF5cyA9IG51bGw7CiAgJC5hamF4KHsKICAgICB1cmw6ICd7bW9kdWxlX2FjdGlvbl91cmwgYWN0aW9uPWFqYXhfZmV0Y2hob2xpZGF5cyBmb3JhamF4PTF9JwogIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSl7CiAgICAgaWYoIHR5cGVvZiBkYXRhICE9ICd1bmRlZmluZWQnICYmIGRhdGEgIT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA+IDAgKSB7CiAgICAgICAgX2hvbGlkYXlzID0gZGF0YTsKICAgICB9CgogICAkKCcjZnVsbGNhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsKICAgICBkYXlSZW5kZXI6IGZ1bmN0aW9uKCBkYXRlLCBjZWxsICkgewogICAgICAgLy8gZ2V0IGhvbGlkYXkgZXZlbnRzIGZvciB0b2RheS4KICAgICAgIGlmKCB0eXBlb2YgX2hvbGlkYXlzID09ICdzdHJpbmcnICkgcmV0dXJuOwogICAgICAgaWYoICEgX2hvbGlkYXlzIGluc3RhbmNlb2YgQXJyYXkgKSByZXR1cm47CiAgICAgICB2YXIgX3RzdDEgPSBkYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpOwogICAgICAgX2hvbGlkYXlzLmZvckVhY2goZnVuY3Rpb24oZW50cnkpewogICAgICAgICAgaWYoIF90c3QxID09IGVudHJ5LnN0YXJ0ICkgewogICAgICAgICAgICAgY2VsbC5hZGRDbGFzcygnaG9saWRheScpOwoJICAgICBjZWxsLmNzcygnYmFja2dyb3VuZENvbG9yJywneyRob2xpZGF5X2JnY29sb3J9JykuY3NzKCdjb2xvcicsJ3skaG9saWRheV9mZ2NvbG9yfScpOwoJICAgICBjZWxsLmh0bWwoZW50cnkudGl0bGUpOwoJICB9CiAgICAgICB9KTsKICAgICB9LAogICAgIGV2ZW50czogewogICAgICAgdXJsOiAgJ3skZmV0Y2hfdXJsfScsCiAgICAgICB0eXBlOiAnR0VUJywKICAgICAgIGRhdGE6IHsKICAgICAgICAgJ3skYWN0aW9uaWR9c2hvd2NoaWxkcmVuJzogMSwKCSAneyRhY3Rpb25pZH1kZXRhaWxwYWdlJzogJ3skZGV0YWlscGFnZX0nLAoJICd7JGFjdGlvbmlkfWV2ZW50dGVtcGxhdGUnOiAneyRhY3Rpb25wYXJhbXMuZXZlbnR0ZW1wbGF0ZXxkZWZhdWx0OicnfScsCgkgJ3skYWN0aW9uaWR9ZWRpdHBhZ2UnOiAneyRhY3Rpb25wYXJhbXMuZWRpdHBhZ2V8ZGVmYXVsdDonJ30nLAoJICd7JGFjdGlvbmlkfWVkaXRldmVudHRlbXBsYXRlJzogJ3skYWN0aW9ucGFyYW1zLmVkaXRldmVudHRlbXBsYXRlfGRlZmF1bHQ6Jyd9JywKICAgICAgIH0sCiAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CiAgICAgICAgIGFsZXJ0KCd7JG1vZC0+TGFuZygnZXJyb3JfZmV0Y2hpbmdfZXZlbnRzJyl8Y21zX2VzY2FwZX0nKTsKICAgICAgIH0KICAgICB9LAogICAgIGhlYWRlcjogewogICAgICAgbGVmdDogJ3ByZXYsbmV4dCx0b2RheScsCiAgICAgICBjZW50ZXI6ICd0aXRsZScsCiAgICAgICByaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5JwogICAgIH0sCiAgICAgZGVmYXVsdEV2ZW50TWludXRlczogMTUsCiAgICAgc2xvdE1pbnV0ZXM6IDE1LAogICAgIGFsbERheVRleHQ6ICd7JG1vZC0+TGFuZygnYWxsZGF5Jyl8Y21zX2VzY2FwZX0nLAogICAgIGV2ZW50Q29sb3I6ICd7JGRmbHRfYmdjb2xvcn0nLAogICAgIGV2ZW50VGV4dENvbG9yOiAneyRkZmx0X2ZnY29sb3J9JywKICAgICBtb250aE5hbWVzOiB7JGRhdGVzdHJpbmdzLm1vbnRoTmFtZXN9LAogICAgIG1vbnRoTmFtZXNTaG9ydDogeyRkYXRlc3RyaW5ncy5tb250aE5hbWVzU2hvcnR9LAogICAgIGRheU5hbWVzOiB7JGRhdGVzdHJpbmdzLmRheU5hbWVzfSwKICAgICBkYXlOYW1lc1Nob3J0OiB7JGRhdGVzdHJpbmdzLmRheU5hbWVzU2hvcnR9LAogICAgIGZpcnN0RGF5OiB7JGZpcnN0ZGF5b2Z3ZWVrfSwKICAgICBjb2x1bW5Gb3JtYXQ6IHsKICAgICAgICBtb250aDogJ2RkZCcsCiAgICAgICAgd2VlazogJ2RkZCBkL3cnLAogICAgICAgIGRheTogJ2RkZGQgZC9NJwogICAgIH0sCiAgICAgYnV0dG9uVGV4dDogewogICAgICAgdG9kYXk6ICd7JHRleHRfdG9kYXl8Y21zX2VzY2FwZX0nLAogICAgICAgd2VlazogJ3skdGV4dF93ZWVrfGNtc19lc2NhcGV9JywKICAgICAgIG1vbnRoOiAneyR0ZXh0X21vbnRofGNtc19lc2NhcGV9JywKICAgICAgIGRheTogJ3skdGV4dF9kYXl8Y21zX2VzY2FwZX0nCiAgICAgfSwKICAgICBldmVudENsaWNrOiBmdW5jdGlvbihldmVudCwganNFdmVudCwgdmlldykgewogICAgICAgLy8gd29vdCwgd2UgY2FuIGdvIHRvIGEgZGV0YWlsIHZpZXcuCiAgICAgICB3aW5kb3cubG9jYXRpb24gPSBldmVudC5kZXRhaWxfdXJsOwogICAgIH0KICAgfSk7CgogICB9KTsKfSk7CnsvY2dqc19hZGR9Cgo8ZGl2IGlkPSJmdWxsY2FsZW5kYXIiPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_list_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogQ0dDYWxlbmRhciBsaXN0IHZpZXcgdGVtcGxhdGUgKn0KCnsqIHRoaXMgdGVtcGxhdGUgdXNlcyBqcXVlcnkgYW5kIGFqYXggZm9yIG5hdmlnYXRpb24gKn0Ke2lmICFpc3NldCgkYWN0aW9ucGFyYW1zLmNhbF9vcmlncGFyYW1zKX0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EuY2FsZW5kYXItbmF2LCBhLmNhbGVuZGFyLWN1cicsZnVuY3Rpb24oZXYpewogICAgIC8vIHRoaXMgbG9hZHMgdGhlIGV2ZW50cyB2aWEgYWpheC4KICAgICBjb25zb2xlLmRlYnVnKCdjbGljayBmaXJlZCcpOwogICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgdmFyIHVybCA9ICQodGhpcykuYXR0cignaHJlZicpKycmc2hvd3RlbXBsYXRlPWZhbHNlJzsKICAgICB1cmwgPSB1cmwucmVwbGFjZSgvYW1wOy9nLCcnKTsKICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5jYWxlbmRhci1saXN0JykubG9hZCh1cmwpOwogICAgIHJldHVybiBmYWxzZTsKICB9KTsKfSk7Cjwvc2NyaXB0Pgp7L2lmfQoKPGRpdiBjbGFzcz0iY2FsZW5kYXItbGlzdCI+CiAgeyogYSBoZWFkZXIgKn0KICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1saXN0LWhkciI+CiAgICB7aWYgJGxpc3R0eXBlID09ICdkYXknfQogICAgICAgPGgzPnskbW9kLT5MYW5nKCdoZHJfZGF5bGlzdCcpfTogeyRzdGFydF90c3xkYXRlX2Zvcm1hdDonJWQgJWIgJVknfTwvaDM+CiAgICB7ZWxzZWlmICRsaXN0dHlwZSA9PSAnd2Vlayd9CiAgICAgICA8aDM+eyRzdGFydF90c3xkYXRlX2Zvcm1hdDonJWQgJWIgJVknfSB7JGxhbmcudG99IHskZW5kX3RzfGRhdGVfZm9ybWF0OiclZCAlYiAlWSd9PC9oMz4KICAgIHtlbHNlaWYgJGxpc3R0eXBlID09ICdtb250aCd9CiAgICAgICA8aDM+eyRtb2QtPkxhbmcoJ2hkcl9tb250aGxpc3QnKX0geyRzdGFydF90c3xkYXRlX2Zvcm1hdDonJWIgJVknfTwvaDM+CiAgICB7ZWxzZWlmICRsaXN0dHlwZSA9PSAneWVhcid9CiAgICAgICA8aDM+eyRtb2QtPkxhbmcoJ2hkcl95ZWFybGlzdCcpfSB7JHllYXJ9PC9oMz4KICAgIHtlbHNlaWYgJGxpc3R0eXBlID09ICd1cGNvbWluZ2xpc3QnfQogICAgICAgPGgzPnskbW9kLT5MYW5nKCdoZHJfdXBjb21pbmdsaXN0Jyl9PC9oMz4KICAgIHtlbHNlaWYgJGxpc3R0eXBlID09ICdwYXN0bGlzdCd9CiAgICAgICA8aDM+eyRtb2QtPkxhbmcoJ2hkcl9wYXN0bGlzdCcpfTwvaDM+CiAgICB7L2lmfQogIDwvZGl2PgoKICB7KiBhIG5hdmlnYXRpb24sIHNvbWUgdmlld3MgZG8gbm90IGhhdmUgbmF2aWdhdGlvbiAqfQogIHtpZiAkbmF2fQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWxpc3QtbmF2Ij4KICAgIHtpZiBpc3NldCgkbmF2LnByZXZfdXJsKX0KICAgICAgIDxzcGFuIGNsYXNzPSJjYWxlbmRhci1wcmV2Ij48YSBjbGFzcz0iY2FsZW5kYXItbmF2IiBocmVmPSJ7JG5hdi5wcmV2X3VybH0iPnskbGFuZy5wcmV2fTwvYT48L3NwYW4+CiAgICB7L2lmfQogICAge2lmIGlzc2V0KCRuYXYuaG9tZV91cmwpfQogICAgICAgPHNwYW4gY2xhc3M9ImNhbGVuZGFyLWN1ciI+PGEgY2xhc3M9ImNhbGVuZGFyLWN1ciIgaHJlZj0ieyRuYXYuaG9tZV91cmx9Ij57JGxhbmcudG9kYXl9PC9hPjwvc3Bhbj4KICAgIHsvaWZ9CiAgICB7aWYgaXNzZXQoJG5hdi5wcmV2X3VybCl9CiAgICAgICA8c3BhbiBjbGFzcz0iY2FsZW5kYXItbmV4dCI+PGEgY2xhc3M9ImNhbGVuZGFyLW5hdiIgaHJlZj0ieyRuYXYubmV4dF91cmx9Ij57JGxhbmcubmV4dH08L2E+PC9zcGFuPgogICAgey9pZn0KICA8L2Rpdj4KICB7L2lmfQoKICB7KiB0aGUgZXZlbnRzIHRoZW1zZWx2ZXMgKn0KICB7Zm9yZWFjaCBmcm9tPSRldmVudHMga2V5PWtleSBpdGVtPWV2ZW50fQogICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItZXZlbnQiPgogICAgICB7aWYgJGV2ZW50LmZnY29sb3IgIT0gJycgJiYgJGV2ZW50LmJnY29sb3IgIT0gJyd9CiAgICAgICAgPGgyIHN0eWxlPSJjb2xvcjogeyRldmVudC5mZ2NvbG9yfTsgYmFja2dyb3VuZC1jb2xvcjogeyRldmVudC5iZ2NvbG9yfTsiPnskZXZlbnQuZXZlbnRfdGl0bGV9PC9oMj4KICAgICAge2Vsc2V9CiAgICAgICAgPGgyPnskZXZlbnQuZXZlbnRfdGl0bGV9PC9oMj4KICAgICAgey9pZn0KCiAgICAgIHtpZiAkZXZlbnQuZXZlbnRfZGF0ZV9zdGFydCA9PSAkZXZlbnQuZXZlbnRfZGF0ZV9lbmQgfHwgJGV2ZW50LmV2ZW50X2RhdGVfZW5kID09IDB9CiAgICAgICAgeyogZXZlbnQgaGFzIG5vIGVuZCBkYXRlICp9CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIleCJ9PC9kaXY+CiAgICAgIHtlbHNlfQogICAgICAgIHtpZiAkZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJWQlbSVZIiA9PSAkZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVkJW0lWSJ9CgkgICB7KiBldmVudCBzdGFydHMgYW5kIGVuZHMgb24gdGhlIHNhbWUgZGF5ICp9CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIleCAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJUg6JU0ifTwvZGl2PgogICAgICAgIHtlbHNlfQoJICAgeyogZXZlbnQgc3RhYXJ0cyBhbmQgZW5kcyBvbiBkaWZmZXJlbnQgZGF0ZXMgKn0KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiV4ICVIOiVNIn0geyRsYW5nLnRvfSB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIleCAlSDolTSJ9PC9kaXY+CiAgICAgICAgey9pZn0KICAgICAgey9pZn0KCiAgICAgIHskZGV0YWlscz0kZXZlbnQuZXZlbnRfZGV0YWlsc3xzdHJpcF90YWdzfHRyaW19CiAgICAgIHtpZiAkZXZlbnQuZXZlbnRfc3VtbWFyeSAhPSAnJyAmJiAkZGV0YWlscyAhPSAnJ30KICAgICAgICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5Ij48c3BhbiBjbGFzcz0iY2FsZW5kYXItc3VtbWFyeS10aXRsZSI+eyRsYW5nLnN1bW1hcnl9OiA8L3NwYW4+eyRldmVudC5ldmVudF9zdW1tYXJ5fTwvZGl2PgogICAgICB7L2lmfQogICAgICB7KiBvcHRpb25hbGx5IGRpc3BsYXkgZGV0YWlsIGluZm9ybWF0aW9uCiAgICAgIHtpZiAkZGV0YWlscyAhPSAnJ30KICAgICAgICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGV0YWlscy10aXRsZSI+eyRsYW5nLmRldGFpbHN9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kZXRhaWxzfTwvZGl2PgogICAgICB7L2lmfQogICAgICAqfQogICAgICA8YSBocmVmPSJ7JGV2ZW50LnVybH0iPnskbW9kLT5MYW5nKCdjYWxfbW9yZScpfTwvYT4KICAgIDwvZGl2PgogIHsvZm9yZWFjaH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_myevents_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbXlldmVudHMgdGVtcGxhdGUgKn0KPGRpdiBpZD0iY2djYWxfbXlldmVudHNfbGlzdCI+CntpZiBpc3NldCgkcmVjb3Jkcyl9Cjx0YWJsZSBjbGFzcz0idGFibGUiPgogIDx0aGVhZD4KICAgPHRyPgogICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfaWQnKX08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdzdGFydF9kYXRlJyl9PC90aD4KICAgIDx0aD57JG1vZC0+TGFuZygnZW5kX2RhdGUnKX08L3RoPgogICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgIDx0aCBjbGFzcz0icGFnZWljb24iPjwvdGg+CiAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggZnJvbT0kcmVjb3JkcyBpdGVtPSdldmVudCd9CiAgICA8dHI+CiAgICAgIDx0ZD57JGV2ZW50LmV2ZW50X2lkfTwvdGQ+CiAgICAgIDx0ZD57JGV2ZW50LmV2ZW50X3RpdGxlfHN1bW1hcml6ZTo4MH08L3RkPgogICAgICA8dGQ+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGNtc19kYXRlX2Zvcm1hdH08L3RkPgogICAgICA8dGQ+eyRldmVudC5ldmVudF9kYXRlX2VuZHxjbXNfZGF0ZV9mb3JtYXR9PC90ZD4KICAgICAgPHRkPjxhIGhyZWY9InskZXZlbnQuZWRpdF91cmx9Ij57JG1vZC0+TGFuZygnY2FsX2VkaXQnKX08L3RkPgogICAgICA8dGQ+PGEgaHJlZj0ieyRldmVudC5kZWxldGVfdXJsfSI+eyRtb2QtPkxhbmcoJ2NhbF9kZWxldGUnKX08L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0Ke2lmIGlzc2V0KCRhZGRfZXZlbnRfdXJsKX0KPGEgY2xhc3M9ImxpbmsiIGhyZWY9InskYWRkX2V2ZW50X3VybH0iPkFkZCBOZXcgRXZlbnQ8L2E+Cjxici8+CnsvaWZ9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_searchresult_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZ2luYWwgc2VhcmNoIHJlc3VsdCB0ZW1wbGF0ZSAqfQoKPGgzPnskbW9kLT5MYW5nKCdzZWFyY2hfcmVzdWx0cycpfTwvaDM+CjxwPnskbW9kLT5MYW5nKCdzZWFyY2hfd29yZHMnKX06Jm5ic3A7eyRzZWFyY2hfdGV4dH08L3A+CjxwPnskbW9kLT5MYW5nKCdzdGFydF9kYXRlJyl9OiZuYnNwO3skc2VhcmNoX3N0YXJ0X2RhdGV8Y21zX2RhdGVfZm9ybWF0fTwvcD4KPHA+eyRtb2QtPkxhbmcoJ2VuZF9kYXRlJyl9OiZuYnNwO3skc2VhcmNoX2VuZF9kYXRlfGNtc19kYXRlX2Zvcm1hdH08L3A+CjxwPnskbW9kLT5MYW5nKCdjYXRlZ29yeScpfTombmJzcDt7aWYgJHNlYXJjaF9jYXRlZ29yeSA9PSAnLTEnfXskbW9kLT5MYW5nKCdjYWxfYW55X2NhdGVnb3J5Jyl9e2Vsc2V9eyRtb2QtPkdldENhdGVnb3J5TmFtZSgkc2VhcmNoX2NhdGVnb3J5KX17L2lmfTwvcD4Ke2lmICFpc3NldCgkZXZlbnRzKX0KICB7JG1vZC0+TGFuZygnbm9fcmVzdWx0c19mb3VuZCcpfQp7ZWxzZX0KPGJyLz4KCnsqIHBhZ2luYXRpb24gc3R1ZmYgKn0Ke2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKSB8fCBpc3NldCgkbGFzdHBhZ2VfdXJsKX0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAge2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKX0KICAgIDxhIGhyZWY9InskZmlyc3RwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdmaXJzdF9wYWdlJyl9PC9hPiZuYnNwOwogICAgPGEgaHJlZj0ieyRwcmV2cGFnZV91cmx9Ij57JG1vZC0+TGFuZygncHJldl9wYWdlJyl9PC9hPiZuYnNwOwogIHsvaWZ9CiAgeyRtb2QtPkxhbmcoJ3BhZ2Vfb2YnLCRwYWdlbnVtLCRudW1wYWdlcyl9CiAge2lmIGlzc2V0KCRsYXN0cGFnZV91cmwpfQogICAgJm5ic3A7PGEgaHJlZj0ieyRuZXh0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbmV4dF9wYWdlJyl9PC9hPgogICAgJm5ic3A7PGEgaHJlZj0ieyRsYXN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbGFzdF9wYWdlJyl9PC9hPgogIHsvaWZ9CjwvZGl2Pgp7L2lmfQoKeyogZGlzcGxheSB0aGUgb3V0cHV0ICp9Cntmb3JlYWNoIGZyb209JGV2ZW50cyBrZXk9a2V5IGl0ZW09ZXZlbnR9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1ldmVudCI+Cgk8aDQ+eyRldmVudC5ldmVudF90aXRsZX08L2g0PgoKCXthc3NpZ24gdmFyPW1vbnRoX251bWJlciB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJW0ifQoJe2Fzc2lnbiB2YXI9ZW5kX21vbnRoX251bWJlciB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVtIn0KCXtpZiAkZXZlbnQuZXZlbnRfZGF0ZV9zdGFydCA9PSAkZXZlbnQuZXZlbnRfZGF0ZV9lbmQgfHwgJGV2ZW50LmV2ZW50X2RhdGVfZW5kID09IDB9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVlIn0geyRtb250aF9uYW1lc1skbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSJ9PC9kaXY+Cgl7ZWxzZX0KCXtpZiAkZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJWQlbSVZIiA9PSAkZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVkJW0lWSJ9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVlIn0geyRtb250aF9uYW1lc1skbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJUg6JU0ifTwvZGl2PgoJe2Vsc2V9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVlIn0geyRtb250aF9uYW1lc1skbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJWQifSB7JG1vbnRoX25hbWVzWyRlbmRfbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJVkgJUg6JU0ifTwvZGl2PgoJey9pZn0KCXsvaWZ9Cgl7aWYgJGV2ZW50LmV2ZW50X3N1bW1hcnkgIT0iIiAmJiAoJGRldGFpbCAhPSAxIHx8ICgkZXZlbnQuZXZlbnRfZGV0YWlscyA9PSIiIHx8ICAkZXZlbnQuZXZlbnRfZGV0YWlscyA9PSAiPGJyIC8+IikpfQoJCTxkaXYgY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnkiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5LXRpdGxlIj57JGxhbmcuc3VtbWFyeX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X3N1bW1hcnl9PC9kaXY+Cgl7L2lmfQoJeyogb3B0aW9uYWxseSBkaXNwbGF5IGRldGFpbCBpbmZvcm1hdGlvbiAKCQl7aWYgJGV2ZW50LmV2ZW50X2RldGFpbHMgIT0iIiAmJiAkZXZlbnQuZXZlbnRfZGV0YWlscyAhPSAiPGJyIC8+In0KCQk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGV0YWlscy10aXRsZSI+eyRsYW5nLmRldGFpbHN9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kZXRhaWxzfTwvZGl2PgoJCXsvaWZ9CgkqfQoJPGEgaHJlZj0ieyRldmVudC51cmx9Ij57JG1vZC0+TGFuZygnY2FsX21vcmUnKX08L2E+CgoJPC9kaXY+CnsvZm9yZWFjaH0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_search_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogc2VhcmNoIGZvcm0gdGVtcGxhdGUgKn0KPGRpdiBpZD0iY2djYWxfc2VhcmNoZm9ybSI+CnskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgICAgeyRtb2QtPkxhbmcoJ3RleHQnKX06CiAgICA8L2Rpdj4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9zZWFyY2hfdGV4dCIgdmFsdWU9Inskc2VhcmNoX3RleHR9IiBzaXplPSI1MCIvPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgICAgeyRtb2QtPkxhbmcoJ3NlYXJjaF90eXBlJyl9OgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfc2VhcmNoX3R5cGV7L2NhcHR1cmV9CiAgICAgIDxzZWxlY3QgbmFtZT0ieyR0bXB9Ij4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJvciIgbGFiZWw9InskbW9kLT5MYW5nKCdzZWFyY2hfYW55Jyl9Ij57JG1vZC0+TGFuZygnc2VhcmNoX2FueScpfTwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImFuZCIgbGFiZWw9InskbW9kLT5MYW5nKCdzZWFyY2hfYWxsJyl9Ij57JG1vZC0+TGFuZygnc2VhcmNoX2FsbCcpfTwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICAgIHskbW9kLT5MYW5nKCdzdGFydF9kYXRlJyl9OgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfc2VhcmNoX3N0YXJ0X2RhdGVfey9jYXB0dXJlfQogICAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRzZWFyY2hfc3RhcnRfZGF0ZSBzdGFydF95ZWFyPSctMicgZW5kX3llYXI9JysyJ30KICAgICAgeyoge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXAgdGltZT0kc2VhcmNoX3N0YXJ0X2RhdGUgZGlzcGxheV9zZWNvbmRzPTB9ICp9CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyB0ZXh0LWFsaWduOiByaWdodDsiPgogICAgICB7JG1vZC0+TGFuZygnZW5kX2RhdGUnKX06CiAgICA8L2Rpdj4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyI+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWNhbF9zZWFyY2hfZW5kX2RhdGVfey9jYXB0dXJlfQogICAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRzZWFyY2hfZW5kX2RhdGUgc3RhcnRfeWVhcj0nLTInIGVuZF95ZWFyPScrMid9CiAgICAgIHsqIHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kdG1wIHRpbWU9JHNlYXJjaF9lbmRfZGF0ZSBkaXNwbGF5X3NlY29uZHM9MH0gKn0KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICAgIHskbW9kLT5MYW5nKCdjYXRlZ29yeScpfToKICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9zZWFyY2hfY2F0ZWdvcnkiPgogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kbGlzdF9jYXRlZ29yaWVzIHNlbGVjdGVkPSRzZWFyY2hfY2F0ZWdvcnl9CiAgICAgIDwvc2VsZWN0PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4mbmJzcDs8L2Rpdj4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyI+CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX3NlYXJjaF9zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2VhcmNoJyl9Ii8+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_upcominglist_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2FsLXVwY29taW5nbGlzdCI+CntpZiBpc3NldCgkcGFzdGl0ZW1zKSAmJiAkcGFzdGl0ZW1zID09IDF9CjxoMT57JGxhbmcucGFzdF9ldmVudHN9PC9oMT4Ke2Vsc2V9CjxoMT57JGxhbmcudXBjb21pbmdfZXZlbnRzfTwvaDE+CnsvaWZ9Cgp7aWYgaXNzZXQoJG5hdmlnYXRpb24pfQp7aWYgaXNzZXQoJG5hdmlnYXRpb24ucHJldil9PHNwYW4gY2xhc3M9ImNhbGVuZGFyLXByZXYiPjxhIGhyZWY9InskbmF2aWdhdGlvbi5wcmV2fSI+eyRsYW5nLnByZXZ9PC9hPjwvc3Bhbj57L2lmfSAmbmJzcDsgJm5ic3A7e2lmIGlzc2V0KCRuYXZpZ2F0aW9uLm5leHQpfTxzcGFuIGNsYXNzPSJjYWxlbmRhci1uZXh0Ij48YSBocmVmPSJ7JG5hdmlnYXRpb24ubmV4dH0iPnskbGFuZy5uZXh0fTwvYT48L3NwYW4+ey9pZn0Key9pZn0KCgp7Zm9yZWFjaCBmcm9tPSRldmVudHMga2V5PWtleSBpdGVtPWV2ZW50fQoJPGRpdiBjbGFzcz0iY2FsZW5kYXItZXZlbnQiPgoJPGgyPnskZXZlbnQuZXZlbnRfdGl0bGV9PC9oMj4KCgl7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnQgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kIHx8ICRldmVudC5ldmVudF9kYXRlX2VuZCA9PSAwfQoJPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiclZSAlQiAlWSd9IDwvZGl2PgoJe2Vsc2V9Cgl7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVkJW0lWSIgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlZCVtJVkifQoJPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiclZSAlQiAlWSAlSDolTSd9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJUg6JU0ifTwvZGl2PgoJe2Vsc2V9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6JyVlICVCICVZICVIOiVNJ30geyRsYW5nLnRvfSB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlZSAlQiAlWSAlSDolTSJ9PC9kaXY+Cgl7L2lmfQoJey9pZn0KCXtpZiAkZXZlbnQuZXZlbnRfc3VtbWFyeSAhPSIifQoJCTxkaXYgY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnkiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5LXRpdGxlIj57JGxhbmcuc3VtbWFyeX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X3N1bW1hcnl9PC9kaXY+Cgl7L2lmfQoJeyogb3B0aW9uYWxseSBkaXNwbGF5IGRldGFpbCBpbmZvcm1hdGlvbgoJe2lmICRldmVudC5ldmVudF9kZXRhaWxzICE9IiJ9CgkgICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRldGFpbHMiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzLXRpdGxlIj57JGxhbmcuZGV0YWlsc306IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RldGFpbHN9PC9kaXY+Cgl7L2lmfQogICAgICAgICp9Cgk8YSBocmVmPSJ7JGV2ZW50LnVybH0iPnskbW9kLT5MYW5nKCdjYWxfbW9yZScpfTwvYT4KCgk8L2Rpdj4Key9mb3JlYWNofQo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9jb2xvclBpY2tlci9qcXVlcnkuY29sb3JQaWNrZXIubWluLmpzJ30Ke2NnanNfYWRkfQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJzppbnB1dC5jb2xvclBpY2tlcicpLmNvbG9yUGlja2VyKCk7Cn0pOwp7L2NnanNfYWRkfQoKeyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgo8L2Rpdj4KCjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9tcHRfZ2VuZXJhbF9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZyaWVuZGx5bmFtZScpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZnJpZW5kbHluYW1lIiBzaXplPSI0MCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSJ7JGZyaWVuZGx5bmFtZX0iLz4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19mcmllbmRseW5hbWUnKX0KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRkZWZhdWx0Y2FsZW5kYXJwYWdlX3RleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVmYXVsdGNhbGVuZGFycGFnZV9pbnB1dH08L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkZmx0X3VybHByZWZpeCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJ7JGFjdGlvbmlkfXVybF9wcmVmaXgiIHZhbHVlPSJ7JHVybF9wcmVmaXh9IiAvPgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGZsdF9jb2xvcnMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvbG9yUGlja2VyIiBzaXplPSI3IiBuYW1lPSJ7JGFjdGlvbmlkfWRmbHRfZmdjb2xvciIgdmFsdWU9InskZGZsdF9mZ2NvbG9yfSIgLz4geyRtb2QtPkxhbmcoJ2ZnY29sb3InKX08L2xhYmVsPgogICAgICA8bGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2xvclBpY2tlciIgc2l6ZT0iNyIgbmFtZT0ieyRhY3Rpb25pZH1kZmx0X2JnY29sb3IiIHZhbHVlPSJ7JGRmbHRfYmdjb2xvcn0iIC8+IHskbW9kLT5MYW5nKCdiZ2NvbG9yJyl9PC9sYWJlbD4KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9pY2FsX2hvbGlkYXlzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1pY2FsX2hvbGlkYXlzIiB2YWx1ZT0ieyRpY2FsX2hvbGlkYXlzfSIgc2l6ZT0iODAiLz4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19pY2FsX2hvbGlkYXlzJyl9CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdob2xpZGF5X2NvbG9ycycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sb3JQaWNrZXIiIHNpemU9IjciIG5hbWU9InskYWN0aW9uaWR9aG9saWRheV9mZ2NvbG9yIiB2YWx1ZT0ieyRob2xpZGF5X2ZnY29sb3J9IiAvPiB7JG1vZC0+TGFuZygnZmdjb2xvcicpfTwvbGFiZWw+CiAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvbG9yUGlja2VyIiBzaXplPSI3IiBuYW1lPSJ7JGFjdGlvbmlkfWhvbGlkYXlfYmdjb2xvciIgdmFsdWU9InskaG9saWRheV9iZ2NvbG9yfSIgLz4geyRtb2QtPkxhbmcoJ2JnY29sb3InKX08L2xhYmVsPgogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Byb21wdF9lZGl0aW5nX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdHdlbHZlaG91cnRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdHdlbHZlaG91cmlucHV0fTwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9maXJzdGRheW9md2VlaycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZpcnN0ZGF5b2Z3ZWVrIj4KICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRkYXlvcHRpb25zIHNlbGVjdGVkPSRmaXJzdGRheW9md2Vla30KICAgICAgPC9zZWxlY3Q+CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfb3ZlcmxhcF9wb2xpY3knKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1vdmVybGFwX3BvbGljeSI+CiAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3ZlcmxhcF9wb2xpY2llcyBzZWxlY3RlZD0kb3ZlcmxhcF9wb2xpY3l9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X292ZXJsYXBfYWN0aW9uJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9b3ZlcmxhcF9hY3Rpb24iPgogICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG92ZXJsYXBfYWN0aW9ucyBzZWxlY3RlZD0kb3ZlcmxhcF9hY3Rpb259CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZvcmNlY2F0dGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmb3JjZWNhdGlucHV0fTwvcD4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRkZWZjYXR0ZXh0KX0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlZmNhdHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVmY2F0aW5wdXR9PC9wPgogIDwvZGl2PgogIHsvaWZ9CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcGFzdHllYXJzdGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwYXN0eWVhcnNpbnB1dH08L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZnV0dXJleWVhcnN0ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZ1dHVyZXllYXJzaW5wdXR9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGhpZGVzdW1tYXJ5dGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRlc3VtbWFyeWlucHV0fTwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRoaWRlY29udGVudHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZWNvbnRlbnRpbnB1dH08L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkZmx0X2FsbGRheWV2ZW50Jyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7Y2dlX3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPSdkZmx0X2FsbGRheWV2ZW50JyBzZWxlY3RlZD0kZGZsdF9hbGxkYXlldmVudH0KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2RmbHRfc3RhcnR0aW1lJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1kZmx0X3N0YXJ0dGltZV97L2NhcHR1cmV9CiAgICAgIHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kdG1wIGRpc3BsYXlfc2Vjb25kcz1mYWxzZSB0aW1lPSRkZmx0X3N0YXJ0dGltZSBtaW51dGVfaW50ZXJ2YWw9MTV9CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX2RmbHRfc3RhcnR0aW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdXBsb2FkZGlyZWN0b3J5X3RleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdXBsb2FkZGlyZWN0b3J5X2lucHV0fTwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR1cGxvYWRmaWxldHlwZXNfdGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1cGxvYWRmaWxldHlwZXNfaW5wdXR9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVwbG9hZHVuaXF1ZV90ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHVwbG9hZHVuaXF1ZV9pbnB1dH08L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+Cgp7aWYgaXNzZXQoJGdyb3VwbGlzdCl9CjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9tcHRfZmVlZGl0X3NldHRpbmdzJyl9OjwvbGVnZW5kPgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+bGFuZygncHJvbXB0X2ZlZWRpdF9ncm91cCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZyb250ZW5kX2dyb3VwIj4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGdyb3VwbGlzdCBzZWxlY3RlZD0kZnJvbnRlbmRfZ3JvdXB9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+bGFuZygncHJvbXB0X2ZlZWRpdF9tYXN0ZXJncm91cCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZyb250ZW5kX21hc3Rlcmdyb3VwIj4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGdyb3VwbGlzdCBzZWxlY3RlZD0kZnJvbnRlbmRfbWFzdGVyZ3JvdXB9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZlZWRpdF9wYWdlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZyb250ZW5kX3JlZGlyZWN0cGFnZSIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRmcm9udGVuZF9yZWRpcmVjdHBhZ2V9Ii8+CiAgICA8L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+CnsvaWZ9CnskZW5kZm9ybX0=]]></data>
	</file>
	<file>
	  <filename>/templates/templatelist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD57JHRlbXBsYXRlbmFtZXRleHR9PC90aD4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCgl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQ0KCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPg0KCQkJPHRkPnskZW50cnktPm5hbWV9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPg0KCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4NCgkJPC90cj4NCgl7L2ZvcmVhY2h9DQoJPC90Ym9keT4NCjwvdGFibGU+DQoNCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4NCgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+DQo8L2Rpdj4NCg==]]></data>
	</file>
</module>
